Open Access
StandaloneDefinisci chi può usare, aprire o modificare oggetti dentro una regione: casse, container, porte, macchine e blocchi custom. Profili, trust, ruoli e preset, con storage SQLite o MySQL.
Cosa controlla
Open Access protegge gli oggetti interattivi dentro una regione: dai container vanilla ai blocchi custom delle macchine, con regole per profilo o override sul singolo blocco.
Caratteristiche
Un plugin Paper autonomo, pensato come strato di accesso pubblico che altri moduli proprietà, aziende e hotel possono estendere via provider.
- Plugin
OpenAccesscon comando/openaccess(alias/access,/oa) - Storage SQLite di default con supporto MySQL/MariaDB
- Cache in memoria per risoluzioni rapide
- Operazioni storage su executor dedicato, con ritorno al main thread per messaggi e GUI
- API pubblica esposta via Bukkit Services
- Provider registry per futuri moduli proprietà, aziende e hotel
Comandi
Il comando principale è /openaccess, con alias /access e /oa.
| Comando | Funzione |
|---|---|
/openaccess | Comando principale. |
/openaccess region link <PROPERTY|COMPANY|HOTEL_ROOM|REGION> <wgRegion> <owner> [world] | Collega una regione. |
/openaccess region unlink <wgRegion> [world] | Scollega una regione. |
/openaccess region info [wgRegion] [world] | Info sulla regione. |
/openaccess trust <onlinePlayer|uuid> [manage] | Autorizza un player. |
/openaccess untrust <onlinePlayer|uuid> | Revoca un player. |
/openaccess player add <onlinePlayer|uuid> [open|manage|all] | Regola per player. |
/openaccess player remove <onlinePlayer|uuid> | Rimuove una regola. |
/openaccess preset <private|members|managers|public|custom> [region|block] | Imposta un preset. |
/openaccess reload | Ricarica la cache accessi. |
/openaccess debug | Debug. |
Alias disponibili: /access e /oa.
Permessi
I permessi controllano amministrazione, link delle regioni, reload, debug e bypass dei controlli di accesso.
| Permesso | Descrizione | Default |
|---|---|---|
openrp.access.admin | Amministrazione completa. | op |
openrp.access.region.manage | Link/unlink regioni WorldGuard. | op |
openrp.access.reload | Ricarica cache accessi. | op |
openrp.access.debug | Usa debug. | op |
openrp.access.bypass | Bypassa i controlli accesso. | op |
Esistono alias compatibili next.access.* (admin, region.manage, reload, debug, bypass).
Preset
I preset definiscono in un colpo solo chi può usare i blocchi sensibili di una regione o di un singolo blocco.
| Preset | Comportamento |
|---|---|
private | Solo proprietari, manager e regole esplicite. |
members | Membri e manager possono usare i blocchi sensibili. |
managers | Solo manager e proprietari. |
public | Tutti possono usare i blocchi sensibili. |
custom | Solo regole esplicite e manager. |
Il preset di regione è il default; un preset di blocco crea un override per una posizione specifica. Lo shift-right-click su un blocco gestibile apre l'editor GUI.
Storage e configurazione
SQLite di default sul file open_access.db, con supporto MySQL/MariaDB tramite connection pool. Le tabelle gestite sono access_profiles, access_rules e access_audit_logs.
storage:
type: sqlite
sqlite:
file: open_access.db
access:
additional-interactive-materials:
- NOTE_BLOCK
- BARRIER
- LIGHT
- STRUCTURE_VOID
API
Il servizio OpenAccessApi si ottiene via Bukkit.getServicesManager().load(OpenAccessApi.class) ed espone risoluzione accessi, profili, cache ed editor GUI.
resolve(player, location, action)— risolve l'accessocanManage(player, profile)— verifica la gestionefindProfileAt(location)— profilo alla posizionefindProfileByRegion(world, regionId)— profilo per regioneprofiles()— elenco dei profilirefreshCache()— ricarica la cacheopenEditor(player, profile, block)— apre l'editor GUIregisterOwnerProvider/unregisterOwnerProvider— provider esterni
Le azioni disponibili sono OPEN, CONTAINER, SIGNAL, MACHINE, PLACE, BREAK e MANAGE. I provider esterni implementano OpenAccessOwnerProvider per aggiungere principal RP: proprietà, aziende, hotel e affitti.
OpenAccessApi api = Bukkit.getServicesManager()
.load(OpenAccessApi.class);
// È consentito aprire il container qui?
boolean ok = api.resolve(player, block.getLocation(),
AccessAction.CONTAINER);
// Aggiungi principal RP via provider esterno
api.registerOwnerProvider(myOwnerProvider);