Open Weapons
Snapshot in decouplingIl sistema armi e tutto il gameplay roleplay collegato al combat: armi da fuoco e melee, munizioni, accessori, armature e protezioni, fino a manette, arresti, perquisizioni, rapine, wanted e radio delle forze dell'ordine.
Aree funzionali
Open Weapons non è solo "armi": è l'intero strato di combat roleplay, pensato come base pubblica che altri moduli possono estendere.
Arsenale iniziale
Tutto è guidato da config: weapons.yml, ammo.yml, attachments.yml e armor.yml. Questi sono i contenuti inclusi di default, pronti da modificare.
Armi
Munizioni e caricatori
| Calibro | Ogni voce può definire |
|---|---|
9mm, 46mm, 50ae, 556nato, 762nato, 12gauge, magazines | Nome display, materiale, custom model data, stack massimo, classe di penetrazione, danno durabilità armor, moltiplicatore danno flesh e danno durabilità scudo. |
Accessori
| Accessorio | Slot |
|---|---|
holographic_sight, scope_3x, scope_10x | optic |
vertical_grip | underbarrel |
extended_magazine | magazine |
suppressor | barrel |
light_trigger, full_auto_converter | internal |
Ogni accessorio definisce categorie e armi compatibili, moltiplicatori di recoil, spread, ADS, hipfire, suono, distanza e mobilità, bonus zoom, tempo di installazione ed eventuale illegalità.
Armature e caschi
Comandi
Nello snapshot attuale i comandi vengono registrati tramite il core storico; verranno consolidati in un plugin.yml proprio quando Open Weapons diventerà un plugin Paper autonomo.
| Comando | Funzione |
|---|---|
/items | Apre il catalogo / dà gli item arma. |
/weapons | Alias di /items. |
/weaponconfig | Gestione della configurazione armi. |
/weaponbench | Apre il banco armi per installare accessori. |
/rob | Avvia una rapina su un bersaglio. |
/frisk | Perquisisce un giocatore. |
/arrest · /uncuff | Arresto e rilascio di un detenuto. |
/bail · /arrests | Cauzione e gestione degli arresti. |
/wanted | Gestione del livello di ricercato. |
/lawradio | Canale radio delle forze dell'ordine. |
/sos | Richiesta di soccorso / telefono. |
Configurazione
I file di config pubblici vivono nel sorgente sotto open-weapons/src/main/resources/ e vengono generati nella cartella dati del plugin al primo avvio.
weapons.yml— definizioni delle armi e varianti visualiammo.yml— munizioni e caricatoriattachments.yml— accessori e slotarmor.yml— armature e caschimessages_it.yml— messaggi in italiano
Cosa definisce weapons.yml
- Categoria arma e materiale base
- Custom model data e stati visuali (idle, aiming, reload)
- Varianti visuali: caricatore, grip, ottica e combinazioni
- Varianti colore e skin
- Danno e moltiplicatore headshot
- Fire rate, reload time e automatico
- Dimensione caricatore e tipo munizione
- Distanza massima e falloff del danno
- Recoil e spread (hipfire, ADS, movimento, sneak, jump)
- Suoni e model data del caricatore
m4a1:
category: assault_rifles
ammo: 556nato
damage: 7.0
headshot-multiplier: 1.8
fire-rate: 100 # colpi/min
reload-time: 2.4 # secondi
magazine-size: 30
automatic: true
max-distance: 90.0
Bridge e API combat
Due superfici di integrazione: un bridge verso Open Cosmetics e una API di policy combat per regole server-specific.
Bridge con Open Cosmetics
Open Weapons registra un OpenCosmeticsWeaponBridge via Bukkit Services, così Open Cosmetics può applicare LED, colori e skin senza conoscere il registry interno delle armi: verifica se un item è un'arma, ne legge l'id e ne chiede il refresh visuale.
API di policy combat
Una policy può negare l'uso dell'arma, il bersaglio o l'impatto, oppure semplicemente ascoltare gli eventi di sparo e hit — perfetta per safezone, eventi, training, regole per fazioni e protezioni temporanee.
// Modello esposto dal modulo
WeaponCombatPolicy // la tua regola
WeaponCombatDecision // allow / deny
WeaponUseContext // chi spara, con cosa
WeaponTargetContext // bersaglio e condizioni
WeaponImpactContext // impatto e danno
// Esempio: niente uso armi in safezone
policy = (use) -> isSafezone(use.shooter().getLocation())
? WeaponCombatDecision.deny()
: WeaponCombatDecision.allow();
Resource pack
Gli asset arma in formato aperto stanno in open-weapons/assets/resource-pack/. La build Maven genera lo zip Minecraft-ready durante package.
bash scripts/build-resource-packs.sh
# output: target/resource-packs/open-weapons-resource-pack.zip
Roadmap del modulo
Open Weapons è uno snapshot pubblico in decoupling: il codice è già nel namespace dev.openrp.weapons, ma alcune classi dipendono ancora dal vecchio core roleplay. I prossimi passi:
- Creare
OpenWeaponsPlugin extends JavaPlugin - Spostare i comandi in
plugin.yml/paper-plugin.yml - Rimuovere i riferimenti al vecchio core
- Introdurre una API pubblica minima o adapter opzionali
- Rendere opzionali aziende, polizia e staff log
- Aggiungere test su registry, model data e combat policy