Posted April 15, 20232 yr I need to put an item in a menu cell. I use something like this. Spoiler itemstack.getCapability(ForgeCapabilities.ITEM_HANDLER, null).ifPresent(capability -> { if(entity instanceof Player player){ for(int i = 0; i < inventory.getContainerSize(); ++i) { itemStack = inventory.getItem(i); if(predicate.test(itemStack)){ itemHandler.insertItem(0,itemStack,false); //inventory.removeItem(stack); return; } } } }); The problem is that the item is duplicated without removeItem. And with it, the object turns into AIR and does not work. I have a menu, dragging to the slot works fine. I'm sure I'm doing something wrong, can you please advise? ICapability class Spoiler @Mod.EventBusSubscriber(Dist.CLIENT) public class GunShot_Capability implements ICapabilitySerializable<CompoundTag> { @SubscribeEvent @OnlyIn(Dist.CLIENT) public static void onItemDropped(ItemTossEvent event) { if (event.getEntity().getItem().getItem() == ForgeModItems.AK47.get()) { if (Minecraft.getInstance().screen instanceof Gun_Screen) { Minecraft.getInstance().player.closeContainer(); } } } private final LazyOptional<ItemStackHandler> inventory = LazyOptional.of(this::createItemHandler); @Override public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> capability, @Nullable Direction side) { return capability == ForgeCapabilities.ITEM_HANDLER ? this.inventory.cast() : LazyOptional.empty(); } @Override public CompoundTag serializeNBT() { return getItemHandler().serializeNBT(); } @Override public void deserializeNBT(CompoundTag nbt) { getItemHandler().deserializeNBT(nbt); } private ItemStackHandler createItemHandler() { return new ItemStackHandler(9) { @Override public int getSlotLimit(int slot) { return 64; } @Override public boolean isItemValid(int slot, @Nonnull ItemStack stack) { return stack.getItem() != ForgeModItems.AK47.get(); } @Override public void setSize(int size) { } }; } private ItemStackHandler getItemHandler() { return inventory.orElseThrow(RuntimeException::new); } } (I can provide a class menu if needed) Edited April 17, 20232 yr by Luckydel
April 16, 20232 yr Author I'm an idiot, this should be done on the server side, and I had the wrong validation. Thanks to everyone who took the time.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.