1. Si vous venez d'arriver sur le forum et que vous êtes un peu perdus, cliquez ici !
    Rejeter la notice

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 689
    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 106
    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 689
    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