Mod Problème avec un mod

  • Auteur de la discussion Auteur de la discussion zobie
  • Date de début Date de début

zobie

Bucheron
21 Mars 2016
24
2
16
25
Bonjour/Bonsoir, j'ai un problème avec un mod, quand je lance mon serveur il y a une erreur :

Code:
java.lang.IllegalArgumentException: Slot 3972 is already occupied by calclavia.lib.multiblock.fake.BlockMultiBlockPart@58ed6fa3 when adding assets.pamharvestcraft.BlockPamSapling@2e1ec5b4
    at net.minecraft.block.Block.<init>(Block.java:351)
    at net.minecraft.block.BlockFlower.<init>(BlockFlower.java:18)
    at net.minecraft.block.BlockFlower.<init>(BlockFlower.java:27)
    at assets.pamharvestcraft.BlockPamSapling.<init>(BlockPamSapling.java:23)
    at assets.pamharvestcraft.PamHarvestCraft.preInit(PamHarvestCraft.java:1074)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:545)
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
    at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313)
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
    at com.google.common.eventbus.EventBus.post(EventBus.java:267)
    at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:201)
    at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:181)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
    at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313)
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
    at com.google.common.eventbus.EventBus.post(EventBus.java:267)
    at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:112)
    at cpw.mods.fml.common.Loader.loadMods(Loader.java:522)
    at cpw.mods.fml.server.FMLServerHandler.beginServerLoading(FMLServerHandler.java:99)
    at cpw.mods.fml.common.FMLCommonHandler.onServerStart(FMLCommonHandler.java:350)
    at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:92)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:630)
    at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)

Le mod se nomme Pam's harvestcraft. Je voudrais savoir quel est cette erreur et comment fait on pour la "réparer"
Merci à toute les réponse (merci de bien détailler comment faire car je ne m'y connais pas bien)
-cordialement zobielamouche
 
Dernière édition par un modérateur:
Premièrement, pense à mettre des stack traces/messages d'erreurs/codes dans des balises code :
Code:
[_code]
blablacar
[_/code]

(Sans les _ sinon bah sa ferme l'exemple ^c^)

Ensuite, il semblerait que Pam's havestcraft tente d'ajouter un item au slot 3972, qui je pense ne représente pas un inventaire mais l'id du bloc en question.
Sous quelle version ton serveur tourne t-il ?

Ensuite il semblerait qu'il y ait une incompatibilité entre ce mod et un mod de calclavia (après une recherche rapide sur google, j'ai trouvé 3 mods : Electrodynamics, MFFS et Resonant Engine).
Tente de bidouiller la config d'un de ses deux mods (trouve une ligne du style block.id=3972 et change-là par un autre nombre, jusqu'à que sa marche, je te conseille des grands nombres histoire qu'il râle pas trop longtemps, car si tu change cet id en une autre id aussi utilisée tu auras probablement la même erreur).

Cordialement,
ShE3py.
 
Il tourne en 1.6.4

Outch j'ai mal eux yeux là... Pourquoi une version aussi vielle ? La 1.7.10 je comprend car c'est là que la majorité des mods sont encore valides, mais il y en a de plus en plus qui sont en train de se convertir en 1.8/1.12.
Et sinon oui sa me confirme qu'il utilise bien les ID et nom les noms. Petite explication :
Avant la 1.8, tout les blocs/items/dimensions avait des ID (identifiants), des sortes de nombres qui leurs étaient associées. En gros quand il sauvegardais la map il mettait leurs ID, et quand il lisait 1 il savait par exemple que c'était de la stone.
Sauf qu'avec des mods, chaque bloc qu'il ajoute doit avoir une ID unique, car sinon si y'a deux fois un 1 quand il lit un 1 il ne sait pas quel bloc mettre.
Et donc quand un mod tente de créer un bloc/item avec une ID déjà utilisée, tu peut apercevoir un beau message qui dit qu'il ne peut pas faire sa.
Pour la parenthèse, après la 1.8, les ID sont sous formes de minecraft:stone, et donc si t'as un autre mod Blablacar qui veut ajouter un bloc de stone il met l'id blablacar:stone, comme sa c'est impossible d'avoir deux mods qui prennent les mêmes ID.

Comment puis-je faire ça ?

Alors pour régler ce problème, la solution c'est justement de changer l'ID en question par une autre ID non prise, et cet ID en question se trouve généralement dans la configuration des mods.
Pour trouvé ce fichier de configuration, il faut aller dans %appdata%/.minecraft/config/ sous Windows.
Après tu ouvre le dossier du mod en question (qui doit avoir soit le nom du plugin (Pam's harverstcraft) soit le nom du groupe qui l'a fait (calclavia))., ou le fichier portant le nom s'il n'y a pas de dossier.
Généralement les fichiers de configuration sont sous extension .cfg, .yml ou .json. Il suffit de l'ouvrir avec une éditeur de texte (Notepad++ ou bloc-notes) et de chercher une ligne (CTRL + F) contenant 3972.
Après, les fichiers de configurations sont généralement commentés en anglais, alors tu cherchera dans une partie de style blocs ou IDs.
Après je ne peut pas trop t'expliquer plus car enfaite pour moi c'est simple, il suffit de trouver une ligne du style stone.id=1 et de changer le nombre.

Cordialement,
ShE3py.
 
Bonjour,
Afin de compléter / corriger le message de ShE3py, j'ajoute que les ids existent toujours en plus des identifiants de registre (modid:nomdubloc) mais ils sont géré de façon automatique par Forge et mappé lorsqu'un client rejoint un serveur vers les bons id.
Du-coup les conflits d'id n'existe plus.
Pour les blocs et items, ce changement date de la 1.7 et non de la 1.8, par contre le système de registre a été étendu aux effets de potion et aux biomes à partir de la 1.8.

Pour le reste tout est bon.
 
Déjà merci de votre aide,
Outch j'ai mal eux yeux là... Pourquoi une version aussi vielle ? La 1.7.10 je comprend car c'est là que la majorité des mods sont encore valides, mais il y en a de plus en plus qui sont en train de se convertir en 1.8/1.12.
Et sinon oui sa me confirme qu'il utilise bien les ID et nom les noms. Petite explication :
Avant la 1.8, tout les blocs/items/dimensions avait des ID (identifiants), des sortes de nombres qui leurs étaient associées. En gros quand il sauvegardais la map il mettait leurs ID, et quand il lisait 1 il savait par exemple que c'était de la stone.
Sauf qu'avec des mods, chaque bloc qu'il ajoute doit avoir une ID unique, car sinon si y'a deux fois un 1 quand il lit un 1 il ne sait pas quel bloc mettre.
Et donc quand un mod tente de créer un bloc/item avec une ID déjà utilisée, tu peut apercevoir un beau message qui dit qu'il ne peut pas faire sa.
Pour la parenthèse, après la 1.8, les ID sont sous formes de minecraft:stone, et donc si t'as un autre mod Blablacar qui veut ajouter un bloc de stone il met l'id blablacar:stone, comme sa c'est impossible d'avoir deux mods qui prennent les mêmes ID.



Alors pour régler ce problème, la solution c'est justement de changer l'ID en question par une autre ID non prise, et cet ID en question se trouve généralement dans la configuration des mods.
Pour trouvé ce fichier de configuration, il faut aller dans %appdata%/.minecraft/config/ sous Windows.
Après tu ouvre le dossier du mod en question (qui doit avoir soit le nom du plugin (Pam's harverstcraft) soit le nom du groupe qui l'a fait (calclavia))., ou le fichier portant le nom s'il n'y a pas de dossier.
Généralement les fichiers de configuration sont sous extension .cfg, .yml ou .json. Il suffit de l'ouvrir avec une éditeur de texte (Notepad++ ou bloc-notes) et de chercher une ligne (CTRL + F) contenant 3972.
Après, les fichiers de configurations sont généralement commentés en anglais, alors tu cherchera dans une partie de style blocs ou IDs.
Après je ne peut pas trop t'expliquer plus car enfaite pour moi c'est simple, il suffit de trouver une ligne du style stone.id=1 et de changer le nombre.

Cordialement,
ShE3py.
Le problème étant que c'est un serveur OMGSERV, donc que je suis avec Filezilla, donc ce ne sera pas avec le %appdata%
Comment dois-je faire avec FileZilla ? Je pense que je dois aller dans le dossier config mais après je ne sais pas.
 
Les configurations des joueurs se trouvent dans %appdata%\.minecraft\configs\, mais les serveurs ont aussi un dossier config dans configs\, sachant que les configs du serveur seront téléchargés par les joueurs.

Mais le problème c'est que le crash s'effectue durant le chargement du jeu (donc le joueur ne se connecte pas au serveur = il ne télécharge pas les fichiers), donc il faut modifier les configs de tout les joueurs ET du serveur (car sinon lui non plus ne démarrera pas).
Et après quel fichier modifier là sa dépend du mod en question, cherche un truc style Parm's haverstcraft.

Cordialement,
ShE3py.
 
Non, ce n'est pas le cas (Sauf si l'auteur du mod a mis en place quelque chose pour que ça se fasse)

De tête,la plupart des mods ont ça (car bon si dans la config du serveur un item est désactiver s'il envoie pas sa au client sa va pas trop le faire), mais pas tout (sa sert à rien d'envoyer au client qu'un minérais est généré entre x et y car bon sa il s'en moque un peu).

Mais après effectivement sa dépend des mods, mais généralement la configuration côté serveur est la même que celle côté client (sa a pas trop de sens d'avoir des trucs différents entre le solo et le multi).

Je ne fais pas trop de modding mais je pense que l'API Forge doit pouvoir permettre de synchronisés les configs, non ?
 
Non il y a rien dans forge pour synchro les config. Et perso j'ai encore jamais vu de mod le faisant, c'est pour ça qu'en général il est recommandé de copier les config du serveur vers le client.

Surtout que dans le cas de la 1.6.4 (et avant) les blocs et items sont initialisés lors du lancement du jeu, il est impossible de les dé-initialiser lors de la connexion à un serveur.
En 1.7 et après c'est différent comme blocs et items sont initialisés lors du changement d'un mod et là c'est en effet bien synchro par FML / Forge (qui s'occupe aussi de synchro les id).
Mais ça c'est une synchro du registre, pas des configurations des mods.