Aller au contenu

Wiki

Serveur Privé

KubeJS : C'est quoi, comment ça marche

1 — KubeJS : C'est quoi, comment ça marche

Qu'est-ce que KubeJS ?

KubeJS est un mod qui permet de modifier le jeu sans créer un mod complet. Il expose une API JavaScript pour : ajouter/retirer des recettes, créer des items custom, modifier les drops des mobs, intercepter des events (kill, craft, login), gérer les tags, etc. C'est l'outil principal qui définit l'identité du modpack Arcadia V2.

Où vit le KubeJS ?

Tout est dans le dossier kubejs/ à la racine du serveur (ou de l'instance client pour les client_scripts/). C'est ce dossier qui est versionné et partagé entre l'équipe staff.

⚠ Avant de toucher au KubeJS
  • Faites TOUJOURS un backup du dossier kubejs/ avant modification massive.
  • Travaillez sur un serveur de test, jamais en prod.
  • Les erreurs de syntaxe peuvent empêcher le serveur de démarrer.
  • Consultez logs/kubejs/server.log et startup.log à chaque reload.

2 — Les 3 types de scripts (CRITIQUE)

KubeJS sépare les scripts en 3 catégories. Chacune a son moment d'exécution, ses possibilités et son comportement au reload. Mettre un script dans le mauvais dossier ne marchera tout simplement pas.

🟢 Server Scripts
kubejs/server_scripts/
RELOAD OK

S'exécutent au démarrage serveur ET à chaque /reload. C'est là que tout se passe au quotidien : recettes, drops, stats de mobs, events, tags.
🔴 Startup Scripts
kubejs/startup_scripts/
RESTART REQUIS

S'exécutent UNE SEULE FOIS au lancement. Pas rechargeable. Sert à enregistrer des items, blocs, sons, armures. Toute modif → restart serveur obligatoire.
🔵 Client Scripts
kubejs/client_scripts/
F3+T

S'exécutent côté client uniquement. Tooltips, JEI, visuels. Reload via F3+T. Doit être présent sur chaque client.

Tableau récap

Type Quand ça run Rechargeable Usage typique
Startup Lancement du jeu NON (restart) Items, blocs, sons, tiers d'armure, creative tabs
Server Démarrage + /reload OUI Recettes, tags, events, loot tables, stats mobs
Client Join client + F3+T OUI (client) Tooltips, JEI, visuels
💡 Comment savoir où placer un nouveau script ?
  • Tu enregistres un nouvel item, bloc, son, armure ? → startup_scripts
  • Tu ajoutes/retires une recette, modifies un drop, crée un event ? → server_scripts
  • Tu personnalises un tooltip, masques un truc de JEI ? → client_scripts

3 — Structure du KubeJS Arcadia V2

kubejs/ ├── assets/arcadia/ # Textures, sons, traductions (côté client) │ ├── lang/ # en_us.json, fr_fr.json + autres locales │ ├── sounds/ # Fichiers audio des music discs │ └── textures/item/ # PNG des items custom (clés, armures, fusion...) │ ├── client_scripts/ # Scripts CLIENT — reload F3+T │ └── arcadia_item_tooltips.js │ ├── data/ # Datapack overrides (JSON pur, pas du JS) │ ├── apotheosis/ # Tuning Apotheosis (raretés, affixes, charm) │ ├── apothic_attributes/ # Gates de vol (Dragon's Breath, Nether Star) │ ├── apothic_spawners/ # Blacklist mobs spawners │ ├── arcadia/jukebox_song/ # 20 jukebox songs définitions │ └── minecraft/tags/ # Override tags vanilla (enchantable) │ ├── server_scripts/ # Scripts SERVEUR — /reload OK │ ├── tags/ # Tags d'items (convention c:) │ ├── recipes/ # TOUT ce qui touche aux recettes │ │ ├── recipe_overhaul.js # 2900+ lignes — hardening principal │ │ ├── create/ # Fixes/ajouts Create │ │ ├── custom/ # Recettes custom Arcadia │ │ └── mods/ # Tweaks mods spécifiques │ ├── items/ │ │ ├── banned/ # Système de ban (recipe + inventory scan) │ │ └── loot/ # Nerfs loot tables (diamants, netherite...) │ ├── mobs/ # Stats mobs, drops, filtres trades │ └── fixes/compat/ # Hotfixes compatibilité mods │ └── startup_scripts/ # Scripts STARTUP — restart obligatoire ├── registry/ # Enregistrement items, blocs, sons, armures └── ui/ # Creative tab, masquage items, welcome msg

Convention de nommage Arcadia

  • Fichiers en snake_case.js — le nom décrit la fonction, pas le mod.
  • Namespace custom : arcadia: partout (ex: arcadia:vote_key).
  • Chaque recette custom a un .id('arcadia:nom') explicite.
  • Header // Priority: N en haut de fichier (plus haut = chargé en premier).
  • Pas d'accents dans les noms de fichiers — ASCII only.

4 — Lire un script : la méthode

L'anatomie d'un server_script

// Priority: 100              ← Ordre de chargement (optionnel)

ServerEvents.recipes(event => {     // ← Hook : event "recipes"

    // 1) On retire d'abord
    event.remove({ output: 'minecraft:diamond_sword' });

    // 2) On rajoute ensuite (avec un id explicite)
    event.shaped('minecraft:diamond_sword', [
        ' D ',
        ' D ',
        ' S '
    ], {
        D: 'minecraft:diamond',
        S: 'minecraft:stick'
    }).id('arcadia:custom_diamond_sword');
});

Les events les plus courants chez Arcadia

Event À quoi ça sert
ServerEvents.recipes Ajouter, retirer, modifier des recettes.
ServerEvents.tags Manipuler les tags d'items, blocs, entités.
LootJS.modifiers Modifier les loot tables (mobs, structures, fishing).
EntityJSEvents Modifier les stats des mobs (HP, dégâts, armure).
PlayerEvents.inventoryChanged Détecter changements d'inventaire (scan ban).
BlockEvents Réagir aux placements/destructions de blocs.
StartupEvents.registry Enregistrer items, blocs, sons (startup only).
ItemEvents.tooltip Modifier les tooltips (client_scripts only).

Trouver le bon fichier pour une modif

1
Tu veux modifier une recette ? Va dans server_scripts/recipes/. Cherche par nom de mod ou ouvre recipe_overhaul.js (Ctrl+F le nom de l'item).
2
Tu veux modifier un drop de mob ?server_scripts/items/loot/loot_table_nerfs.js.
3
Tu veux changer les stats d'un boss ?server_scripts/mobs/mob_stat_overrides.js.
4
Tu veux bannir/débannir un item ?server_scripts/items/banned/recipe_remover.js ET inventory_scanner.js.
5
Tu veux ajouter un item custom ?startup_scripts/registry/item_registry.js + traductions dans assets/arcadia/lang/.
🔍 Recherche rapide
Pour trouver où un item est référencé, utilise une recherche globale dans tout le dossier kubejs :
grep -r "arcadia:vote_key" kubejs/
// ou sous Windows avec ripgrep :
rg "arcadia:vote_key" kubejs/

5 — Désactiver / Supprimer un script proprement

Méthode 1 — Commenter une section (recommandée pour test)

Encadre la section que tu veux désactiver entre /* */ :

ServerEvents.recipes(event => {
    event.remove({ output: 'minecraft:diamond_sword' });

    /* DÉSACTIVÉ TEMPORAIREMENT — 11/05/2026 — test PvP
    event.shaped('minecraft:netherite_sword', [...], {...})
        .id('arcadia:custom_netherite_sword');
    */
});

Méthode 2 — Renommer le fichier avec .disabled

KubeJS ne charge que les fichiers .js. Renommer un fichier en .js.disabled le désactive sans le supprimer :

mob_damage_nerfs.js          ← chargé
mob_damage_nerfs.js.disabled  ← ignoré (mais conservé)

Méthode 3 — Supprimer le fichier

Définitif. À ne faire qu'après backup et confirmation que personne d'autre n'en dépend.

⚠ Pièges classiques en supprimant un script
  • Si tu supprimes item_registry.js du startup, tous les items custom disparaissent du monde. Inventaires affectés.
  • Si tu supprimes un script de recettes custom, les items deviennent injoignables sauf via /give.
  • Si tu supprimes recipe_remover.js, les 152 items bannis redeviennent craftables.
  • Si tu supprimes inventory_scanner.js, les bans existants restent dans l'inventaire des joueurs.

Procédure recommandée pour retirer un script

1
Backup du dossier kubejs (cp -r kubejs kubejs.bak.$(date +%F)).
2
Renomme le fichier en .disabled au lieu de supprimer.
3
Reload selon le type :
  • server_scripts → /reload
  • startup_scripts → restart serveur complet
  • client_scripts → F3+T (chaque client)
4
Vérifie les logs : logs/latest.log, logs/kubejs/server.log, logs/kubejs/startup.log.
5
Test in-game pendant au moins 15 minutes avant de supprimer définitivement.

6 — Recharger le KubeJS : les commandes

Commandes principales

Commande Effet
/reload Recharge server_scripts, datapacks, recettes, tags, loot tables. La commande la plus utilisée.
/kubejs reload server_scripts Recharge UNIQUEMENT les server_scripts (plus rapide que /reload complet).
/kubejs reload client_scripts Recharge les client_scripts (à exécuter côté client).
/kubejs reload startup_scripts N'a PAS d'effet réel — affiché mais startup nécessite restart.
/kubejs hand Affiche les infos complètes de l'item en main (id, NBT, tags). Indispensable pour écrire des recettes.
/kubejs errors Liste les erreurs KubeJS du dernier reload.
/kubejs warnings Liste les warnings (recettes en conflit, doublons d'id).
/kubejs export Exporte les data dumps (recettes, tags) dans local/kubejs/export/.
/kubejs reload tags Recharge uniquement les tags.
F3+T (Client) Reload assets + client_scripts + textures + lang.

Cheatsheet : quoi reload selon la modif

Modif faite Action
server_scripts/*.js /reload OU /kubejs reload server_scripts
data/*.json (tags, recettes, loot) /reload
client_scripts/*.js F3+T sur le client
assets/* (textures, lang, sons) F3+T sur le client
startup_scripts/*.js Restart serveur
config/*.cfg ou *.toml Restart serveur
Ajout/retrait d'un mod Restart serveur + client
⚡ Reload plus rapide
/kubejs reload server_scripts est 2 à 5x plus rapide que /reload car il ne recharge pas les datapacks. Si tu n'as touché qu'à un .js, préfère ça.

7 — Le dossier data/ : datapack overrides

Le dossier kubejs/data/ contient des fichiers JSON qui surchargent les fichiers vanilla ou des mods au même chemin. C'est techniquement un datapack intégré, qui se recharge avec /reload.

Ce qui vit dans data/ chez Arcadia

Chemin Effet
data/apotheosis/rarities/ Tables de poids des raretés par world tier (haven → pinnacle).
data/apotheosis/affixes/armor/attribute/winged.json Affixe Winged (vol créatif) nerf : poids 25 → 3, mythic-only.
data/apotheosis/recipe/potion_charm.json Recette endgame : HDPE Sheet + Rune Matrix.
data/apothic_attributes/brewing_mixes/ Gates de vol (Dragon's Breath, Nether Star).
data/apothic_spawners/tags/entity_type/blacklisted_from_spawners.json 37 mobs interdits dans les spawners Apothic.
data/arcadia/jukebox_song/ Définitions des 20 musiques custom.
data/minecraft/tags/item/enchantable/durability.json Retire 53 items custom du tag enchantable.
data/parcool/advancement/ Désactive le spam du guide Parcool.

Anatomie d'un override

Si Apotheosis a un fichier apotheosis:winged.json, créer kubejs/data/apotheosis/affixes/armor/attribute/winged.json remplace le fichier d'origine.

📌 Astuce NeoForge : le champ "remove"
Pour retirer des entrées d'un tag sans tout réécrire, utilise le champ remove :
{
    "replace": false,
    "values": [],
    "remove": [
        "arcadia:adept_helmet",
        "arcadia:heretic_chestplate"
    ]
}
C'est exactement comme ça que data/minecraft/tags/item/enchantable/durability.json retire 53 items custom du tag vanilla.

8 — Modifications courantes : recettes pratiques

🚫 Bannir un nouvel item

1
Ouvre server_scripts/items/banned/recipe_remover.js.
2
Ajoute l'item à la liste des items bannis.
3
Ouvre inventory_scanner.js et ajoute le même item à la liste scannée (sinon les joueurs qui en ont déjà peuvent le garder).
4
Ajoute-le aussi à config/jei/blacklist.json pour le masquer de JEI.
5
/reload, puis test : /give @s <item> — il devrait être retiré au pickup.

🔧 Modifier les stats d'un mob

Ouvre mob_stat_overrides.js. Les overrides sont commentés par catégorie (Twilight, Mowzie's, vanilla, etc.). Exemple :

// Pour augmenter le HP du Wither de 500 à 800 :
'minecraft:wither': { health: 800, damage: 12, armor: 15 },

Puis /reload. Les mobs déjà spawnés gardent leur ancien HP — les nouveaux auront les nouvelles valeurs.

💎 Modifier un drop rate

Ouvre items/loot/loot_table_nerfs.js. Diamond actuel = 0.5%, Netherite = 0.01%. Modifie la valeur, /reload, test sur un nouveau bloc miné.

➕ Ajouter une recette custom simple

ServerEvents.recipes(event => {
    event.shaped('5x minecraft:bread', [
        'WWW',
        ' S ',
        '   '
    ], {
        W: 'minecraft:wheat',
        S: 'minecraft:stick'
    }).id('arcadia:bread_bonus');
});

Place ce fichier dans server_scripts/recipes/custom/. Toujours mettre un .id() explicite pour éviter les conflits.

🎨 Ajouter un nouvel item custom

1
Crée la texture : assets/arcadia/textures/item/mon_item.png (64x64 recommandé).
2
Enregistre l'item dans startup_scripts/registry/item_registry.js :
StartupEvents.registry('item', event => {
    event.create('arcadia:mon_item')
        .displayName('Mon Item')
        .rarity('rare')
        .maxStackSize(16);
});
3
Ajoute les traductions dans assets/arcadia/lang/en_us.json ET fr_fr.json :
"item.arcadia.mon_item": "Mon Item"
4
RESTART serveur (startup_scripts).
5
Optionnel : ajoute une recette dans server_scripts/recipes/custom/ (reload OK pour cette partie).

9 — Erreurs courantes & debug

Lire les logs (obligatoire)

3 fichiers à connaître :

  • logs/kubejs/startup.log — erreurs de chargement startup (items, blocs custom).
  • logs/kubejs/server.log — erreurs server_scripts (recettes, events).
  • logs/kubejs/client.log — erreurs client (côté client uniquement).
  • logs/latest.log — log global du serveur (les autres mods).

FAQ — les erreurs typiques

Q: "Item or tag does not exist: xxx:yyy"
R: L'item n'existe pas ou le mod est désactivé. Utilise /kubejs hand pour récupérer l'ID exact. Vérifie aussi que tu utilises le bon namespace (minecraft: vs arcadia:).

Q: "Recipe already exists" ou doublon d'id
R: Tu as deux recettes avec le même .id(). Renomme l'une des deux. Vérifie avec /kubejs warnings.

Q: Mon item custom n'a pas de texture (carré violet/noir)
R: Vérifie le chemin assets/arcadia/textures/item/<nom>.png. Le nom du fichier doit exactement matcher l'id de l'item. F3+T pour reload côté client.

Q: Mon item custom apparaît avec le nom "item.arcadia.xxx"
R: Traduction manquante dans assets/arcadia/lang/en_us.json (ou fr_fr.json selon la locale du joueur). F3+T après ajout.

Q: Le serveur ne démarre plus après modif startup
R: Ouvre logs/kubejs/startup.log. Cherche la ligne avec "Error" ou "Exception". Le numéro de ligne du .js est indiqué. Pour rétablir vite : renomme ton fichier en .disabled.

Q: La modif ne s'applique pas après /reload
R: 3 causes courantes :

  • C'est un startup_script (restart obligatoire).
  • C'est dans config/ et pas dans kubejs/ (config = restart).
  • Erreur de syntaxe dans le script — vérifie /kubejs errors.

 

Q: Comment je teste une recette sans /reload ?
R: Tu ne peux pas. Mais /kubejs reload server_scripts est plus rapide que /reload complet.

⚠ Erreur fatale courante : oublier les guillemets
JavaScript est strict. minecraft:diamond sans guillemets crash le script. Toujours 'minecraft:diamond' ou "minecraft:diamond".

Outils de debug

  • /kubejs hand — donne l'ID complet + NBT de l'item en main.
  • /kubejs errors — liste les erreurs du dernier reload.
  • /kubejs warnings — liste les warnings (conflits, doublons).
  • /kubejs export — exporte recettes/tags vers local/kubejs/export/ (utile pour vérifier qu'une recette est bien chargée).
  • console.log() dans tes scripts — apparaît dans logs/kubejs/server.log.

10 — Bonnes pratiques staff Arcadia

✅ À faire

  • Backup avant toute modif : cp -r kubejs kubejs.bak.YYYY-MM-DD.
  • Commit Git après chaque modif testée. Le KubeJS doit être versionné.
  • Tester sur serveur dev avant prod. Toujours.
  • Toujours mettre un .id() sur les recettes custom.
  • Toujours ajouter EN + FR pour les traductions d'items custom.
  • Documenter dans modified_recipes.txt chaque ban/modif majeure.
  • Lire les logs après /reload, même si "ça a l'air OK".
  • Préférer .disabled à rm pour retirer un script (réversible).

❌ À ne pas faire

  • Modifier un startup_script en prod sans annoncer un restart.
  • Supprimer recipe_remover.js sans avoir d'abord vidé la liste — sinon les 152 bans sautent.
  • Ajouter des accents dans les noms de fichiers.
  • Mettre une recette sans id explicite — KubeJS génère un id auto qui peut bouger d'un reload à l'autre.
  • Modifier directement les configs des mods alors qu'on peut le faire via KubeJS (plus propre, versionné).
  • Ignorer les warnings — un warning ignoré pendant 3 mois devient un crash le jour où un mod update.
📚 Documentation officielle
  • kubejs.com/wiki/ — documentation officielle complète.
  • Le fichier modified_recipes.txt à la racine du kubejs/ — référence staff de TOUTES les modifs Arcadia.
  • Discord KubeJS pour les questions pointues (channel #help).
🎯 Workflow staff recommandé
  1. Pull les dernières modifs Git : git pull.
  2. Backup local : cp -r kubejs kubejs.bak.
  3. Édite ton fichier (VS Code recommandé, syntax highlighting).
  4. Reload approprié (/reload ou restart).
  5. Check logs : /kubejs errors + /kubejs warnings.
  6. Test in-game 15 min minimum.
  7. Documente dans modified_recipes.txt si modif majeure.
  8. Commit + push : git add . && git commit -m "feat: ...".
Contributeurs
v vyrriox

Economie serveur privé

1 — Easy NPC : Création & bases

Avant de commencer

  • Vous devez être opérateur (OP niveau 2+) pour utiliser les commandes Easy NPC.
  • Sur le serveur Arcadia, demandez à un admin de vous accorder une zone via FTB Chunks avant de poser des PNJ permanents.
  • Les PNJ Easy NPC sont persistants : ils restent même quand le chunk est déchargé.
  • La racine de toutes les commandes est /easy_npc (avec underscore).

Poser un PNJ — méthode par item

1
Récupérez l'item de spawn correspondant au type de PNJ voulu via le menu créatif (cherchez "Easy NPC" dans JEI). Exemple : easy_npc:humanoid_npc_spawn_egg, easy_npc:villager_npc_spawn_egg, etc.
2
Faites un clic droit au sol avec l'œuf. Le PNJ apparaît avec une apparence par défaut.
3
Sneak (Shift) + clic droit sur le PNJ pour ouvrir le menu de configuration complet.

Poser un PNJ — méthode par commande

/easy_npc spawn create <entity_type> ~ ~ ~
// exemple :
/easy_npc spawn create humanoid ~ ~ ~
/easy_npc spawn create villager ~ ~ ~ minecraft:overworld
Astuce skin
Pour copier le skin d'un autre joueur du serveur, allez dans l'onglet Skin → Player Skin et entrez son pseudo. Ou en commande : /easy_npc skin set player <pseudo> en visant le PNJ.

2 — Commandes Easy NPC (vérifiées)

Toutes les commandes commencent par /easy_npc <sous-commande>. La plupart ciblent un PNJ avec l'argument npc_target (UUID ou sélecteur).

Sous-commande Effet
/easy_npc list Liste tous les PNJ chargés (avec UUID, position, dimension).
/easy_npc info <npc> Affiche les infos détaillées d'un PNJ (skin, dialogues, trades, propriétaire).
/easy_npc spawn create <type> <pos> Crée un PNJ à la position donnée.
/easy_npc despawn <npc> Fait disparaître le PNJ (réversible avec respawn).
/easy_npc respawn <npc> Refait apparaître un PNJ despawné.
/easy_npc delete <npc> Supprime définitivement le PNJ.
/easy_npc name set <npc> <nom> Renomme le PNJ.
/easy_npc name visibility <npc> <mode> Change la visibilité du nom (always / on_hover / never).
/easy_npc name color <npc> <couleur> Change la couleur du nom affiché.
/easy_npc skin set <npc> <mode> Change le skin (default / player / url / custom).
/easy_npc dialog set <npc> <dialogue> Définit ou modifie un dialogue.
/easy_npc dialog open <npc> <player> Force l'ouverture d'un dialogue chez un joueur.
/easy_npc trading open <npc> <player> Ouvre l'écran de marchand pour un joueur.
/easy_npc trading reset <npc> Restock manuellement les trades du PNJ.
/easy_npc equipment <npc> <slot> <item> Équipe un item sur le PNJ (head/chest/legs/feet/mainhand/offhand).
/easy_npc pose <npc> <pose> Change la pose (standing / sitting / sleeping / etc.).
/easy_npc position <npc> <pos> Téléporte le PNJ à la position donnée.
/easy_npc rotate <npc> <angle> Tourne le PNJ.
/easy_npc scale <npc> <axe> <valeur> Redimensionne le PNJ (X/Y/Z, 0.1 à 5.0).
/easy_npc render <npc> <option> Modifie le rendu (visible, invisible, glow...).
/easy_npc owner set <npc> <player> Change le propriétaire du PNJ.
/easy_npc preset import <preset> Importe un preset (default / custom / data / world).
/easy_npc preset export <npc> <name> Exporte un PNJ comme preset.
/easy_npc objective <npc> ... Configure l'IA (follow, attack, navigation...).
/easy_npc reload Recharge les configs Easy NPC.
⚠ Attention
La commande /easy_npc delete est irréversible. Préférez despawn + respawn pour cacher temporairement un PNJ.

Cibler un PNJ : argument npc_target

  • Par UUID : /easy_npc info 12345678-1234-1234-1234-123456789abc
  • Par sélecteur : @npc[name=Aélys] (sélecteur custom Easy NPC)
  • Par visée : pas de sélecteur direct — utiliser /easy_npc list pour récupérer l'UUID.

3 — Configurer un PNJ marchand

1
Sneak + clic droit sur le PNJ → onglet Trading.
2
Choisissez le type de trade :
  • None — pas de marchand.
  • Basic — jusqu'à 12 trades simples, stock illimité.
  • Advanced — trades avancés : XP, prix dégressif, stock max, restock par durée.
  • Custom — déclenche un dialogue ou une commande au lieu d'ouvrir l'écran marchand.
3
Pour chaque ligne, glissez l'objet d'entrée A (ce que le joueur paie), éventuellement l'entrée B (paiement secondaire), puis l'objet de sortie (ce qu'il reçoit).
4
Pour le mode Advanced : ajustez Max Uses (stock avant restock), Reset Time (durée avant restock auto), et XP (gagné par le PNJ).
5
Sauvegardez. Le clic droit normal sur le PNJ ouvre désormais l'écran marchand.
💡 Les data components dans les trades
Easy NPC respecte les data components de MC 1.21. Pour vendre un item enchanté, avec un nom custom, ou un item Apothic affixé, glissez-le directement depuis l'inventaire — le PNJ vendra une copie identique.

4 — Arcadia Lootbox : Comment ça marche

Arcadia Lootbox (arcadialootbox) ajoute un système complet de coffres avec un Hub graphique, des clés multiples par catégorie, des animations d'ouverture, du free claim avec cooldown, un historique de drops, et un système de preview.

Principe général

  • Chaque lootbox a un identifiant unique défini en config (ex: arcadia_starter, boss_overlord).
  • Pour ouvrir une lootbox, il faut la clé compatible dans son inventaire.
  • L'ouverture déclenche une animation (configurée par lootbox) puis donne 1 ou plusieurs récompenses tirées par poids ou garanties.
  • Certaines lootboxes ont un free claim récurrent (toutes les X heures) sans clé.

Ouvrir le Hub Lootbox

Le hub graphique liste toutes les lootboxes disponibles. Pour l'ouvrir :

/lootbox

Ou via le clic-droit sur l'item Lootbox Hub si fourni dans le starter kit.

5 — Liste des clés Arcadia Lootbox

Le mod fournit 6 catégories de clés. Chaque catégorie a plusieurs paliers de rareté.

🗝️ Dungeon Keys (donjons)

Clés obtenues en complétant des donjons et en tuant des boss. 10 paliers :

common uncommon rare superior epic legendary mythic divine celestial transcendent

Format ID : arcadialootbox:dungeon_key_<rareté>
Exemple : arcadialootbox:dungeon_key_legendary

🛒 Shop Keys (boutique)

Clés vendues par les PNJ marchands contre Numesticas. Mêmes 10 paliers.

Format : arcadialootbox:shop_key_<rareté>

🗳️ Vote Keys (votes)

Récompense automatique aux votes sur le site Arcadia. Mêmes 10 paliers (palier dépend du nombre de votes consécutifs).

Format : arcadialootbox:vote_key_<rareté>

📦 Lootable Keys (loot général)

Drops aléatoires depuis structures, mob loot tables, fishing, etc. Mêmes 10 paliers.

Format : arcadialootbox:lootable_key_<rareté>

🎉 Event Keys (événements)

Distribuées par le staff lors d'événements ponctuels. 5 paliers uniquement :

bronze silver gold platinum diamond

Format : arcadialootbox:event_key_bronze/silver/gold/platinum/diamond

👑 Boss Keys (boss raids)

Drop des boss raids. 5 paliers :

minor major elite supreme overlord

Format : arcadialootbox:boss_key_minor/major/elite/supreme/overlord

📦 Donner une clé (admin)
Utilisez la commande native du mod :
/lootbox givekey <joueur> <key_id> <quantité>
// exemples :
/lootbox givekey Vyrriox arcadialootbox:dungeon_key_legendary 1
/lootbox givekey @a arcadialootbox:vote_key_common 1
/lootbox givekey Vyrriox arcadialootbox:boss_key_overlord 1

6 — Commandes Arcadia Lootbox (vérifiées)

Racine : /lootbox <sous-commande> (alias /arcadia_lootbox).

Commande Effet
/lootbox Ouvre le Hub graphique (sans argument).
/lootbox reload Recharge les configs lootboxes (async, sans freeze serveur).
/lootbox list Liste toutes les lootboxes disponibles avec leurs IDs.
/lootbox listkeys Liste tous les key_id enregistrés.
/lootbox stats Statistiques globales (ouvertures totales, drops, etc.).
/lootbox info <lootbox_id> Affiche le contenu détaillé d'une lootbox (loot table, weights).
/lootbox give <joueur> <lootbox_id> [amount] Donne le BLOC lootbox (à poser au sol).
/lootbox giveall <lootbox_id> [amount] Donne le bloc lootbox à tous les joueurs en ligne.
/lootbox givekey <joueur> <key_id> [amount] Donne une clé.
/lootbox preview <lootbox_id> Ouvre l'écran de prévisualisation des récompenses.
/lootbox history Affiche l'historique de vos derniers drops.
/lootbox clearhistory Efface votre historique.
/lootbox create <id> <displayName> Crée une nouvelle définition de lootbox (admin).
/lootbox delete <id> Supprime une définition de lootbox.
/lootbox setuses <pos> <uses> Modifie les utilisations restantes d'un bloc lootbox posé.
/lootbox resetcooldown Reset votre cooldown global.
/lootbox free <lootbox_id> Tente de réclamer le free claim disponible.
/lootbox freetimer <lootbox_id> Affiche le temps restant avant le prochain free claim.
/lootbox resetfree <joueur> <lootbox_id> Reset le timer de free claim d'un joueur (admin).
🆓 Le système Free Claim
Si une lootbox a freeEnabled = true dans sa config, chaque joueur peut la réclamer gratuitement toutes les X heures (défini par lootbox). Pas besoin de clé. Idéal pour le starter / récompenses quotidiennes.

7 — Numesticas : La monnaie d'Arcadia

⚠ Item à confirmer
L'ID exact de l'item Numesticas n'est pas encore enregistré dans le KubeJS d'Arcadia V2. Avant de publier ce wiki, l'admin doit me confirmer le namespace exact (probablement arcadia:numestica ou via un mod externe genre numismatic-overhaul:gold_coin).

À quoi sert la monnaie ?

La monnaie Arcadia permet d'acheter chez les PNJ marchands :

  • Des Shop Keys Arcadia Lootbox (voir Section 5).
  • Des items rares (gemmes Apothic, sorts Iron's Spellbooks, glyphes Ars Nouveau).
  • Des téléportations entre villes via PNJ Voyageur.
  • Des accès donjons VIP, mini-jeux, etc.

Comment en obtenir ?

  • Vendre des items à un PNJ acheteur (récolte agricole, drops, ressources rares).
  • Quêtes FTB Quests — récompense en monnaie selon la quête.
  • Boss kills — drops directs sur les boss majeurs.
  • Vote quotidien — bonus + Vote Keys.
  • Boutique web Arcadia — achat avec monnaie réelle (catégorie Donations).

Donner / vérifier (admin, syntaxe générique)

// remplacer arcadia:numestica par l'ID réel
/give <joueur> arcadia:numestica 1000
/clear <joueur> arcadia:numestica
💰 Bonnes pratiques
  • Stockez vos Numesticas dans un coffre dédié chez vous, pas dans l'inventaire.
  • En PvP : selon le keepInventory du serveur, les Numesticas peuvent être perdues.
  • Évitez de transporter plus de 10 000 Numesticas en zone PvP.

8 — Recette complète : un PNJ vendeur de clés

Objectif : créer un PNJ "Aélys, Marchande de Clés" qui vend les Shop Keys Arcadia Lootbox contre Numesticas.

1
Posez le PNJ : /easy_npc spawn create humanoid ~ ~ ~ (ou via spawn egg dans le créatif).
2
Récupérez son UUID : /easy_npc list et copiez l'UUID du PNJ visé.
3
Renommez-le : /easy_npc name set <uuid> "Aélys, Marchande de Clés"
4
Donnez-lui un skin de joueur : /easy_npc skin set <uuid> player <pseudo_marchand>
5
Sneak + clic droit sur le PNJ → onglet Présence : activez Invulnerable, Silent, No Gravity et Position Lock.
6
Onglet Trading → Advanced. Configurez les lignes (les prix sont à ajuster selon votre économie) :
Vous payez Vous recevez Max Uses / Reset
50× monnaie 1× arcadialootbox:shop_key_common 32 / 24h
250× monnaie 1× arcadialootbox:shop_key_uncommon 16 / 24h
1000× monnaie 1× arcadialootbox:shop_key_rare 8 / 24h
5000× monnaie 1× arcadialootbox:shop_key_epic 4 / 24h
15000× monnaie 1× arcadialootbox:shop_key_legendary 2 / 48h
50000× monnaie 1× arcadialootbox:shop_key_mythic 1 / 7 jours
7
Onglet Dialog : message d'accueil :
"Bienvenue, aventurier ! J'ai des clés de
toutes les raretés... mais elles ne sont pas
pour les bourses légères."
8
Sauvegardez. Test : un joueur clique droit sur Aélys, voit le dialogue, achète une clé, puis utilise /lootbox pour ouvrir le hub et dépenser sa clé.
⚠ Anti-abus
Le Max Uses + Reset Time sont CRITIQUES. Sans cela, un joueur riche peut acheter l'infini de clés en quelques secondes et casser l'économie. Préférez des paliers serrés sur les hautes raretés.

9 — Dialogues & scénarios avancés

Dialogue simple (UI)

Sneak + clic droit → onglet Dialog → Standard. Tapez votre texte, ajoutez jusqu'à 8 boutons de réponse.

Dialogue à choix multiples

Mode Advanced. Chaque dialogue peut :

  • Avoir plusieurs boutons de réponse, chacun menant à un autre dialogue.
  • Déclencher une action (ouvrir trade, exécuter une commande, donner un item).
  • Se conditionner sur des variables (item dans l'inventaire, niveau XP, faction).

Déclencher une commande depuis un dialogue

Sur un bouton de dialogue, choisissez l'action Run Command. Exemple — donner une clé gratuite la première rencontre :

/lootbox givekey @initiator arcadialootbox:lootable_key_common 1
🎭 Idées de PNJ pour Arcadia
  • Aélys — marchande de Shop Keys (Section 8).
  • Korvath le Forgeron — vend des armes Apothic affixées contre monnaie + matériaux.
  • Mère Sylvane — quêtes Ars Nouveau, donne mana en récompense.
  • Le Voyageur — téléportation entre villes (déclenche /waystones tp).
  • Le Croupier — mini-jeu : 10% de chance de gagner une arcadialootbox:event_key_gold contre 100 Numesticas.
  • Le Gardien des Boss Keys — échange 5 dungeon keys legendary contre 1 boss key minor.

10 — Astuces, bugs courants & FAQ

FAQ Easy NPC

Q: Mon PNJ a disparu après un redémarrage.
R: Vérifiez que le chunk est chargé en permanence via FTB Chunks → Force Load. Sinon utilisez /easy_npc list dans le bon dimension pour le retrouver.

Q: Le trade ne se déclenche pas, le PNJ ne fait rien au clic droit.
R: Sneak + clic droit → onglet Action. Si "Action on right click" est sur "None", changez en "Open Trade".

Q: Comment empêcher un joueur de tuer un PNJ ?
R: Onglet Présence → Invulnerable. À activer systématiquement sur tous les PNJ marchands.

Q: Peut-on dupliquer un PNJ déjà configuré ?
R: Oui, via les presets. Exportez : /easy_npc preset export <uuid> aelys_marchande. Importez ailleurs : /easy_npc preset import custom aelys_marchande.

FAQ Arcadia Lootbox

Q: J'ai une clé mais je ne sais pas quelle lootbox elle ouvre.
R: Utilisez /lootbox list pour voir toutes les lootboxes, puis /lootbox info <id> pour voir quelle clé elle requiert.

Q: Le free claim ne marche pas.
R: Vérifiez le timer avec /lootbox freetimer <lootbox_id>. Si freeEnabled est sur false dans la config, le free claim est désactivé pour cette lootbox.

Q: J'ai modifié la config lootbox, comment recharger sans redémarrer ?
R: /lootbox reload. Le rechargement est asynchrone et ne freeze pas le serveur (option ASYNC_CONFIG_RELOAD activée par défaut).

Q: Comment voir mes derniers drops ?
R: /lootbox history.

Bugs connus

⚠ Bug : skin custom invisible
Si un skin URL custom ne charge pas, c'est probablement le cache local. Supprimez easy_npc/cache/ dans votre instance et relancez le client.
⚠ Bug : trade qui se reset à chaque connexion
Si le stock se remet à zéro à chaque reload, vérifiez que le PNJ a Position Lock activé. Sans cela, NeoForge peut le considérer comme une nouvelle entité après reload.

Reporter un bug

Si vous rencontrez un problème non listé ici : connectez-vous sur le site Arcadia → onglet Support → Ticket → joignez une capture d'écran et le fichier latest.log.