Non résolu Crash avec des items customs
-
Bonjour,
Je programme depuis peu un mod minecraft en 1.7.10 qui a pour but de rajouter du RP,
pour le moment j’ai codé 3 items: la lithium_powder, la diiode_powder et une IDCard, je rencontre pas mal de problèmes que je vais vous expliquer ci dessout:1) Les powders
Tout d’abord mes powders contiennent un système de pureté qui est stockée dans un tag NBT, le principe est simple, quand un joueur drop la powder la pureté baisse de 1, le problème est que j’ai codé 4 textures pour les powders (1 qui est sensée s’afficher à 100% de pureté, une autre à 75%, 25% etc…) le premier problème est que ces textures ne changent que dans la textures que j’ai dans la mains, sauf que si je drop l’item la textures reste celle par défaut et dans mon inventaire aussi.
Le deuxième problèmes que je rencontre partout est que si je permet le stockage de 64 powder, les 64 auront le même TAG ce qui pose problème.
Troisième problème avec les powders: J’ai voulu créer une recipe de four qui permettrait de redonner une pureté maximale à la powder donc j’ai rajouté un constructeur à mes powders qui prends en compte la puretée sauf qu’impossible de l’implémenter dans ma recipe car je suis obligé de faire new ItemStack(lithium_powder, 1) et pas new ItemStack(new LithiumPowder(100), 1) (sinon le jeu crash si j’essaye de récupérer la powder cuite).
Voici ma classe Lithium Powder (la diiode powder étant pratiquement la même):
Screen in game des icons qui ne changent pas:
2) La carte d’identité
Concernant cet item c’est plus compliqué: je vous met la classe directement:
Ici même problème concernant les icons in game,
impossible d’implémenter la date sinon le jeux crash au démarage (j’aimerais la stocker sous la forme de: DD/MM/YYYY)J’ai également des beugs (pas à chaque fois) quand j’essaye de m’en give une (du genre elle disparait si je la drop et tout les autres items que je me giverais par la suite seront invisibles)
Et pour finir:
J’aimerais adapter cette event pour qu’il me donne une idCard uniquement lors de la première connection au serveur/monde.Merci d’avance pour aide,
Bien cordialement
-
Salut,
Sans la fonction setHasSubType(true) (a mettre dans le constructeur) les metadata et les tags sont ignorés dans beaucoup de fonction, ce qui explique sûrement une partie de très problème (par exemple le fait de pouvoir stacker des items ayant différents tags).Pour la recette, il faut générer l’item stack puis lui appliquer le nbt puis l’utiliser dans la recette.
ItemStack stack = new ItemStack(itemVoulu); stack.setNBTTagCompounant(leTagVoulu);
et ensuite utiliser la variable stack dans la recette.
Et pour l’event, mets simplement une valeur hascard dans le nbt du joueur, s’il est présent ne fait rien, sinon tu donnes la carte et tu set le tag.
Par contre les images pour le code, c’est n’est pas pratique du tout, merci d’utiliser la syntaxe markdown pour insérer du code.
-
D’accord, oui je ferais ça a l’avenir.
Par contre le setHashSubType(true) n’as rien changé
-
J’ai complété mon message.
Et je vois un autre soucis avec ton code, tu ajoutes le nbt côté client (if world.isRemote) alors que c’est le serveur qui gère toute la logique (pour lui il n’y a pas de tag nbt, donc forcement tout les items sont identiques).
-
@robin4002 Tout d’abord merci pour tes réponses, ça à permis de résoudre mon problème sur l’event. J’ai suivis tout ce que tu m’as dit seulement maintenant le système de pureté qui baisse à chaque drop ne marche plus. Et je n’ai pas compris si du coups je remplace isRemote par !isRemote ou si je l’enlève.
Merci d’avance.
-
Remplaces par !isRemote.