Aller au contenu

Wiki

Serveur privé

Mettre à jour son serveur

Le pack sort de nouvelles versions régulièrement. Mettre son serveur à jour n'est pas compliqué, mais une seule erreur suffit à empêcher le démarrage ou à faire disparaître des réglages. Cette page explique quoi remplacer, quoi garder, et pourquoi la méthode qui paraît la plus prudente est justement la plus dangereuse.

Ce que l'archive contient, et ce qu'elle ne contient pas

Bonne nouvelle avant tout: l'archive du serveur ne contient aucune donnée de jeu. Ni monde, ni joueurs, ni réglages de serveur. Tout cela est créé au premier lancement et n'est jamais écrasé par une mise à jour.

Dans l'archiveCréé par le serveur, jamais dans l'archive
mods, config, kubejsworld et les autres dimensions
libraries, l'installeur NeoForgeserver.properties
unix_args.txt, les scripts de lancementops.json, whitelist.json, les bannis
user_jvm_args.txt, emoteseula.txt, usercache.json, les journaux

La règle d'or: remplacer, jamais fusionner

Ne copie jamais les nouveaux mods par dessus les anciens
Le réflexe naturel est de glisser le contenu de la nouvelle archive dans le dossier existant en acceptant de remplacer. C'est exactement ce qu'il ne faut pas faire. Entre deux versions, des mods sont retirés et beaucoup changent de numéro de version, donc de nom de fichier. Une fusion laisse les anciens fichiers en place et tu te retrouves avec le même mod chargé deux fois, ce qui empêche le serveur de démarrer.

Pour donner une idée de l'ampleur, entre deux versions séparées de quelques semaines, 14 fichiers de mods ont disparu et 18 sont apparus. Plusieurs correspondaient au même mod à une version différente: une bibliothèque partagée passée de v2.13.38 à v2.13.41, une autre de v21.1.39 à v21.1.52. Fusionner aurait chargé les deux à chaque fois.

La bonne méthode est donc de supprimer entièrement les dossiers concernés avant de déposer les nouveaux.

Ce qu'on supprime et remplace

Dossier ou fichierPourquoi
modsLe cœur du problème, à vider complètement
librariesContient NeoForge, doit correspondre à la version du pack
kubejsToutes les recettes du serveur, à reprendre en bloc
L'installeur NeoForge et unix_args.txtIls vont de pair avec libraries
emotesSans conséquence, mais autant rester à jour

Ce qu'on garde absolument

  • Le dossier du monde et toutes les dimensions. C'est ta partie, rien dans l'archive ne le touche.
  • server.properties, sinon tu perds le nom du serveur, le port, la difficulté et la distance d'affichage.
  • ops.json, whitelist.json et les listes de bannis, sinon tu perds tes droits d'administrateur et ta modération.
  • eula.txt, déjà accepté.
Le fichier de mémoire est dans l'archive
user_jvm_args.txt contient l'allocation de RAM, et il est livré avec le pack. Si tu le remplaces sans y penser, ton serveur repart sur la valeur par défaut, qui n'est probablement pas celle de ta machine. Note ta valeur avant, ou mets ce fichier de côté. Les repères sont sur Arguments JVM et RAM.

Le cas du dossier config

config est le seul dossier où il faut réfléchir. Il contient à la fois les réglages livrés avec le pack et ceux que tu as pu ajuster toi même.

  • Si tu n'as rien modifié, remplace le dossier entier, c'est le plus sûr.
  • Si tu as modifié des fichiers, note lesquels avant de remplacer, puis réapplique tes changements après. Garder l'ancien dossier entier fait rater les nouveaux réglages des mods ajoutés.

Attention au changement de NeoForge

La version de NeoForge ne change pas à chaque mise à jour du pack, mais elle change parfois. Sur une période récente, elle est passée de 21.1.221 à 21.1.232 entre deux versions du pack.

Quand c'est le cas, libraries, l'installeur et unix_args.txt doivent être remplacés ensemble. Un mélange entre l'ancien et le nouveau donne une erreur au démarrage, avant même le chargement des mods.

La procédure complète

  1. 1
    Arrête le serveur proprement et attends qu'il ait fini de sauvegarder.
  2. 2
    Fais une sauvegarde complète du dossier, monde compris. C'est la seule étape non négociable.
  3. 3
    Note ton allocation de RAM et la liste des fichiers de config que tu as modifiés.
  4. 4
    Supprime mods, libraries, kubejs, l'installeur NeoForge et unix_args.txt.
  5. 5
    Décompresse la nouvelle archive dans le dossier du serveur.
  6. 6
    Réapplique ta RAM et tes réglages, puis relance et surveille le démarrage.
Le premier démarrage après une mise à jour est plus long que d'habitude: les mods reconstruisent leurs caches et les nouvelles recettes se chargent. Laisse le finir avant de conclure qu'il est bloqué.

Si le serveur ne démarre plus

SymptômeCause la plus probable
Erreur citant deux fois le même modFusion au lieu de suppression, un ancien fichier est resté
Erreur avant le chargement des modslibraries et l'installeur ne correspondent pas
Le serveur démarre mais tourne malAllocation de mémoire revenue à la valeur par défaut
Des objets ont disparu de l'inventaire des joueursUn mod retiré dans la nouvelle version, c'est normal
Le monde refuse de chargerRestaure la sauvegarde, puis va voir Réparer un monde corrompu

Dans tous les cas, le journal de démarrage nomme le mod fautif. La lecture des journaux et les autres pannes courantes sont traitées sur Dépanner son serveur.

Où continuer

Pour l'installation initiale, va voir Installer son serveur, et pour l'entretien courant Maintenir son serveur. Les réglages de démarrage sont détaillés sur Arguments JVM et RAM, et les recettes que tu retrouveras dans kubejs sont expliquées sur Comprendre KubeJS.

Chunky et ServerCore

Deux mods travaillent en arrière plan pour tenir la charge du serveur: Chunky, qui génère le monde à l'avance, et ServerCore, qui réduit automatiquement certains réglages quand ça rame. Le second a des conséquences directes sur tes fermes, et personne ne le sait.

Ce que ServerCore change pour les joueurs

Il existe un plafond de reproduction
Le pack limite le nombre d'animaux et de villageois qu'on peut faire se reproduire dans une même zone. Dans un rayon de 64 blocs, la reproduction s'arrête à 8 villageois et 16 animaux. Pour les villageois, la hauteur ne compte pas: empiler les étages ne contourne rien.

C'est la réponse à une question fréquente: si tes vaches refusent de se reproduire alors que tu leur donnes du blé, il y a probablement déjà seize animaux dans les parages. Répartis tes enclos à plus de 64 blocs les uns des autres plutôt que de tout concentrer.

Deuxième point, moins visible: les villageois enfermés dans un espace d'un bloc voient leur intelligence réduite par le serveur. Ils continuent d'échanger, mais ils ne cherchent plus à se déplacer. C'est volontaire, ça soulage énormément le serveur dans les halls de commerce. Le fonctionnement du commerce est sur Villageois et commerce.

Pourquoi ça ralentit aux heures de pointe

ServerCore surveille en permanence le temps que met le serveur à traiter un tour de jeu. Dès que ça dépasse le seuil, il réduit progressivement plusieurs réglages, puis les remonte quand la charge redescend.

RéglageAu reposSous charge
Distance de simulation8descend jusqu'à 4
Distance de tick des chunks8descend jusqu'à 4
Plafond de monstres80 %descend jusqu'à 30 %
Distance d'affichage10descend jusqu'à 5

Concrètement, une ferme à monstres qui tourne bien à trois joueurs peut produire deux fois moins un dimanche soir. Ce n'est ni un bug ni un bridage arbitraire: c'est ce qui évite que le serveur entier devienne injouable. Les rendements des fermes sont sur Automatiser ses fermes.

Les autres réglages qui tournent en fond
Le serveur sauvegarde toutes les cinq minutes, regroupe les objets au sol dans un rayon de 4 blocs et les boules d'expérience dans un rayon de 8. Il empêche aussi d'entrer dans un chunk qui n'est pas encore chargé, ce qui explique les rares blocages d'une seconde quand tu voyages très vite.

Chunky, pour générer le monde à l'avance

Le reste de cette page concerne les serveurs privés. Chunky sert à créer les chunks avant que les joueurs n'y aillent, plutôt que de les générer à la volée pendant qu'on explore.

C'est le gain le plus important qu'un administrateur puisse obtenir en une seule opération: la génération de terrain est de loin l'opération la plus coûteuse d'un serveur moddé, et un pack de cette taille en souffre plus qu'un jeu vanilla.

ParamètreÀ quoi il sert
Le mondeLa dimension à générer, chacune se traite séparément
Le centreEn général le point d'apparition, en coordonnées
Le rayonEn blocs. Mille blocs est déjà une zone confortable
La formeCarré ou cercle selon la façon dont tu limites ta carte
Le motifL'ordre de parcours, à laisser par défaut
Chunky retient sa progression. Une tâche interrompue peut reprendre là où elle s'était arrêtée, et le nombre de chunks déjà traités est conservé. Tu peux donc pré-générer par tranches, la nuit par exemple, sans repartir de zéro à chaque fois.

Bien s'y prendre

  1. 1
    Fais le sur un serveur vide. La pré-génération consomme tout ce que la machine peut donner, jouer en même temps est désagréable pour tout le monde.
  2. 2
    Commence petit. Un rayon de mille blocs autour du spawn couvre déjà largement les premières semaines.
  3. 3
    N'oublie pas les autres dimensions. Le Nether et l'End se pré-génèrent séparément, et le Nether est celui qui fait le plus mal quand il se génère en direct.
  4. 4
    Surveille l'espace disque. Un monde pré-généré pèse lourd, bien plus qu'un monde exploré au fil de l'eau.
  5. 5
    Sauvegarde avant. Comme pour toute opération de masse, voir Maintenir son serveur.
Pré-générer ne répare pas un monde lent
Si ton serveur rame alors que les joueurs restent dans une zone déjà explorée, le problème n'est pas la génération. Cherche plutôt du côté des machines et des fermes, avec le profileur décrit sur Optimiser son serveur.

Où continuer

Le diagnostic des ralentissements et le choix de la machine virtuelle sont sur Optimiser son serveur, la mémoire sur Arguments JVM et RAM. Pour les pannes franches, va voir Dépanner son serveur, et après une montée de version Mettre à jour son serveur.

Installer son serveur

Prérequis

Avant de te lancer, vérifie que ta machine tient la charge. Le modpack Arcadia est lourd et demande des ressources sérieuses pour tourner correctement.

  • RAM: 16 Go au total recommandés (10 Go minimum absolu).
  • CPU: 4 cœurs ou plus.
  • Disque: environ 5 Go libres (le pack plus la croissance du monde).
  • Réseau: port 25565 en TCP ouvert au firewall et au routeur pour le multijoueur.
  • OS: Windows 10 (build 17063+, avril 2018) ou 11, ou tout Linux moderne (Debian 11+, Ubuntu 20.04+, RHEL 8+, Arch) en x86_64 ou aarch64.

Java, pas besoin d'y toucher

Tu n'as rien à installer toi-même. Java 21 est téléchargé automatiquement par le script d'installation. Il faut juste une connexion internet active une seule fois pendant l'install.

Télécharger et extraire le pack

Récupère le serverpack officiel puis extrais-le dans un dossier propre. Le chemin où tu extrais le pack est important.

Évite les accents et les espaces

N'extrais jamais dans un chemin contenant des accents, des espaces ou des caractères spéciaux. Évite aussi le Bureau, les dossiers synchronisés (OneDrive, Dropbox, Google Drive) et les lecteurs réseau ou cloud: lenteur et corruption garanties. Un chemin simple comme C:\mcserver ou /opt/mcserver est idéal.

Sous Windows, clic droit sur le fichier zip puis Extraire tout. Sous Linux:

sudo mkdir -p /opt/mcserver
sudo chown $USER:$USER /opt/mcserver
cd /opt/mcserver
unzip /chemin/vers/serverpack.zip

Installation en 1 clic

Le pack embarque un installateur automatique qui gère tout d'un coup: téléchargement de Java, acceptation de l'EULA et premier démarrage.

  1. 1 Windows: double-clic sur INSTALL.bat, puis appuie sur Entrée. Linux: chmod +x INSTALL.sh setup_java21.sh run.sh puis ./INSTALL.sh.
  2. 2 Le script télécharge Java 21 (environ 50 Mo) dans le dossier jre21/.
  3. 3 Tape y quand on te demande d'accepter l'EULA de Mojang. Le fichier eula.txt est créé automatiquement pour toi.
  4. 4 Tape y pour lancer le serveur tout de suite, ou n pour le lancer plus tard via run.bat ou run.sh.

L'EULA est accepté pour toi

En tapant y à l'invite, tu acceptes le contrat de licence Minecraft (aka.ms/MinecraftEULA). Tu n'as pas à éditer le fichier à la main.

Premier démarrage

Le premier lancement est le plus long. Le modpack charge des centaines de mods et génère les fichiers de configuration, dont server.properties. Compte entre 3 et 10 minutes selon ta machine.

Patiente, ne ferme rien

Ne ferme surtout pas la fenêtre pendant ce chargement. C'est normal que ce soit lent, le modpack est très lourd. Tu sauras que tout est prêt quand la console affiche une ligne du type Done (180.342s)! For help, type "help". À ce moment, le serveur est en ligne et accepte les connexions.

Une fois l'installation terminée, tu n'auras plus jamais à repasser par INSTALL: les lancements suivants se font directement via run.bat ou run.sh. La suite est détaillée dans Lancer et configurer son serveur. Pour optimiser les performances ou diagnostiquer des lags, vois Optimiser son serveur. Si tu veux comprendre la structure des fichiers, consulte Fichiers du modpack.

Pas envie de gérer une machine? WabbaNode s'en occupe

Faire tourner Arcadia chez soi demande une machine allumée en permanence, 16 Go de RAM et un port ouvert sur ta box. Si tu préfères éviter tout ça, WabbaNode, l'hébergeur partenaire du serveur, propose une infrastructure taillée pour les gros modpacks: déploiement rapide, ressources dimensionnées pour un pack de 441 mods et support dédié. Le pack tourne alors 24 heures sur 24 sans que ton PC ait à rester allumé.

Tu retrouves l'offre et le lien de commande sur la page Partenaires officiels d'Arcadia, aux côtés de LordHosting. Passer par ces liens soutient directement le serveur.

Si tu héberges quand même chez toi, la suite de ce guide reste valable de bout en bout: les réglages mémoire sont dans Arguments JVM et RAM, et l'ouverture du port dans Jouer entre amis.

Lancer et configurer son serveur

Démarrer le serveur

Une fois que INSTALL a été exécuté une première fois, tu lances le serveur normalement à chaque session, sans repasser par l'installateur.

  • Windows: double-clic sur run.bat.
  • Linux: ./run.sh.

Sessions longues sur Linux

Pour laisser le serveur tourner en continu, lance-le dans screen ou tmux. Exemple: tmux new -s mcserver puis ./run.sh. Tu détaches avec Ctrl+B puis D, et tu rattaches avec tmux attach -t mcserver.

Le serveur est prêt quand la console affiche Done (...)! For help, type "help".

Configurer server.properties

Le premier démarrage crée le fichier server.properties. Ouvre-le avec n'importe quel éditeur de texte pour personnaliser ton serveur. Voici les réglages clés:

  • server-port: le port de connexion (25565 par défaut).
  • motd: le nom ou message affiché dans la liste des serveurs Minecraft.
  • max-players: le nombre maximum de joueurs.
  • difficulty: peaceful, easy, normal ou hard.
  • pvp: true ou false pour activer ou couper le combat entre joueurs.
  • white-list: mets true pour n'autoriser que les comptes que tu ajoutes.
  • online-mode: true = comptes Minecraft officiels seulement.
  • view-distance et simulation-distance: nombre de chunks rendus et simulés côté serveur.

Redémarre après modification

Les changements dans server.properties ne s'appliquent qu'après un redémarrage propre du serveur. Édite le fichier serveur arrêté ou relance-le ensuite.

Ajuster la RAM

Le fichier complet et le rôle de chaque option sont détaillés dans Arguments JVM et RAM.

Par défaut le serveur utilise un heap de 16 Go. Pour changer cette valeur, édite le fichier user_jvm_args.txt et modifie les deux lignes:

-Xms16384M
-Xmx16384M

Le -Xmx fixe le maximum. Combien allouer selon ta RAM système?

  • 16 Go de RAM: alloue 10 Go (par exemple -Xmx10240M).
  • 24 Go de RAM: reste sur 16 Go, le défaut.
  • 32 Go ou plus: garde 16 Go quand même, en donner plus dégrade les performances.

Pourquoi ne pas allouer plus?

Au-delà de 16 Go, les pauses du garbage collector s'allongent, ce qui provoque des warnings Can't keep up! et des crashes watchdog. 16 Go est le point idéal.

Arrêter proprement le serveur

Ne coupe jamais le serveur en fermant brutalement la fenêtre.

Corruption du monde garantie

Ne ferme jamais le serveur avec le bouton X sous Windows ni avec Ctrl+C sous Linux: tu corromps le monde à coup sûr.

Pour un arrêt correct, tape simplement dans la console du serveur:

stop

Le serveur sauvegarde tout puis se ferme. C'est aussi la commande à lancer avant de faire une sauvegarde du monde.

Besoin d'aller plus loin? Vois Optimiser son serveur, ou reviens à Installer son serveur. Pour ajouter des scripts, consulte KubeJS et pour l'aspect économie Économie sur serveur privé. Le détail sur la RAM est dans Allouer de la RAM.

Arguments JVM et RAM

Les arguments JVM, ce sont les options passées à Java au démarrage du serveur. Sur un pack de plus de quatre cents mods comme Arcadia, ils font la différence entre un serveur qui tient vingt joueurs et un serveur qui se fige toutes les trente secondes. Bonne nouvelle: le serverpack arrive déjà réglé. Cette page t'explique ce que fait chaque ligne, et surtout ce qu'il ne faut pas toucher.

Où vivent les arguments

Tout se trouve dans le fichier user_jvm_args.txt, à la racine du serveur. Les scripts de lancement le passent à Java avec la syntaxe @user_jvm_args.txt, puis ajoutent les arguments propres à NeoForge. Concrètement, tu n'as jamais besoin de taper une longue commande java à la main: tu édites ce fichier avec un éditeur de texte, tu relances, c'est tout.

Les lignes qui commencent par un dièse
Ce sont des commentaires, Java les ignore. Tu peux donc désactiver une option en ajoutant un dièse devant, sans la supprimer. Pratique pour tester.

La RAM, la seule chose que tu dois vraiment régler

Deux lignes commandent la mémoire:

  • -Xms définit la mémoire allouée au démarrage.
  • -Xmx définit la mémoire maximale.

Sur un serveur Minecraft, ces deux valeurs doivent être identiques. Java réserve alors tout d'un coup et ne passe pas son temps à agrandir puis rétrécir son tas, ce qui provoque des à coups. Le pack est livré avec 16 384 Mo sur les deux lignes.

RAM de la machineÀ mettre dans Xms et XmxPourquoi
16 Go10240MIl faut laisser 6 Go au système et au reste
24 Go16384MLe point d'équilibre pour ce pack
32 Go et plus16384MMonter plus haut dégrade les performances
Plus de RAM n'est pas mieux
Passé un certain point, agrandir le tas rallonge les pauses du ramasse miettes: il a plus de mémoire à parcourir, donc chaque nettoyage prend plus de temps et le serveur se fige plus longtemps. Un serveur à 16 Go bien réglé tourne mieux qu'un serveur à 32 Go mal réglé. Et n'alloue jamais toute la RAM de la machine: le système, les sauvegardes et le réseau en ont besoin.

Le ramasse miettes et les flags Aikar

Le reste du fichier configure G1GC, le ramasse miettes de Java. Les valeurs viennent des flags Aikar, la référence dans le monde des serveurs Minecraft. Voici ce que font les principales:

ArgumentRôle
-XX:+UseG1GCActive G1, le ramasse miettes qui découpe le travail en petites pauses plutôt qu'en longs blocages
-XX:MaxGCPauseMillis=200Demande à G1 de viser des pauses de 200 ms maximum
-XX:+ParallelRefProcEnabledTraite les références en parallèle, gain net avec beaucoup de mods
-XX:+AlwaysPreTouchTouche toute la mémoire au démarrage. Le lancement est plus lent, la suite est plus régulière
-XX:+DisableExplicitGCEmpêche un mod mal écrit de déclencher un nettoyage complet à la main
-XX:+UseStringDeduplicationFusionne les chaînes de caractères identiques en mémoire, utile avec des milliers de recettes
-XX:G1NewSizePercent=30 et G1MaxNewSizePercent=40Agrandissent la zone des objets jeunes. Minecraft en crée énormément et les jette aussitôt
-XX:G1HeapRegionSize=8MTaille des régions du tas, adaptée à un gros tas
-XX:InitiatingHeapOccupancyPercent=15Lance le nettoyage tôt, avant que le tas ne sature
-XX:MaxTenuringThreshold=1Promeut vite les objets survivants, ce qui limite les copies inutiles
-XX:+PerfDisableSharedMemÉvite les blocages disque causés par le fichier de statistiques de la JVM

Deux lignes concernent le Metaspace, la zone où Java range les classes: -XX:MetaspaceSize=256M et -XX:MaxMetaspaceSize=1024M. Avec plus de quatre cents mods, il faut de la marge, sinon Java passe son temps à redimensionner cette zone. Enfin, -Dlog4j2.configurationFile=log4j2.xml impose la configuration de journalisation fournie avec le pack, et -Dusing.aikars.flags sert uniquement de marqueur pour les outils de supervision.

La variante GraalVM

Le pack fournit un second fichier, user_jvm_args_graalvm.txt, à n'utiliser que si tu as installé Oracle GraalVM 21. Il reprend les mêmes réglages mémoire et G1GC, puis ajoute le compilateur maison de GraalVM avec -XX:+EnableJVMCI, -XX:+UseJVMCICompiler et -XX:+EagerJVMCI, plus des options de compilation comme la vectorisation SIMD et le déroulage partiel de boucles. On y trouve aussi -XX:+UseTransparentHugePages, qui demande de grandes pages mémoire au système, et -XX:+EnableDynamicAgentLoading, nécessaire à certains profileurs.

Ne mélange jamais les deux fichiers. Les options graal ne servent à rien sous Temurin et peuvent empêcher Java de démarrer. La procédure de bascule complète est décrite dans Optimiser son serveur.

Les erreurs qu'on voit tout le temps

  • Xms et Xmx différents. C'est l'erreur classique. Mets les deux à la même valeur.
  • Allouer toute la RAM de la machine. Le système d'exploitation a besoin de mémoire pour le cache disque, qui accélère justement le chargement des chunks.
  • Doubler les arguments. Si ton hébergeur passe déjà un -Xmx dans sa commande de démarrage, ne le remets pas dans le fichier: la dernière valeur gagne et tu ne sais plus laquelle s'applique.
  • Copier des flags trouvés au hasard. Beaucoup de listes qui circulent sont écrites pour Java 8 et cassent sous Java 21. Les options de l'ancien ramasse miettes CMS, par exemple, n'existent plus.
  • Se tromper de Java. Le pack tourne sous Java 21. Une version plus ancienne refuse simplement de charger NeoForge.

Vérifier que tes réglages sont bien pris

ModernFix, FerriteCore et Lithium, les mods d'optimisation inclus dans le pack

Le pack embarque déjà plusieurs mods qui allègent le serveur sans réglage de ta part: ModernFix accélère le démarrage et réduit la mémoire, FerriteCore compresse les données de blocs, Lithium optimise la logique du jeu. Tes arguments JVM viennent en complément de ces mods, pas à leur place.

Au démarrage, le script affiche la version de Java avant de lancer le serveur: tu dois y voir Temurin 21 ou GraalVM 21 selon ton choix. Ensuite, en jeu ou en console, la commande spark health te donne la mémoire réellement utilisée, l'activité du ramasse miettes et les TPS. Si le tas monte au plafond puis redescend en permanence avec des pauses longues, c'est que ton allocation est trop juste pour le nombre de joueurs et de chunks chargés.

Chez un hébergeur, tu ne peux souvent régler que la quantité de RAM depuis le panneau, les flags étant imposés. Dans ce cas, applique la même règle: prends une offre où la RAM annoncée correspond au tas dont tu as besoin, et vérifie que l'hébergeur utilise bien Java 21.

Où continuer

Pour l'installation depuis zéro, suis Installer son serveur, puis Lancer et configurer son serveur pour le fichier server.properties. Le diagnostic des lags et l'usage de Spark sont détaillés dans Optimiser son serveur, et la mise en service permanente dans Maintenir son serveur. Si ton monde donne des signes de corruption, va voir Réparer un monde. Enfin, côté joueur, la RAM du client se règle dans Allouer de la RAM, ce qui n'a rien à voir avec le serveur.

Jouer entre amis

Ouvrir le port 25565

Pour que des amis qui ne sont pas sur ton réseau te rejoignent, ton serveur doit être joignable depuis internet. Minecraft écoute sur le port 25565 en TCP par défaut (celui défini dans server.properties). Deux réglages sont à faire.

  • Pare-feu de la machine: autorise le port 25565 en TCP sur le PC ou le serveur qui héberge.
  • Box / routeur: crée une redirection de port (port forwarding) TCP 25565 vers l'IP locale de ta machine. Le nom exact varie selon la box (NAT, redirection de ports, virtual server).

Sécurité avant tout

N'expose jamais ton serveur sur internet sans whitelist active (voir plus bas). Un serveur ouvert et non protégé peut être rejoint et griefé par n'importe qui.

Trouver ton IP

L'adresse à partager dépend de l'emplacement de tes amis.

  • Amis hors de ton réseau (internet): partage ton IP publique. Tu la trouves en cherchant "mon IP" sur un moteur de recherche.
  • Amis sur le même réseau (LAN): partage ton IP locale. Sous Windows, tape ipconfig; sous Linux, ip a (une adresse en 192.168.x.x ou 10.x.x.x).

Adresse de connexion

Tes amis se connectent avec ton_ip:25565. Si tu gardes le port par défaut, le :25565 est optionnel.

Alternatives sans ouvrir de port

Si tu ne peux pas (ou ne veux pas) toucher à ta box, plusieurs solutions évitent la redirection de port.

  • Service de tunnel comme playit.gg: il te fournit une adresse publique qui redirige vers ton serveur, sans configuration de box.
  • Réseau virtuel (VPN) type Hamachi: tes amis rejoignent un réseau privé et se connectent via une IP locale.
  • Hébergeur dédié: tu déposes le serverpack chez un hébergeur Minecraft qui gère la connexion et l'uptime à ta place.

Le plus simple

Pour un premier serveur entre amis, un tunnel comme playit.gg est souvent la voie la plus rapide: aucune redirection de port, pas d'IP publique à exposer.

La whitelist

La whitelist (liste blanche) est ta meilleure protection: seuls les pseudos autorisés peuvent rejoindre. Depuis la console du serveur:

whitelist on
whitelist add Pseudo
whitelist add AutrePseudo

Tu peux aussi forcer la liste blanche dans server.properties:

white-list=true
enforce-whitelist=true

Comptes officiels seulement

Garde online-mode=true dans server.properties: seuls les comptes Minecraft officiels pourront se connecter, et la whitelist restera fiable.

Pour la mise en route du service et les sauvegardes, vois Maintenir son serveur. En cas de souci de connexion, consulte le Dépanner son serveur. Le lancement de base est détaillé sur Lancer et configurer son serveur.

Administrer son serveur

Une fois ton serveur en ligne, il faut le tenir: donner des droits, gérer les protections, surveiller la charge et intervenir quand un joueur a un souci. Le pack embarque déjà tout le nécessaire, encore faut il savoir ce qui est là. Voici les outils disponibles et les commandes qui servent vraiment.

Donner des droits

  • Les niveaux d'opérateur vanilla restent la base: /op et /deop depuis la console. Le niveau 2 suffit pour la plupart des outils du pack, notamment pour contourner les zones protégées.
  • LuckPerms est installé. Il permet de créer des grades avec des permissions précises plutôt que de donner l'opérateur complet à quelqu'un. C'est la bonne solution dès que tu as plus d'un modérateur.
  • La liste blanche se gère avec /whitelist on, /whitelist add et /whitelist reload. C'est la protection la plus simple contre les visiteurs indésirables.

Les commandes déjà activées

FTB Essentials fournit 32 commandes, toutes actives sur le pack. Elles se répartissent en trois familles.

FamilleCommandes
Administrationextinguish, feed, fly, god, heal, invsee, kit, mute, speed, tp_offline
Téléportationback, home, jump, playerspawn, rtp, spawn, tpa, tpl, tpx, warp
Confortanvil, crafting, enderchest, hat, kickme, leaderboard, near, nick, rec, smithing, stonecutter, trashcan
Deux commandes sauvent souvent la mise en modération: invsee pour regarder l'inventaire d'un joueur sans le déranger, et tp_offline pour rejoindre la dernière position d'un joueur déconnecté, par exemple pour vérifier un signalement de grief.

Les protections de terrain

Les claims du pack ont des règles précises, utiles à connaître avant de répondre à un joueur:

RéglageValeur du pack
Chunks réclamables par joueur500 de base
Plafond dur par équipe20 000 chunks
Dimensions où l'on peut réclamerOverworld, Nether et la dimension du vide
Dimension interditeLe spawn du serveur
Protection contre les pistonsActive
Explosions inconnuesBloquées par défaut
Joueur contre joueurRéglé par équipe
Libération automatique après inactivitéDésactivée
Pas de claim dans toutes les dimensions
Les joueurs ne peuvent pas protéger de terrain dans l'End, l'Aether ou la Forêt du Crépuscule: seuls l'Overworld, le Nether et la dimension du vide sont ouverts au claim. C'est une question fréquente en support, autant connaître la réponse. Voir aussi Protéger son terrain.

Surveiller et diagnostiquer

  1. 1
    Spark pour mesurer: spark health pour un état rapide, spark profiler start quand ça rame. Le détail est dans Optimiser son serveur.
  2. 2
    Chunky pour pré générer le monde à froid, serveur vide, plutôt que de laisser les joueurs générer en jouant.
  3. 3
    Les journaux: logs/latest.log pour le contexte, crash-reports/ pour les plantages.
  4. 4
    Les sauvegardes, testées au moins une fois, comme expliqué dans Maintenir son serveur.

Intervenir sans casser le monde

  • Arrête toujours proprement avec stop. Un arrêt brutal pendant une sauvegarde est la première cause de chunk corrompu, voir Réparer un monde corrompu.
  • Évite de retirer un mod en cours de partie. Les blocs qu'il a posés deviennent illisibles et la zone plante au chargement.
  • Modifie les recettes par script plutôt qu'en changeant les mods, avec KubeJS, voir Comprendre KubeJS.
  • Sauvegarde avant de terrasser. Le pack embarque WorldEdit, dont l'historique ne conserve que cinq annulations: une copie du monde vaut mieux qu'un //undo qui n'existe plus.
  • Note tes changements. Quand un problème apparaît une semaine plus tard, savoir ce que tu as modifié fait gagner des heures.

Répondre aux joueurs

Les trois questions qui reviennent le plus souvent ont des réponses simples:

Où continuer

L'installation est couverte par Installer son serveur, la configuration par Lancer et configurer son serveur, et la mémoire par Arguments JVM et RAM. En cas de panne, la marche à suivre est sur Dépanner son serveur.

Maintenir son serveur

Faire tourner le serveur en continu

Pour que le serveur reste en ligne même après avoir fermé ta session, ne le lance pas dans une simple fenêtre. Utilise un service ou un multiplexeur de terminal.

Sous Linux, la méthode propre est un service systemd. Crée /etc/systemd/system/mcserver.service:

[Unit]
Description=Modded Minecraft Server
After=network.target

[Service]
Type=simple
User=mcserver
Group=mcserver
WorkingDirectory=/opt/mcserver
ExecStart=/usr/bin/tmux new -d -s mcserver '/opt/mcserver/run.sh'
ExecStop=/usr/bin/tmux send-keys -t mcserver "stop" Enter
Restart=on-failure
RestartSec=10
TimeoutStopSec=120

[Install]
WantedBy=multi-user.target

Puis active-le:

sudo systemctl daemon-reload
sudo systemctl enable --now mcserver
sudo -u mcserver tmux attach -t mcserver

Session longue sans service

Pour une session simple, lance run.sh dans un screen ou un tmux. Détache avec Ctrl+A puis D (screen) ou Ctrl+B puis D (tmux), et rattache avec screen -r mcserver ou tmux attach -t mcserver.

Sous Windows, tu peux installer le serveur en service avec NSSM (nssm.cc) en pointant l'application vers run.bat et le dossier de démarrage sur le dossier du serveur, ou simplement le garder ouvert via une tâche planifiée.

Sauvegarder ton monde

Ton monde vit dans le dossier world. C'est la seule chose vraiment irremplaçable: le pack, lui, se retélécharge. Sauvegarde-le régulièrement.

Arrête toujours avant de copier

Arrête proprement le serveur avec stop avant de copier world. Copier pendant que le serveur écrit dedans corrompt la sauvegarde.

  • Copie l'intégralité du dossier world vers un autre disque ou un stockage externe.
  • Garde plusieurs versions datées, pas une seule qui s'écrase.
  • Automatise via une tâche planifiée (Windows) ou un cron (Linux) pour ne pas oublier.

Une sauvegarde sert surtout le jour où un chunk casse: garde Réparer un monde sous la main, et teste au moins une restauration avant d'en avoir besoin.

Mettre à jour le pack Arcadia

Quand une nouvelle version du serverpack sort, tu retélécharges le pack mais tu conserves ta progression. La procédure détaillée, avec la liste précise de ce qu'il faut supprimer et de ce qu'il faut garder, est sur Mettre à jour son serveur.

  • Arrête le serveur avec stop.
  • Sauvegarde world, tes config/ personnalisés et server.properties.
  • Extrais le nouveau serverpack dans un dossier propre.
  • Réinjecte ton world et tes réglages, puis relance.

Mise à jour de NeoForge

Pour changer de version NeoForge, arrête le serveur, lance l'installateur avec le Java embarqué: ./jre21/bin/java -jar neoforge-X.Y.Z-installer.jar --installServer. puis mets à jour la version dans les scripts de lancement.

Avant une grosse modification du monde

Terrasser une zone entière, coller une structure, régénérer un secteur: toutes ces opérations passent par WorldEdit, et son historique ne remonte que cinq commandes en arrière. Fais ta sauvegarde avant, jamais après.

Gérer la console

Les commandes s'entrent directement dans la console du serveur, sans slash. Les plus utiles:

  • op Pseudo: donne les droits d'administrateur à un joueur.
  • ban Pseudo et pardon Pseudo: bannit ou débannit.
  • kick Pseudo: expulse un joueur de la session.
  • stop: arrête proprement le serveur (jamais Ctrl+C ni le bouton X, corruption garantie).

Pour aller plus loin

Le lancement de base est sur Lancer et configurer son serveur. Pour les performances, vois Optimiser son serveur. Pour inviter des joueurs, vois Jouer entre amis. En cas de blocage, le Dépannage t'aidera.

Au quotidien

Droits, commandes disponibles et réponses aux questions fréquentes des joueurs sont regroupés dans Administrer son serveur.

Optimiser son serveur

Choix de la JVM

Le pack utilise Eclipse Temurin JRE 21 par défaut: libre, stable, open-source, déjà embarqué dans jre21/ et actif via user_jvm_args.txt. C'est le meilleur choix pour 99 % des cas et la compatibilité maximale avec les mods.

Pour plus de performances sur un gros serveur, tu peux passer à Oracle GraalVM 21: 5 à 15 % plus rapide sur les contraptions Create grâce à la vectorisation SIMD et au compilateur JVMCI. En contrepartie, c'est un téléchargement d'environ 300 Mo, une install manuelle et une licence Oracle.

  1. 1 Télécharge Oracle GraalVM 21 sur graalvm.org/downloads (Java 21, ta plateforme).
  2. 2 Extrais le dossier à côté du dossier serveur et renomme-le en graalvm21 (les scripts de lancement détectent ce nom automatiquement).
  3. 3 Active les flags GraalVM. Windows: ren user_jvm_args.txt user_jvm_args_temurin.txt puis ren user_jvm_args_graalvm.txt user_jvm_args.txt. Linux: mêmes commandes avec mv.

Vérifie dans les logs

Au démarrage, tu dois voir GraalVM apparaître dans les logs à la place de Temurin. Le fichier user_jvm_args_graalvm.txt est déjà fourni dans le pack, tu n'as pas à le créer.

Le détail de chaque argument passé à Java, ligne par ligne, est expliqué dans Arguments JVM et RAM.

Diagnostiquer les lags avec Spark

Spark est un mod de profiling déjà inclus dans le modpack. Il identifie précisément la cause des baisses de TPS, des freezes ou des crashes watchdog. Les commandes se tapent dans la console serveur, sans slash au début:

  • spark health: check rapide de santé (TPS, CPU, RAM, GC).
  • spark profiler start --thread Server --timeout 60: profile le thread serveur pendant 60 s puis affiche une URL cliquable à transmettre à l'admin.
  • spark profiler start --thread * --timeout 30: profile tous les threads, idéal pour repérer un deadlock quand le serveur freeze.
  • spark tps: TPS et durée de tick courants.

Le plus utile à envoyer

L'URL Spark générée par le profiler est l'information la plus importante en cas de bug. Joins-y l'heure du problème en UTC, ce qui se passait, le nombre de joueurs, ainsi que le fichier latest.log.

Réduire le lag

Deux mods s'en chargent déjà en partie: ServerCore abaisse tout seul la distance de simulation et le plafond de monstres quand la charge monte, et Chunky permet de générer le monde à l'avance pour éviter le pire coût d'un serveur moddé. Les deux sont détaillés sur Chunky et ServerCore.

Si le serveur affiche des warnings Can't keep up!, c'est qu'il est surchargé. Plusieurs leviers dans server.properties:

  • Baisse la simulation-distance: c'est le rayon de chunks réellement simulés, souvent le plus gros gain.
  • Baisse la view-distance pour alléger le chunk loading côté serveur.
  • Réduis le nombre de mobs et d'entités actives (fermes trop grosses, animaux en masse).

Lance un spark profiler pour identifier ce qui coûte le plus avant de tout baisser à l'aveugle.

Alléger les mods gourmands

Avant de chercher plus loin, sache que le pack embarque ArcadiaTweaks, un mod maison qui retire du travail inutile à Botany Pots, Refined Storage et Mekanism. Ses trois modules se désactivent séparément, ce qui aide à isoler l'origine d'une baisse de performance.

Que faire en cas de crash

Un crash n'est jamais silencieux: le serveur laisse des traces à analyser.

  • Regarde le dossier crash-reports/: le fichier le plus récent contient la cause exacte du crash.
  • Consulte latest.log dans le dossier logs/ pour le contexte juste avant le plantage.
  • En cas de crash watchdog (tick bloqué), relance avec un profiling spark profiler start --thread * --timeout 30 la prochaine fois pour capter le deadlock.

La console se ferme instantanément?

Sous Windows, si la fenêtre se ferme tout de suite, Java a planté très tôt. Lance run_java21.bat pour garder l'erreur visible à l'écran et pouvoir la lire.

Pour transmettre un bug proprement, garde sous la main l'URL Spark, l'heure en UTC, le crash report et le latest.log. Reviens aux étapes de base dans Installer son serveur et Lancer et configurer son serveur. Si le souci vient d'un lag audio côté client, vois Corriger le lag audio.

Dépanner son serveur

Le serveur ne démarre pas

Si la panne suit une mise à jour du pack, commence par là: la cause la plus fréquente est un ancien fichier de mod resté en place, qui charge le même mod deux fois. Le détail est sur Mettre à jour son serveur.

La console se ferme instantanément (Windows)

Java a planté tôt. Lance via run_java21.bat pour garder l'erreur affichée et lire le message.

Java trop ancien ou absent

Le pack embarque son propre Java 21. Relance setup_java21.sh (Linux) ou setup_java21.bat (Windows) pour le réinstaller dans jre21/.

Pas assez de RAM

Si la machine n'a pas la RAM libre demandée, baisse -Xms et -Xmx dans user_jvm_args.txt. Détails sur Configurer la RAM.

Chemins avec accents ou espaces

Installe le serveur dans un chemin simple, sans accents ni espaces (par exemple /opt/mcserver ou C:\mcserver). Un chemin avec caractères spéciaux fait échouer le démarrage.

Les joueurs ne peuvent pas se connecter

Port fermé

Ouvre le port 25565 en TCP au pare-feu ET en redirection de port sur la box. La marche à suivre complète est sur Jouer entre amis.

Mauvaise IP partagée

Amis sur internet: donne ton IP publique. Amis en LAN: donne ton IP locale (ipconfig sous Windows, ip a sous Linux).

Version du modpack

Tous les joueurs doivent utiliser exactement la même version d'Arcadia que le serveur. Une version de modpack différente empêche la connexion.

Si le serveur plante toujours au même endroit ou avec le même joueur, il s'agit sans doute d'un chunk abîmé: la marche à suivre est dans Réparer un monde.

Le serveur lag

RAM ou CPU insuffisants

Le pack recommande 16 Go de RAM et un CPU 4 cœurs et plus. Au-delà de 16 Go de heap, les pauses du garbage collector s'allongent et provoquent des warnings "Can't keep up!": reste sur 16 Go.

Trop de chunks chargés

Baisse view-distance et simulation-distance dans server.properties pour alléger la charge.

Diagnostiquer avec Spark

Le mod Spark est inclus. Tape spark tps pour un aperçu rapide, ou spark profiler start --thread Server --timeout 60 pour profiler et obtenir une URL à analyser. Plus de pistes sur Optimiser son serveur.

Erreurs courantes et où trouver les logs

Crash watchdog / tick bloqué

Un tick a gelé. Lance un profiling Spark au prochain démarrage pour identifier la cause, et vérifie le crash-report généré.

Où sont les logs?

  • Logs en direct: logs/latest.log, le journal de la session en cours.
  • Rapports de crash: le dossier crash-reports/, un fichier daté par crash.

Signaler un bug proprement

Pour un bug du modpack, transmets l'URL Spark, l'heure en UTC, ce qui se passait, le crash-report et logs/latest.log. Ouvre un ticket via Signaler un bug. Pour maintenir ton serveur au quotidien, vois Maintenir son serveur.

Avant de chercher une panne

Beaucoup de tickets se règlent avec une commande: la boîte à outils est dans Administrer son serveur.

Réparer un monde corrompu

Un monde Minecraft n'est pas un gros fichier unique: c'est une mosaïque de petits fichiers, et il suffit qu'un seul soit tronqué pour que le serveur plante en boucle. La bonne nouvelle, c'est qu'un monde corrompu se répare presque toujours sans tout perdre. Cette page explique comment il est rangé, comment repérer la zone fautive et comment la retirer proprement.

Comment un monde est rangé sur le disque

Dans le dossier de ton serveur, tout part de world/. Trois sous dossiers comptent vraiment:

  • region/ contient les blocs, sous forme de fichiers r.X.Z.mca.
  • entities/ contient les entités, mobs et objets au sol, dans des fichiers portant le même nom.
  • poi/ contient les points d'intérêt, essentiellement les blocs de métier des villageois.

Chaque fichier de région couvre 32 chunks sur 32, soit une zone de 512 blocs sur 512. Pour retrouver le fichier qui correspond à une position, divise la coordonnée du bloc par 512 et arrondis vers le bas. Un point situé en X 1700 et Z 300 vit donc dans r.3.0.mca, parce que 1700 divisé par 512 donne 3 et des poussières, et 300 divisé par 512 donne 0.

Le Nether et l'End sont ailleurs
Ils ont leurs propres dossiers, world/DIM-1 et world/DIM1, avec la même structure. Les dimensions ajoutées par les mods, comme la Forêt du Crépuscule ou l'Aether, se rangent dans world/dimensions/ suivi du nom du mod. Vérifie bien dans quelle dimension le crash a eu lieu avant de supprimer quoi que ce soit.

Reconnaître une vraie corruption

Les symptômes typiques:

  • Le serveur démarre puis plante dès qu'un joueur se connecte, toujours le même joueur.
  • Le serveur plante dès qu'on s'approche d'une zone précise, et seulement de celle là.
  • La console répète des erreurs de lecture ou d'écriture de chunk pendant la sauvegarde.
  • Le monde tourne, mais une zone reste en trous noirs et ne se charge jamais.

Si le serveur plante partout et tout le temps, ce n'est probablement pas le monde: regarde d'abord les rapports de plantage, comme expliqué dans Dépanner son serveur.

La procédure, dans l'ordre

  1. 1
    Arrête le serveur proprement avec la commande stop. Ne tue jamais le processus tant qu'il écrit encore.
  2. 2
    Sauvegarde tout avant de toucher à quoi que ce soit. Une archive du dossier world entier, datée. C'est la seule étape non négociable.
  3. 3
    Ouvre le dernier fichier du dossier crash-reports/ et cherche les coordonnées ou le nom de fichier de région cités dans le détail de l'erreur. Le fichier logs/latest.log donne le contexte juste avant.
  4. 4
    Convertis les coordonnées en nom de fichier avec la division par 512 vue plus haut, ou laisse un éditeur de région le faire pour toi.
  5. 5
    Supprime le strict minimum. L'outil MCA Selector permet de supprimer quelques chunks au lieu de toute une région. Si la zone est en pleine nature, sans construction, supprimer le fichier .mca entier va aussi vite.
  6. 6
    Supprime le même nom de fichier dans region/, entities/ et poi/. Laisser une moitié désynchronisée est une cause classique de nouveau plantage.
  7. 7
    Relance et va voir sur place. Les chunks supprimés se régénèrent depuis la graine du monde. Le terrain revient, les constructions non.
Ce que tu perds vraiment
Supprimer un chunk efface tout ce qu'il contenait: constructions, coffres, machines et claims posés dessus. Préviens tes joueurs avant, et si la zone contient une base, essaie d'abord de restaurer une sauvegarde plus ancienne de cette seule région plutôt que de la supprimer.

Le cas du joueur qui fait planter le serveur

Quand c'est toujours le même joueur qui déclenche le crash, le problème est souvent dans son fichier de données, dans world/playerdata/, ou dans le chunk où il s'est déconnecté. Deux approches: déplacer son fichier .dat hors du dossier pour qu'il réapparaisse au spawn avec un inventaire vide, ou nettoyer le chunk de sa position. La première fait perdre l'inventaire, la seconde fait perdre la zone. Fais toujours une copie du fichier avant, on peut le remettre.

La cause numéro un: retirer un mod

Sur un serveur privé qui bidouille sa liste de mods, la corruption vient rarement du disque. Elle vient du fait qu'on a retiré un mod alors que ses blocs étaient encore posés dans le monde. Au chargement, le jeu trouve des identifiants qu'il ne connaît plus et refuse la zone.

  • Avant de retirer un mod, casse et récupère ses blocs, ou au minimum sache où ils sont.
  • Si le mal est fait, remets le mod le temps de nettoyer la zone, puis retire le proprement.
  • Sur Arcadia, la liste des mods est figée par le pack, donc ce cas ne concerne que ton serveur privé. Si tu modifies les recettes, passe plutôt par les scripts décrits dans KubeJS: c'est quoi, comment ça marche, qui ne touchent pas au monde.

Éviter la corruption plutôt que la réparer

Chunky et ServerCore, deux mods de gestion des chunks inclus dans le pack

  • Arrêt propre systématique. La commande stop, puis on attend que le processus se termine. Un arrêt brutal pendant une sauvegarde est la première cause de fichier tronqué.
  • Surveille l'espace disque. Un disque plein pendant l'écriture produit exactement le même résultat qu'une coupure de courant.
  • Sauvegardes automatiques et testées: une sauvegarde qu'on n'a jamais restaurée n'est pas une sauvegarde. La mise en place est détaillée dans Maintenir son serveur.
  • Pré-génère ton monde avec Chunky, déjà inclus dans le pack. Générer les chunks à froid, serveur vide, évite les pics de charge quand les joueurs explorent, et donc les sauvegardes qui traînent.
  • Ne copie jamais un monde en cours d'exécution. Arrête le serveur, ou utilise une commande de sauvegarde prévue pour ça.

Où continuer

Pour la mise en place initiale, va voir Installer son serveur et Lancer et configurer son serveur. Le réglage mémoire est expliqué dans Arguments JVM et RAM, le diagnostic de lag dans Optimiser son serveur, et les pannes courantes dans Dépanner son serveur. Si tu joues avec des amis sur ce serveur, Jouer entre amis couvre l'ouverture du port et la liste blanche.

WorldEdit

WorldEdit est l'outil qui permet de modifier des milliers de blocs d'un seul coup: terrasser, remplacer, copier, coller, générer des formes. Il est présent dans le pack Arcadia, réservé aux opérateurs, et il est livré avec deux compléments que peu de gens remarquent. Voici comment il est réglé et comment s'en servir sans casser son monde.

Hache de sélection, boussole de navigation et super pioche de WorldEdit

La baguette n'est pas une hache en bois

C'est le piège numéro un
Sur la plupart des serveurs, on sélectionne avec une hache en bois. Ici, le pack embarque le mod WorldEdit Items, et la configuration désigne un objet dédié comme baguette. Une hache en bois ordinaire ne sélectionnera rien. La commande //wand te donne le bon objet.
OutilÀ quoi il sert
Hache de sélectionClic gauche pour le premier coin, clic droit pour le second
Boussole de navigationTraverse les murs et te pose de l'autre côté, jusqu'à 50 blocs
Super piocheCasse en zone, jusqu'à 5 blocs de portée

Les réglages du serveur

RéglageValeur
Annulations conservées5 seulement
Rayon maximal d'un pinceau6 blocs
Portée de la super pioche5 blocs
Points d'un polygone ou d'un polyèdre20
Hauteur verticale par défaut256 blocs
Blocs modifiables en une commandeIllimité
Temps de calcul avant abandon600 millisecondes, 900 au maximum
Utilisation en créatifDésactivée
Consommation de l'inventaireDésactivée
Support des blocs de commandeDésactivé
Liens symboliques autorisésNon
Journalisation des commandesDésactivée
Cinq annulations, pas une de plus
L'historique est limité à cinq opérations. Passé ça, //undo ne te sauvera pas. Sur un monde de production, la règle est simple: sauvegarde avant une grosse opération, pas après. La procédure de sauvegarde est sur Maintenir son serveur.

Les blocs interdits

La configuration bloque une longue liste de blocs, qu'aucune commande ne peut poser en masse. On y trouve:

  • La TNT, le feu et la bedrock, pour des raisons évidentes.
  • Tous les lits et toutes les pousses d'arbre.
  • Les rails, normaux, alimentés et détecteurs.
  • Toute la redstone posable: fil, torches, répéteurs, comparateurs, boutons, leviers.
  • Les cultures, les torches, les cactus, la canne à sucre, les champignons et les fleurs.

Ce sont des blocs à état ou à entité de bloc, qui plantent ou se cassent quand on les pose par milliers. Le blocage évite un monde corrompu, sujet traité sur Réparer un monde corrompu.

Les commandes qui servent vraiment

CommandeEffet
//wandDonne la baguette de sélection
//pos1 et //pos2Sélectionne les coins depuis ta position
//setRemplit toute la sélection avec un bloc
//replaceRemplace un bloc précis par un autre
//expand et //contractAgrandit ou réduit la sélection dans une direction
//copy et //pasteCopie la sélection et la recolle ailleurs
//stack et //moveRépète ou déplace la sélection
//undo et //redoAnnule ou refait, cinq fois au maximum
//count et //distrCompte les blocs d'une sélection avant d'agir
Prends le réflexe de lancer //count avant une grosse commande. Sur une sélection mal cadrée, ça évite de découvrir après coup qu'on vient de remplacer trois millions de blocs. C'est aussi la meilleure façon de sentir si l'opération va tenir dans le temps de calcul autorisé.

Les pinceaux et les schematics

  • Les pinceaux se lient à un objet en main et posent des formes à distance. Le rayon est plafonné à 6, ce qui reste largement suffisant pour du terrain.
  • Les schematics se sauvegardent et se rechargent depuis un dossier dédié du serveur. C'est le moyen propre de transporter une construction d'un monde à l'autre.
  • L'aperçu de sélection est activé côté serveur: tu vois ta zone surlignée sans avoir besoin d'un mod client.

Un correctif embarqué qu'on oublie

Le pack ajoute un petit mod nommé worldedit-hang-fix. Son rôle tient en une phrase: empêcher WorldEdit de bloquer l'arrêt du serveur. Sans lui, une opération lourde encore en cours au moment d'un stop peut laisser le processus suspendu, et un serveur qui ne s'arrête pas proprement est la première cause de monde abîmé.

Si tu montes ton propre serveur avec ce pack, garde ce mod. C'est deux cents kilo octets qui évitent une catégorie entière de problèmes, détaillée sur Dépanner son serveur.

Bonnes pratiques sur un serveur en production

  1. 1
    Sauvegarde d'abord. Cinq annulations ne remplacent pas une copie du monde.
  2. 2
    Travaille serveur vide pour les grosses opérations. Une commande sur un million de blocs fait chuter le nombre de ticks pour tout le monde.
  3. 3
    Découpe en morceaux. Plusieurs commandes moyennes passent mieux qu'une énorme, et restent annulables.
  4. 4
    Active la journalisation si plusieurs personnes ont accès à l'outil. Elle est coupée par défaut, donc rien n'est tracé.
  5. 5
    Vérifie l'impact après coup avec les outils de mesure décrits sur Optimiser son serveur.
Sur Arcadia, c'est réservé au staff
WorldEdit demande les droits d'opérateur. Aucun joueur n'y a accès, et les constructions du serveur passent par l'équipe. Cette page s'adresse avant tout à ceux qui font tourner leur propre serveur avec le pack, comme le reste de la catégorie.

Où continuer

Pour monter ton serveur, commence par Installer son serveur puis Lancer et configurer son serveur. La gestion au quotidien est sur Administrer son serveur, la mémoire sur Arguments JVM et RAM, et les modifications de recettes sur Comprendre KubeJS.

Comprendre KubeJS

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.jsonremplace 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:...".

Pour aller plus loin

Pour voir ce que ces scripts changent concrètement sur Arcadia, lis Les recettes modifiées. Si tu montes ton propre serveur avec le pack, commence par Installer son serveur, puis Lancer et configurer son serveur et Optimiser son serveur.

Économie sur 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)

Pour un panorama de toutes les commandes du serveur, voir la Les commandes. Toutes les commandes Easy NPC 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:

commonuncommonraresuperiorepiclegendarymythicdivinecelestialtranscendent

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:

bronzesilvergoldplatinumdiamond

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

Boss Keys (boss raids)

Drop des boss raids. 5 paliers:

minormajorelitesupremeoverlord

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 confirmer le namespace exact (en ouvrant les fichiers du modpack) (probablement arcadia:numestica ou via un mod externe genre numismatic-overhaul:gold_coin).

À quoi sert la monnaie?

Le fonctionnement détaillé de la monnaie et des prix est décrit dans la page Économie et boutique. Sur un serveur privé, 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 (voir les Grades et privilèges)- 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.