Open Companies
CompilabileIl Company Core per server roleplay: identità aziendale, ruoli, membri, inviti, camera di commercio, licenze, sede e asset fisici. Funziona subito con default YAML e lascia economy, permessi, regioni, identità e storage ai tuoi adapter.
Perché adapter-first
Open Companies non hardcoda economy, permessi o regioni. Dipende da sette interfacce, tutte con un default incluso, e le espone a runtime tramite api.adapters().
| Adapter | Responsabilità | Default incluso |
|---|---|---|
StorageAdapter | Persiste aziende, asset e richieste | YAML o memoria |
EconomyAdapter | Costo creazione e tesoreria aziendale | Wallet demo in memoria |
PermissionAdapter | Controlli permessi | Permission node Bukkit |
RegionAdapter | Validazione sede e coordinate controllate | No-op |
IdentityAdapter | Prefissi, tab e identità aziendale | No-op |
NotificationAdapter | Notifiche a membri e staff | Chat |
LoggingAdapter | Audit trail delle azioni sensibili | File, console o nessuno |
Vault, LuckPerms, WorldGuard e Open Vending Machines restano soft dependency: se non ci sono, il modulo si avvia comunque.
Come nascono le aziende
Una sola chiave di config governa il flusso: companies.creation.mode. Cambi modalità senza cambiare codice.
/company create <nome> <tipo>. Limiti, costo e cooldown restano server-side./company apply; lo staff approva o rifiuta dalla camera di commercio./company admin create, per server con camera di commercio controllata.Ruoli, licenze e asset
Il permission node abilita il comando; l'autorizzazione reale dentro l'azienda passa dai ruoli e dalle capability.
| Ruolo | Livello | Capability principali |
|---|---|---|
CEO | 6 | Tutte, incluso ADMIN |
DIRECTOR | 5 | Licenze, finanza, identità |
VICE_DIRECTOR | 4 | Licenziamenti e cambio ruolo |
MANAGER | 3 | Inviti e gestione asset |
EMPLOYEE | 2 | Vista e uso asset |
TRAINING | 1 | Vista e uso asset base |
- Stati azienda:
ACTIVE,SUSPENDED,DISSOLVED - Licenze: food, security, transport, banking, media, real estate, healthcare e altro
- Sede:
/company admin sethq, validabile viaRegionAdapter - Asset: terminali, POS, casseforti, badge reader, display, storage e chioschi
Comandi
Comando principale /company, con alias /opencompanies, /ocompanies e /companies.
| Comando | Funzione | Permesso |
|---|---|---|
/company create <nome> <tipo> | Fonda un'azienda in modalità diretta | opencompanies.create |
/company apply <nome> <tipo> [descr.] | Invia una richiesta alla camera | opencompanies.apply |
/company list / info | Consulta aziende e dettagli | opencompanies.use |
/company members | Mostra i membri della tua azienda | opencompanies.use |
/company invite / fire / role | Gestisce persone e ruoli | opencompanies.invite / opencompanies.fire / opencompanies.role |
/company licenses | Mostra le licenze aziendali | opencompanies.use |
/company assets | Registra e consulta asset | opencompanies.assets |
/company admin ... | Creazione staff, status, owner, licenze, sede, richieste e reload | opencompanies.admin |
API pubblica
Recupera OpenCompaniesApi dal Services Manager di Bukkit. Comandi e API passano dallo stesso percorso validato, lockato e auditabile.
OpenCompaniesApi api = Bukkit.getServicesManager().load(OpenCompaniesApi.class);
CompanyResult result = api.companies()
.createCompany(ownerUuid, "Owner", "Red Spot Foods", "food");
boolean canFire = api.companies()
.hasCapability(playerUuid, "red-spot-foods", CompanyCapability.FIRE);
api.chamber().grantLicense("red-spot-foods", CompanyLicenseType.FOOD_SERVICE);
api.assets().registerAsset("red-spot-foods", staffUuid, CompanyAssetType.POS, "world", 10, 64, -3);
CompanyService— aziende, membri, inviti, ruoli e ownershipChamberService— richieste, licenze, status e sedeCompanyAssetService— asset fisici e controlli uso/gestioneAdapterRegistry— sostituzione runtime di economy, storage e sistemi esterni
Integrazione con Open Vending Machines
Quando Open Vending Machines è presente, Open Companies registra un OpenCompaniesBusinessAdapter: i distributori possono appartenere alle aziende e rispettarne ruoli e capability.
| Capability vending | Ruolo minimo |
|---|---|
USE | Employee+ |
RESTOCK | Employee+ oppure Manager+ se configurato |
WITHDRAW | Manager+ |
EDIT_PRICE | Manager+ |
MANAGE | Director+ |
Se Open Vending Machines non è installato, l'integrazione non viene caricata e Open Companies resta pienamente utilizzabile.
Sicurezza e concorrenza
La GUI e i comandi sono front-end sottili: la fonte di verità resta nei servizi core.
- Ogni mutazione valida permesso, ruolo, stato azienda, limiti, nome, player e cooldown
- Le operazioni sensibili girano sotto lock per
companyId - Il costo creazione viene rimborsato se la creazione fallisce o un evento la annulla
- Eventi Bukkit disponibili: creazione, cancellazione, inviti, ruoli, status, licenze e sede