Moduli Filosofia Architettura Installazione Download Changelog Wiki Scarica il JAR

Open Jobs

Compilabile

Il motore dei lavori base per server roleplay: il minatore che scende in miniera, il boscaiolo che va al bosco, il pescatore al porto. Un lavoro base è un'attività fisica accessibile a chiunque — vai, lavori, guadagni, senza assunzioni né aziende. Neutro rispetto all'ambientazione: il core non conosce nessun lavoro, materiale o location — tutto vive nella config o dietro adapter opzionali.

Namespacedev.openrp.jobs
Comandi/lavoro · /lavoro admin
Dipendenzenessuna obbligatoria
OpzionaliOpenCore · OpenEconomy · OpenCompanies · OpenIdentity · WorldGuard · LuckPerms
APIOpenJobsApi

RP First: paga l'attività, non il tempo

Il plugin non paga i minuti trascorsi nella region. Stare fermi in miniera non è lavorare. La sessione traccia ciò che fai fisicamente — blocchi estratti, pesci pescati, item trasformati — ed è l'unità fondamentale di tracciamento. Il lavoro deve essere fatto davvero.

Core
Job · WorkSession · WorkLocation · WorkLicense · WorkRecord · Progression
Configjobs · location_types · progression
Adaptereconomy · company · identity · region

Il test di neutralità: "Minatore" → core (config per nome e risorse). "Raccoglitore di adamantio" → config. "Lavoratore che estrae risorse da una location e riceve una paga" → core. Il realistico italiano è solo la configurazione di riferimento; examples/fantasy è l'opposto sullo stesso codice.

Tre modelli di pagamento

Ogni lavoro sceglie come viene pagato. Sul pagamento base si applicano poi i moltiplicatori di progressione, cooperativa, strumento, turno e stagione.

ModelloCome paga
a_produzionePer unità di materiale valido prodotta nella sessione, con una soglia minima sotto la quale non paga nulla. Il più RP: paga il lavoro reale.
a_sessionePer durata effettiva attiva, con un malus se l'attività rilevata scende sotto la soglia. Adatto a lavori difficili da misurare.
a_consegnaNiente durante l'estrazione: si paga per unità quando il lavoratore raggiunge il punto di consegna. Il trasporto è fisico e vulnerabile.

I lavori trasformativi (falegname, fabbro, fornaio) pagano per ogni trasformazione completata su un banco designato, con un craft_time_seconds che impedisce il crafting istantaneo abusivo.

I primitivi del lavoro

Il core non sa cosa sia "minatore": sa cosa sia un lavoratore che svolge un'attività in una location e viene pagato. Tutto il resto vive in jobs.yml, location_types.yml e progression.yml.

Job & WorkLocationIl lavoro e la location fisica dove accade, legata a una region. La capienza limita le sessioni simultanee: competizione naturale per i posti migliori.
WorkSessionInizia, lavora, finisci. Esci dalla region e va in pausa (l'orologio si ferma); resta fuori troppo e viene abbandonata, pagata parzialmente.
WorkRecord & ProgressioneNiente XP: il grado deriva dalle sessioni reali nel tempo, per lavoro. Il decadimento opzionale erode chi sparisce per mesi.
WorkLicenseUn'identità professionale, non burocrazia. Emessa auto alla prima sessione o a mano da un admin; revocabile. Il record nel DB è autoritativo.
CooperativaPiù lavoratori dello stesso mestiere nella stessa location attivano un bonus automatico. Lavorare insieme è più redditizio, senza alcun comando.
Strumenti, turni & stagioniStrumenti migliori, turni notturni e stagioni applicano moltiplicatori configurabili. Il contadino guadagna di più al raccolto.

Adapter

Ogni adapter ha un default funzionante ed è scoperto a runtime dal Bukkit ServicesManager. Assente o non reale, la feature collegata degrada in silenzio — nessun crash, nessuna dipendenza dura.

AdapterDefaultAssente / non reale →
StorageAdapterYAML atomico con backup (o memory)
PermissionAdapterBukkit (riflette LuckPerms)
NotificationAdapterchat / action bar
RegionAdaptersintetico per-chunkcon require_region_backend off resta usabile; un bridge WorldGuard porta regioni e tag reali e abilita il gating del punto di consegna
EconomyAdapterno-op (paga registrata)un bridge Open Economy eroga le paghe reali
CompanyEmploymentAdapterno-opun bridge Open Companies reindirizza la paga al datore di lavoro
IdentityAdapterno-opun bridge Open Identity rende le licenze item fisici con il grado inciso

Comandi

Il permesso openjobs.use abilita l'uso del comando; openjobs.admin sblocca il sottocomando admin.

ComandoFunzione
/lavoro listatutti i lavori disponibili con location e requisiti
/lavoro info <lavoro>dettagli: categoria, location, paga, licenza, gradi
/lavoro inizia · fineavvia la sessione nella location corrente e ricevi il pagamento a fine
/lavoro statodurata attiva, prodotto e paga stimata della sessione
/lavoro profilostorico: gradi, sessioni e guadagni per ogni lavoro
/lavoro licenzale licenze possedute e il loro stato
/lavoro adminlicenza emetti/revoca, sessione termina, location add/remove, stats, reload

API pubblica

Recupera OpenJobsApi dal Services Manager di Bukkit. Espone il catalogo dei lavori, la sessione attiva, i record lifetime, le licenze e il grado live — i dati che i widget di Open Gestionale e un item licenza di Open Identity leggono.

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

// Registra il tuo bridge (es. Open Economy) come economy adapter
api.adapters().setEconomy(myEconomyBridge);

// Lettura per i widget del gestionale o per un item licenza
api.getActiveSession(playerUuid).ifPresent(session -> { /* ... */ });
api.getTier(playerUuid, "minatore").ifPresent(tier -> { /* incidi sul tesserino */ });
  • jobs() / getJob(id) — il catalogo dei lavori dalla config
  • getActiveSession(uuid) — la sessione attiva o in pausa del lavoratore
  • getRecord(uuid, job) / getRecords(uuid) — storico e progressione
  • getTier(uuid, job) — il grado live (decay-adjusted) per l'item licenza
  • hasLicense / getLicense / getLicenses — licenze professionali
  • adapters() — sostituzione runtime di economy, company, identity, region

Sicurezza e neutralità

  • Il core non contiene il nome di nessun lavoro, materiale o location: tutto in config
  • Paga l'attività reale rilevata, mai i minuti trascorsi nella region
  • Non impedisce mining o crafting fuori dalle location: sono attività Minecraft normali, semplicemente non pagate
  • Storage durevole: scrittura atomica con backup, recupero da write interrotti
  • Non crasha se un adapter manca: disattiva in silenzio la feature collegata
  • Non tocca la chat o i prefissi: il grado è un dato interno, non un display sociale