Прочность

Версия Minecraft
1.7.10
929
30
66
Всем привет, можно ли сделать чтобы когда игрок одевает чужую броня , она ломалась, или нельзя было одевать если вы не владелец.
 
Последнее редактирование:

Eifel

Модератор
1,624
79
609
Ну да. Данные о первом владельце можно хранить в НБТ стака, записывать туда при первом одевании например. И в том же armorTick`е доставать НБТ и проверять, если владелец другой то ломать/сломать броню. В общих чертах как-то так
 
Есть пример использования NBT + ответ как сделать ломаемость предмета в руке, можешь тут посмотреть. Может быть поможет. Ну и глянь в поиск гугла с запросом Minecraft NBT(может поможет) а также поиск по форуму с запросом по тэгам "nbt".
Прочность предмета
Где встречается NBT(примеры с того же гугла):
Tutorials/Command NBT tags
JNBT: The Java NBT Library
Generated Documentation (Untitled)
Tutorial - How to make a simple Multiblock Structure
 
Последнее редактирование:
929
30
66
Есть пример использования NBT + ответ как сделать ломаемость предмета в руке, можешь тут посмотреть. Может быть поможет. Ну и глянь в поиск гугла с запросом Minecraft NBT(может поможет) а также поиск по форуму с запросом по тэгам "nbt".
Прочность предмета
Где встречается NBT(примеры с того же гугла):
Tutorials/Command NBT tags
JNBT: The Java NBT Library
Generated Documentation (Untitled)
Tutorial - How to make a simple Multiblock Structure

ItemStack.damageItem(1, player) ошибка с player
 
929
30
66
Java:
public static class Helmet extends ItemArmor {

      public static String owner = "owner";


      public Helmet(ArmorMaterial armorMaterial, int par3, int par4) {
         super(armorMaterial, par3, par4);
         this.setCreativeTab(bestfoxy.creativeTab);
         this.setUnlocalizedName("juggernautHelmet");
         this.setTextureName("bestfoxy:jag0");
      }

      public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean par5) {
         if(!stack.hasTagCompound()) {
            stack.stackTagCompound = new NBTTagCompound();
            ItemStack.damageItem(1, player);
            }
         }

         if(!world.isRemote && !stack.stackTagCompound.hasKey(owner) && entity instanceof EntityPlayer) {
            EntityPlayer player = (EntityPlayer)entity;
            stack.stackTagCompound.setString(owner, player.getDisplayName());
         }

      }

      public void addInformation(ItemStack stack, EntityPlayer playerIn, List lines, boolean advanced) {
         if(stack.hasTagCompound() && stack.stackTagCompound.hasKey(owner)) {
            lines.add(EnumChatFormatting.GRAY + "Owner: " + stack.stackTagCompound.getString(owner));
         }

      }

      public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) {
          if(player.getActivePotionEffect(Potion.nightVision) == null) {
             player.addPotionEffect(new PotionEffect(Potion.nightVision.id, -127));
             ksExisted % 60 == 0) player.heal(0.1F);
            
                
             }
          }
      }
Вот
 

Eifel

Модератор
1,624
79
609
Значит ты что-то опять не так сделал. Прикладывай сразу код, ибо угадывать как ты написал сложно. Да и дамажишь ты ее немного не там, где надо. Тебе надо проверку сделать что владелец другой и тогда ломать. А еще у тебя после ItemStack.damageItem(1, player); одна лишняя скобка
 
929
30
66
@Thunder
Java:
public static class Helmet extends ItemArmor {

      public static String owner = "owner";


      public Helmet(ArmorMaterial armorMaterial, int par3, int par4) {
         super(armorMaterial, par3, par4);
         this.setCreativeTab(bestfoxy.creativeTab);
         this.setUnlocalizedName("juggernautHelmet");
         this.setTextureName("bestfoxy:jag0");
      }

      public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean par5) {
         if(!stack.hasTagCompound()) {
            stack.stackTagCompound = new NBTTagCompound();
            ItemStack.damageItem(1, player);
            }
         }

         if(!world.isRemote && !stack.stackTagCompound.hasKey(owner) && entity instanceof EntityPlayer) {
{
if(entity instanceof EntityPlayer)
            EntityPlayer player = (EntityPlayer)entity;
            stack.stackTagCompound.setString(owner, player.getDisplayName());
         }
}
      }

      public void addInformation(ItemStack stack, EntityPlayer playerIn, List lines, boolean advanced) {
         if(stack.hasTagCompound() && stack.stackTagCompound.hasKey(owner)) {
            lines.add(EnumChatFormatting.GRAY + "Owner: " + stack.stackTagCompound.getString(owner));
         }

      }

      public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) {
          if(player.getActivePotionEffect(Potion.nightVision) == null) {
             player.addPotionEffect(new PotionEffect(Potion.nightVision.id, -127));
             ksExisted % 60 == 0) player.heal(0.1F);
           
               
             }
          }
      }
 

Eifel

Модератор
1,624
79
609
Лишняя скобка после ItemStack.damageItem(1, player);. Ты добавил проверку и код к stack.stackTagCompound.setString(owner, player.getDisplayName());, а там, где ItemStack.damageItem(1, player); нет. И еще перечитай сообщение выше.

Ну и в общем перечитай какой-то учебник по Java, будет намного легче писать потом и не тратить кучу времени наугад добавляя какой-то код
 
Сверху