|
|
@@ -13,12 +13,18 @@ import net.minecraft.network.NetworkManager;
|
|
|
import net.minecraft.network.play.server.SUpdateTileEntityPacket;
|
|
|
import net.minecraft.tileentity.LockableLootTileEntity;
|
|
|
import net.minecraft.tileentity.TileEntityType;
|
|
|
+import net.minecraft.util.Direction;
|
|
|
import net.minecraft.util.IWorldPosCallable;
|
|
|
import net.minecraft.util.NonNullList;
|
|
|
import net.minecraft.util.text.ITextComponent;
|
|
|
import net.minecraft.util.text.TranslationTextComponent;
|
|
|
+import net.minecraftforge.common.capabilities.Capability;
|
|
|
import net.minecraftforge.common.util.Constants;
|
|
|
+import net.minecraftforge.common.util.LazyOptional;
|
|
|
+import net.minecraftforge.items.CapabilityItemHandler;
|
|
|
+import net.minecraftforge.items.ItemStackHandler;
|
|
|
|
|
|
+import javax.annotation.Nonnull;
|
|
|
import javax.annotation.Nullable;
|
|
|
|
|
|
// 铁砧 TileEntity,用于引导自定义模型与存储物品 NBT
|
|
|
@@ -90,7 +96,20 @@ public class AnvilTileEntity extends LockableLootTileEntity {
|
|
|
return container;
|
|
|
}
|
|
|
|
|
|
- // TODO : 让漏斗只能从上方注入物品(由于 Forge 接管了漏斗代码,需要使用它的 Capability,什么 SidedInventory 不管用)
|
|
|
+ // TODO : [难顶] 让漏斗只能从上方注入物品(由于 Forge 接管了漏斗代码,需要使用它的 Capability,什么 SidedInventory 不管用),不过这个写起来还是不太对的样子
|
|
|
+ @Nonnull @Override public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
|
|
|
+ if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) {
|
|
|
+ return LazyOptional.of(() -> new ItemStackHandler() {
|
|
|
+ @Override public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate) {
|
|
|
+ if (side != Direction.UP) return ItemStack.EMPTY;
|
|
|
+ return super.insertItem(slot, stack, simulate);
|
|
|
+ }
|
|
|
+ }).cast();
|
|
|
+ }
|
|
|
+ return super.getCapability(cap, side);
|
|
|
+ }
|
|
|
+
|
|
|
+ // TODO : 由于目前的铁砧判断方式,它现在不接受线,因为线有对应的方块……
|
|
|
// TODO : 让铁砧可以根据物品栏里的物品数量向比较器输出红石信号
|
|
|
|
|
|
}
|