Moduli Filosofia Architettura Installazione Download Changelog Wiki Scarica il JAR

Open Companies

Compilabile

Il Company Core per server roleplay: identità aziendale, ruoli, membri, camera di commercio, licenze, sede, asset fisici, tesoreria, ledger, contanti e carte. Funziona subito con default YAML e lascia economy, permessi, regioni, identità e storage ai tuoi adapter.

Namespacedev.openrp.companies
Comando/company · /opencompanies · /companies
Dipendenzenessuna obbligatoria
OpzionaliOpenCore · Vault · LuckPerms · WorldGuard · OpenVendingMachines
APIOpenCompaniesApi

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().

AdapterResponsabilitàDefault incluso
StorageAdapterPersiste aziende, asset, richieste, ledger e paghe ricorrentiYAML o memoria
EconomyAdapterConti personali, costo creazione e tesoreria aziendaleWallet demo in memoria
PermissionAdapterControlli permessiPermission node Bukkit
RegionAdapterValidazione sede e coordinate controllateNo-op
IdentityAdapterPrefissi, tab e identità aziendaleNo-op
NotificationAdapterNotifiche a membri e staffChat
LoggingAdapterAudit trail delle azioni sensibiliFile, console o nessuno

Vault, LuckPerms, WorldGuard e Open Vending Machines restano soft dependency: se non ci sono, il modulo si avvia comunque.

Tesoreria, cash e carte

La finanza aziendale passa da servizi server-side: ogni movimento è lockato per azienda, scritto nel ledger e notificato con un evento Bukkit.

Treasury ledgerDepositi, prelievi, vendite, bonifici e stipendi finiscono in righe append-only con causale, attore, target e nota.
Banking personaleBanconote fisiche, conto bancario personale e carte pagamento convivono: ATM e POS chiamano le API, non comandi money.
Payroll ricorrenteI direttori possono impostare paghe periodiche dai terminali; il task paga quando sono dovute e salta i cicli non finanziati.

Come nascono le aziende

Una sola chiave di config governa il flusso: companies.creation.mode. Cambi modalità senza cambiare codice.

PLAYER_DIRECTI player fondano subito con /company create <nome> <tipo>. Limiti, costo e cooldown restano server-side.
PLAYER_APPLICATIONI player inviano una richiesta con /company apply; lo staff approva o rifiuta dalla camera di commercio.
ADMIN_ONLYSolo lo staff crea aziende con /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.

RuoloLivelloCapability principali
CEO6Tutte, incluso ADMIN
DIRECTOR5Licenze, finanza, identità
VICE_DIRECTOR4Licenziamenti e cambio ruolo
MANAGER3Inviti e gestione asset
EMPLOYEE2Vista e uso asset
TRAINING1Vista 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 via RegionAdapter
  • Asset: terminali, POS, casseforti, ATM, badge reader, display, storage e chioschi

Comandi

Comando principale /company, con alias /opencompanies, /ocompanies e /companies.

ComandoFunzionePermesso
/company create <nome> <tipo>Fonda un'azienda in modalità direttaopencompanies.create
/company apply <nome> <tipo> [descr.]Invia una richiesta alla cameraopencompanies.apply
/company list / infoConsulta aziende e dettagliopencompanies.use
/company membersMostra i membri della tua aziendaopencompanies.use
/company invite / fire / roleGestisce persone e ruoliopencompanies.invite / opencompanies.fire / opencompanies.role
/company licensesMostra le licenze aziendaliopencompanies.use
/company assetsConsulta asset aziendaliopencompanies.assets
/company assets register <tipo> / removeRegistra o rimuove il blocco che stai guardandoopencompanies.assets
/company admin givecash <player> <amount>Consegna banconote fisiche a un player onlineopencompanies.admin
/company admin givecard <player>Emette una carta pagamento personaleopencompanies.admin
/company admin ...Creazione staff, status, owner, licenze, sede, richieste e reloadopencompanies.admin

API pubblica

Recupera OpenCompaniesApi dal Services Manager di Bukkit. Comandi e API passano dallo stesso percorso validato, lockato e auditabile.

java · OpenCompaniesApi
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);
api.treasury().collectFromPlayer("red-spot-foods", customer, 12.50, TransactionType.SALE_CARD, staffUuid, "cassa POS");
api.banking().issueCard(player);
  • CompanyService — aziende, membri, inviti, ruoli e ownership
  • ChamberService — richieste, licenze, status e sede
  • CompanyAssetService — asset fisici e controlli uso/gestione
  • TreasuryService — saldo, movimenti atomici, ledger e pagamenti verso player
  • BankingService — contanti fisici, deposito/prelievo e carte pagamento
  • AdapterRegistry — 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 vendingRuolo minimo
USEEmployee+
RESTOCKEmployee+ oppure Manager+ se configurato
WITHDRAWManager+
EDIT_PRICEManager+
MANAGEDirector+

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
  • Il ledger della treasury è append-only e recuperabile via API
  • Eventi Bukkit disponibili: creazione, cancellazione, inviti, ruoli, status, licenze, sede e transazioni