Лучше при крафте. Удобнейзаписывать туда при первом одевании например
Есть пример использования 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
Там же пишет решение вопроса, вниз пролистай и увидишь "par3EntityPlayer вместо player".ItemStack.damageItem(1, player) ошибка с player
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);
}
}
}
player
нигде еще нету. Тебе надо сделать как в коде ниже: EntityPlayer player = (EntityPlayer)entity;
. Но перед этим не будет лишним проверить является ли энтити игроком - if(entity instanceof EntityPlayer)
ItemStack.damageItem(1, player);
одна лишняя скобка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);
}
}
}
ItemStack.damageItem(1, player);
. Ты добавил проверку и код к stack.stackTagCompound.setString(owner, player.getDisplayName());
, а там, где ItemStack.damageItem(1, player);
нет. И еще перечитай сообщение выше.И получи null при автокрафте! Поздравляю!Лучше при крафте. Удобней