1. Le forum de Minecraft-France va définitivement fermer ses portes. Celui-ci restera en lecture seule mais vous ne pourrez plus y apporter de nouveaux topics. Nous vous invitons à nous rejoindre sur le Discord de Minecraft-France qui permet de présenter vos projets, discuter avec la communauté etc.. Merci à tous d'avoir fait vivre ce forum de nombreuses années. Pour nous rejoindre sur Discord, Cliquez ici

Résolu Modifier les valeurs des armures Minecraft Vanilla

Discussion dans 'Aide à la création de mod' créé par Weaz, 19 Mai 2016.

  1. pifou92000

    pifou92000 Mineur de Diamants

    Inscrit:
    23 Juin 2011
    Messages:
    2 690
    Points:
    195
    Sexe:
    Homme
    Non tu m'as mal compris, il faut bien le mettre dans le preInit. Envoie le code d'ItemArmor, ça sera plus simple. ^^
     
  2. robin4002

    robin4002 Support Technique
    Staff

    Inscrit:
    17 Août 2012
    Messages:
    5 478
    Points:
    229
    Sexe:
    Homme
    Salut,
    Quelqu'un sur MFF a posé la même question. Du-coup j'ai fais un peu de recherche pour faire d'une pierre deux coups :
    Pour changer la valeur d'enchantabilité :
    Code (cpp):
        ArmorMaterial customDiam = EnumHelper.addArmorMaterial("CUSTOM_DIAMOND", 5, new int[]{1, 3, 2, 1}, 15);
        ObfuscationReflectionHelper.setPrivateValue(ItemArmor.class, Items.diamond_helmet, customDiam, "material", "field_77878_bZ");
        ObfuscationReflectionHelper.setPrivateValue(ItemArmor.class, Items.diamond_chestplate, customDiam, "material", "field_77878_bZ");
        ObfuscationReflectionHelper.setPrivateValue(ItemArmor.class, Items.diamond_leggings, customDiam, "material", "field_77878_bZ");
        ObfuscationReflectionHelper.setPrivateValue(ItemArmor.class, Items.diamond_boots, customDiam, "material", "field_77878_bZ");
    Ce code seul le permet pas de modifier la durabilité et l'absorption de l'armure car ils sont défini dans une autre variable dans le constructeur d'item armor.
    Pour modifier la réduction de dégât :
    Code (cpp):
           ObfuscationReflectionHelper.setPrivateValue(ItemArmor.class, Items.diamond_helmet, 1, "damageReduceAmount", "field_77879_b");
           ObfuscationReflectionHelper.setPrivateValue(ItemArmor.class, Items.diamond_chestplate, 3, "damageReduceAmount", "field_77879_b");
           ObfuscationReflectionHelper.setPrivateValue(ItemArmor.class, Items.diamond_leggings, 2, "damageReduceAmount", "field_77879_b");
           ObfuscationReflectionHelper.setPrivateValue(ItemArmor.class, Items.diamond_boots, 1, "damageReduceAmount", "field_77879_b");
    Et pour finir la durabilité :
    Code (cpp):
           Items.diamond_helmet.setMaxDamage(5 * 11);
           Items.diamond_chestplate.setMaxDamage(5 * 16);
           Items.diamond_leggings.setMaxDamage(5 * 15);
           Items.diamond_boots.setMaxDamage(5 * 13);
    Ici la durabilité est de 5, les * un nombre correspond au multiplicateur trouvé dans la classe ItemArmor (private static final int[] maxDamageArray = new int[] {11, 16, 15, 13}; ).
    Avec ce code l'armure en diamant à les même propriété que l'armure en cuire.

    Ce code a été fait en 1.7.10. Les noms obfusqués des variables (field_xxx) sont sûrement différents en 1.8.9 et en 1.9.4.
     
    • J'approuve J'approuve x 2
    • Informatif Informatif x 1
  3. pifou92000

    pifou92000 Mineur de Diamants

    Inscrit:
    23 Juin 2011
    Messages:
    2 690
    Points:
    195
    Sexe:
    Homme
    Ah, donc c'est bien le champ "damageReduceAmount" d'ItemArmor qu'il faut modifier. :smile:
     
  4. Weaz

    Weaz Nouveau

    Inscrit:
    19 Mai 2016
    Messages:
    11
    Points:
    0
    Sexe:
    Homme
    Oh Merci, j'aurais jamais trouvé sans toi et @pifou92000 =D !
    Bon je vais conclure cette discussion !
     

Partager cette page