Enchantement d'armure



  • Bonjour,

    J'ai trouvé comment ajouter un enchantement à une pièce d'armure avec

    @Override
        public void onArmorTick(ItemStack stack, World world, EntityPlayer player)
        {
            player.addPotionEffect(new PotionEffect(Potion.getPotionById(16), 220));
        }
    

    mais je n'arrive pas trouvé comment ajouter en enchantement quand on a le full armure et nom juste une pièce d'armure, pouvez-vous m'aider svp



  • Ok beh c'est slot



  • @DailyCraft a dit dans Enchantement d'armure :

    player.addPotionEffect(new PotionEffect(Potion.getPotionById(16), 220)); }

    Bonjour,

    Il faut écrire dans la méthode :

    
    if(this.armorType == 0){  //0 = casque, 1 = plastron, 2 = jambières, 3 = bottes
    //code
    }
    


  • Je viens d'essayer et ça me dit : Operator '==' cannot be applied to 'net.minecraft.inventory.EntityEquipementSlot', 'int'


  • Moddeurs confirmés Rédacteurs Administrateurs

    if (armorType == EntityEquipmentSlot.HEAD) { // CHEST, LEGS, FEET
                
    }
    

    Par contre cela le fonctionnera pas de faire des && entre chaque élement, car la pièce d'armure actuellement tické ne sera jamais les 4 en même temps.
    Donc il faut plutôt faire quelque chose comme ça :

            if (armorType == EntityEquipmentSlot.HEAD && player.inventory.armorInventory.get(2).getItem() == ModItem.CHEST_PLATE && player.inventory.armorInventory.get(1).getItem() == ModItem.LEGS && player.inventory.armorInventory.get(0).getItem() == ModItem.FEET) {
                
            }
    

    En remplaçant ModItem par la classe où se trouve des items et le nom de la variable par ceux de chaque pièce d'armure.



  • Ok merci ça marche par contre tu as mis deux fois ModItem.FEET 😕 mais c'est pas grave


  • Moddeurs confirmés Rédacteurs Administrateurs

    corrigé 😉



  • C'est quoi en 1.14.3 ?



  • 1.13 = 1.14+rename



  • Comment tu fais pour que se soit rose ?



  • ```Ceci est un texte parlant du JS,ce language qui plagie le Java```
    


  • test

    ah ouai



  • Je ne trouve pas re rename de armorType


  • Moddeurs confirmés Rédacteurs Administrateurs

    La variable a surement été renommé, regardes le code de la classe ItemArmor pour trouver le nouveau nom.



  • Maintenant elle s'appelle ArmorItem comme ItemPickaxe qui devient PickaxeItem ou ItemGroup qui devient GroupItem ...


  • Moddeurs confirmés Rédacteurs Administrateurs

    En effet, donc regardes dans le code de la classe ArmorItem.



  • Mais il y a rien qui y ressemble 😢 , sinon voila la class ArmorItem :

    public class ArmorItem extends Item {
        private static final UUID[] ARMOR_MODIFIERS = new UUID[]{UUID.fromString("845DB27C-C624-495F-8C9F-6020A9A58B6B"), UUID.fromString("D8499B04-0E66-4726-AB29-64469D734E0D"), UUID.fromString("9F3D476D-C118-4544-8365-64846904B48E"), UUID.fromString("2AD3F246-FEE1-4E67-B886-69FD380BB150")};
        public static final IDispenseItemBehavior DISPENSER_BEHAVIOR = new DefaultDispenseItemBehavior() {
            protected ItemStack dispenseStack(IBlockSource p_82487_1_, ItemStack p_82487_2_) {
                ItemStack itemstack = ArmorItem.dispenseArmor(p_82487_1_, p_82487_2_);
                return itemstack.isEmpty() ? super.dispenseStack(p_82487_1_, p_82487_2_) : itemstack;
            }
        };
        protected final EquipmentSlotType slot;
        protected final int damageReduceAmount;
        protected final float toughness;
        protected final IArmorMaterial material;
    
        public static ItemStack dispenseArmor(IBlockSource p_185082_0_, ItemStack p_185082_1_) {
            BlockPos blockpos = p_185082_0_.getBlockPos().offset((Direction)p_185082_0_.getBlockState().get(DispenserBlock.FACING));
            List<LivingEntity> list = p_185082_0_.getWorld().getEntitiesWithinAABB(LivingEntity.class, new AxisAlignedBB(blockpos), EntityPredicates.NOT_SPECTATING.and(new ArmoredMob(p_185082_1_)));
            if (list.isEmpty()) {
                return ItemStack.EMPTY;
            } else {
                LivingEntity livingentity = (LivingEntity)list.get(0);
                EquipmentSlotType equipmentslottype = MobEntity.getSlotForItemStack(p_185082_1_);
                ItemStack itemstack = p_185082_1_.split(1);
                livingentity.setItemStackToSlot(equipmentslottype, itemstack);
                if (livingentity instanceof MobEntity) {
                    ((MobEntity)livingentity).setDropChance(equipmentslottype, 2.0F);
                    ((MobEntity)livingentity).enablePersistence();
                }
    
                return p_185082_1_;
            }
        }
    
        public ArmorItem(IArmorMaterial p_i48534_1_, EquipmentSlotType p_i48534_2_, Properties p_i48534_3_) {
            super(p_i48534_3_.defaultMaxDamage(p_i48534_1_.getDurability(p_i48534_2_)));
            this.material = p_i48534_1_;
            this.slot = p_i48534_2_;
            this.damageReduceAmount = p_i48534_1_.getDamageReductionAmount(p_i48534_2_);
            this.toughness = p_i48534_1_.getToughness();
            DispenserBlock.registerDispenseBehavior(this, DISPENSER_BEHAVIOR);
        }
    
        public EquipmentSlotType getEquipmentSlot() {
            return this.slot;
        }
    
        public int getItemEnchantability() {
            return this.material.getEnchantability();
        }
    
        public IArmorMaterial getArmorMaterial() {
            return this.material;
        }
    
        public boolean getIsRepairable(ItemStack p_82789_1_, ItemStack p_82789_2_) {
            return this.material.getRepairMaterial().test(p_82789_2_) || super.getIsRepairable(p_82789_1_, p_82789_2_);
        }
    
        public ActionResult<ItemStack> onItemRightClick(World p_77659_1_, PlayerEntity p_77659_2_, Hand p_77659_3_) {
            ItemStack itemstack = p_77659_2_.getHeldItem(p_77659_3_);
            EquipmentSlotType equipmentslottype = MobEntity.getSlotForItemStack(itemstack);
            ItemStack itemstack1 = p_77659_2_.getItemStackFromSlot(equipmentslottype);
            if (itemstack1.isEmpty()) {
                p_77659_2_.setItemStackToSlot(equipmentslottype, itemstack.copy());
                itemstack.setCount(0);
                return new ActionResult(ActionResultType.SUCCESS, itemstack);
            } else {
                return new ActionResult(ActionResultType.FAIL, itemstack);
            }
        }
    
        public Multimap<String, AttributeModifier> getAttributeModifiers(EquipmentSlotType p_111205_1_) {
            Multimap<String, AttributeModifier> multimap = super.getAttributeModifiers(p_111205_1_);
            if (p_111205_1_ == this.slot) {
                multimap.put(SharedMonsterAttributes.ARMOR.getName(), new AttributeModifier(ARMOR_MODIFIERS[p_111205_1_.getIndex()], "Armor modifier", (double)this.damageReduceAmount, Operation.ADDITION));
                multimap.put(SharedMonsterAttributes.ARMOR_TOUGHNESS.getName(), new AttributeModifier(ARMOR_MODIFIERS[p_111205_1_.getIndex()], "Armor toughness", (double)this.toughness, Operation.ADDITION));
            }
    
            return multimap;
        }
    
        public int getDamageReduceAmount() {
            return this.damageReduceAmount;
        }
    
        public float getToughness() {
            return this.toughness;
        }
    }
    


  • Regarde la sourcedu code 1.13 et compare le avec la variable que tu cherche



  • Ok beh c'est slot


  • Moddeurs confirmés Rédacteurs Administrateurs

    Voila, comme quoi en cherchant un peu. Bravo ! ^^



  • Beh grace à @Daich_20, sinon c'étais une variantes qui rester la même donc fiile, même position en plus


Log in to reply