From bb8cb4ff98a2237df9abc3597da6a8c8f2edb9ba Mon Sep 17 00:00:00 2001 From: alexbegt Date: Sat, 11 Jun 2016 20:51:23 -0400 Subject: [PATCH] Fix #72, Chests now work while as a spectator. --- build.gradle | 6 +-- .../api/container/ChestContainer.java | 6 +-- .../cpw/mods/ironchest/IronChestType.java | 24 ++++++----- .../mods/ironchest/TileEntityIronChest.java | 41 ++++++++++++------- 4 files changed, 47 insertions(+), 30 deletions(-) diff --git a/build.gradle b/build.gradle index a8cf1df..9b3a467 100755 --- a/build.gradle +++ b/build.gradle @@ -33,7 +33,7 @@ repositories { } dependencies { - deobfCompile "mezz.jei:jei_1.9.4:3.4.0.202" + deobfCompile "mezz.jei:jei_1.9.4:3.5.0.209" } // This is our group. I'm cpw.mods @@ -43,8 +43,8 @@ archivesBaseName = "ironchest" // Setup the forge minecraft plugin data. Specify the preferred forge/minecraft version here minecraft { - version = "1.9.4-12.17.0.1909-1.9.4" - mappings = "snapshot_20160519" + version = "1.9.4-12.17.0.1954" + mappings = "snapshot_20160607" runDir = "run" } diff --git a/src/api/java/invtweaks/api/container/ChestContainer.java b/src/api/java/invtweaks/api/container/ChestContainer.java index 14a1e5f..52a07a3 100755 --- a/src/api/java/invtweaks/api/container/ChestContainer.java +++ b/src/api/java/invtweaks/api/container/ChestContainer.java @@ -6,7 +6,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * A marker for containers that have a chest-like persistant storage component. Enables the Inventroy Tweaks sorting buttons for this container. + * A marker for containers that have a chest-like persistent storage component. Enables the Inventory Tweaks sorting buttons for this container. */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @@ -26,7 +26,7 @@ public @interface ChestContainer // Signature int func() @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) - public @interface RowSizeCallback + @interface RowSizeCallback { } @@ -34,7 +34,7 @@ public @interface ChestContainer // Signature int func() @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) - public @interface IsLargeCallback + @interface IsLargeCallback { } } \ No newline at end of file diff --git a/src/main/java/cpw/mods/ironchest/IronChestType.java b/src/main/java/cpw/mods/ironchest/IronChestType.java index 63a878f..d2b3cda 100755 --- a/src/main/java/cpw/mods/ironchest/IronChestType.java +++ b/src/main/java/cpw/mods/ironchest/IronChestType.java @@ -28,15 +28,15 @@ import net.minecraftforge.oredict.ShapedOreRecipe; public enum IronChestType implements IStringSerializable { //@formatter:off - IRON(54, 9, true, "ironchest.png", Arrays.asList("ingotIron", "ingotRefinedIron"), TileEntityIronChest.class, "mmmmPmmmm", "mGmG3GmGm"), - GOLD(81, 9, true, "goldchest.png", Collections.singleton("ingotGold"), TileEntityGoldChest.class, "mmmmPmmmm", "mGmG4GmGm"), - DIAMOND(108, 12, true, "diamondchest.png", Collections.singleton("gemDiamond"), TileEntityDiamondChest.class, "GGGmPmGGG", "GGGG4Gmmm"), - COPPER(45, 9, false, "copperchest.png", Collections.singleton("ingotCopper"), TileEntityCopperChest.class, "mmmmCmmmm"), - SILVER(72, 9, false, "silverchest.png", Collections.singleton("ingotSilver"), TileEntitySilverChest.class, "mmmm3mmmm", "mGmG0GmGm"), - CRYSTAL(108, 12, true, "crystalchest.png", Collections.singleton("blockGlass"), TileEntityCrystalChest.class, "GGGGPGGGG"), - OBSIDIAN(108, 12, false, "obsidianchest.png", Collections.singleton("obsidian"), TileEntityObsidianChest.class, "mmmm2mmmm"), - DIRTCHEST9000(1, 1, false, "dirtchest.png", Collections.singleton("dirt"), TileEntityDirtChest.class, "mmmmCmmmm"), - WOOD(0, 0, false, "", Collections.singleton("plankWood"), null); + IRON(54, 9, true, "ironchest.png", Arrays.asList("ingotIron", "ingotRefinedIron"), TileEntityIronChest.class, 184, 202, "mmmmPmmmm", "mGmG3GmGm"), + GOLD(81, 9, true, "goldchest.png", Collections.singleton("ingotGold"), TileEntityGoldChest.class, 184, 256, "mmmmPmmmm", "mGmG4GmGm"), + DIAMOND(108, 12, true, "diamondchest.png", Collections.singleton("gemDiamond"), TileEntityDiamondChest.class, 184, 256, "GGGmPmGGG", "GGGG4Gmmm"), + COPPER(45, 9, false, "copperchest.png", Collections.singleton("ingotCopper"), TileEntityCopperChest.class, 184, 184, "mmmmCmmmm"), + SILVER(72, 9, false, "silverchest.png", Collections.singleton("ingotSilver"), TileEntitySilverChest.class, 184, 238, "mmmm3mmmm", "mGmG0GmGm"), + CRYSTAL(108, 12, true, "crystalchest.png", Collections.singleton("blockGlass"), TileEntityCrystalChest.class, 238, 256, "GGGGPGGGG"), + OBSIDIAN(108, 12, false, "obsidianchest.png", Collections.singleton("obsidian"), TileEntityObsidianChest.class, 238, 256, "mmmm2mmmm"), + DIRTCHEST9000(1, 1, false, "dirtchest.png", Collections.singleton("dirt"), TileEntityDirtChest.class, 184, 184, "mmmmCmmmm"), + WOOD(0, 0, false, "", Collections.singleton("plankWood"), null, 0, 0); //@formatter:on public static final IronChestType VALUES[] = values(); @@ -50,9 +50,11 @@ public enum IronChestType implements IStringSerializable public final Class clazz; public final Collection recipes; public final Collection matList; + public final int xSize; + public final int ySize; //@formatter:off - IronChestType(int size, int rowLength, boolean tieredChest, String modelTexture, Collection mats, Class clazz, String... recipes) + IronChestType(int size, int rowLength, boolean tieredChest, String modelTexture, Collection mats, Class clazz, int xSize, int ySize, String... recipes) //@formatter:on { this.name = this.name().toLowerCase(); @@ -63,6 +65,8 @@ public enum IronChestType implements IStringSerializable this.matList = Collections.unmodifiableCollection(mats); this.clazz = clazz; this.recipes = Collections.unmodifiableCollection(Arrays.asList(recipes)); + this.xSize = xSize; + this.ySize = ySize; } public String getBreakTexture() diff --git a/src/main/java/cpw/mods/ironchest/TileEntityIronChest.java b/src/main/java/cpw/mods/ironchest/TileEntityIronChest.java index b4cd3f1..f6260ac 100755 --- a/src/main/java/cpw/mods/ironchest/TileEntityIronChest.java +++ b/src/main/java/cpw/mods/ironchest/TileEntityIronChest.java @@ -46,6 +46,7 @@ public class TileEntityIronChest extends TileEntityLockable implements ITickable private boolean inventoryTouched; private boolean hadStuff; private String customName; + private IronChestType chestType; public TileEntityIronChest() { @@ -55,6 +56,7 @@ public class TileEntityIronChest extends TileEntityLockable implements ITickable protected TileEntityIronChest(IronChestType type) { super(); + this.chestType = type; this.chestContents = new ItemStack[type.size]; this.topStacks = new ItemStack[8]; this.facing = EnumFacing.NORTH; @@ -478,27 +480,38 @@ public class TileEntityIronChest extends TileEntityLockable implements ITickable @Override public void openInventory(EntityPlayer player) { - if (this.worldObj == null) + if (!player.isSpectator()) { - return; + if (this.worldObj == null) + { + return; + } + + if (this.numPlayersUsing < 0) + { + this.numPlayersUsing = 0; + } + + this.numPlayersUsing++; + + this.worldObj.addBlockEvent(this.pos, IronChest.ironChestBlock, 1, this.numPlayersUsing); } - - this.numPlayersUsing++; - - this.worldObj.addBlockEvent(this.pos, IronChest.ironChestBlock, 1, this.numPlayersUsing); } @Override public void closeInventory(EntityPlayer player) { - if (this.worldObj == null) + if (!player.isSpectator()) { - return; + if (this.worldObj == null) + { + return; + } + + this.numPlayersUsing--; + + this.worldObj.addBlockEvent(this.pos, IronChest.ironChestBlock, 1, this.numPlayersUsing); } - - this.numPlayersUsing--; - - this.worldObj.addBlockEvent(this.pos, IronChest.ironChestBlock, 1, this.numPlayersUsing); } public void setFacing(EnumFacing facing) @@ -674,7 +687,7 @@ public class TileEntityIronChest extends TileEntityLockable implements ITickable @Override public Container createContainer(InventoryPlayer playerInventory, EntityPlayer playerIn) { - return null; + return new ContainerIronChest(playerInventory, this, this.chestType, this.chestType.xSize, this.chestType.ySize); } @Override @@ -692,6 +705,6 @@ public class TileEntityIronChest extends TileEntityLockable implements ITickable @Override public NBTTagCompound getUpdateTag() { - return writeToNBT(new NBTTagCompound()); + return this.writeToNBT(new NBTTagCompound()); } }