Jump to content

jtmnf

Members
  • Posts

    56
  • Joined

  • Last visited

Converted

  • Gender
    Male
  • Location
    Portugal
  • Personal Text
    Portuguese Java Guy

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

jtmnf's Achievements

Stone Miner

Stone Miner (3/8)

2

Reputation

  1. So, if I use that, what are the changes in the container? I need to specific an IInventory in the Slots...
  2. Here it is: TileEntity public class CrusherTileEntity extends TileEntity implements IInventory { private ItemStack[] inventory; private String customName; public CrusherTileEntity() { this.inventory = new ItemStack[this.getSizeInventory()]; for (int i = 0; i < inventory.length; i++) { inventory[i] = new ItemStack(Blocks.AIR); } } public String getCustomName() { return this.customName; } public void setCustomName(String customName) { this.customName = customName; } @Override public String getName() { return this.hasCustomName() ? this.customName : "container:crusher_tile_entity"; } @Override public boolean hasCustomName() { return this.customName != null && !this.customName.equals(""); } @Nullable @Override public ITextComponent getDisplayName() { return this.hasCustomName() ? new TextComponentString(this.getName()) : new TextComponentTranslation(this.getName()); } @Override public int getSizeInventory() { return 27; } @Override public ItemStack getStackInSlot(int index) { if (index < 0 || index >= this.getSizeInventory()) { return null; } return this.inventory[index]; } @Override public ItemStack decrStackSize(int index, int count) { if (this.getStackInSlot(index) != null) { ItemStack itemstack; if (this.getStackInSlot(index).func_190916_E() <= count) { itemstack = this.getStackInSlot(index); this.setInventorySlotContents(index, null); this.markDirty(); return itemstack; } else { itemstack = this.getStackInSlot(index).splitStack(count); if (this.getStackInSlot(index).func_190916_E() <= 0) { this.setInventorySlotContents(index, null); } else { //Just to show that changes happened this.setInventorySlotContents(index, this.getStackInSlot(index)); } this.markDirty(); return itemstack; } } else { return null; } } @Override public void setInventorySlotContents(int index, ItemStack stack) { if (index < 0 || index >= this.getSizeInventory()) return; if (stack != null && stack.func_190916_E() > this.getInventoryStackLimit()) stack.func_190920_e(this.getInventoryStackLimit()); if (stack != null && stack.func_190916_E() == 0) stack = null; this.inventory[index] = stack; this.markDirty(); } @Override public int getInventoryStackLimit() { return 64; } @Override public boolean isUseableByPlayer(EntityPlayer player) { return this.worldObj.getTileEntity(this.getPos()) == this && player.getDistanceSq(this.pos.add(0.5, 0.5, 0.5)) <= 64; } @Override public void openInventory(EntityPlayer player) { } @Override public void closeInventory(EntityPlayer player) { } @Override public boolean isItemValidForSlot(int index, ItemStack stack) { return true; } @Override public int getField(int id) { return 0; } @Override public void setField(int id, int value) { } @Override public int getFieldCount() { return 0; } @Override public void clear() { for (int i = 0; i < this.getSizeInventory(); i++) this.setInventorySlotContents(i, null); } @Override public boolean func_191420_l() { return false; } @Override public ItemStack removeStackFromSlot(int index) { return null; } } Container of the TileEntity public class ContainerCrusher extends Container { private CrusherTileEntity crusherTileEntity; public ContainerCrusher(IInventory iInventory, CrusherTileEntity crusherTileEntity) { this.crusherTileEntity = crusherTileEntity; int numRows = crusherTileEntity.getSizeInventory() / 9; int i = (numRows - 4) * 18; for (int j = 0; j < numRows; ++j) { for (int k = 0; k < 9; ++k) { this.addSlotToContainer(new Slot(crusherTileEntity, k + j * 9, 8 + k * 18, 18 + j * 18)); } } for (int y = 0; y < 3; ++y) { for (int x = 0; x < 9; ++x) { this.addSlotToContainer(new Slot(iInventory, x + y * 9 + 9, 8 + x * 18, 84 + y * 18)); } } for (int x = 0; x < 9; ++x) { this.addSlotToContainer(new Slot(iInventory, x, 8 + x * 18, 142)); } } @Override public boolean canInteractWith(EntityPlayer playerIn) { return crusherTileEntity.isUseableByPlayer(playerIn); } } Gui of the TileEntity public class GuiCrusher extends GuiContainer { private IInventory playerInv; private CrusherTileEntity crusherTileEntity; public GuiCrusher(IInventory playerInv, CrusherTileEntity crusherTileEntity) { super(new ContainerCrusher(playerInv, crusherTileEntity)); this.playerInv = playerInv; this.crusherTileEntity = crusherTileEntity; this.xSize = 176; this.ySize = 166; } @Override protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) { GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f); this.mc.getTextureManager().bindTexture(new ResourceLocation("pureadditions:textures/gui/container/crusher.png")); this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, this.xSize, this.ySize); } @Override protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { String s = this.crusherTileEntity.getDisplayName().getUnformattedText(); this.fontRendererObj.drawString(s, 88 - this.fontRendererObj.getStringWidth(s) / 2, 6, 4210752); //#404040 this.fontRendererObj.drawString(this.playerInv.getDisplayName().getUnformattedText(), 8, 72, 4210752); //#404040 } }
  3. The rendering error? I haven't solved it yet :\
  4. I didn't knew that, thanks! After fixing that, now it just crashes with a rendering problem...
  5. Hi guys! So, if I have this piece of code on the Container, it crashes the game (but it doesn't close it). for (int y = 0; y < 3; ++y) { for (int x = 0; x < 3; ++x) { this.addSlotToContainer(new Slot(this.crusherTileEntity, x + y * 3, 62 + x * 18, 17 + y * 18)); } } If the addSlotToContainer is commented, the GUI opens normally and it doesn't crash the game. I already saw the implementation of the chest, by the way. The error is:
  6. Thanks for the answr diesieben07! So, according to the offical wiki, for andesite, minecraft:stone{variant=5} is correct, right? But it returns null when I try to getBlockFromName... João Fernandes
  7. I have a XML file which can be filled by block's name, but for some blocks (basically all the blocks with metada), it fails to convert to the block... Imagine this: <registry_name>minecraft:stone:5</registry_name> <registry_name>immersiveengineering:ore:1</registry_name> And in the code, I need to convert the first one to Andesite and the second one to Bauxite Ore... If I shouldn't be using metadata, how can I have a proper XML element to deal with this situations? João Fernandes
  8. Hi, How can I detect that minecraft:stone:5 is andesite? I'm not able to do that, even with Block.getBlockFromName() or Block.REGISTRY... My mod is failing on this, on metadata blocks, and I'm not getting the way that this should be done :\ Am I forgetting something? Thanks, João Fernandes
  9. You want to laught a bit? You know what my problem was? I saw it in your post... Do you see that line with the super.detectAndSendChanges();? @Override public void detectAndSendChanges() { super.detectAndSendChanges(); } Well... In my code you couldn't see it because I erase it... Don't ask me why... I personally don't know either... Now it's working ^^ thanks
  10. The problem with the ContainerFurnace is that it only uses sendProgressBarUpdate()... That means that is something in the TileEntity or GUI that I'm missing, but I'm actually not discovering what is it :\
  11. Don't worry you tryed to help me and I like that Thanks ^^ maybe somebody else can look at my code and say "this guy is stupid, look at that error there"...
  12. The (ICrafting p_75132_1_) does not have anything like that! Am I doing something wrong? Only these 3: void sendContainerAndContentsToPlayer(Container p_71110_1_, List p_71110_2_); void sendSlotContents(Container p_71111_1_, int p_71111_2_, ItemStack p_71111_3_); void sendProgressBarUpdate(Container p_71112_1_, int p_71112_2_, int p_71112_3_);
  13. "machine" is not a "list", I cannot put it in the 2nd argument :\
×
×
  • Create New...

Important Information

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