Moduli Filosofia Architettura Installazione Download Changelog Wiki Scarica il JAR

Open FDO

Compilabile

Il sistema nervoso dello stato per server roleplay: corpi, gradi e capability, atti depositati come libri timbrati, fascicoli con catena di custodia delle prove, ricercati, detenzione e foglio di servizio. Neutro rispetto all'ambientazione: il core non conosce nessun corpo, grado, reato o sigla — tutto vive nella config o dietro adapter opzionali.

Namespacedev.openrp.fdo
Comandi/fdo · /atto · /registro · /detenzione · /allerta
Dipendenzenessuna obbligatoria
OpzionaliOpenCore · LuckPerms · WorldGuard · adapter di terze parti
APIOpenFdoApi

Neutro rispetto all'ambientazione

Ogni feature passa un test: funzionerebbe identica su un server fantasy medievale? Se no per un'assunzione di ambientazione, finisce in config; se no perché il concetto non esiste in quel mondo, finisce dietro un adapter opzionale. Il realistico italiano è solo la configurazione di riferimento, inclusa come default.

Core
Authority · Act · Dossier · Evidence · Conviction · Wanted
Configcorps · ranks · acts · crimes · wanted
Adapterdetention · audit · referti · radio

Il core non importa mai nulla dagli adapter. Se un adapter manca, la capability collegata sparisce in silenzio: nessun crash, nessuna dipendenza dura.

Capability, non corpi

Gli atti non sono legati ai corpi: sono legati a capability, e le capability sono assegnate ai gradi dalla config. I gradi inferiori sono ereditati dai superiori; un grado apicale può arruolare e promuovere nel proprio corpo.

CapabilitySignificatoAdapter
DETAIN_TEMPORARY / ARRESTFermo a tempo / arresto con fascicolo e custodia
ADD_CHARGE / SEIZE_EVIDENCECapi d'imputazione e sequestro prove
OPEN_INVESTIGATION / ISSUE_FINEApertura indagine e sanzioni
REQUEST_WARRANT / ISSUE_WARRANTRichiesta ed emissione mandati
ISSUE_VERDICT / EXTEND_CUSTODYSentenza e proroga della custodia
FLAG_WANTED / DECLARE_ALERTRegistro ricercati e stato d'allerta
ECONOMIC_AUDITAudit economico in sola letturaEconomyAudit
MANAGE_DETENTIONGestione della detenzioneDetention
IMPORT_EXTERNAL_RECORDReferti e atti esterniExternalRecord

L'atto è un libro

/atto nuovo mostra solo gli atti la cui capability è posseduta dal grado e il cui adapter (se richiesto) è presente. L'agente riceve un libro scrivibile e scrive lui il contenuto: il plugin non lo compila mai.

Scrive l'agenteIl contenuto del verbale lo redige il giocatore nel libro. Il plugin non scrive testo al posto suo.
Il plugin timbraAlla firma: corpo, grado, matricola, data e id fascicolo. Poi registra l'atto e lo rende non contestabile.
Effetti registratiL'atto apre il fascicolo, avvia la custodia, sequestra la prova o segna il ricercato — secondo cosa dichiara in config.

Fascicolo e catena di custodia

Il fascicolo ha tre sezioni: A intestazione (immutabile), B corpo del procedimento (capi, prove, note, custodia — mutabile), C esito (sentenza, immutabile una volta firmata). L'id segue il pattern di config, default {anno}/{numero}/{sigla_corpo}.

  • Le prove tracciano una catena di custodia append-only: raccolta, trasferimenti, deposito
  • Un buco nella catena è ciò che rende la prova contestabile — il core registra, non arbitra
  • I capi d'imputazione pescano dal catalogo reati di crimes.yml
  • La custodia cautelare ha una scadenza con timer; il giudice firma la sentenza in sezione C

Adapter

Cinque adapter di base hanno un default funzionante; gli adapter verso il mondo esterno sono opzionali e scoperti a runtime. Assenti, la capability e l'atto collegati semplicemente spariscono.

AdapterResponsabilitàAssente →
StorageAdapterPersiste agenti, fascicoli, prove, ricercati, atti, detenzionidefault YAML/memoria
PermissionAdapterPermessi Bukkit (riflette LuckPerms)default bukkit
NotificationAdapterNotifiche: evasioni, allertedefault chat
LoggingAdapterAudit trail delle operazioni sensibilifile / console / none
RegionAdapterArmadi prove e zone d'intercettazionedefault no-op
DutyStatusAdapterStato di serviziofallback interno /fdo servizio
DetentionAdapterEsecuzione fisica della penacondanna registrata, RP manuale
EconomyAuditAdapterAudit economicola capability sparisce
ExternalRecordAdapterReferti e atti esternila capability sparisce
RadioAdapter · EvidenceSourceAdapterIntercettazione · tracce sulle provefeature disattivata

Detenzione: evento astratto + adapter

Il core decide che c'è una condanna e gestisce il timer della pena e il rilascio automatico a fine pena; l'adapter decide cosa significa fisicamente.

Carcere realisticoUn modulo separato implementa region, routine ed evasioni.
Segrete fantasyUn adapter minimale teletrasporta nelle segrete e applica un bendaggio.
Nessun adapterLa condanna resta nel fascicolo; l'esecuzione è lasciata al RP manuale.

Comandi

Cinque comandi radice. Il permesso Bukkit abilita solo l'uso del comando: l'autorità reale viene dalle capability del grado.

ComandoFunzione
/fdoIdentità: info, identifica, tesserino, servizio, arruola, congeda, promuovi, degrada, reload
/atto nuovo [tipo] [bersaglio]Apre il menu degli atti disponibili o consegna il libro da compilare e firmare
/registroArchivi: fascicolo, lista, capo, wanted, foglio di servizio, prova (catena di custodia)
/detenzionelista, info, rilascia, condanna, proroga (alias /carcere)
/allertastato, dichiara <livello>, revoca

API pubblica

Recupera OpenFdoApi dal Services Manager di Bukkit. Registra i tuoi adapter (carcere, audit, referti) e usa lo stesso percorso validato dei comandi.

java · OpenFdoApi
OpenFdoApi api = Bukkit.getServicesManager().load(OpenFdoApi.class);

// Collega il tuo modulo carcere come esecutore della pena
api.adapters().setDetention(myPrisonModule);

// Il modulo carcere segnala un'evasione confermata: il core aggiorna il
// fascicolo, avvisa gli agenti in servizio e propone lo status ricercato
api.reportEscape(inmate, "world", x, y, z);

// Apri un fascicolo via API (stesso percorso validato dei comandi)
api.dossiers().open(subject, "Mario", "polizia", agentUuid, 48);
  • agents() — arruolamento, gradi e risoluzione capability
  • dossiers() — fascicoli, capi d'imputazione, custodia e sentenze
  • evidence() — prove e catena di custodia
  • wanted() — registro ricercati
  • detention() — ordini di detenzione e timer della pena
  • adapters() — sostituzione runtime di storage, detention, audit e altro

Sicurezza e neutralità

  • Il core non contiene il nome di nessun corpo, grado, reato o sigla: tutto in config
  • Il numero di fascicolo è un contatore persistito per anno e corpo: niente collisioni dopo un riavvio
  • Le sezioni A e C del fascicolo sono immutabili dopo la firma
  • Storage durevole: scrittura atomica con backup, recupero da write interrotti
  • Non crasha se un adapter manca: disattiva in silenzio la capability collegata
  • Eventi Bukkit: atto prodotto, fascicolo aperto