Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

StefanDeSterke

Members
  • Joined

  • Last visited

Everything posted by StefanDeSterke

  1. I kind of know, but then I need to use NetworkHooks.openGui(), and I need an INamedContainerProvider, and I don't know how to use that and where to implement that.
  2. Changed Container Class: private final IItemHandler inventory; private final World world; private final BlockPos blockPos; public ContainerFurnace(int id, PlayerInventory playerInv, World worldIn, BlockPos pos) { super(ContainerList.furnace, id); this.inventory = new ItemStackHandler(3); this.world = worldIn; this.blockPos = pos; this.addSlot(new SlotItemHandler(this.inventory, 0, 39, 35)); this.addSlot(new SlotItemHandler(this.inventory, 1, 57, 35)); this.addSlot(new SlotItemHandler(this.inventory, 2, 124, 35)); for (int i = 0; i < 3; i++) { for (int j = 0; j < 9; j++) { this.addSlot(new Slot(playerInv, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); } } for (int i = 0; i < 9; i++) { this.addSlot(new Slot(playerInv, i, 8 + i * 18, 142)); } } I open the GUI in my custom Stone Furnace Class in the onBlockActivated method: @SuppressWarnings("deprecation") @Override public boolean onBlockActivated(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult hit) { Minecraft.getInstance().displayGuiScreen(new StoneFurnaceGUI(new ContainerFurnace(guiId, player.inventory, worldIn, pos), player.inventory, new StringTextComponent("Stone Furnace"))); return super.onBlockActivated(state, worldIn, pos, player, handIn, hit); }
  3. Hi, I have this weird bug where I can't move items properly around in my custom Gui. I'm trying to create a Gui with a container without the block being used being a TileEntity. Something like a crafting table. However, as I just said, I can't move the inventory items properly around. Here's a video of me trying to do something in the gui: Container Class: package mod.sds.terrariamod.containers; import org.apache.logging.log4j.LogManager; import mod.sds.terrariamod.TerrariaMod; import mod.sds.terrariamod.containers.slots.ResultSlot; import mod.sds.terrariamod.inventories.FurnaceInventory; import mod.sds.terrariamod.lists.BlockList; import mod.sds.terrariamod.lists.ContainerList; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.container.ClickType; import net.minecraft.inventory.container.Container; import net.minecraft.inventory.container.Slot; import net.minecraft.item.ItemStack; import net.minecraft.util.IWorldPosCallable; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; public class ContainerFurnace extends Container { private final FurnaceInventory inventory; private final World world; private final BlockPos blockPos; public ContainerFurnace(int id, PlayerInventory playerInv, World worldIn, BlockPos pos) { super(ContainerList.furnace, id); this.inventory = new FurnaceInventory(this); this.world = worldIn; this.blockPos = pos; this.addSlot(new Slot(this.inventory, 30, 39, 35)); this.addSlot(new Slot(this.inventory, 31, 57, 35)); this.addSlot(new ResultSlot(this.inventory, 32, 124, 35)); for (int i = 0; i < 3; i++) { for (int j = 0; j < 9; j++) { this.addSlot(new Slot(playerInv, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); } } for (int i = 0; i < 9; i++) { this.addSlot(new Slot(playerInv, i, 8 + i * 18, 142)); } } @Override public ItemStack slotClick(int slotId, int dragType, ClickType clickTypeIn, PlayerEntity player) { LogManager.getLogger(TerrariaMod.modid).info("Slot: " + slotId + ", Item: " + this.getSlot(slotId).getStack().getItem().getName()); System.out.println("Slot: " + slotId + ", Item: " + this.getSlot(slotId).getStack().getItem().getName()); return super.slotClick(slotId, dragType, clickTypeIn, player); } @Override public ItemStack transferStackInSlot(final PlayerEntity player, final int fromSlot) { ItemStack item = ItemStack.EMPTY; final Slot fromSlotS = this.inventorySlots.get(fromSlot); if (fromSlotS != null && fromSlotS.getHasStack()) { final ItemStack fromSlotItem = fromSlotS.getStack(); item = fromSlotItem.copy(); if (fromSlot == 0) { IWorldPosCallable.of(this.world, this.blockPos).consume((p_217067_2_, p_217067_3_) -> fromSlotItem.getItem().onCreated(fromSlotItem, p_217067_2_, player)); if (!this.mergeItemStack(fromSlotItem, 10, 46, true)) { return ItemStack.EMPTY; } fromSlotS.onSlotChange(fromSlotItem, item); } else if (fromSlot >= 10 && fromSlot < 37) { if (!this.mergeItemStack(fromSlotItem, 37, 46, false)) { return ItemStack.EMPTY; } } else if (fromSlot >= 37 && fromSlot < 46) { if (!this.mergeItemStack(fromSlotItem, 10, 37, false)) { return ItemStack.EMPTY; } } else if (!this.mergeItemStack(fromSlotItem, 10, 46, false)) { return ItemStack.EMPTY; } if (fromSlotItem.isEmpty()) { fromSlotS.putStack(ItemStack.EMPTY); } else { fromSlotS.onSlotChanged(); } if (fromSlotItem.getCount() == item.getCount()) { return ItemStack.EMPTY; } final ItemStack dropItem = fromSlotS.onTake(player, fromSlotItem); if (fromSlot == 0) { player.dropItem(dropItem, false); } } return item; } @Override public void onContainerClosed(PlayerEntity playerIn) { super.onContainerClosed(playerIn); IWorldPosCallable.of(this.world, this.blockPos).consume((world, blockPos) -> this.clearContainer(playerIn, world, this.inventory)); } @Override public boolean canInteractWith(PlayerEntity playerIn) { return isWithinUsableDistance(IWorldPosCallable.of(world, blockPos), playerIn, BlockList.stone_furnace); } } Gui Class: package mod.sds.terrariamod.guis; import com.mojang.blaze3d.platform.GlStateManager; import mod.sds.terrariamod.TerrariaMod; import mod.sds.terrariamod.containers.ContainerFurnace; import net.minecraft.client.gui.screen.inventory.ContainerScreen; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.ITextComponent; public class StoneFurnaceGUI extends ContainerScreen<ContainerFurnace> { private static final ResourceLocation TEXTURES = new ResourceLocation(TerrariaMod.modid, "textures/gui/container/furnace.png"); @SuppressWarnings("unused") private ContainerFurnace container; public StoneFurnaceGUI(ContainerFurnace screenContainer, PlayerInventory inv, ITextComponent titleIn) { super(screenContainer, inv, titleIn); this.container = screenContainer; } @Override public void render(int p_render_1_, int p_render_2_, float p_render_3_) { this.renderBackground(); super.render(p_render_1_, p_render_2_, p_render_3_); this.renderHoveredToolTip(p_render_1_, p_render_2_); } @Override protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { super.drawGuiContainerForegroundLayer(mouseX, mouseY); } @Override protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) { GlStateManager.color4f(1f, 1f, 1f, 1f); this.getMinecraft().getTextureManager().bindTexture(TEXTURES); final int width = this.guiLeft; final int height = (this.height - this.ySize) / 2; this.blit(width, height, 0, 0, this.xSize, this.ySize); } }

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.