From e6fb331bd9e19f56796dcfca6cb393da2625a208 Mon Sep 17 00:00:00 2001 From: alexbegt Date: Fri, 18 Nov 2016 10:26:10 -0500 Subject: [PATCH] Add JEI to the dev environment, rename the items + blocks to match vanilla formats of no capital letters and to include underscores, and fix the crystal chest not rendering items in it. --- build.gradle | 2 +- .../api/container/ChestContainer.java | 0 .../cpw/mods/ironchest/BlockIronChest.java | 4 +- .../cpw/mods/ironchest/ChestChangerType.java | 18 +- .../mods/ironchest/ContainerIronChest.java | 13 +- .../java/cpw/mods/ironchest/IronChest.java | 107 ++++++++++- .../mods/ironchest/IronChestAIOcelotSit.java | 27 ++- .../cpw/mods/ironchest/IronChestType.java | 16 +- .../cpw/mods/ironchest/ItemIronChest.java | 2 +- .../mods/ironchest/TileEntityIronChest.java | 178 +++++++++--------- .../mods/ironchest/client/ClientProxy.java | 2 +- .../cpw/mods/ironchest/client/GUIChest.java | 12 +- .../client/TileEntityIronChestRenderer.java | 35 ++-- .../blockstates/ItemChestUpgrade.json | 61 ------ .../{BlockIronChest.json => iron_chest.json} | 30 +-- .../blockstates/iron_chest_upgrades.json | 56 ++++++ .../assets/ironchest/lang/hu_HU.lang | 25 +++ .../block/{chest.json => iron_chest.json} | 2 +- .../{copperbreak.png => copper_break.png} | Bin .../{crystalbreak.png => crystal_break.png} | Bin .../{diamondbreak.png => diamond_break.png} | Bin .../blocks/{goldbreak.png => gold_break.png} | Bin .../blocks/{ironbreak.png => iron_break.png} | Bin .../{silverbreak.png => silver_break.png} | Bin ...ppercontainer.png => copper_container.png} | Bin ...ondcontainer.png => diamond_container.png} | Bin .../{dirtcontainer.png => dirt_container.png} | Bin .../{goldcontainer.png => gold_container.png} | Bin .../{ironcontainer.png => iron_container.png} | Bin ...lvercontainer.png => silver_container.png} | Bin ...ronUpgrade.png => copper_iron_upgrade.png} | Bin ...rUpgrade.png => copper_silver_upgrade.png} | Bin ...pgrade.png => diamond_crystal_upgrade.png} | Bin ...grade.png => diamond_obsidian_upgrade.png} | Bin ...ndUpgrade.png => gold_diamond_upgrade.png} | Bin ...nGoldUpgrade.png => iron_gold_upgrade.png} | Bin ...oldUpgrade.png => silver_gold_upgrade.png} | Bin ...perUpgrade.png => wood_copper_upgrade.png} | Bin ...dIronUpgrade.png => wood_iron_upgrade.png} | Bin .../{copperchest.png => copper_chest.png} | Bin .../{crystalchest.png => crystal_chest.png} | Bin .../{diamondchest.png => diamond_chest.png} | Bin .../model/{dirtchest.png => dirt_chest.png} | Bin .../model/{goldchest.png => gold_chest.png} | Bin .../model/{ironchest.png => iron_chest.png} | Bin .../{obsidianchest.png => obsidian_chest.png} | Bin .../{silverchest.png => silver_chest.png} | Bin 47 files changed, 376 insertions(+), 214 deletions(-) rename src/{main => }/api/java/invtweaks/api/container/ChestContainer.java (100%) delete mode 100644 src/main/resources/assets/ironchest/blockstates/ItemChestUpgrade.json rename src/main/resources/assets/ironchest/blockstates/{BlockIronChest.json => iron_chest.json} (52%) create mode 100644 src/main/resources/assets/ironchest/blockstates/iron_chest_upgrades.json create mode 100644 src/main/resources/assets/ironchest/lang/hu_HU.lang rename src/main/resources/assets/ironchest/models/block/{chest.json => iron_chest.json} (97%) rename src/main/resources/assets/ironchest/textures/blocks/{copperbreak.png => copper_break.png} (100%) rename src/main/resources/assets/ironchest/textures/blocks/{crystalbreak.png => crystal_break.png} (100%) rename src/main/resources/assets/ironchest/textures/blocks/{diamondbreak.png => diamond_break.png} (100%) rename src/main/resources/assets/ironchest/textures/blocks/{goldbreak.png => gold_break.png} (100%) rename src/main/resources/assets/ironchest/textures/blocks/{ironbreak.png => iron_break.png} (100%) rename src/main/resources/assets/ironchest/textures/blocks/{silverbreak.png => silver_break.png} (100%) rename src/main/resources/assets/ironchest/textures/gui/{coppercontainer.png => copper_container.png} (100%) mode change 100755 => 100644 rename src/main/resources/assets/ironchest/textures/gui/{diamondcontainer.png => diamond_container.png} (100%) mode change 100755 => 100644 rename src/main/resources/assets/ironchest/textures/gui/{dirtcontainer.png => dirt_container.png} (100%) mode change 100755 => 100644 rename src/main/resources/assets/ironchest/textures/gui/{goldcontainer.png => gold_container.png} (100%) mode change 100755 => 100644 rename src/main/resources/assets/ironchest/textures/gui/{ironcontainer.png => iron_container.png} (100%) mode change 100755 => 100644 rename src/main/resources/assets/ironchest/textures/gui/{silvercontainer.png => silver_container.png} (100%) mode change 100755 => 100644 rename src/main/resources/assets/ironchest/textures/items/{copperIronUpgrade.png => copper_iron_upgrade.png} (100%) mode change 100755 => 100644 rename src/main/resources/assets/ironchest/textures/items/{copperSilverUpgrade.png => copper_silver_upgrade.png} (100%) mode change 100755 => 100644 rename src/main/resources/assets/ironchest/textures/items/{diamondCrystalUpgrade.png => diamond_crystal_upgrade.png} (100%) mode change 100755 => 100644 rename src/main/resources/assets/ironchest/textures/items/{diamondObsidianUpgrade.png => diamond_obsidian_upgrade.png} (100%) mode change 100755 => 100644 rename src/main/resources/assets/ironchest/textures/items/{goldDiamondUpgrade.png => gold_diamond_upgrade.png} (100%) mode change 100755 => 100644 rename src/main/resources/assets/ironchest/textures/items/{ironGoldUpgrade.png => iron_gold_upgrade.png} (100%) mode change 100755 => 100644 rename src/main/resources/assets/ironchest/textures/items/{silverGoldUpgrade.png => silver_gold_upgrade.png} (100%) mode change 100755 => 100644 rename src/main/resources/assets/ironchest/textures/items/{woodCopperUpgrade.png => wood_copper_upgrade.png} (100%) mode change 100755 => 100644 rename src/main/resources/assets/ironchest/textures/items/{woodIronUpgrade.png => wood_iron_upgrade.png} (100%) mode change 100755 => 100644 rename src/main/resources/assets/ironchest/textures/model/{copperchest.png => copper_chest.png} (100%) mode change 100755 => 100644 rename src/main/resources/assets/ironchest/textures/model/{crystalchest.png => crystal_chest.png} (100%) mode change 100755 => 100644 rename src/main/resources/assets/ironchest/textures/model/{diamondchest.png => diamond_chest.png} (100%) mode change 100755 => 100644 rename src/main/resources/assets/ironchest/textures/model/{dirtchest.png => dirt_chest.png} (100%) mode change 100755 => 100644 rename src/main/resources/assets/ironchest/textures/model/{goldchest.png => gold_chest.png} (100%) mode change 100755 => 100644 rename src/main/resources/assets/ironchest/textures/model/{ironchest.png => iron_chest.png} (100%) mode change 100755 => 100644 rename src/main/resources/assets/ironchest/textures/model/{obsidianchest.png => obsidian_chest.png} (100%) mode change 100755 => 100644 rename src/main/resources/assets/ironchest/textures/model/{silverchest.png => silver_chest.png} (100%) mode change 100755 => 100644 diff --git a/build.gradle b/build.gradle index 855238c..d4f59dd 100755 --- a/build.gradle +++ b/build.gradle @@ -33,7 +33,7 @@ repositories { } dependencies { - //deobfCompile "mezz.jei:jei_1.10.2:3.7.6.232" + deobfCompile "mezz.jei:jei_1.11:4.0.1.191" } // This is our group. I'm cpw.mods diff --git a/src/main/api/java/invtweaks/api/container/ChestContainer.java b/src/api/java/invtweaks/api/container/ChestContainer.java similarity index 100% rename from src/main/api/java/invtweaks/api/container/ChestContainer.java rename to src/api/java/invtweaks/api/container/ChestContainer.java diff --git a/src/main/java/cpw/mods/ironchest/BlockIronChest.java b/src/main/java/cpw/mods/ironchest/BlockIronChest.java index e041d81..33a7fa0 100755 --- a/src/main/java/cpw/mods/ironchest/BlockIronChest.java +++ b/src/main/java/cpw/mods/ironchest/BlockIronChest.java @@ -47,7 +47,7 @@ public class BlockIronChest extends Block public BlockIronChest() { super(Material.IRON); - this.setRegistryName(new ResourceLocation(IronChest.MOD_ID, "BlockIronChest")); + this.setRegistryName(new ResourceLocation(IronChest.MOD_ID, "iron_chest")); this.setDefaultState(this.blockState.getBaseState().withProperty(VARIANT_PROP, IronChestType.IRON)); @@ -121,7 +121,7 @@ public class BlockIronChest extends Block @Override @SideOnly(Side.CLIENT) - //public void getSubBlocks(Item itemIn, CreativeTabs tab, List list) + // public void getSubBlocks(Item itemIn, CreativeTabs tab, List list) public void getSubBlocks(Item itemIn, CreativeTabs tab, NonNullList list) { for (IronChestType type : IronChestType.VALUES) diff --git a/src/main/java/cpw/mods/ironchest/ChestChangerType.java b/src/main/java/cpw/mods/ironchest/ChestChangerType.java index 07b91c5..94a671d 100755 --- a/src/main/java/cpw/mods/ironchest/ChestChangerType.java +++ b/src/main/java/cpw/mods/ironchest/ChestChangerType.java @@ -22,15 +22,15 @@ import net.minecraftforge.fml.common.registry.GameRegistry; public enum ChestChangerType { //@formatter:off - IRONGOLD(IRON, GOLD, "ironGoldUpgrade", "mmm", "msm", "mmm"), - GOLDDIAMOND(GOLD, DIAMOND, "goldDiamondUpgrade", "GGG", "msm", "GGG"), - COPPERSILVER(COPPER, SILVER, "copperSilverUpgrade", "mmm", "msm", "mmm"), - SILVERGOLD(SILVER, GOLD, "silverGoldUpgrade", "mGm", "GsG", "mGm"), - COPPERIRON(COPPER, IRON, "copperIronUpgrade", "mGm", "GsG", "mGm"), - DIAMONDCRYSTAL(DIAMOND, CRYSTAL, "diamondCrystalUpgrade", "GGG", "GOG", "GGG"), - WOODIRON(WOOD, IRON, "woodIronUpgrade", "mmm", "msm", "mmm"), - WOODCOPPER(WOOD, COPPER, "woodCopperUpgrade", "mmm", "msm", "mmm"), - DIAMONDOBSIDIAN(DIAMOND, OBSIDIAN, "diamondObsidianUpgrade", "mmm", "mGm", "mmm"); + IRONGOLD(IRON, GOLD, "iron_gold_upgrade", "mmm", "msm", "mmm"), + GOLDDIAMOND(GOLD, DIAMOND, "gold_diamond_upgrade", "GGG", "msm", "GGG"), + COPPERSILVER(COPPER, SILVER, "copper_silver_upgrade", "mmm", "msm", "mmm"), + SILVERGOLD(SILVER, GOLD, "silver_gold_upgrade", "mGm", "GsG", "mGm"), + COPPERIRON(COPPER, IRON, "copper_iron_upgrade", "mGm", "GsG", "mGm"), + DIAMONDCRYSTAL(DIAMOND, CRYSTAL, "diamond_crystal_upgrade", "GGG", "GOG", "GGG"), + WOODIRON(WOOD, IRON, "wood_iron_upgrade", "mmm", "msm", "mmm"), + WOODCOPPER(WOOD, COPPER, "wood_copper_upgrade", "mmm", "msm", "mmm"), + DIAMONDOBSIDIAN(DIAMOND, OBSIDIAN, "diamond_obsidian_upgrade", "mmm", "mGm", "mmm"); //@formatter:on public static final ChestChangerType[] VALUES = values(); diff --git a/src/main/java/cpw/mods/ironchest/ContainerIronChest.java b/src/main/java/cpw/mods/ironchest/ContainerIronChest.java index 83819c3..5ef4f55 100755 --- a/src/main/java/cpw/mods/ironchest/ContainerIronChest.java +++ b/src/main/java/cpw/mods/ironchest/ContainerIronChest.java @@ -10,6 +10,7 @@ ******************************************************************************/ package cpw.mods.ironchest; +import invtweaks.api.container.ChestContainer; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -17,7 +18,7 @@ import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -//@ChestContainer(isLargeChest = true) +@ChestContainer(isLargeChest = true) public class ContainerIronChest extends Container { private IronChestType type; @@ -123,9 +124,9 @@ public class ContainerIronChest extends Container return this.player; } - //@ChestContainer.RowSizeCallback - //public int getNumColumns() - //{ - // return this.type.rowLength; - //} + @ChestContainer.RowSizeCallback + public int getNumColumns() + { + return this.type.rowLength; + } } diff --git a/src/main/java/cpw/mods/ironchest/IronChest.java b/src/main/java/cpw/mods/ironchest/IronChest.java index ea641ba..5c7c871 100755 --- a/src/main/java/cpw/mods/ironchest/IronChest.java +++ b/src/main/java/cpw/mods/ironchest/IronChest.java @@ -12,16 +12,24 @@ package cpw.mods.ironchest; import java.util.Properties; +import javax.annotation.Nonnull; + +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.Mod.Instance; import net.minecraftforge.fml.common.SidedProxy; +import net.minecraftforge.fml.common.event.FMLMissingMappingsEvent; +import net.minecraftforge.fml.common.event.FMLMissingMappingsEvent.MissingMapping; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.network.NetworkRegistry; +import net.minecraftforge.fml.common.registry.ForgeRegistries; import net.minecraftforge.fml.common.registry.GameRegistry; -@Mod(modid = IronChest.MOD_ID, name = "Iron Chests", /*dependencies = "required-after:Forge@[12.17.0.1909,)",*/ acceptedMinecraftVersions = "[1.11, 1.12)") +@Mod(modid = IronChest.MOD_ID, name = "Iron Chests", dependencies = "required-after:forge@[13.19.0.2142,);", acceptedMinecraftVersions = "[1.11, 1.12)") public class IronChest { public static final String MOD_ID = "ironchest"; @@ -67,4 +75,101 @@ public class IronChest proxy.registerRenderInformation(); MinecraftForge.EVENT_BUS.register(new OcelotsSitOnChestsHandler()); } + + @Mod.EventHandler + public void onMissingMappings(FMLMissingMappingsEvent event) + { + for (MissingMapping mapping : event.get()) + { + if (mapping.resourceLocation.getResourceDomain().equals(IronChest.MOD_ID)) + { + @Nonnull + String path = mapping.resourceLocation.getResourcePath(); + + if (path.endsWith("blockironchest")) + { + path = path.replace("blockironchest", "iron_chest"); + ResourceLocation newRes = new ResourceLocation(mapping.resourceLocation.getResourceDomain(), path); + Block block = ForgeRegistries.BLOCKS.getValue(newRes); + + if (block != null) + { + if (mapping.type == GameRegistry.Type.BLOCK) + { + mapping.remap(block); + } + else + { + mapping.remap(Item.getItemFromBlock(block)); + } + } + } + + if (path.endsWith("irongoldupgrade")) + { + path = path.replace("irongoldupgrade", "iron_gold_upgrade"); + replaceUpgradeItem(path, mapping); + } + + if (path.endsWith("golddiamondupgrade")) + { + path = path.replace("golddiamondupgrade", "gold_diamond_upgrade"); + replaceUpgradeItem(path, mapping); + } + + if (path.endsWith("coppersilverupgrade")) + { + path = path.replace("coppersilverupgrade", "copper_silver_upgrade"); + replaceUpgradeItem(path, mapping); + } + + if (path.endsWith("silvergoldupgrade")) + { + path = path.replace("silvergoldupgrade", "silver_gold_upgrade"); + replaceUpgradeItem(path, mapping); + } + + if (path.endsWith("copperironupgrade")) + { + path = path.replace("copperironupgrade", "copper_iron_upgrade"); + replaceUpgradeItem(path, mapping); + } + + if (path.endsWith("diamondcrystalupgrade")) + { + path = path.replace("diamondcrystalupgrade", "diamond_crystal_upgrade"); + replaceUpgradeItem(path, mapping); + } + + if (path.endsWith("woodironupgrade")) + { + path = path.replace("woodironupgrade", "wood_iron_upgrade"); + replaceUpgradeItem(path, mapping); + } + + if (path.endsWith("woodcopperupgrade")) + { + path = path.replace("woodcopperupgrade", "wood_copper_upgrade"); + replaceUpgradeItem(path, mapping); + } + + if (path.endsWith("diamondobsidianupgrade")) + { + path = path.replace("diamondobsidianupgrade", "diamond_obsidian_upgrade"); + replaceUpgradeItem(path, mapping); + } + } + } + } + + private static void replaceUpgradeItem(String path, MissingMapping mapping) + { + ResourceLocation newRes = new ResourceLocation(mapping.resourceLocation.getResourceDomain(), path); + Item item = ForgeRegistries.ITEMS.getValue(newRes); + + if (item != null) + { + mapping.remap(item); + } + } } diff --git a/src/main/java/cpw/mods/ironchest/IronChestAIOcelotSit.java b/src/main/java/cpw/mods/ironchest/IronChestAIOcelotSit.java index 4e74ffb..50cbf5d 100755 --- a/src/main/java/cpw/mods/ironchest/IronChestAIOcelotSit.java +++ b/src/main/java/cpw/mods/ironchest/IronChestAIOcelotSit.java @@ -1,7 +1,10 @@ package cpw.mods.ironchest; +import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; import net.minecraft.entity.ai.EntityAIOcelotSit; import net.minecraft.entity.passive.EntityOcelot; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -12,14 +15,32 @@ public class IronChestAIOcelotSit extends EntityAIOcelotSit super(ocelotIn, speedIn); } + /** + * Return true to set given position as destination + */ @Override protected boolean shouldMoveTo(World worldIn, BlockPos pos) { - if (worldIn.getBlockState(pos).getBlock() == IronChest.ironChestBlock) + if (!worldIn.isAirBlock(pos.up())) { - return true; + return false; } + else + { + IBlockState iblockstate = worldIn.getBlockState(pos); + Block block = iblockstate.getBlock(); - return super.shouldMoveTo(worldIn, pos); + if (block == IronChest.ironChestBlock) + { + TileEntity tileentity = worldIn.getTileEntity(pos); + + if (tileentity instanceof TileEntityIronChest && ((TileEntityIronChest) tileentity).numPlayersUsing < 1) + { + return true; + } + } + + return super.shouldMoveTo(worldIn, pos); + } } } diff --git a/src/main/java/cpw/mods/ironchest/IronChestType.java b/src/main/java/cpw/mods/ironchest/IronChestType.java index a9fdf36..db0d4c2 100755 --- a/src/main/java/cpw/mods/ironchest/IronChestType.java +++ b/src/main/java/cpw/mods/ironchest/IronChestType.java @@ -28,14 +28,14 @@ import net.minecraftforge.oredict.ShapedOreRecipe; public enum IronChestType implements IStringSerializable { //@formatter:off - 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"), + IRON(54, 9, true, "iron_chest.png", Arrays.asList("ingotIron", "ingotRefinedIron"), TileEntityIronChest.class, 184, 202, "mmmmPmmmm", "mGmG3GmGm"), + GOLD(81, 9, true, "gold_chest.png", Collections.singleton("ingotGold"), TileEntityGoldChest.class, 184, 256, "mmmmPmmmm", "mGmG4GmGm"), + DIAMOND(108, 12, true, "diamond_chest.png", Collections.singleton("gemDiamond"), TileEntityDiamondChest.class, 184, 256, "GGGmPmGGG", "GGGG4Gmmm"), + COPPER(45, 9, false, "copper_chest.png", Collections.singleton("ingotCopper"), TileEntityCopperChest.class, 184, 184, "mmmmCmmmm"), + SILVER(72, 9, false, "silver_chest.png", Collections.singleton("ingotSilver"), TileEntitySilverChest.class, 184, 238, "mmmm3mmmm", "mGmG0GmGm"), + CRYSTAL(108, 12, true, "crystal_chest.png", Collections.singleton("blockGlass"), TileEntityCrystalChest.class, 238, 256, "GGGGPGGGG"), + OBSIDIAN(108, 12, false, "obsidian_chest.png", Collections.singleton("obsidian"), TileEntityObsidianChest.class, 238, 256, "mmmm2mmmm"), + DIRTCHEST9000(1, 1, false, "dirt_chest.png", Collections.singleton("dirt"), TileEntityDirtChest.class, 184, 184, "mmmmCmmmm"), WOOD(0, 0, false, "", Collections.singleton("plankWood"), null, 0, 0); //@formatter:on diff --git a/src/main/java/cpw/mods/ironchest/ItemIronChest.java b/src/main/java/cpw/mods/ironchest/ItemIronChest.java index 25a7eb3..f53d61c 100755 --- a/src/main/java/cpw/mods/ironchest/ItemIronChest.java +++ b/src/main/java/cpw/mods/ironchest/ItemIronChest.java @@ -20,7 +20,7 @@ public class ItemIronChest extends ItemBlock public ItemIronChest(Block block) { super(block); - this.setRegistryName(new ResourceLocation(IronChest.MOD_ID, "BlockIronChest")); + this.setRegistryName(new ResourceLocation(IronChest.MOD_ID, "iron_chest")); this.setMaxDamage(0); this.setHasSubtypes(true); diff --git a/src/main/java/cpw/mods/ironchest/TileEntityIronChest.java b/src/main/java/cpw/mods/ironchest/TileEntityIronChest.java index c8dcad6..ef8e205 100755 --- a/src/main/java/cpw/mods/ironchest/TileEntityIronChest.java +++ b/src/main/java/cpw/mods/ironchest/TileEntityIronChest.java @@ -10,6 +10,9 @@ ******************************************************************************/ package cpw.mods.ironchest; +import java.util.Collections; +import java.util.Comparator; + import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -19,6 +22,7 @@ import net.minecraft.inventory.Container; import net.minecraft.inventory.ItemStackHelper; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; import net.minecraft.network.NetworkManager; import net.minecraft.network.play.server.SPacketUpdateTileEntity; import net.minecraft.tileentity.TileEntityLockableLoot; @@ -29,7 +33,7 @@ import net.minecraft.util.SoundCategory; import net.minecraft.util.math.AxisAlignedBB; import net.minecraftforge.common.util.Constants; -public class TileEntityIronChest extends TileEntityLockableLoot implements ITickable//, IInventory +public class TileEntityIronChest extends TileEntityLockableLoot implements ITickable { /** The current angle of the lid (between 0 and 1) */ public float lidAngle; @@ -41,9 +45,9 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick private int ticksSinceSync = -1; - private int numPlayersUsing; + public int numPlayersUsing; - //private ItemStack[] topStacks; + private NonNullList topStacks; private EnumFacing facing; @@ -65,7 +69,7 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick super(); this.chestType = type; this.chestContents = NonNullList. func_191197_a(type.size, ItemStack.field_190927_a); - //this.topStacks = new ItemStack[8]; + this.topStacks = NonNullList. func_191197_a(8, ItemStack.field_190927_a); this.facing = EnumFacing.NORTH; } @@ -132,107 +136,106 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick { super.markDirty(); - //this.sortTopStacks(); + this.sortTopStacks(); } - /*protected void sortTopStacks() + protected void sortTopStacks() { if (!this.getType().isTransparent() || (this.worldObj != null && this.worldObj.isRemote)) { return; } - - ItemStack[] tempCopy = new ItemStack[this.getSizeInventory()]; - + + NonNullList tempCopy = NonNullList. func_191197_a(this.getSizeInventory(), ItemStack.field_190927_a); + boolean hasStuff = false; - + int compressedIdx = 0; - - mainLoop: - for (int i = 0; i < this.getSizeInventory(); i++) + + mainLoop: for (int i = 0; i < this.getSizeInventory(); i++) { - if (this.chestContents[i] != null) + if (this.chestContents.get(i) != ItemStack.field_190927_a) { for (int j = 0; j < compressedIdx; j++) { - if (tempCopy[j].isItemEqual(this.chestContents[i])) + if (tempCopy.get(j).isItemEqual(this.chestContents.get(i))) { - tempCopy[j].func_190920_e(tempCopy[j].func_190916_E() + this.chestContents[i].func_190916_E()); + tempCopy.get(j).func_190920_e(tempCopy.get(j).func_190916_E() + this.chestContents.get(i).func_190916_E()); continue mainLoop; } } - tempCopy[compressedIdx++] = this.chestContents[i].copy(); + tempCopy.set(compressedIdx++, this.chestContents.get(i).copy()); hasStuff = true; } } - + if (!hasStuff && this.hadStuff) { this.hadStuff = false; - - for (int i = 0; i < this.topStacks.length; i++) + + for (int i = 0; i < this.topStacks.size(); i++) { - this.topStacks[i] = null; + this.topStacks.set(i, ItemStack.field_190927_a); } - + if (this.worldObj != null) { IBlockState iblockstate = this.worldObj.getBlockState(this.pos); this.worldObj.notifyBlockUpdate(this.pos, iblockstate, iblockstate, 3); } - + return; } - + this.hadStuff = true; - - Arrays.sort(tempCopy, new Comparator() - { + + Collections.sort(tempCopy, new Comparator() { @Override - public int compare(ItemStack o1, ItemStack o2) + public int compare(ItemStack stack1, ItemStack stack2) { - if (o1 == null) + if (stack1 == null) { return 1; } - else if (o2 == null) + else if (stack2 == null) { return -1; } else { - return o2.func_190916_E() - o1.func_190916_E(); + return stack2.func_190916_E() - stack1.func_190916_E(); } } }); - + int p = 0; - - for (ItemStack element : tempCopy) + + for (int i = 0; i < tempCopy.size(); i++) { + ItemStack element = tempCopy.get(i); if (element != ItemStack.field_190927_a && element.func_190916_E() > 0) { - this.topStacks[p++] = element; - - if (p == this.topStacks.length) + this.topStacks.set(p++, element); + + if (p == this.topStacks.size()) { break; } } } - - for (int i = p; i < this.topStacks.length; i++) + + for (int i = p; i < this.topStacks.size(); i++) { - this.topStacks[i] = null; + this.topStacks.set(i, ItemStack.field_190927_a); } - + if (this.worldObj != null) { IBlockState iblockstate = this.worldObj.getBlockState(this.pos); - + this.worldObj.notifyBlockUpdate(this.pos, iblockstate, iblockstate, 3); } - }*/ + } @Override public String getName() @@ -270,7 +273,7 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick this.facing = EnumFacing.VALUES[compound.getByte("facing")]; - //this.sortTopStacks(); + this.sortTopStacks(); } @Override @@ -348,7 +351,7 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick { this.inventoryTouched = false; - //this.sortTopStacks(); + this.sortTopStacks(); } this.ticksSinceSync++; @@ -467,10 +470,10 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick } } - //public ItemStack[] getTopItemStacks() - //{ - // return this.topStacks; - //} + public NonNullList getTopItemStacks() + { + return this.topStacks; + } @Override public SPacketUpdateTileEntity getUpdatePacket() @@ -479,28 +482,28 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick compound.setByte("facing", (byte) this.facing.ordinal()); - /*ItemStack[] stacks = this.buildItemStackDataList(); - + NonNullList stacks = this.buildItemStackDataList(); + if (stacks != null) { NBTTagList itemList = new NBTTagList(); - - for (int slot = 0; slot < stacks.length; slot++) + + for (int slot = 0; slot < stacks.size(); slot++) { - if (stacks[slot] != null) + if (stacks.get(slot) != ItemStack.field_190927_a) { NBTTagCompound item = new NBTTagCompound(); - + item.setByte("Slot", (byte) slot); - - stacks[slot].writeToNBT(item); - + + stacks.get(slot).writeToNBT(item); + itemList.appendTag(item); } } - + compound.setTag("stacks", itemList); - }*/ + } return new SPacketUpdateTileEntity(this.pos, 0, compound); } @@ -514,68 +517,69 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick this.facing = EnumFacing.VALUES[compound.getByte("facing")]; - /*NBTTagList itemList = compound.getTagList("stacks", Constants.NBT.TAG_COMPOUND); - - ItemStack[] stacks = new ItemStack[this.topStacks.length]; - + NBTTagList itemList = compound.getTagList("stacks", Constants.NBT.TAG_COMPOUND); + + ItemStack[] stacks = new ItemStack[this.topStacks.size()]; + for (int item = 0; item < stacks.length; item++) { - NBTTagCompound itemStack = itemList.getCompoundTagAt(item); - - int slot = itemStack.getByte("Slot") & 255; - + NBTTagCompound itemNBT = itemList.getCompoundTagAt(item); + + int slot = itemNBT.getByte("Slot") & 255; + if (slot >= 0 && slot < stacks.length) { - stacks[slot] = ItemStack.loadItemStackFromNBT(itemStack); + stacks[slot] = new ItemStack(itemNBT); } } - + if (this.getType().isTransparent() && stacks != null) { int pos = 0; - - for (int i = 0; i < this.topStacks.length; i++) + + for (int i = 0; i < this.topStacks.size(); i++) { if (stacks[pos] != null) { - this.topStacks[i] = stacks[pos]; + this.topStacks.set(i, stacks[pos]); } else { - this.topStacks[i] = null; + this.topStacks.set(i, ItemStack.field_190927_a); } - + pos++; } - }*/ + } } } - /*public ItemStack[] buildItemStackDataList() + public NonNullList buildItemStackDataList() { if (this.getType().isTransparent()) { - ItemStack[] sortList = new ItemStack[this.topStacks.length]; - + NonNullList sortList = NonNullList. func_191197_a(this.topStacks.size(), ItemStack.field_190927_a); + int pos = 0; - - for (ItemStack is : this.topStacks) + + for (int i = 0; i < this.topStacks.size(); i++) { + ItemStack is = this.topStacks.get(i); if (is != null) { - sortList[pos++] = is; + sortList.set(pos++, is); } else { - sortList[pos++] = null; + sortList.set(pos++, ItemStack.field_190927_a); } } - + return sortList; } - + return null; - }*/ + } @Override public boolean isItemValidForSlot(int index, ItemStack stack) @@ -601,7 +605,7 @@ public class TileEntityIronChest extends TileEntityLockableLoot implements ITick @Override public Container createContainer(InventoryPlayer playerInventory, EntityPlayer playerIn) { - this.fillWithLoot((EntityPlayer) null); + this.fillWithLoot(playerIn); return new ContainerIronChest(playerInventory, this, this.chestType, this.chestType.xSize, this.chestType.ySize); } diff --git a/src/main/java/cpw/mods/ironchest/client/ClientProxy.java b/src/main/java/cpw/mods/ironchest/client/ClientProxy.java index 9637c34..8856a44 100755 --- a/src/main/java/cpw/mods/ironchest/client/ClientProxy.java +++ b/src/main/java/cpw/mods/ironchest/client/ClientProxy.java @@ -50,7 +50,7 @@ public class ClientProxy extends CommonProxy for (ChestChangerType type : ChestChangerType.VALUES) { //@formatter:off - ModelLoader.setCustomModelResourceLocation(type.item, 0, new ModelResourceLocation(new ResourceLocation(IronChest.MOD_ID, "ItemChestUpgrade"), "variant=" + type.itemName.toLowerCase())); + ModelLoader.setCustomModelResourceLocation(type.item, 0, new ModelResourceLocation(new ResourceLocation(IronChest.MOD_ID, "iron_chest_upgrades"), "variant=" + type.itemName.toLowerCase())); //@formatter:on } } diff --git a/src/main/java/cpw/mods/ironchest/client/GUIChest.java b/src/main/java/cpw/mods/ironchest/client/GUIChest.java index ae8f205..9b404f8 100755 --- a/src/main/java/cpw/mods/ironchest/client/GUIChest.java +++ b/src/main/java/cpw/mods/ironchest/client/GUIChest.java @@ -24,12 +24,12 @@ public class GUIChest extends GuiContainer public enum ResourceList { //@formatter:off - IRON(new ResourceLocation("ironchest", "textures/gui/ironcontainer.png")), - COPPER(new ResourceLocation("ironchest", "textures/gui/coppercontainer.png")), - SILVER(new ResourceLocation("ironchest", "textures/gui/silvercontainer.png")), - GOLD(new ResourceLocation("ironchest", "textures/gui/goldcontainer.png")), - DIAMOND(new ResourceLocation("ironchest", "textures/gui/diamondcontainer.png")), - DIRT(new ResourceLocation("ironchest", "textures/gui/dirtcontainer.png")); + IRON(new ResourceLocation("ironchest", "textures/gui/iron_container.png")), + COPPER(new ResourceLocation("ironchest", "textures/gui/copper_container.png")), + SILVER(new ResourceLocation("ironchest", "textures/gui/silver_container.png")), + GOLD(new ResourceLocation("ironchest", "textures/gui/gold_container.png")), + DIAMOND(new ResourceLocation("ironchest", "textures/gui/diamond_container.png")), + DIRT(new ResourceLocation("ironchest", "textures/gui/dirt_container.png")); //@formatter:on public final ResourceLocation location; diff --git a/src/main/java/cpw/mods/ironchest/client/TileEntityIronChestRenderer.java b/src/main/java/cpw/mods/ironchest/client/TileEntityIronChestRenderer.java index c8335d3..b0fecba 100755 --- a/src/main/java/cpw/mods/ironchest/client/TileEntityIronChestRenderer.java +++ b/src/main/java/cpw/mods/ironchest/client/TileEntityIronChestRenderer.java @@ -12,17 +12,22 @@ package cpw.mods.ironchest.client; import java.util.Random; +import com.google.common.primitives.SignedBytes; + import cpw.mods.ironchest.BlockIronChest; import cpw.mods.ironchest.IronChest; import cpw.mods.ironchest.IronChestType; import cpw.mods.ironchest.TileEntityIronChest; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelChest; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.RenderEntityItem; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.entity.item.EntityItem; +import net.minecraft.item.ItemStack; import net.minecraft.util.EnumFacing; +import net.minecraft.util.NonNullList; public class TileEntityIronChestRenderer extends TileEntitySpecialRenderer { @@ -141,7 +146,7 @@ public class TileEntityIronChestRenderer extends TileEntitySpecialRenderer stacks = tile.getTopItemStacks(); + for (int i = 0; i < stacks.size(); i++) { + ItemStack item = stacks.get(i); if (shift > shifts.length) { break; } - if (item == null) + if (item == ItemStack.field_190927_a) { shift++; continue; @@ -181,22 +191,23 @@ public class TileEntityIronChestRenderer extends TileEntitySpecialRenderer