diff --git a/src/main/java/storagecraft/block/BlockGrid.java b/src/main/java/storagecraft/block/BlockGrid.java index e96b79e6f..6968fd4b4 100644 --- a/src/main/java/storagecraft/block/BlockGrid.java +++ b/src/main/java/storagecraft/block/BlockGrid.java @@ -1,8 +1,12 @@ package storagecraft.block; +import java.util.List; import net.minecraft.block.ITileEntityProvider; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; @@ -27,6 +31,15 @@ public class BlockGrid extends BlockBase implements ITileEntityProvider return new TileGrid(); } + @Override + public void getSubBlocks(Item item, CreativeTabs tab, List subItems) + { + for (int i = 0; i < 2; i++) + { + subItems.add(new ItemStack(item, 1, i)); + } + } + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { diff --git a/src/main/java/storagecraft/container/ContainerGrid.java b/src/main/java/storagecraft/container/ContainerGrid.java index 603209c40..81760c409 100644 --- a/src/main/java/storagecraft/container/ContainerGrid.java +++ b/src/main/java/storagecraft/container/ContainerGrid.java @@ -1,13 +1,36 @@ package storagecraft.container; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Slot; +import storagecraft.tile.TileGrid; public class ContainerGrid extends ContainerBase { - public ContainerGrid(EntityPlayer player) + public ContainerGrid(EntityPlayer player, TileGrid grid) { super(player); - addPlayerInventory(8, 108); + if (grid.isCrafting()) + { + int x = 44; + int y = 106; + + for (int i = 0; i < 9; ++i) + { + addSlotToContainer(new Slot(grid.getCraftingInventory(), i, x, y)); + + x += 18; + + if ((i + 1) % 3 == 0) + { + y += 18; + x = 44; + } + } + + addSlotToContainer(new Slot(grid.getCraftingInventory(), 9, 125, 124)); + } + + addPlayerInventory(8, grid.isCrafting() ? 174 : 108); } } diff --git a/src/main/java/storagecraft/gui/GuiGrid.java b/src/main/java/storagecraft/gui/GuiGrid.java index e3a224df2..eba763a43 100644 --- a/src/main/java/storagecraft/gui/GuiGrid.java +++ b/src/main/java/storagecraft/gui/GuiGrid.java @@ -42,7 +42,7 @@ public class GuiGrid extends GuiBase public GuiGrid(ContainerGrid container, TileGrid grid) { - super(container, 176, 190); + super(container, 176, grid.isCrafting() ? 256 : 190); this.container = container; this.grid = grid; @@ -117,7 +117,14 @@ public class GuiGrid extends GuiBase @Override public void drawBackground(int x, int y, int mouseX, int mouseY) { - bindTexture("gui/grid.png"); + if (grid.isCrafting()) + { + bindTexture("gui/craftingGrid.png"); + } + else + { + bindTexture("gui/grid.png"); + } drawTexturedModalRect(x, y, 0, 0, xSize, ySize); @@ -128,7 +135,13 @@ public class GuiGrid extends GuiBase public void drawForeground(int mouseX, int mouseY) { drawString(7, 7, t("gui.storagecraft:grid")); - drawString(7, 96, t("container.inventory")); + + if (grid.isCrafting()) + { + drawString(7, 94, t("container.crafting")); + } + + drawString(7, grid.isCrafting() ? 163 : 96, t("container.inventory")); int x = 8; int y = 20; diff --git a/src/main/java/storagecraft/gui/GuiHandler.java b/src/main/java/storagecraft/gui/GuiHandler.java index 952ad4438..a60878180 100644 --- a/src/main/java/storagecraft/gui/GuiHandler.java +++ b/src/main/java/storagecraft/gui/GuiHandler.java @@ -30,7 +30,7 @@ public class GuiHandler implements IGuiHandler case StorageCraft.GUI.CONTROLLER: return new ContainerController(player); case StorageCraft.GUI.GRID: - return new ContainerGrid(player); + return new ContainerGrid(player, (TileGrid) tile); case StorageCraft.GUI.DRIVE: return new ContainerDrive(player, (TileDrive) tile); case StorageCraft.GUI.STORAGE_PROXY: diff --git a/src/main/java/storagecraft/item/ItemBlockGrid.java b/src/main/java/storagecraft/item/ItemBlockGrid.java new file mode 100644 index 000000000..028ba764c --- /dev/null +++ b/src/main/java/storagecraft/item/ItemBlockGrid.java @@ -0,0 +1,11 @@ +package storagecraft.item; + +import net.minecraft.block.Block; + +public class ItemBlockGrid extends ItemBlockBase +{ + public ItemBlockGrid(Block block) + { + super(block); + } +} diff --git a/src/main/java/storagecraft/proxy/CommonProxy.java b/src/main/java/storagecraft/proxy/CommonProxy.java index 2c1e7b5d5..59432f78e 100644 --- a/src/main/java/storagecraft/proxy/CommonProxy.java +++ b/src/main/java/storagecraft/proxy/CommonProxy.java @@ -11,6 +11,7 @@ import storagecraft.StorageCraftBlocks; import storagecraft.StorageCraftItems; import storagecraft.gui.GuiHandler; import storagecraft.item.ItemBlockCable; +import storagecraft.item.ItemBlockGrid; import storagecraft.network.MessageCompareUpdate; import storagecraft.network.MessageDetectorAmountUpdate; import storagecraft.network.MessageDetectorModeUpdate; @@ -54,7 +55,7 @@ public class CommonProxy GameRegistry.registerBlock(StorageCraftBlocks.CONTROLLER, "controller"); GameRegistry.registerBlock(StorageCraftBlocks.CABLE, ItemBlockCable.class, "cable"); - GameRegistry.registerBlock(StorageCraftBlocks.GRID, "grid"); + GameRegistry.registerBlock(StorageCraftBlocks.GRID, ItemBlockGrid.class, "grid"); GameRegistry.registerBlock(StorageCraftBlocks.DRIVE, "drive"); GameRegistry.registerBlock(StorageCraftBlocks.STORAGE_PROXY, "storageProxy"); GameRegistry.registerBlock(StorageCraftBlocks.IMPORTER, "importer"); diff --git a/src/main/java/storagecraft/tile/TileGrid.java b/src/main/java/storagecraft/tile/TileGrid.java index 9cca9abaf..300d0a462 100644 --- a/src/main/java/storagecraft/tile/TileGrid.java +++ b/src/main/java/storagecraft/tile/TileGrid.java @@ -1,7 +1,13 @@ package storagecraft.tile; +import net.minecraft.nbt.NBTTagCompound; +import storagecraft.inventory.InventorySimple; +import storagecraft.util.InventoryUtils; + public class TileGrid extends TileMachine { + private InventorySimple craftingInventory = new InventorySimple("crafting", 10); + @Override public int getEnergyUsage() { @@ -12,4 +18,35 @@ public class TileGrid extends TileMachine public void updateMachine() { } + + public int getType() + { + return worldObj.getBlockMetadata(xCoord, yCoord, zCoord); + } + + public boolean isCrafting() + { + return getType() == 1; + } + + public InventorySimple getCraftingInventory() + { + return craftingInventory; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) + { + super.readFromNBT(nbt); + + InventoryUtils.restoreInventory(craftingInventory, nbt); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) + { + super.writeToNBT(nbt); + + InventoryUtils.saveInventory(craftingInventory, nbt); + } } diff --git a/src/main/resources/assets/storagecraft/lang/en_US.lang b/src/main/resources/assets/storagecraft/lang/en_US.lang index 0e3a5faac..3cbe8836b 100644 --- a/src/main/resources/assets/storagecraft/lang/en_US.lang +++ b/src/main/resources/assets/storagecraft/lang/en_US.lang @@ -45,7 +45,8 @@ misc.storagecraft:no=No block.storagecraft:controller.name=Controller block.storagecraft:cable.0.name=Cable block.storagecraft:cable.1.name=Sensitive Cable -block.storagecraft:grid.name=Grid +block.storagecraft:grid.0.name=Grid +block.storagecraft:grid.1.name=Crafting Grid block.storagecraft:drive.name=Drive block.storagecraft:storageProxy.name=Storage Proxy block.storagecraft:importer.name=Importer diff --git a/src/main/resources/assets/storagecraft/textures/gui/craftingGrid.png b/src/main/resources/assets/storagecraft/textures/gui/craftingGrid.png new file mode 100644 index 000000000..20af2297b Binary files /dev/null and b/src/main/resources/assets/storagecraft/textures/gui/craftingGrid.png differ