From 04668a16a04af695ddf132b34d8049dd25b11feb Mon Sep 17 00:00:00 2001 From: Ben Spiers Date: Thu, 10 Apr 2014 03:05:28 +0100 Subject: [PATCH] HDPE Blocks! 64 new cosmetic blocks for the low low price of just 4 new textures! --- common/mekanism/api/EnumColor.java | 23 +++- common/mekanism/client/ClientProxy.java | 9 +- .../client/render/RenderPartTransmitter.java | 2 - .../render/tileentity/RenderPlastic.java | 48 +++++++ common/mekanism/common/CommonProxy.java | 7 +- common/mekanism/common/Mekanism.java | 33 ++++- .../mekanism/common/block/BlockPlastic.java | 127 ++++++++++++++++++ .../common/block/BlockPlasticFence.java | 15 +++ .../common/item/ItemBlockPlastic.java | 92 +++++++++++++ common/mekanism/common/item/ItemHDPE.java | 72 ++++++++++ .../common/tile/TileEntityPlasticBlock.java | 68 ++++++++++ resources/assets/mekanism/lang/en_US.lang | 12 ++ .../textures/blocks/GlowPlasticBlock.png | Bin 0 -> 1307 bytes .../mekanism/textures/blocks/PlasticBlock.png | Bin 0 -> 1332 bytes .../mekanism/textures/blocks/PlasticFence.png | Bin 0 -> 1332 bytes .../blocks/ReinforcedPlasticBlock.png | Bin 0 -> 1330 bytes .../textures/blocks/SlickPlasticBlock.png | Bin 0 -> 1332 bytes .../items/{HDPE.png => HDPEPellet.png} | Bin .../mekanism/textures/items/HDPERod.png | Bin 0 -> 2859 bytes .../mekanism/textures/items/HDPESheet.png | Bin 0 -> 3567 bytes .../mekanism/textures/items/PlaStick.png | Bin 0 -> 221 bytes 21 files changed, 490 insertions(+), 18 deletions(-) create mode 100644 common/mekanism/client/render/tileentity/RenderPlastic.java create mode 100644 common/mekanism/common/block/BlockPlastic.java create mode 100644 common/mekanism/common/block/BlockPlasticFence.java create mode 100644 common/mekanism/common/item/ItemBlockPlastic.java create mode 100644 common/mekanism/common/item/ItemHDPE.java create mode 100644 common/mekanism/common/tile/TileEntityPlasticBlock.java create mode 100644 resources/assets/mekanism/textures/blocks/GlowPlasticBlock.png create mode 100644 resources/assets/mekanism/textures/blocks/PlasticBlock.png create mode 100644 resources/assets/mekanism/textures/blocks/PlasticFence.png create mode 100644 resources/assets/mekanism/textures/blocks/ReinforcedPlasticBlock.png create mode 100644 resources/assets/mekanism/textures/blocks/SlickPlasticBlock.png rename resources/assets/mekanism/textures/items/{HDPE.png => HDPEPellet.png} (100%) create mode 100644 resources/assets/mekanism/textures/items/HDPERod.png create mode 100644 resources/assets/mekanism/textures/items/HDPESheet.png create mode 100644 resources/assets/mekanism/textures/items/PlaStick.png diff --git a/common/mekanism/api/EnumColor.java b/common/mekanism/api/EnumColor.java index d0e4f4bd5..1f2b97879 100644 --- a/common/mekanism/api/EnumColor.java +++ b/common/mekanism/api/EnumColor.java @@ -13,7 +13,7 @@ public enum EnumColor DARK_BLUE("\u00a71", "darkBlue", new int[] {0, 0, 170}, 4), DARK_GREEN("\u00a72", "darkGreen", new int[] {0, 170, 0}, 2), DARK_AQUA("\u00a73", "darkAqua", new int[] {0, 170, 170}, 6), - DARK_RED("\u00a74", "darkRed", new int[] {170, 0, 0}, 1), + DARK_RED("\u00a74", "darkRed", new int[] {170, 0, 0}, -1), PURPLE("\u00a75", "purple", new int[] {170, 0, 170}, 5), ORANGE("\u00a76", "orange", new int[] {255, 170, 0}, 14), GREY("\u00a77", "grey", new int[] {170, 170, 170}, 7), @@ -21,12 +21,15 @@ public enum EnumColor INDIGO("\u00a79", "indigo", new int[] {85, 85, 255}, 12), BRIGHT_GREEN("\u00a7a", "brightGreen", new int[] {85, 255, 85}, 10), AQUA("\u00a7b", "aqua", new int[] {85, 255, 255}, -1), - RED("\u00a7c", "red", new int[] {255, 85, 85}, 13), - PINK("\u00a7d", "pink", new int[] {255, 85, 255}, 9), + RED("\u00a7c", "red", new int[] {255, 85, 85}, 1), + PINK("\u00a7d", "pink", new int[] {255, 85, 255}, 13), YELLOW("\u00a7e", "yellow", new int[] {255, 255, 85}, 11), - WHITE("\u00a7f", "white", new int[] {255, 255, 255}, 15); + WHITE("\u00a7f", "white", new int[] {255, 255, 255}, 15), + //Extras for dye-completeness + BROWN("\u00a73", "brown", new int[] {150, 75, 0}, 3), + BRIGHT_PINK("\u00a7d", "brightPink", new int[] {255, 192, 203}, 9); - public static EnumColor[] DYES = new EnumColor[] {BLACK, DARK_RED, DARK_GREEN, null, DARK_BLUE, PURPLE, DARK_AQUA, GREY, DARK_GREY, PINK, BRIGHT_GREEN, YELLOW, INDIGO, RED, ORANGE, WHITE}; + public static EnumColor[] DYES = new EnumColor[] {BLACK, RED, DARK_GREEN, BROWN, DARK_BLUE, PURPLE, DARK_AQUA, GREY, DARK_GREY, BRIGHT_PINK, BRIGHT_GREEN, YELLOW, INDIGO, PINK, ORANGE, WHITE}; /** The color code that will be displayed */ public final String code; @@ -55,6 +58,11 @@ public enum EnumColor return StatCollector.translateToLocal("color." + unlocalizedName); } + public String getDyeName() + { + return StatCollector.translateToLocal("dye." + unlocalizedName); + } + /** * Gets the name of this color with it's color prefix code. * @return the color's name and color prefix @@ -64,6 +72,11 @@ public enum EnumColor return code + getLocalizedName(); } + public String getDyedName() + { + return code + getDyeName(); + } + /** * Gets the 0-1 of this color's RGB value by dividing by 255 (used for OpenGL coloring). * @param index - R:0, G:1, B:2 diff --git a/common/mekanism/client/ClientProxy.java b/common/mekanism/client/ClientProxy.java index 9c72611d5..c166f6b3e 100644 --- a/common/mekanism/client/ClientProxy.java +++ b/common/mekanism/client/ClientProxy.java @@ -70,6 +70,7 @@ import mekanism.client.render.tileentity.RenderGasTank; import mekanism.client.render.tileentity.RenderLogisticalSorter; import mekanism.client.render.tileentity.RenderMetallurgicInfuser; import mekanism.client.render.tileentity.RenderObsidianTNT; +import mekanism.client.render.tileentity.RenderPlastic; import mekanism.client.render.tileentity.RenderRotaryCondensentrator; import mekanism.client.render.tileentity.RenderSalinationController; import mekanism.client.render.tileentity.RenderTeleporter; @@ -117,12 +118,11 @@ import mekanism.common.tile.TileEntityMetallurgicInfuser; import mekanism.common.tile.TileEntityObsidianTNT; import mekanism.common.tile.TileEntityOsmiumCompressor; import mekanism.common.tile.TileEntityPRC; +import mekanism.common.tile.TileEntityPlasticBlock; import mekanism.common.tile.TileEntityPrecisionSawmill; import mekanism.common.tile.TileEntityPurificationChamber; import mekanism.common.tile.TileEntityRotaryCondensentrator; import mekanism.common.tile.TileEntitySalinationController; -import mekanism.common.tile.TileEntitySalinationTank; -import mekanism.common.tile.TileEntitySalinationValve; import mekanism.common.tile.TileEntitySeismicVibrator; import mekanism.common.tile.TileEntityTeleporter; import net.minecraft.client.Minecraft; @@ -312,13 +312,12 @@ public class ClientProxy extends CommonProxy ClientRegistry.registerTileEntity(TileEntityChemicalInjectionChamber.class, "ChemicalInjectionChamber", new RenderConfigurableMachine()); ClientRegistry.registerTileEntity(TileEntityElectrolyticSeparator.class, "ElectrolyticSeparator", new RenderElectrolyticSeparator()); ClientRegistry.registerTileEntity(TileEntitySalinationController.class, "SalinationController", new RenderSalinationController()); - GameRegistry.registerTileEntity(TileEntitySalinationValve.class, "SalinationValve"); - GameRegistry.registerTileEntity(TileEntitySalinationTank.class, "SalinationTank"); ClientRegistry.registerTileEntity(TileEntityPrecisionSawmill.class, "PrecisionSawmill", new RenderConfigurableMachine()); ClientRegistry.registerTileEntity(TileEntityChemicalDissolutionChamber.class, "ChemicalDissolutionChamber", new RenderChemicalDissolutionChamber()); ClientRegistry.registerTileEntity(TileEntityChemicalWasher.class, "ChemicalWasher", new RenderChemicalWasher()); ClientRegistry.registerTileEntity(TileEntityChemicalCrystalizer.class, "ChemicalCrystalizer", new RenderChemicalCrystalizer()); - GameRegistry.registerTileEntity(TileEntityPRC.class, "PressurizedReactionChamber"); + ClientRegistry.registerTileEntity(TileEntityPRC.class, "PressurizedReactionChamber", new RenderConfigurableMachine()); + ClientRegistry.registerTileEntity(TileEntityPlasticBlock.class, "PlasticBlock", new RenderPlastic()); } @Override diff --git a/common/mekanism/client/render/RenderPartTransmitter.java b/common/mekanism/client/render/RenderPartTransmitter.java index a9ff77d98..e8fa0be99 100644 --- a/common/mekanism/client/render/RenderPartTransmitter.java +++ b/common/mekanism/client/render/RenderPartTransmitter.java @@ -286,8 +286,6 @@ public class RenderPartTransmitter implements IIconRegister MekanismRenderer.glowOn(fluid.getLuminosity()); - CCRenderState.changeTexture(MekanismRenderer.getBlocksTexture()); - GL11.glTranslated(pos.x, pos.y, pos.z); boolean gas = fluid.isGaseous(); diff --git a/common/mekanism/client/render/tileentity/RenderPlastic.java b/common/mekanism/client/render/tileentity/RenderPlastic.java new file mode 100644 index 000000000..6536b5f27 --- /dev/null +++ b/common/mekanism/client/render/tileentity/RenderPlastic.java @@ -0,0 +1,48 @@ +package mekanism.client.render.tileentity; + +import mekanism.api.EnumColor; +import mekanism.client.render.MekanismRenderer; +import mekanism.client.render.MekanismRenderer.Model3D; +import mekanism.common.Mekanism; +import mekanism.common.tile.TileEntityPlasticBlock; + +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import org.lwjgl.opengl.GL11; + + +@SideOnly(Side.CLIENT) +public class RenderPlastic extends TileEntitySpecialRenderer +{ + public static Model3D toRender; + + static + { + toRender = new Model3D(); + toRender.setBlockBounds(0,0,0,1,1,1); + } + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float partialTick) + { + renderAModelAt((TileEntityPlasticBlock) tileEntity, x, y, z, partialTick); + } + + public void renderAModelAt(TileEntityPlasticBlock plastic, double x, double y, double z, float partialTick) + { + GL11.glPushMatrix(); + GL11.glTranslatef((float) x, (float) y, (float) z); + bindTexture(MekanismRenderer.getBlocksTexture()); + + toRender.setTexture(Mekanism.BlockHDPE.getBlockTexture(plastic.worldObj, plastic.xCoord, plastic.yCoord, plastic.zCoord, 0)); + EnumColor color = EnumColor.DYES[plastic.colour]; + float[] colour = {color.getColor(0), color.getColor(1), color.getColor(2)}; + GL11.glColor3f(colour[0], colour[1], colour[2]); + RenderHelper.disableStandardItemLighting(); + MekanismRenderer.renderObject(toRender); + GL11.glPopMatrix(); + } +} \ No newline at end of file diff --git a/common/mekanism/common/CommonProxy.java b/common/mekanism/common/CommonProxy.java index 7efffda12..ebf7cbfcc 100644 --- a/common/mekanism/common/CommonProxy.java +++ b/common/mekanism/common/CommonProxy.java @@ -65,6 +65,7 @@ import mekanism.common.tile.TileEntityMetallurgicInfuser; import mekanism.common.tile.TileEntityObsidianTNT; import mekanism.common.tile.TileEntityOsmiumCompressor; import mekanism.common.tile.TileEntityPRC; +import mekanism.common.tile.TileEntityPlasticBlock; import mekanism.common.tile.TileEntityPrecisionSawmill; import mekanism.common.tile.TileEntityPurificationChamber; import mekanism.common.tile.TileEntityRotaryCondensentrator; @@ -125,12 +126,12 @@ public class CommonProxy GameRegistry.registerTileEntity(TileEntityChemicalInjectionChamber.class, "ChemicalInjectionChamber"); GameRegistry.registerTileEntity(TileEntityElectrolyticSeparator.class, "ElectrolyticSeparator"); GameRegistry.registerTileEntity(TileEntitySalinationController.class, "SalinationController"); - GameRegistry.registerTileEntity(TileEntitySalinationValve.class, "SalinationValve"); - GameRegistry.registerTileEntity(TileEntitySalinationTank.class, "SalinationTank"); GameRegistry.registerTileEntity(TileEntityPrecisionSawmill.class, "PrecisionSawmill"); GameRegistry.registerTileEntity(TileEntityChemicalDissolutionChamber.class, "ChemicalDissolutionChamber"); GameRegistry.registerTileEntity(TileEntityChemicalWasher.class, "ChemicalWasher"); GameRegistry.registerTileEntity(TileEntityChemicalCrystalizer.class, "ChemicalCrystalizer"); + GameRegistry.registerTileEntity(TileEntityPRC.class, "PressurizedReactionChamber"); + GameRegistry.registerTileEntity(TileEntityPlasticBlock.class, "PlasticBlock"); } /** @@ -188,6 +189,8 @@ public class CommonProxy Mekanism.energyCubeID = Mekanism.configuration.getBlock("EnergyCube", Mekanism.BLOCK_ID++).getInt(); Mekanism.gasTankID = Mekanism.configuration.getBlock("GasTank", Mekanism.BLOCK_ID++).getInt(); Mekanism.boundingBlockID = Mekanism.configuration.getBlock("BoundingBlock", Mekanism.BLOCK_ID++).getInt(); + Mekanism.plasticID = Mekanism.configuration.getBlock("PlasticBlock", Mekanism.BLOCK_ID++).getInt(); + Mekanism.plasticFenceID = Mekanism.configuration.getBlock("PlasticFenceBlock", Mekanism.BLOCK_ID++).getInt(); Mekanism.osmiumGenerationEnabled = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "OsmiumGenerationEnabled", true).getBoolean(true); Mekanism.copperGenerationEnabled = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "CopperGenerationEnabled", true).getBoolean(true); diff --git a/common/mekanism/common/Mekanism.java b/common/mekanism/common/Mekanism.java index 072336d89..514ddd366 100644 --- a/common/mekanism/common/Mekanism.java +++ b/common/mekanism/common/Mekanism.java @@ -48,6 +48,8 @@ import mekanism.common.block.BlockGasTank; import mekanism.common.block.BlockMachine; import mekanism.common.block.BlockObsidianTNT; import mekanism.common.block.BlockOre; +import mekanism.common.block.BlockPlastic; +import mekanism.common.block.BlockPlasticFence; import mekanism.common.entity.EntityBalloon; import mekanism.common.entity.EntityObsidianTNT; import mekanism.common.entity.EntityRobit; @@ -61,6 +63,7 @@ import mekanism.common.item.ItemBlockEnergyCube; import mekanism.common.item.ItemBlockGasTank; import mekanism.common.item.ItemBlockMachine; import mekanism.common.item.ItemBlockOre; +import mekanism.common.item.ItemBlockPlastic; import mekanism.common.item.ItemClump; import mekanism.common.item.ItemConfigurator; import mekanism.common.item.ItemCrystal; @@ -72,6 +75,7 @@ import mekanism.common.item.ItemEnergized; import mekanism.common.item.ItemFilterCard; import mekanism.common.item.ItemFreeRunners; import mekanism.common.item.ItemGasMask; +import mekanism.common.item.ItemHDPE; import mekanism.common.item.ItemIngot; import mekanism.common.item.ItemJetpack; import mekanism.common.item.ItemMachineUpgrade; @@ -121,6 +125,8 @@ import mekanism.common.tile.TileEntityBoundingBlock; import mekanism.common.tile.TileEntityCardboardBox; import mekanism.common.tile.TileEntityElectricBlock; import mekanism.common.tile.TileEntityEnergizedSmelter; +import mekanism.common.tile.TileEntitySalinationTank; +import mekanism.common.tile.TileEntitySalinationValve; import mekanism.common.tile.TileEntitySeismicVibrator; import mekanism.common.transporter.TransporterManager; import mekanism.common.util.MekanismUtils; @@ -241,7 +247,9 @@ public class Mekanism public static int boundingBlockID; public static int gasTankID; public static int cardboardBoxID; - + public static int plasticID; + public static int plasticFenceID; + //Items public static ItemElectricBow ElectricBow; public static Item EnrichedAlloy; @@ -290,6 +298,8 @@ public class Mekanism public static Block BoundingBlock; public static Block GasTank; public static Block CardboardBox; + public static Block BlockHDPE; + public static Block BlockHDPEFence; //Multi-ID Items public static Item Dust; @@ -640,6 +650,15 @@ public class Mekanism CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(PartTransmitter, 2, 8), new Object[] { "RRR", "SBS", "RRR", Character.valueOf('R'), Item.redstone, Character.valueOf('S'), "ingotSteel", Character.valueOf('B'), Block.fenceIron })); + CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(Polyethene, 1, 1), new Object[] { + "PP", "PP", "PP", Character.valueOf('P'), new ItemStack(Polyethene, 1, 0) + })); + CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(Polyethene, 1, 2), new Object[] { + "PPP", "P P", "PPP", Character.valueOf('P'), new ItemStack(Polyethene, 1, 0) + })); + CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(Polyethene, 1, 3), new Object[] { + "R", "R", Character.valueOf('R'), new ItemStack(Polyethene, 1, 1) + })); for(int i = 0; i < EnumColor.DYES.length; i++) { @@ -878,7 +897,7 @@ public class Mekanism Balloon = new ItemBalloon(configuration.getItem("Balloon", ITEM_ID++).getInt()).setUnlocalizedName("Balloon"); ItemProxy = new ItemProxy(configuration.getItem("ItemProxy", ITEM_ID++).getInt()).setUnlocalizedName("ItemProxy"); Substrate = new ItemMekanism(configuration.getItem("Substrate", ITEM_ID++).getInt()).setUnlocalizedName("Substrate"); - Polyethene = new ItemMekanism(configuration.getItem("HDPE", ITEM_ID++).getInt()).setUnlocalizedName("HDPE"); + Polyethene = new ItemHDPE(configuration.getItem("HDPE", ITEM_ID++).getInt()).setUnlocalizedName("HDPE"); BioFuel = new ItemMekanism(Mekanism.configuration.getItem("BioFuel", ITEM_ID++).getInt()).setUnlocalizedName("BioFuel"); configuration.save(); @@ -945,7 +964,9 @@ public class Mekanism BoundingBlock = (BlockBounding) new BlockBounding(boundingBlockID).setUnlocalizedName("BoundingBlock"); GasTank = new BlockGasTank(gasTankID).setUnlocalizedName("GasTank"); CardboardBox = new BlockCardboardBox(cardboardBoxID).setUnlocalizedName("CardboardBox"); - + BlockHDPE = new BlockPlastic(plasticID).setUnlocalizedName("PlasticBlock"); + BlockHDPEFence = new BlockPlasticFence(plasticFenceID).setUnlocalizedName("PlasticFence"); + //Registrations GameRegistry.registerBlock(BasicBlock, ItemBlockBasic.class, "BasicBlock"); GameRegistry.registerBlock(BasicBlock2, ItemBlockBasic.class, "BasicBlock2"); @@ -957,6 +978,8 @@ public class Mekanism GameRegistry.registerBlock(BoundingBlock, "BoundingBlock"); GameRegistry.registerBlock(GasTank, ItemBlockGasTank.class, "GasTank"); GameRegistry.registerBlock(CardboardBox, ItemBlockCardboardBox.class, "CardboardBox"); + GameRegistry.registerBlock(BlockHDPE, ItemBlockPlastic.class, "PlasticBlock"); + GameRegistry.registerBlock(BlockHDPEFence, "PlasticFence"); } /** @@ -1118,7 +1141,9 @@ public class Mekanism GameRegistry.registerTileEntity(TileEntityAdvancedBoundingBlock.class, "AdvancedBoundingBlock"); GameRegistry.registerTileEntity(TileEntityCardboardBox.class, "CardboardBox"); GameRegistry.registerTileEntity(TileEntitySeismicVibrator.class, "SeismicVibrator"); - + GameRegistry.registerTileEntity(TileEntitySalinationValve.class, "SalinationValve"); + GameRegistry.registerTileEntity(TileEntitySalinationTank.class, "SalinationTank"); + //Load tile entities that have special renderers. proxy.registerSpecialTileEntities(); } diff --git a/common/mekanism/common/block/BlockPlastic.java b/common/mekanism/common/block/BlockPlastic.java new file mode 100644 index 000000000..3618de6f3 --- /dev/null +++ b/common/mekanism/common/block/BlockPlastic.java @@ -0,0 +1,127 @@ +package mekanism.common.block; + +import java.util.List; + +import mekanism.common.Mekanism; +import mekanism.common.tile.TileEntityPlasticBlock; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Icon; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class BlockPlastic extends Block +{ + public Icon[] icons = new Icon[256]; + + public int numColours = 16; + + public String[] names = {"PlasticBlock", "SlickPlasticBlock", "GlowPlasticBlock", "ReinforcedPlasticBlock"}; + + public BlockPlastic(int id) + { + super(id, Material.clay); + setHardness(5F); + setResistance(10F); + setCreativeTab(Mekanism.tabMekanism); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IconRegister register) + { + icons[0] = register.registerIcon("mekanism:PlasticBlock"); + icons[1] = register.registerIcon("mekanism:SlickPlasticBlock"); + icons[2] = register.registerIcon("mekanism:GlowPlasticBlock"); + icons[3] = register.registerIcon("mekanism:ReinforcedPlasticBlock"); + } + + @Override + @SideOnly(Side.CLIENT) + public Icon getBlockTexture(IBlockAccess world, int x, int y, int z, int side) + { + return icons[world.getBlockMetadata(x,y,z)]; + } + + @Override + @SideOnly(Side.CLIENT) + public Icon getIcon(int side, int meta) + { + return icons[meta>>4]; + } + + @Override + public int damageDropped(int i) + { + return i; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(int id, CreativeTabs creativetabs, List list) + { + for(int i = 0; i < numColours*4; i++) + { + list.add(new ItemStack(id, 1, i)); + } + } + + @Override + public boolean renderAsNormalBlock() + { + return false; + } + + @Override + public boolean isOpaqueCube() + { + return false; + } + + @Override + public int getRenderType() + { + return -1; + } + + @Override + public int getLightValue(IBlockAccess world, int x, int y, int z) + { + int metadata = world.getBlockMetadata(x, y, z); + + if(metadata == 2) + { + return 10; + } + + return 0; + } + + @Override + public boolean hasTileEntity(int metadata) + { + return true; + } + + @Override + public TileEntity createTileEntity(World world, int metadata) + { + return new TileEntityPlasticBlock(); + } + + @Override + public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z) + { + TileEntityPlasticBlock tile = (TileEntityPlasticBlock)world.getBlockTileEntity(x, y, z); + return new ItemStack(blockID, 1, tile.getItemMeta()); + } +} diff --git a/common/mekanism/common/block/BlockPlasticFence.java b/common/mekanism/common/block/BlockPlasticFence.java new file mode 100644 index 000000000..db822ee7b --- /dev/null +++ b/common/mekanism/common/block/BlockPlasticFence.java @@ -0,0 +1,15 @@ +package mekanism.common.block; + +import mekanism.common.Mekanism; + +import net.minecraft.block.BlockFence; +import net.minecraft.block.material.Material; + +public class BlockPlasticFence extends BlockFence +{ + public BlockPlasticFence(int id) + { + super(id, "mekanism:PlasticFence", Material.clay); + setCreativeTab(Mekanism.tabMekanism); + } +} diff --git a/common/mekanism/common/item/ItemBlockPlastic.java b/common/mekanism/common/item/ItemBlockPlastic.java new file mode 100644 index 000000000..4d06ff43f --- /dev/null +++ b/common/mekanism/common/item/ItemBlockPlastic.java @@ -0,0 +1,92 @@ +package mekanism.common.item; + +import java.util.List; + +import mekanism.api.EnumColor; +import mekanism.common.tile.TileEntityPlasticBlock; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Icon; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class ItemBlockPlastic extends ItemBlock +{ + public Block metaBlock; + + public ItemBlockPlastic(int id, Block block) + { + super(id); + metaBlock = block; + setHasSubtypes(true); + } + + @Override + public int getMetadata(int i) + { + return i >> 4; + } + + @Override + public Icon getIconFromDamage(int i) + { + return metaBlock.getIcon(2, i >> 4); + } + + @Override + public String getUnlocalizedName(ItemStack itemstack) + { + String name = ""; + + switch(itemstack.getItemDamage() >> 4) + { + case 0: + name = "PlasticBlock"; + break; + case 1: + name = "SlickPlasticBlock"; + break; + case 2: + name = "GlowPlasticBlock"; + break; + case 3: + name = "ReinforcedPlasticBlock"; + break; + default: + name = "Unknown"; + break; + } + + return getUnlocalizedName() + "." + name; + } + + @Override + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List info, boolean flag) + { + EnumColor colour = EnumColor.DYES[stack.getItemDamage()&15]; + info.add(colour.getDyedName()); + } + + @Override + public boolean placeBlockAt(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int metadata) + { + if(super.placeBlockAt(stack, player, world, x, y, z, side, hitX, hitY, hitZ, metadata)) + { + TileEntity tile = world.getBlockTileEntity(x, y, z); + if(tile instanceof TileEntityPlasticBlock) + { + ((TileEntityPlasticBlock)tile).setColour(stack.getItemDamage() & 15); + } + + return true; + } + return false; + } +} diff --git a/common/mekanism/common/item/ItemHDPE.java b/common/mekanism/common/item/ItemHDPE.java new file mode 100644 index 000000000..f221863ce --- /dev/null +++ b/common/mekanism/common/item/ItemHDPE.java @@ -0,0 +1,72 @@ +package mekanism.common.item; + +import java.util.List; + +import mekanism.common.Mekanism; + +import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Icon; + +public class ItemHDPE extends ItemMekanism +{ + public Icon[] icons = new Icon[256]; + + public ItemHDPE(int id) + { + super(id); + setHasSubtypes(true); + setCreativeTab(Mekanism.tabMekanism); + } + + @Override + public void registerIcons(IconRegister register) + { + for(int i = 0; i < PlasticItem.values().length; i++) + { + icons[i] = register.registerIcon("mekanism:" + PlasticItem.values()[i].getName()); + } + } + + @Override + public Icon getIconFromDamage(int meta) + { + return icons[meta]; + } + + @Override + public void getSubItems(int id, CreativeTabs tabs, List itemList) + { + for(int counter = 0; counter < PlasticItem.values().length; counter++) + { + itemList.add(new ItemStack(this, 1, counter)); + } + } + + @Override + public String getUnlocalizedName(ItemStack item) + { + return "item." + PlasticItem.values()[item.getItemDamage()].getName(); + } + + public enum PlasticItem + { + PELLET("HDPEPellet"), + ROD("HDPERod"), + SHEET("HDPESheet"), + STICK("PlaStick"); + + private String name; + + private PlasticItem(String itemName) + { + name = itemName; + } + + public String getName() + { + return name; + } + } +} diff --git a/common/mekanism/common/tile/TileEntityPlasticBlock.java b/common/mekanism/common/tile/TileEntityPlasticBlock.java new file mode 100644 index 000000000..868f062fa --- /dev/null +++ b/common/mekanism/common/tile/TileEntityPlasticBlock.java @@ -0,0 +1,68 @@ +package mekanism.common.tile; + +import java.util.ArrayList; + +import mekanism.api.Coord4D; +import mekanism.common.ITileNetwork; +import mekanism.common.PacketHandler; +import mekanism.common.PacketHandler.Transmission; +import mekanism.common.network.PacketDataRequest; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; + +import com.google.common.io.ByteArrayDataInput; + +public class TileEntityPlasticBlock extends TileEntity implements ITileNetwork +{ + public int colour; + + public int getItemMeta() + { + return getBlockMetadata()*16+colour; + } + + public void setColour(int newColour) + { + colour = newColour; + } + + @Override + public void validate() + { + super.validate(); + + if(worldObj.isRemote) + { + PacketHandler.sendPacket(Transmission.SERVER, new PacketDataRequest().setParams(Coord4D.get(this))); + } + } + + @Override + public void handlePacketData(ByteArrayDataInput dataStream) throws Exception + { + colour = dataStream.readInt(); + } + + @Override + public ArrayList getNetworkedData(ArrayList data) + { + data.add(colour); + + return data; + } + + @Override + public void readFromNBT(NBTTagCompound nbtTagCompound) + { + super.readFromNBT(nbtTagCompound); + colour = nbtTagCompound.getInteger("colour"); + } + + @Override + public void writeToNBT(NBTTagCompound nbtTagCompound) + { + super.writeToNBT(nbtTagCompound); + nbtTagCompound.setInteger("colour", colour); + } +} diff --git a/resources/assets/mekanism/lang/en_US.lang b/resources/assets/mekanism/lang/en_US.lang index c7b583221..c0d798ad0 100644 --- a/resources/assets/mekanism/lang/en_US.lang +++ b/resources/assets/mekanism/lang/en_US.lang @@ -35,6 +35,11 @@ item.FreeRunners.name=Free Runners item.ArmoredJetpack.name=Armored Jetpack item.FilterCard.name=Filter Card item.SeismicReader.name=Seismic Reader +item.HDPEPellet.name=HDPE Pellet +item.HDPERod.name=HDPE Rod +item.HDPESheet.name=HDPE Sheet +item.PlaStick.name=PlaStick +item.Substrate.name=Substrate //Gas Tank tile.GasTank.GasTank.name=Gas Tank @@ -93,6 +98,7 @@ tile.MachineBlock2.ChemicalDissolutionChamber.name=Chemical Dissolution Chamber tile.MachineBlock2.ChemicalWasher.name=Chemical Washer tile.MachineBlock2.ChemicalCrystalizer.name=Chemical Crystalizer tile.MachineBlock2.SeismicVibrator.name=Seismic Vibrator +tile.MachineBlock2.PressurizedReactionChamber.name=Pressurized Reaction Chamber //Infuse types infuse.carbon=Carbon @@ -198,6 +204,7 @@ gas.sulfuricAcid=Sulfuric Acid gas.hydrogenChloride=Hydrogen Chloride gas.liquidOsmium=Liquid Osmium gas.liquidStone=Liquid Stone +gas.ethene=Ethylene gas.iron=Iron Slurry gas.gold=Gold Slurry @@ -217,6 +224,10 @@ gas.cleanSilver=Clean Silver Slurry gas.cleanObsidian=Clean Obsidian Slurry gas.cleanLead=Clean Lead Slurry +//BC Fuel Gases +gas.fuel=Vaporized Fuel +gas.oil=Vaporized Oil + //Fluids fluid.hydrogen=Liquid Hydrogen fluid.oxygen=Liquid Oxygen @@ -226,6 +237,7 @@ fluid.sulfurTrioxideGas=Liquid Sulfur Trioxide fluid.sulfuricAcid=Liquid Sulfuric Acid fluid.hydrogenChloride=Liquid Hydrogen Chloride fluid.brine=Brine +fluid.ethene=Liquid Ethylene //OreGas names oregas.iron=Iron Ore diff --git a/resources/assets/mekanism/textures/blocks/GlowPlasticBlock.png b/resources/assets/mekanism/textures/blocks/GlowPlasticBlock.png new file mode 100644 index 0000000000000000000000000000000000000000..a225b51117979bf9e24654330128d25ad48b2dbd GIT binary patch literal 1307 zcmV+$1?2jPP)4Tx0C?Jsl+SMzWf;dlyYtSh2{;E+0gJ(jKY)-zwqTG3L3g{$wouDv+hW_8 znCoMPiX1$ccrw9X5iY<%0|`MxY)DKvl=ve=5-x_+!%TMv zXvO#R%=3Pq@AvyW?~{Sd=T+Z#(-zEnp{kVf*7(GvmAOHhXIMiwYpQnO=gQ?FfU57i zJaX>+ObX!I_LcAd^Q@`Kz=qTlK(iLuvyeIlx@-F?1mhO4=V<7Mka-s9QsWbokjVmF z^(Za?T~kp!4s@x}No`@q40Cbh4CzWGcl~Ud+tLC)h%7op= zT>sBA>$aBlHUVpcnUO=lR!ALdsDVlxe_~gQBfyK0y6lJf3a}Ycf3#-Ca={irt|ajcdi^v~yrE#?Sk1c_{KG&Z<^rEXG`|s$wbP5r0c> zEaucV)T)I;zz)#&b0k$o(qsyWjmLc~DwN1$;iG6Wje|=GiHAhtq@H93XBAu-iHhS6 zqK?F45ru=j3MNvx9b=key~v7PA}jWaA+b;F5q((VHSxOGFA5?n`o!LLZ8@QDQRjA> z=UrMzEGir!f4aN1wWD`Zz3tdnPThH+y7`D_x$Gx70Rm>)$nDAgFU^0qp~G=qoO|oq z+Dr2se%yTZTl%7YUB9K@&=)!g{a1ZKU(j!m!^NeJWEP2oha^ZiNcM06myjwhzv0nL z;2uz%_D*+qZtN?k?#TCs?+tUZr<2Y8lKnG#J^N|)Z1(quro7^mw2!o}wC}aAwQsZ^ zv9$Br1?>mzqV}csZQ`v~-;eg&lS_0f@m8F*#5MEgM)L);U_NKQWDa%s%=KokIbd!v z3+Bf5yCwCKy*NzZwx_zXR)ibF!{I0rML-o7kK+&Re_Sm#iC!`I(AMq|dqvx&Q8Wrh z4$IhP^clUzK_l1kXKXPFMxU|8C_b=t_9`971S;9*cBYU7%%E_XL*f!3LwPI&=x_SR zl~Zqo*3NA96)WfauCxX{dq|=)aD_{MfUm%8?WK1H zt^&Krc^!U^m;Z-92ObvBiW&U~ R_tgLZ002ovPDHLkV1k!Ci_!o9 literal 0 HcmV?d00001 diff --git a/resources/assets/mekanism/textures/blocks/PlasticBlock.png b/resources/assets/mekanism/textures/blocks/PlasticBlock.png new file mode 100644 index 0000000000000000000000000000000000000000..149e8c7a1e207b05ad62024b92ae9bed92f51f56 GIT binary patch literal 1332 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 literal 0 HcmV?d00001 diff --git a/resources/assets/mekanism/textures/blocks/SlickPlasticBlock.png b/resources/assets/mekanism/textures/blocks/SlickPlasticBlock.png new file mode 100644 index 0000000000000000000000000000000000000000..9cddf5ae492a9e02bc7133845ad0e27f44bd96a6 GIT binary patch literal 1332 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 JPDHLkV1gd+Oh*6! literal 0 HcmV?d00001 diff --git a/resources/assets/mekanism/textures/items/HDPESheet.png b/resources/assets/mekanism/textures/items/HDPESheet.png new file mode 100644 index 0000000000000000000000000000000000000000..fba24d76622aafc73a3cecf896c54a717411861b GIT binary patch literal 3567 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

-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 L^>bP0l+XkKtI0`r literal 0 HcmV?d00001