Posted October 22, 20169 yr Hello Everyone, so today I was working on a new mod of mine, creating a new GUI, I added the slots, as well as the inventory slots, registered my GUI on the server and client, but for some reason whenever I have an item in my inventory and I open the GUI, i'm not able to move it around, as soon as I click it, it hops back right into that slot, and I have not been able to figure out a fix for this. Yes I have registered my TE Yes i'm registering the Guihandler class in the CommonProxy if you need anything else just ask GUI Code: package abused_master.JATMA.GUI; import abused_master.JATMA.Info; import abused_master.JATMA.TE.PulverizerContainer; import abused_master.JATMA.TE.TilePulverizer; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.ContainerFurnace; import net.minecraft.inventory.IInventory; import net.minecraft.tileentity.TileEntityFurnace; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.translation.I18n; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; public class GuiPulverizer extends GuiContainer { private static final ResourceLocation Pulverizer = new ResourceLocation(Info.MODID, "textures/gui/Pulverizer.png"); public static final int WIDTH = 176; public static final int HEIGHT = 166; public GuiPulverizer(TilePulverizer tileEntity, PulverizerContainer container) { super(container); xSize = WIDTH; ySize = HEIGHT; } @Override protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) { mc.getTextureManager().bindTexture(Pulverizer); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); } } Pulverizer Code: package abused_master.JATMA.Blocks; import abused_master.JATMA.JATMA; import abused_master.JATMA.GUI.GuiHandler; import abused_master.JATMA.TE.TilePulverizer; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ActionResult; import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumBlockRenderType; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; public class Pulverizer extends BlockContainer { public Pulverizer(Material material) { super(material); this.setCreativeTab(JATMA.JATMA); this.setUnlocalizedName("Pulverizer"); this.setHardness(2.0F); } @Override public EnumBlockRenderType getRenderType(IBlockState state) { return EnumBlockRenderType.MODEL; } @Override public TileEntity createNewTileEntity(World worldIn, int meta) { return new TilePulverizer(); } @Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) { if (world.isRemote) { player.openGui(JATMA.instance, 0, world, pos.getX(), pos.getY(), pos.getZ()); } return true; } } Container Code: package abused_master.JATMA.TE; import javax.annotation.Nullable; import abused_master.JATMA.GUI.RemoveOnlySlot; import abused_master.JATMA.GUI.SlotValidated; import abused_master.JATMA.GUI.SlotValidator; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.SlotItemHandler; public class PulverizerContainer extends Container implements SlotValidator { TilePulverizer TP; public PulverizerContainer(InventoryPlayer inventory, TileEntity tile) { super(); TP = (TilePulverizer) tile; addSlotToContainer(new SlotValidated(this, TP, 0, 56, 26)); addSlotToContainer(new RemoveOnlySlot(TP, 1, 116, 26)); for (int y = 0; y < 3; ++y) { for (int x = 0; x < 9; ++x) { this.addSlotToContainer(new Slot(inventory, x + y * 9 + 9, 8 + x * 18, 84 + y * 18)); } } for (int x = 0; x < 9; ++x) { this.addSlotToContainer(new Slot(inventory, x, 8 + x * 18, 142)); } } @Override public boolean isItemValid(ItemStack stack) { return false; } @Override public boolean canInteractWith(EntityPlayer playerIn) { return TP.canInteractWith(playerIn); } @Override public ItemStack transferStackInSlot(EntityPlayer entityPlayer, int slot) { Slot slotObject = (Slot) inventorySlots.get(slot); if(slotObject != null && slotObject.getHasStack()) { ItemStack stackInSlot = slotObject.getStack(); ItemStack stack = stackInSlot.copy(); if(slot <= 1) { if(!mergeItemStack(stackInSlot, 2, inventorySlots.size(), true)) return null; } else { return null; } if(stackInSlot.stackSize == 0) slotObject.putStack(null); else slotObject.onSlotChanged(); return stack; } return null; } } TE Code: package abused_master.JATMA.TE; import javax.annotation.Nullable; import cofh.api.energy.EnergyStorage; import cofh.api.energy.TileEnergyHandler; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ItemStackHelper; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.ItemStackHandler; public class TilePulverizer extends TileEnergyHandler implements IInventory { protected EnergyStorage storage = new EnergyStorage(50000); public static final int SIZE = 9; @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); storage.readFromNBT(nbt); if (nbt.hasKey("items")) { itemStackHandler.deserializeNBT((NBTTagCompound) nbt.getTag("items")); } } @Override public NBTTagCompound writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); nbt.setTag("items", itemStackHandler.serializeNBT()); return storage.writeToNBT(nbt); } /* IEnergyConnection */ @Override public boolean canConnectEnergy(EnumFacing from) { return true; } /* IEnergyReceiver */ @Override public int receiveEnergy(EnumFacing from, int maxReceive, boolean simulate) { return storage.receiveEnergy(maxReceive, simulate); } /* IEnergyProvider */ @Override public int extractEnergy(EnumFacing from, int maxExtract, boolean simulate) { return 0; //return storage.extractEnergy(maxExtract, simulate); } /* IEnergyHandler */ @Override public int getEnergyStored(EnumFacing from) { return storage.getEnergyStored(); } @Override public int getMaxEnergyStored(EnumFacing from) { return storage.getMaxEnergyStored(); } private ItemStackHandler itemStackHandler = new ItemStackHandler(SIZE) { @Override protected void onContentsChanged(int slot) { // We need to tell the tile entity that something has changed so // that the chest contents is persisted TilePulverizer.this.markDirty(); } }; public boolean canInteractWith(EntityPlayer playerIn) { // If we are too far away from this tile entity you cannot use it return !isInvalid() && playerIn.getDistanceSq(pos.add(0.5D, 0.5D, 0.5D)) <= 64D; } @Override public boolean hasCapability(Capability<?> capability, EnumFacing facing) { if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { return true; } return super.hasCapability(capability, facing); } @Override public <T> T getCapability(Capability<T> capability, EnumFacing facing) { if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { return (T) itemStackHandler; } return super.getCapability(capability, facing); } @Override public String getName() { // TODO Auto-generated method stub return null; } @Override public boolean hasCustomName() { // TODO Auto-generated method stub return false; } @Override public int getSizeInventory() { // TODO Auto-generated method stub return 0; } @Override public ItemStack getStackInSlot(int index) { // TODO Auto-generated method stub return null; } @Override public ItemStack decrStackSize(int index, int count) { // TODO Auto-generated method stub return null; } @Override public ItemStack removeStackFromSlot(int index) { // TODO Auto-generated method stub return null; } @Override public void setInventorySlotContents(int index, ItemStack stack) { // TODO Auto-generated method stub } @Override public int getInventoryStackLimit() { // TODO Auto-generated method stub return 0; } @Override public boolean isUseableByPlayer(EntityPlayer player) { // TODO Auto-generated method stub return false; } @Override public void openInventory(EntityPlayer player) { // TODO Auto-generated method stub } @Override public void closeInventory(EntityPlayer player) { // TODO Auto-generated method stub } @Override public boolean isItemValidForSlot(int index, ItemStack stack) { // TODO Auto-generated method stub return false; } @Override public int getField(int id) { // TODO Auto-generated method stub return 0; } @Override public void setField(int id, int value) { // TODO Auto-generated method stub } @Override public int getFieldCount() { // TODO Auto-generated method stub return 0; } @Override public void clear() { // TODO Auto-generated method stub } public Object getChargeSlot() { // TODO Auto-generated method stub return null; } } GuiHandler Code: package abused_master.JATMA.GUI; import abused_master.JATMA.TE.PulverizerContainer; import abused_master.JATMA.TE.TilePulverizer; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.common.network.IGuiHandler; public class GuiHandler implements IGuiHandler { public static final int GUI_Pulverizer = 0; @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { BlockPos pos = new BlockPos(x, y, z); TileEntity te = world.getTileEntity(pos); if (te instanceof TilePulverizer) { return new PulverizerContainer(player.inventory, (TilePulverizer) te); } return null; } @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { BlockPos pos = new BlockPos(x, y, z); TileEntity te = world.getTileEntity(pos); if (te instanceof TilePulverizer) { TilePulverizer containerTileEntity = (TilePulverizer) te; return new GuiPulverizer(containerTileEntity, new PulverizerContainer(player.inventory, containerTileEntity)); } return null; } }
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.