版本信息
你使用的IDE:Eclipse
你使用的IDE版本:最新
Forge版本: 1.12.2
Minecraft版本: 1.12.2
错误情况简述
该方法是我根据找到的资料写出来的,但是有个问题当返回值为null的时候就会报错,甚至崩服,但是根据资料显示是可以为null,后来我改成直接返回空气之后,各方面发现都没问题了,
但是不知道这样写是不是正确的,所以想请教一下熟悉这方面的人解答一下这样写会不会有什么错?
相关代码
如下
@Override
public ItemStack transferStackInSlot(EntityPlayer playerIn, int index) {
Slot slot = inventorySlots.get(index);
if (slot == null || !slot.getHasStack()) {
return Items.AIR.getDefaultInstance();
}
ItemStack newStack = slot.getStack(), oldStack = newStack.copy();
boolean isMerged = false;
if (index == 0 || index == 2) {
isMerged = mergeItemStack(newStack, 4, 40, true);
} else if (index >= 4 && index < 31) {
isMerged = !goldSlot.getHasStack() && newStack.getCount() <= 16 && mergeItemStack(newStack, 0, 1, false)
|| !emeraldSlot.getHasStack() && mergeItemStack(newStack, 2, 3, false)
|| mergeItemStack(newStack, 31, 40, false);
} else if (index >= 31 && index < 40) {
isMerged = !goldSlot.getHasStack() && newStack.getCount() <= 16 && mergeItemStack(newStack, 0, 1, false)
|| !emeraldSlot.getHasStack() && mergeItemStack(newStack, 2, 3, false)
|| mergeItemStack(newStack, 4, 31, false);
}
if (!isMerged) {
return Items.AIR.getDefaultInstance();
}
if (newStack.getCount() == 0) {
slot.putStack(Items.AIR.getDefaultInstance());
} else {
slot.onSlotChanged();
}
// slot.onPickupFromSlot(playerIn, newStack);
slot.onTake(playerIn, newStack);
return oldStack;
}