Non résolu Armure qui te passe en créatif
-
Bonjour !
j’aimerais que quand le joueur porte mon casque, il passe en créatif.
Voici mon code mais il ne vas paspackage com.drastic.mod.init.objects.armour; import com.drastic.mod.Main; import com.drastic.mod.init.ItemInit; import com.drastic.mod.render.models.armor.ModelGbHead; import com.drastic.mod.util.IHasModel; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.item.Item; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import net.minecraftforge.common.util.ITeleporter; public class GbArmor extends ItemArmor implements IHasModel { public GbArmor(String name, ArmorMaterial materialIn, EntityEquipmentSlot equipmentSlotIn) { super(materialIn, 1, equipmentSlotIn); setUnlocalizedName(name); setRegistryName(name); setCreativeTab(Main.BadassTab); setMaxStackSize(1); ItemInit.ITEMS.add(this); } @Override public void registerModels() { Main.proxy.registerItemRederer(this, 0); } @Override public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, EntityEquipmentSlot armorSlot, ModelBiped _default) { if(itemStack != ItemStack.EMPTY && itemStack.getItem() instanceof ItemArmor) { ModelGbHead model = new ModelGbHead(); model.bipedHead.showModel = armorSlot == EntityEquipmentSlot.HEAD; model.isChild = _default.isChild; model.isRiding = _default.isRiding; model.isSneak = _default.isSneak; model.rightArmPose = _default.rightArmPose; model.leftArmPose = _default.leftArmPose; return model; } return null; } @Override public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) { if(isFullSet(player)) { player.capabilities.isCreativeMode = true; } else { player.capabilities.isCreativeMode = false; } super.onArmorTick(world, player, itemStack); } public static boolean isFullSet(EntityPlayer player){ ItemStack head = player.getItemStackFromSlot(EntityEquipmentSlot.HEAD); return !head.isEmpty() && head.getItem() instanceof GbArmor; } }
-
Bonjour :D,
il faut rajouter cette méthode dans la classe qui a pour effet de ticker en permanence dès que l’on porte un morceau de l’armure pusi ensuite de faire les checks nécessaires :@Override public void onArmorTick(World world, EntityPlayer player, ItemStack item) { if(player.inventory.armorItemInSlot(0) != null) if(player.inventory.armorItemInSlot(0).getItem() == TON_CASQUE ) if(!player.capabilities.isInCreative) { player.setGameType(EnumGameType.CREATIVE) } }
-
Bonjour,
Si un event qui ne se déclenche que lors d’un changement d’armure existe, il serait bon de le favoriser sinon les deux premiers if du code proposé par Eno_gamer10 seront testés à tous les ticks (donc niveau optimisation ce ne serait pas ouf)