I have a problem in my gui, where everytime I try to lift items from the gui, it just puts it back in. I just cant pickup items in my gui. Please help, I have been looking for a solution for the past week! I am really sorry but i am new to this forum, and for some reason all the other spoilers are in the main class spoiler
MainClass:
Reveal hidden contents
package ChemistryMod; //Package directory
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.network.NetworkRegistry;
/*
* Basic importing
*/
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
//Sets Up The Basic Things For The Mod
@Mod(modid="ChemMod",name="Chemistry Mod",version="v1")
@NetworkMod(clientSideRequired = true, serverSideRequired = false)
public class MainClass
{
//Server Side Stuff
@SidedProxy(clientSide = "ChemistryMod.ChemClient", serverSide = "ChemistryMod.ChemProxy")
public static ChemProxy proxy;
@Instance("ChemMod")
public static MainClass instance;
//Gui IDs
public static final int CombinatorGUIID = 0;
// Register Items
public static Item GlueBucket = new ChemBucket(20400).setUnlocalizedName("bucket_glue");
public static Item PeriodicTableRecord = new PeriodicTableRecord("ChemMod:POT_record").setUnlocalizedName("Music Disk").setCreativeTab(CreativeTabs.tabMisc);
// Register Blocks
public static Block CombinatorIdle = new Combinator(2103, false).setUnlocalizedName("CombinatorIdle").setHardness(3.5F);
public static Block CombinatorActive = new Combinator(2104, true).setUnlocalizedName("CombinatorActive").setHardness(3.5F);
GuiHandler guiHandler = new GuiHandler();//Puts The Gui Handler In A Variable
//Registrys Go Into The Constructor
public MainClass(){
//Register Blocks
GameRegistry.registerBlock(CombinatorIdle, "Combinator Idle");
GameRegistry.registerBlock(CombinatorActive, "Combinator Active");
GameRegistry.registerTileEntity(TileEntityCombinator.class, "tileEntityCombinator");
NetworkRegistry.instance().registerGuiHandler(this, guiHandler);//Registers The GUI Handler Into The Game
LanguageRegistry.addName(CombinatorIdle, "Combinator");
}
}
[/spoiler]
GuiHandler:
Reveal hidden contents
package ChemistryMod;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import cpw.mods.fml.common.network.IGuiHandler;
import cpw.mods.fml.common.network.NetworkRegistry;
public class GuiHandler implements IGuiHandler{
@Override
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
TileEntity entity = world.getBlockTileEntity(x, y, z);
if(entity != null){
switch(ID){
case MainClass.CombinatorGUIID:
if(entity instanceof TileEntityCombinator){
//The container is the slots
return new ContainerCombinator(player.inventory, (TileEntityCombinator) entity);
}
}
}
return null;
}
@Override
public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
TileEntity entity = world.getBlockTileEntity(x, y, z);
if(entity != null){
switch(ID){
case MainClass.CombinatorGUIID:
if(entity instanceof TileEntityCombinator){
return new GuiCombinator(player.inventory, (TileEntityCombinator) entity);
}
}
}
return null;
}
}[/spoiler]
GuiClass:
Reveal hidden contents
package ChemistryMod;
import org.lwjgl.opengl.GL11;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraft.client.resources.I18n;
public class GuiCombinator extends GuiContainer{
public static final ResourceLocation texture = new ResourceLocation("chemmod", "textures/gui/combinator.png");
public TileEntityCombinator combinator;
public static String string;
public GuiCombinator(InventoryPlayer inventoryPlayer, TileEntityCombinator entity) {
super(new ContainerCombinator(inventoryPlayer, entity));
this.combinator = (TileEntityCombinator) entity;
this.xSize = 176;
this.ySize = 166;
}
public void drawGuiContainerForegroundLayer(int par1, int par2){
this.fontRenderer.drawString(this.string, this.xSize / 2 - this.fontRenderer.getStringWidth(this.string) / 2, 6, 4210752);
this.fontRenderer.drawString(I18n.getString("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
}
@Override
public void drawGuiContainerBackgroundLayer(float f, int i, int j) {
GL11.glColor4f(1F, 1F, 1F, 1F);
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);;
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
}
}[/spoiler]
ContainerClass:
Reveal hidden contents
package ChemistryMod;
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.inventory.SlotFurnace;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
public class ContainerCombinator extends Container {
//Combinator Speed
public int lastfurnaceSpeed = 300;
//Start time for this item
public int lastcurrentItemBurnTime;
//Time left before the thing is mix
public int mixTime;
private TileEntityCombinator combinator;
public ContainerCombinator(InventoryPlayer inventory, TileEntityCombinator tileEntity){
this.addSlotToContainer(new SlotFurnace(inventory.player, tileEntity, 1, 78, 33));
this.addSlotToContainer(new Slot(tileEntity, 2, 14, 17));
this.addSlotToContainer(new Slot(tileEntity, 3, 14, 38));
this.addSlotToContainer(new Slot(tileEntity, 4, 14, 59));
this.addSlotToContainer(new Slot(tileEntity, 5, 149, 17));
this.addSlotToContainer(new Slot(tileEntity, 6, 149, 38));
this.addSlotToContainer(new Slot(tileEntity, 7, 149, 59));
for (int i = 0; i < 3; i++)
{
for (int k = 0; k < 9; k++)
{
this.addSlotToContainer(new Slot(inventory, k + i * 9 + 9, 8 + k * 18, 84 + i * 18));
}
}
for (int j = 0; j < 9; j++)
{
this.addSlotToContainer(new Slot(inventory, j, 8 + j * 18, 142));
}
}
public boolean canInteractWith(EntityPlayer entityplayer)
{
return true;
}
}[/spoiler]
BlockClass:
Reveal hidden contents
package ChemistryMod;
import java.util.Random;
import cpw.mods.fml.common.network.FMLNetworkHandler;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Icon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
public class Combinator extends BlockContainer{
private final boolean isActive;
@SideOnly(Side.CLIENT)
private Icon iconFront;
public Combinator(int id, boolean isActive) {
super(id, Material.rock);
this.setCreativeTab(CreativeTabs.tabMaterials);
this.isActive = isActive;
}
public void registerIcons(IconRegister par1IconRegister)
{
this.blockIcon = par1IconRegister.registerIcon("ChemMod:" + "combinator_side");
this.iconFront = par1IconRegister.registerIcon("ChemMod:" + (this.isActive ? "combinator_active_front" : "combinator_idle_front"));
}
@SideOnly(Side.CLIENT)
public Icon getIcon(int side, int metadata){
return side == metadata ? this.iconFront : this.blockIcon;
}
public int idDropped(int par1, Random random, int par3){
return MainClass.CombinatorIdle.blockID;
}
public void onBlockAdded(World world, int x, int y, int z){
super.onBlockAdded(world, x, y, z);
this.setDefaultDirection(world, x, y, z);
}
private void setDefaultDirection(World world, int x, int y, int z){
if(!world.isRemote){
int l = world.getBlockId(x, y, z - 1);
int il = world.getBlockId(x, y, z + 1);
int jl = world.getBlockId(x - 1, y, z);
int kl = world.getBlockId(x + 1, y, z);
byte b0 = 3;
if(Block.opaqueCubeLookup[1] && ! Block.opaqueCubeLookup[il]){
b0 = 3;
}
if(Block.opaqueCubeLookup[il] && ! Block.opaqueCubeLookup[l]){
b0 = 2;
}
if(Block.opaqueCubeLookup[kl] && !Block.opaqueCubeLookup[jl]){
b0 = 5;
}
if(Block.opaqueCubeLookup[jl] && !Block.opaqueCubeLookup[kl]){
b0 = 4;
}
world.setBlockMetadataWithNotify(x, y, z, b0, 2);
}
}
public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9)
{
par5EntityPlayer.openGui(MainClass.instance, 0, par1World, par2, par3, par4);
return true;
}
@Override
public TileEntity createNewTileEntity(World world) {
return new TileEntityCombinator();
}
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entityLivingBase, ItemStack itemstack){
int l = MathHelper.floor_double((double)(entityLivingBase.rotationYaw * 4.0F / 360.0F)+0.5D) & 3;
if(l == 0){
world.setBlockMetadataWithNotify(x, y, z, 2, 2);
}
if(l == 1){
world.setBlockMetadataWithNotify(x, y, z, 5, 2);
}
if(l == 2){
world.setBlockMetadataWithNotify(x, y, z, 3, 2);
}
if(l == 3){
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
}
if(itemstack.hasDisplayName()){
((TileEntityCombinator)world.getBlockTileEntity(x, y, z)).setGuiDisplayName(itemstack.getDisplayName());
}
}
}
TileEntity:
Reveal hidden contents
package ChemistryMod;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
public class TileEntityCombinator extends TileEntity implements ISidedInventory{
private static final ItemStack[] slotsamount = new ItemStack[7];
private static final int[] slots_middle = new int[]{1};
private static final int[] slots_side_1 = new int[]{2, 1};
private static final int[] slots_side_2 = new int[]{2, 1};
private static final int[] slots_side_3 = new int[]{2, 1};
private static final int[] slots_side_4 = new int[]{2, 1};
private static final int[] slots_side_5 = new int[]{2, 1};
private static final int[] slots_side_6 = new int[]{2, 1};
private static final int[][] slots_sides = { slots_side_1, slots_side_2, slots_side_3, slots_side_4, slots_side_5, slots_side_6, slots_middle};
//Combinator Speed
public int combinatorSpeed = 300;
//Start time for this item
public int currentItemBurnTime;
//Time left before the thing is mix
public int mixTime;
public static String customName;
private ItemStack[] combinatorContents = new ItemStack[7];
public int getSizeInventory(){
return 7;
}
private String localizedName;
public ItemStack getStackInSlot(int i)
{
return this.slotsamount[i];
}
/**
* Removes from an inventory slot (first arg) up to a specified number (second arg) of items and returns them in a
* new stack.
*/
public ItemStack decrStackSize(int i, int j)
{
if(this.slotsamount[i] != null){
ItemStack itemstack;
if(this.slotsamount[i].stackSize <= j){
itemstack = this.slotsamount[i];
this.slotsamount[i] = null;
return itemstack;
}else{
itemstack = this.slotsamount[i].splitStack(j);
if(this.slotsamount[i].stackSize == 0){
this.slotsamount[i] = null;
}
return itemstack;
}
}
return null;
}
@Override
public ItemStack getStackInSlotOnClosing(int i) {
if (this.combinatorContents[i] != null)
{
ItemStack itemstack = this.combinatorContents[i];
this.combinatorContents[i] = null;
return itemstack;
}
else
{
return null;
}
}
@Override
public void setInventorySlotContents(int i, ItemStack itemstack) {
this.combinatorContents[i] = itemstack;
if (itemstack != null && itemstack.stackSize > this.getInventoryStackLimit())
{
itemstack.stackSize = this.getInventoryStackLimit();
}
this.onInventoryChanged();
}
@Override
public String getInvName() {
return this.isInvNameLocalized() ? this.customName : "Combinator";
}
@Override
public int getInventoryStackLimit() {
return 64;
}
@Override
public boolean isUseableByPlayer(EntityPlayer entityplayer) {
return this.worldObj.getBlockTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : entityplayer.getDistanceSq((double)this.xCoord + 0.5D, (double)this.yCoord + 0.5D, (double)this.zCoord + 0.5D) <= 64.0D;
}
@Override
public void openChest() {
}
@Override
public void closeChest() {
// TODO Auto-generated method stub
}
@Override
public boolean isItemValidForSlot(int i, ItemStack itemstack) {
return true;
}
private boolean isItemBucket(ItemStack itemstack) {
return itemstack.itemID == Item.bucketEmpty.itemID;
}
@Override
public int[] getAccessibleSlotsFromSide(int var1) {
return slots_middle;
}
@Override
public boolean canInsertItem(int i, ItemStack itemstack, int j) {
return this.isItemValidForSlot(i, itemstack);
}
@Override
public boolean canExtractItem(int i, ItemStack itemstack, int j) {
return j != 0 || i != 1 || itemstack.itemID == Item.bucketEmpty.itemID;
}
@Override
public boolean isInvNameLocalized() {
// TODO Auto-generated method stub
return false;
}
public void setGuiDisplayName(String displayName) {
this.localizedName = displayName;
}
}
[1.6.4] Gui Slots Bug!
in Modder Support
Posted
I have a problem in my gui, where everytime I try to lift items from the gui, it just puts it back in. I just cant pickup items in my gui. Please help, I have been looking for a solution for the past week! I am really sorry but i am new to this forum, and for some reason all the other spoilers are in the main class spoiler
MainClass:
GuiHandler:
GuiClass:
ContainerClass:
BlockClass:
TileEntity: