MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Crash avec des items customs

    Planifier Épinglé Verrouillé Déplacé Non résolu Sans suite
    1.7.10
    6 Messages 2 Publieurs 593 Vues 2 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • V Hors-ligne
      virgilfree
      dernière édition par robin4002

      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):
      0_1534417038430_powder1.PNG
      0_1534417064806_powder2.PNG
      0_1534417077807_powder3.PNG

      Screen in game des icons qui ne changent pas:
      0_1534417167464_2018-08-16_12.50.28.png

      2) La carte d’identité

      Concernant cet item c’est plus compliqué: je vous met la classe directement:
      0_1534417294830_idcard1.PNG
      0_1534417354586_idcard2.PNG

      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:
      0_1534417635988_event.PNG
      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

      1 réponse Dernière réponse Répondre Citer 0
      • robin4002R Hors-ligne
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
        dernière édition par robin4002

        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.

        1 réponse Dernière réponse Répondre Citer 0
        • V Hors-ligne
          virgilfree
          dernière édition par

          D’accord, oui je ferais ça a l’avenir.

          Par contre le setHashSubType(true) n’as rien changé 😕

          1 réponse Dernière réponse Répondre Citer 0
          • robin4002R Hors-ligne
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs
            dernière édition par

            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).

            V 1 réponse Dernière réponse Répondre Citer 0
            • V Hors-ligne
              virgilfree @robin4002
              dernière édition par

              @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.

              1 réponse Dernière réponse Répondre Citer 0
              • robin4002R Hors-ligne
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                dernière édition par

                Remplaces par !isRemote.

                1 réponse Dernière réponse Répondre Citer 0
                • 1 / 1
                • Premier message
                  Dernier message
                Design by Woryk
                ContactMentions Légales

                MINECRAFT FORGE FRANCE © 2024

                Powered by NodeBB