• Recently Browsing

    No registered users viewing this page.

  • Posts

    • Although I've never done one before, but if you register with your mod id it won't work.
    • okay i creat the item class :   package net.luis.cave.items.vanilla; import net.minecraft.item.Food; import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; import net.minecraft.potion.EffectInstance; import net.minecraft.potion.Effects; public class Sugar extends Item { public Sugar() { super(new Item.Properties() .group(ItemGroup.FOOD) .food(new Food.Builder() .hunger(2) .saturation(1.0f) .effect(new EffectInstance(Effects.SPEED, 300, 3), 1) .setAlwaysEdible() .build())); } }   and I register the item with the same vanilla name but it dosen't work and I don't know where is the error :   public static final RegistryObject<Sugar> SUGAR = ITEMS.register("sugar", Sugar::new);
    • This is no good news but thank you
    • Hi all! I'm trying to make a container bookshelf in my mod. I made my block and my tile entity. In the tile entity i overrided the method createMenu: @Override protected Container createMenu(int id, PlayerInventory player) { ChestContainer container = ChestContainer.createGeneric9X3(id, player); return container; } At this point all works fine, when i harvest my block all items are saved and when i place it are restored.  When i move itemstack from an inventory to an other it seems to work. Now i want to make my container accept only books. I want to filter items inserted. The ChestContainer class instances his Slot where isItemValid returns always true. To replace the slot class I tried to create my own container, copied fron ChestContainer, and my own slot class where i overrided boolean isItemValid(ItemStack stack):   package com.polipo.bookshelf.container; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Inventory; import net.minecraft.inventory.container.Container; import net.minecraft.inventory.container.ContainerType; import net.minecraft.inventory.container.Slot; import net.minecraft.item.ItemStack; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; /** * Copied from ChestContainer to replace the slots instances in the constructor. * * @author giacomo * */ public class ContainerGcmBookshelf extends Container { private final IInventory lowerChestInventory; private final int numRows; private ContainerGcmBookshelf(ContainerType<?> type, int id, PlayerInventory player, int rows) { this(type, id, player, new Inventory(9 * rows), rows); } public static ContainerGcmBookshelf createGeneric9X1(int id, PlayerInventory player) { return new ContainerGcmBookshelf(ContainerType.GENERIC_9X1, id, player, 1); } public static ContainerGcmBookshelf createGeneric9X2(int id, PlayerInventory player) { return new ContainerGcmBookshelf(ContainerType.GENERIC_9X2, id, player, 2); } public static ContainerGcmBookshelf createGeneric9X3(int id, PlayerInventory player) { return new ContainerGcmBookshelf(ContainerType.GENERIC_9X3, id, player, 3); } public static ContainerGcmBookshelf createGeneric9X4(int id, PlayerInventory player) { return new ContainerGcmBookshelf(ContainerType.GENERIC_9X4, id, player, 4); } public static ContainerGcmBookshelf createGeneric9X5(int id, PlayerInventory player) { return new ContainerGcmBookshelf(ContainerType.GENERIC_9X5, id, player, 5); } public static ContainerGcmBookshelf createGeneric9X6(int id, PlayerInventory player) { return new ContainerGcmBookshelf(ContainerType.GENERIC_9X6, id, player, 6); } public static ContainerGcmBookshelf createGeneric9X3(int id, PlayerInventory player, IInventory blockEntity) { return new ContainerGcmBookshelf(ContainerType.GENERIC_9X3, id, player, blockEntity, 3); } public static ContainerGcmBookshelf createGeneric9X6(int id, PlayerInventory player, IInventory blockEntity) { return new ContainerGcmBookshelf(ContainerType.GENERIC_9X6, id, player, blockEntity, 6); } public ContainerGcmBookshelf(ContainerType<?> type, int id, PlayerInventory playerInventoryIn, IInventory p_i50092_4_, int rows) { super(type, id); assertInventorySize(p_i50092_4_, rows * 9); this.lowerChestInventory = p_i50092_4_; this.numRows = rows; p_i50092_4_.openInventory(playerInventoryIn.player); int i = (this.numRows - 4) * 18; for (int j = 0; j < this.numRows; ++j) { for (int k = 0; k < 9; ++k) { //Replace new Slot whit my GcmBookshelfSlot this.addSlot(new GcmBookshelfSlot(p_i50092_4_, k + j * 9, 8 + k * 18, 18 + j * 18)); } } for (int l = 0; l < 3; ++l) { for (int j1 = 0; j1 < 9; ++j1) { this.addSlot(new Slot(playerInventoryIn, j1 + l * 9 + 9, 8 + j1 * 18, 103 + l * 18 + i)); } } for (int i1 = 0; i1 < 9; ++i1) { this.addSlot(new Slot(playerInventoryIn, i1, 8 + i1 * 18, 161 + i)); } } /** * Determines whether supplied player can use this container */ @Override public boolean canInteractWith(PlayerEntity playerIn) { return this.lowerChestInventory.isUsableByPlayer(playerIn); } /** * Handle when the stack in slot {@code index} is shift-clicked. Normally this * moves the stack between the player inventory and the other inventory(s). */ @Override public ItemStack transferStackInSlot(PlayerEntity playerIn, int index) { ItemStack itemstack = ItemStack.EMPTY; Slot slot = this.inventorySlots.get(index); if (slot != null && slot.getHasStack()) { ItemStack itemstack1 = slot.getStack(); itemstack = itemstack1.copy(); if (index < this.numRows * 9) { if (!this.mergeItemStack(itemstack1, this.numRows * 9, this.inventorySlots.size(), true)) { return ItemStack.EMPTY; } } else if (!this.mergeItemStack(itemstack1, 0, this.numRows * 9, false)) { return ItemStack.EMPTY; } if (itemstack1.isEmpty()) { slot.putStack(ItemStack.EMPTY); } else { slot.onSlotChanged(); } } return itemstack; } /** * Called when the container is closed. */ @Override public void onContainerClosed(PlayerEntity playerIn) { super.onContainerClosed(playerIn); this.lowerChestInventory.closeInventory(playerIn); } /** * Gets the inventory associated with this chest container. * * @see #field_75155_e */ public IInventory getLowerChestInventory() { return this.lowerChestInventory; } @OnlyIn(Dist.CLIENT) public int getNumRows() { return this.numRows; } } package com.polipo.bookshelf.container; import com.polipo.bookshelf.config.BookshelfConfig; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.container.Slot; import net.minecraft.item.ItemStack; public class GcmBookshelfSlot extends Slot { public GcmBookshelfSlot(IInventory inventoryIn, int index, int xPosition, int yPosition) { super(inventoryIn, index, xPosition, yPosition); } /** * Check if the stack is allowed to be placed in this slot, used for armor slots * as well as furnace fuel. */ @Override public boolean isItemValid(ItemStack stack) { return BookshelfConfig.canInsert(stack); } } But now nothing works When i move items from an inventory to the others they disappear either if they are books or not. Maybe i should change transferStackInSlot? But how? Is this correct way to make a container to filter items to be inserted?  Thanks  a lot of your help  
    • 1.12 is not supported on this thread
  • Topics

  • Who's Online (See full list)