will0376
Токсичная личность
- 2,079
- 55
- 585
Здрасть. Мне необходимо написать гуишку, которая бы записывала НБТ в предмет при перемещении в слот, вроде всё реализовал, но остаётся вопрос: как впервые положить предмет правильно? Как его забрать правильно?(чуть более правильный вопрос: как записать НБТ предмета во второй, без сохранения его в контейнере?)
Мб есть другой способ записи нужного предмета в динамический список предметов(ванила/моды/етк)?
Слот:
Я знаю, что можно просто удалять предмет в момент трансфера... Но это не мой путь(во всяком случае, сделаю так если ничего другого не придумаю)
Мб есть другой способ записи нужного предмета в динамический список предметов(ванила/моды/етк)?
Слот:
Java:
@Override
public void putStack(ItemStack stack) {
/[I]System.out.println(FMLCommonHandler.instance().getSide());[/I]/
System.out.println("--===---New Put---===--");
System.out.println("put1: " + stack);
System.out.println(Arrays.toString(inventory.getStacks().toArray()));
ItemStack handStack = player.getHeldItemMainhand();
if (handStack.hasTagCompound() && handStack.getTagCompound().hasKey(nbtInventoryInItemStack)) {
NBTTagCompound nbt = handStack.getTagCompound().getCompoundTag(nbtInventoryInItemStack);
stack = new ItemStack(nbt);
System.out.println("set by NBT: "+ stack);
} else if (!stack.isEmpty()){
NBTTagCompound nbt = new NBTTagCompound();
nbt.setTag(nbtInventoryInItemStack, stack.writeToNBT(new NBTTagCompound()));
handStack.setTagCompound(nbt);
System.out.println("set by put: "+ stack);
} /*else {
if (!stack.isEmpty()) {
NBTTagCompound nbt = new NBTTagCompound();
nbt.setTag(nbtInventoryInItemStack, stack.writeToNBT(new NBTTagCompound()));
handStack.setTagCompound(nbt);
//super.putStack(ItemStack.EMPTY);
super.putStack(stack);
}
}*/
super.putStack(stack);
System.out.println("put2: " + stack + ", init: " + inited + ", counter: " + putCounter);
}
@Override
public ItemStack onTake(EntityPlayer player, ItemStack stack) {
//this.onCrafting(stack);
super.onTake(player, stack);
System.out.println("take: " + stack);
ItemStack handStack = player.getHeldItemMainhand();
handStack.removeSubCompound(nbtInventoryInItemStack);
return stack;
}