Luckydel Posted April 15, 2023 Share Posted April 15, 2023 (edited) 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, 2023 by Luckydel Quote Link to comment Share on other sites More sharing options...
Luckydel Posted April 16, 2023 Author Share Posted April 16, 2023 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. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.