diff --git a/src/main/java/WayofTime/bloodmagic/client/gui/GuiAlchemyTable.java b/src/main/java/WayofTime/bloodmagic/client/gui/GuiAlchemyTable.java index a9c3d23d..9e85c77f 100644 --- a/src/main/java/WayofTime/bloodmagic/client/gui/GuiAlchemyTable.java +++ b/src/main/java/WayofTime/bloodmagic/client/gui/GuiAlchemyTable.java @@ -4,6 +4,7 @@ import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -44,6 +45,16 @@ public class GuiAlchemyTable extends GuiContainer int l = this.getCookProgressScaled(90); this.drawTexturedModalRect(i + 115, j + 14 + 90 - l, 176, 90 - l, 18, l); + + for (int slotId = 0; slotId < 6; slotId++) + { + if (!((TileAlchemyTable) tileTable).isInputSlotAccessible(slotId)) + { + Slot slot = this.inventorySlots.getSlot(slotId); + + this.drawTexturedModalRect(i + slot.xDisplayPosition, j + slot.yDisplayPosition, 195, 1, 16, 16); + } + } } public int getCookProgressScaled(int scale) diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/alchemyTable/AlchemyTableRecipeCategory.java b/src/main/java/WayofTime/bloodmagic/compat/jei/alchemyTable/AlchemyTableRecipeCategory.java index e975c285..7f4c84d7 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/alchemyTable/AlchemyTableRecipeCategory.java +++ b/src/main/java/WayofTime/bloodmagic/compat/jei/alchemyTable/AlchemyTableRecipeCategory.java @@ -83,7 +83,7 @@ public class AlchemyTableRecipeCategory implements IRecipeCategory for (int x = 0; x < 3; ++x) { int index = INPUT_SLOT + x + (y * 3); - guiItemStacks.init(index, true, x * 18, y * 18); + guiItemStacks.init(index, true, x * 18, y * 18 - 18); } } @@ -92,7 +92,7 @@ public class AlchemyTableRecipeCategory implements IRecipeCategory AlchemyTableRecipeJEI recipe = (AlchemyTableRecipeJEI) recipeWrapper; guiItemStacks.set(ORB_SLOT, (ArrayList) recipe.getInputs().get(1)); craftingGridHelper.setOutput(guiItemStacks, recipe.getOutputs()); - craftingGridHelper.setInput(guiItemStacks, (List) recipe.getInputs().get(0), 2, 3); + craftingGridHelper.setInput(guiItemStacks, (List) recipe.getInputs().get(0), 3, 2); } } } diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java index f855ba91..f4757064 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java @@ -100,6 +100,8 @@ public class ModRecipes GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.experienceTome), "ses", "lbl", "gog", 'o', OrbRegistry.getOrbStack(ModItems.orbMagician), 'e', Blocks.LAPIS_BLOCK, 'l', new ItemStack(ModItems.slate, 1, 2), 'b', Items.ENCHANTED_BOOK, 's', Items.STRING, 'g', "ingotGold")); GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModItems.ritualReader), "gog", "isi", " s ", 's', new ItemStack(ModItems.slate, 1, 3), 'g', "blockGlass", 'i', "ingotGold", 'o', OrbRegistry.getOrbStack(ModItems.orbMaster))); + GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.alchemyTable), "sss", "wbw", "gog", 's', "stone", 'w', Blocks.WOOL, 'b', Items.BLAZE_ROD, 'g', "ingotGold", 'o', OrbRegistry.getOrbStack(ModItems.orbWeak))); + for (int i = 1; i < BlockBloodRune.names.length; i++) GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModBlocks.bloodRune), new ItemStack(ModBlocks.bloodRune, 1, i))); @@ -259,6 +261,15 @@ public class ModRecipes public static void addAlchemyTableRecipes() { - AlchemyTableRecipeRegistry.registerRecipe(new ItemStack(Items.STRING, 4), 0, 100, 0, Blocks.WOOL); + AlchemyTableRecipeRegistry.registerRecipe(new ItemStack(Items.STRING, 4), 0, 100, 0, Blocks.WOOL, Items.FLINT); + AlchemyTableRecipeRegistry.registerRecipe(new ItemStack(Items.FLINT, 2), 0, 20, 0, Blocks.GRAVEL, Items.FLINT); + AlchemyTableRecipeRegistry.registerRecipe(new ItemStack(Items.LEATHER, 4), 100, 200, 1, Items.ROTTEN_FLESH, Items.ROTTEN_FLESH, Items.ROTTEN_FLESH, Items.ROTTEN_FLESH, Items.FLINT, Items.WATER_BUCKET); + + AlchemyTableRecipeRegistry.registerRecipe(new ItemStack(Items.BREAD), 100, 200, 1, Items.WHEAT, Items.SUGAR); + AlchemyTableRecipeRegistry.registerRecipe(new ItemStack(Blocks.GRASS), 200, 200, 1, Blocks.DIRT, new ItemStack(Items.DYE, 1, 15), Items.WHEAT_SEEDS); + AlchemyTableRecipeRegistry.registerRecipe(new ItemStack(Blocks.SAND, 2), 50, 50, 1, "cobblestone", Items.GUNPOWDER); + AlchemyTableRecipeRegistry.registerRecipe(new ItemStack(Items.CLAY_BALL, 4), 50, 100, 2, Items.WATER_BUCKET, "sand"); + AlchemyTableRecipeRegistry.registerRecipe(new ItemStack(Blocks.CLAY, 5), 200, 200, 1, Items.WATER_BUCKET, Blocks.HARDENED_CLAY, Blocks.HARDENED_CLAY, Blocks.HARDENED_CLAY, Blocks.HARDENED_CLAY, Blocks.HARDENED_CLAY); + AlchemyTableRecipeRegistry.registerRecipe(new ItemStack(Blocks.OBSIDIAN), 50, 50, 1, Items.WATER_BUCKET, Items.LAVA_BUCKET); } } diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileAlchemyTable.java b/src/main/java/WayofTime/bloodmagic/tile/TileAlchemyTable.java index 09a17b88..969f6251 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileAlchemyTable.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileAlchemyTable.java @@ -37,6 +37,7 @@ public class TileAlchemyTable extends TileInventory implements ISidedInventory, public int ticksRequired = 1; public BlockPos connectedPos = BlockPos.ORIGIN; + public List blockedSlots = new ArrayList(); public TileAlchemyTable() { @@ -59,6 +60,30 @@ public class TileAlchemyTable extends TileInventory implements ISidedInventory, return isSlave(); } + public boolean isInputSlotAccessible(int slot) + { + if (slot < 6 && slot >= 0) + { + return !blockedSlots.contains(slot); + } + + return true; + } + + public void toggleInputSlotAccessible(int slot) + { + if (slot < 6 && slot >= 0) + { + if (blockedSlots.contains(slot)) + { + blockedSlots.remove((Object) slot); + } else + { + blockedSlots.add(slot); + } + } + } + @Override public void readFromNBT(NBTTagCompound tag) { @@ -70,6 +95,13 @@ public class TileAlchemyTable extends TileInventory implements ISidedInventory, burnTime = tag.getInteger("burnTime"); ticksRequired = tag.getInteger("ticksRequired"); + + blockedSlots.clear(); + int[] blockedSlotArray = tag.getIntArray("blockedSlots"); + for (int blocked : blockedSlotArray) + { + blockedSlots.add(blocked); + } } @Override @@ -85,6 +117,14 @@ public class TileAlchemyTable extends TileInventory implements ISidedInventory, tag.setInteger("burnTime", burnTime); tag.setInteger("ticksRequired", ticksRequired); + + int[] blockedSlotArray = new int[blockedSlots.size()]; + for (int i = 0; i < blockedSlots.size(); i++) + { + blockedSlotArray[i] = blockedSlots.get(i); + } + + tag.setIntArray("blockedSlots", blockedSlotArray); } @SuppressWarnings("unchecked") @@ -136,15 +176,14 @@ public class TileAlchemyTable extends TileInventory implements ISidedInventory, return true; } else if (index == toolSlot) { - return true; //TODO: + return false; //TODO: } else { return true; } default: - break; + return getAccessibleInputSlots(direction).contains(index); } - return true; } @Override @@ -166,10 +205,25 @@ public class TileAlchemyTable extends TileInventory implements ISidedInventory, return true; } default: - return true; + return getAccessibleInputSlots(direction).contains(index); } } + public List getAccessibleInputSlots(EnumFacing direction) + { + List list = new ArrayList(); + + for (int i = 0; i < 6; i++) + { + if (isInputSlotAccessible(i)) + { + list.add(i); + } + } + + return list; + } + @Override public void update() { diff --git a/src/main/java/WayofTime/bloodmagic/tile/container/ContainerAlchemyTable.java b/src/main/java/WayofTime/bloodmagic/tile/container/ContainerAlchemyTable.java index cf9312ff..79e2923d 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/container/ContainerAlchemyTable.java +++ b/src/main/java/WayofTime/bloodmagic/tile/container/ContainerAlchemyTable.java @@ -2,6 +2,7 @@ package WayofTime.bloodmagic.tile.container; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.ClickType; import net.minecraft.inventory.Container; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; @@ -40,6 +41,23 @@ public class ContainerAlchemyTable extends Container } } + @Override + public ItemStack slotClick(int slotId, int dragType, ClickType clickTypeIn, EntityPlayer player) + { + InventoryPlayer inventoryPlayer = player.inventory; + + if (slotId < 6 && slotId >= 0) + { + Slot slot = this.getSlot(slotId); + if (!slot.getHasStack() && inventoryPlayer.getItemStack() == null) + { + ((TileAlchemyTable) tileTable).toggleInputSlotAccessible(slotId); + } + } + + return super.slotClick(slotId, dragType, clickTypeIn, player); + } + @Override public ItemStack transferStackInSlot(EntityPlayer playerIn, int index) { diff --git a/src/main/java/WayofTime/bloodmagic/tile/container/ContainerItemRoutingNode.java b/src/main/java/WayofTime/bloodmagic/tile/container/ContainerItemRoutingNode.java index 45db1078..505511f5 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/container/ContainerItemRoutingNode.java +++ b/src/main/java/WayofTime/bloodmagic/tile/container/ContainerItemRoutingNode.java @@ -33,8 +33,8 @@ public class ContainerItemRoutingNode extends Container addSlotToContainer(new SlotGhostItem(itemInventory, j + i * 3, 26 + j * 18, 15 + i * 18)); } } + slotsOccupied = 10; -// this.addSlotToContainer(new SlotOutput(tileItemRoutingNode, TileSoulForge.outputSlot, 44, 51)); for (int i = 0; i < 3; i++) { @@ -64,7 +64,6 @@ public class ContainerItemRoutingNode extends Container InventoryPlayer inventoryPlayer = player.inventory; // if (!player.worldObj.isRemote) { - if (slotId >= 0) { Slot slot = this.inventorySlots.get(slotId); diff --git a/src/main/resources/assets/bloodmagic/models/block/ModelAlchemyTable.obj b/src/main/resources/assets/bloodmagic/models/block/ModelAlchemyTable.obj index e95e38e3..e006b7e0 100644 --- a/src/main/resources/assets/bloodmagic/models/block/ModelAlchemyTable.obj +++ b/src/main/resources/assets/bloodmagic/models/block/ModelAlchemyTable.obj @@ -185,14 +185,14 @@ f 38/57/28 37/65/28 34/66/28 33/63/28 f 38/67/29 33/55/29 36/58/29 39/68/29 f 34/56/30 37/59/30 40/62/30 35/57/30 o Base -v 1.000000 -0.037500 0.000000 -v -1.000000 -0.037500 0.000000 -v -1.000000 0.087500 0.000000 -v 1.000000 0.087500 0.000000 -v -1.000000 -0.037500 1.000000 -v 1.000000 -0.037500 1.000000 -v 1.000000 0.087500 1.000000 -v -1.000000 0.087500 1.000000 +v 1.000000 0.002500 0.000000 +v -1.000000 0.002500 0.000000 +v -1.000000 0.127500 0.000000 +v 1.000000 0.127500 0.000000 +v -1.000000 0.002500 1.000000 +v 1.000000 0.002500 1.000000 +v 1.000000 0.127500 1.000000 +v -1.000000 0.127500 1.000000 vt 0.125000 0.859375 vt 0.375000 0.859375 vt 0.375000 0.875000 @@ -1170,15 +1170,15 @@ f 254/421/190 253/429/190 250/430/190 249/427/190 f 254/431/191 249/419/191 252/422/191 255/432/191 f 250/420/192 253/423/192 256/426/192 251/421/192 o Recipe -v 0.806155 0.843750 0.598917 -v 0.550214 0.843750 0.324838 -v 0.276135 0.843750 0.580779 -v 0.532076 0.843750 0.854858 +v 0.746155 0.846250 0.501083 +v 0.490214 0.846250 0.775162 +v 0.216135 0.846250 0.519221 +v 0.472076 0.846250 0.245142 vt 0.046875 0.953125 vt 0.093750 0.953125 vt 0.093750 1.000000 vt 0.046875 1.000000 -vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 usemtl None s off f 260/433/193 259/434/193 258/435/193 257/436/193 diff --git a/src/main/resources/assets/bloodmagic/textures/gui/alchemyTable.png b/src/main/resources/assets/bloodmagic/textures/gui/alchemyTable.png index 71216b58..b30ff88a 100644 Binary files a/src/main/resources/assets/bloodmagic/textures/gui/alchemyTable.png and b/src/main/resources/assets/bloodmagic/textures/gui/alchemyTable.png differ