From c80b083865d3182871b3ba91a2d8e17143a5e199 Mon Sep 17 00:00:00 2001 From: WayofTime Date: Mon, 2 May 2016 20:08:25 -0400 Subject: [PATCH] More tweaks to the alchemy table, as well as some minor recipes. --- .../client/gui/GuiAlchemyTable.java | 11 ++++ .../AlchemyTableRecipeCategory.java | 4 +- .../bloodmagic/registry/ModRecipes.java | 13 +++- .../bloodmagic/tile/TileAlchemyTable.java | 62 ++++++++++++++++-- .../tile/container/ContainerAlchemyTable.java | 18 +++++ .../container/ContainerItemRoutingNode.java | 3 +- .../models/block/ModelAlchemyTable.obj | 26 ++++---- .../bloodmagic/textures/gui/alchemyTable.png | Bin 3211 -> 3428 bytes 8 files changed, 115 insertions(+), 22 deletions(-) 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 71216b583dd53f0b4baf0ceaf896f2c8e2cd3a3a..b30ff88a8a74f9904befac2b90c0b1f4408f7f18 100644 GIT binary patch literal 3428 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