- 52
- 1
- 1
Решил я сделать зачарование (первый раз такой опыт).
Пишу по образу и подобию класс зачара:
Все параметры передал в конструкторе. Но это для видимости.
86 - это effectID (как сказано в Enchantment) (Нет ни единого мода, который бы добавлял новые зачарования, только ванильные, id не совпадает).
Потом я накладываю это зачарование на предмет:
stack.addEnchantment(EnchantmentList.enchSpectralRadiance, 1); (1 - lvl)
Когда накладывается зачар, майн вылетает, говорит:
java.lang.NullPointerException: Ticking entity
at net.minecraft.item.ItemStack.addEnchantment(ItemStack.java:790)
. . .
Ошибка где-то тут:
Вот весь метод:
Значение effectID я передал, оно меньше 256, не повторяется. Я не могу понять, в чем проблема. Помогите :3
Пишу по образу и подобию класс зачара:
Java:
public class EnchantmentSpectralRadiance extends Enchantment{
public EnchantmentSpectralRadiance() {
super(86, 1, EnumEnchantmentType.all);
this.setName(LibEnchantmentsNames.SPECTRAL_RADIANCE);
}
public boolean canApplyAtEnchantingTable(final ItemStack stack) {
return false;
}
public boolean canApply(final ItemStack stack) {
return super.canApply(stack) && (stack.getItem() instanceof ISpectralRadiancable);
}
}
Все параметры передал в конструкторе. Но это для видимости.
86 - это effectID (как сказано в Enchantment) (Нет ни единого мода, который бы добавлял новые зачарования, только ванильные, id не совпадает).
Потом я накладываю это зачарование на предмет:
stack.addEnchantment(EnchantmentList.enchSpectralRadiance, 1); (1 - lvl)
Когда накладывается зачар, майн вылетает, говорит:
java.lang.NullPointerException: Ticking entity
at net.minecraft.item.ItemStack.addEnchantment(ItemStack.java:790)
. . .
Ошибка где-то тут:
nbttagcompound.setShort("id", (short)p_77966_1_.effectId);
Вот весь метод:
Java:
public void addEnchantment(Enchantment p_77966_1_, int p_77966_2_)
{
if (this.stackTagCompound == null)
{
this.setTagCompound(new NBTTagCompound());
}
if (!this.stackTagCompound.hasKey("ench", 9))
{
this.stackTagCompound.setTag("ench", new NBTTagList());
}
NBTTagList nbttaglist = this.stackTagCompound.getTagList("ench", 10);
NBTTagCompound nbttagcompound = new NBTTagCompound();
nbttagcompound.setShort("id", (short)p_77966_1_.effectId);
nbttagcompound.setShort("lvl", (short)((byte)p_77966_2_));
nbttaglist.appendTag(nbttagcompound);
}
Значение effectID я передал, оно меньше 256, не повторяется. Я не могу понять, в чем проблема. Помогите :3