From 0a0e329223b96be3eb5a8fb8acbc7a395995575c Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Tue, 21 Jan 2014 17:58:00 -0500 Subject: [PATCH] Ore gasses! For use in T4 (5x) ore processing. --- common/mekanism/api/gas/OreGas.java | 10 +-- .../client/render/MekanismRenderer.java | 11 +++- common/mekanism/common/Mekanism.java | 57 ++++++------------ common/mekanism/common/Resource.java | 25 ++++++++ common/mekanism/common/item/ItemClump.java | 13 ++-- common/mekanism/common/item/ItemCrystal.java | 13 ++-- .../mekanism/common/item/ItemDirtyDust.java | 13 ++-- common/mekanism/common/item/ItemShard.java | 13 ++-- resources/assets/mekanism/lang/en_US.lang | 29 +++++++++ .../mekanism/textures/blocks/LiquidOre.png | Bin 0 -> 12172 bytes .../textures/blocks/LiquidOre.png.mcmeta | 5 ++ 11 files changed, 113 insertions(+), 76 deletions(-) create mode 100644 common/mekanism/common/Resource.java create mode 100644 resources/assets/mekanism/textures/blocks/LiquidOre.png create mode 100644 resources/assets/mekanism/textures/blocks/LiquidOre.png.mcmeta diff --git a/common/mekanism/api/gas/OreGas.java b/common/mekanism/api/gas/OreGas.java index 6431f8d63..86dd31f2b 100644 --- a/common/mekanism/api/gas/OreGas.java +++ b/common/mekanism/api/gas/OreGas.java @@ -1,20 +1,20 @@ package mekanism.api.gas; -import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; public class OreGas extends Gas { - public ItemStack oreStack; + private String oreName; - public OreGas(String s, ItemStack stack) + public OreGas(String s, String name) { super(s); - oreStack = stack; + oreName = name; } public String getOreName() { - return oreStack.getDisplayName(); + return StatCollector.translateToLocal(oreName); } } diff --git a/common/mekanism/client/render/MekanismRenderer.java b/common/mekanism/client/render/MekanismRenderer.java index ed9b1662b..0afde58ac 100644 --- a/common/mekanism/client/render/MekanismRenderer.java +++ b/common/mekanism/client/render/MekanismRenderer.java @@ -4,12 +4,13 @@ import java.util.Arrays; import java.util.List; import mekanism.api.EnumColor; +import mekanism.api.gas.Gas; import mekanism.api.gas.GasRegistry; +import mekanism.api.gas.OreGas; import mekanism.common.ISpecialBounds; import mekanism.common.ObfuscatedNames; import mekanism.common.util.MekanismUtils; import net.minecraft.block.Block; -import net.minecraft.block.BlockFluid; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GLAllocation; import net.minecraft.client.renderer.OpenGlHelper; @@ -76,6 +77,14 @@ public class MekanismRenderer GasRegistry.getGas("hydrogenChloride").setIcon(event.map.registerIcon("mekanism:LiquidHydrogenChloride")); GasRegistry.getGas("liquidOsmium").setIcon(event.map.registerIcon("mekanism:LiquidOsmium")); GasRegistry.getGas("liquidStone").setIcon(event.map.registerIcon("mekanism:LiquidStone")); + + for(Gas gas : GasRegistry.getRegisteredGasses()) + { + if(gas instanceof OreGas) + { + gas.setIcon(event.map.registerIcon("mekanism:LiquidOre")); + } + } FluidRegistry.getFluid("brine").setIcons(event.map.registerIcon("mekanism:LiquidBrine")); } diff --git a/common/mekanism/common/Mekanism.java b/common/mekanism/common/Mekanism.java index 08f89feea..21feffacc 100644 --- a/common/mekanism/common/Mekanism.java +++ b/common/mekanism/common/Mekanism.java @@ -20,6 +20,7 @@ import mekanism.api.gas.Gas; import mekanism.api.gas.GasNetwork.GasTransferEvent; import mekanism.api.gas.GasRegistry; import mekanism.api.gas.GasStack; +import mekanism.api.gas.OreGas; import mekanism.api.infuse.InfuseObject; import mekanism.api.infuse.InfuseRegistry; import mekanism.api.infuse.InfuseType; @@ -839,6 +840,9 @@ public class Mekanism OreDictionary.registerOre("battery", EnergyTablet.getUnchargedItem()); OreDictionary.registerOre("pulpWood", Sawdust); + //for RailCraft/IC2. + OreDictionary.registerOre("dustObsidian", new ItemStack(DirtyDust, 1, 6)); + //GregoriousT? OreDictionary.registerOre("itemSalt", Salt); OreDictionary.registerOre("dustSalt", Salt); @@ -872,44 +876,13 @@ public class Mekanism OreDictionary.registerOre("blockCopper", new ItemStack(BasicBlock, 1, 12)); OreDictionary.registerOre("blockTin", new ItemStack(BasicBlock, 1, 13)); - OreDictionary.registerOre("dustDirtyIron", new ItemStack(DirtyDust, 1, 0)); - OreDictionary.registerOre("dustDirtyGold", new ItemStack(DirtyDust, 1, 1)); - OreDictionary.registerOre("dustDirtyOsmium", new ItemStack(DirtyDust, 1, 2)); - OreDictionary.registerOre("dustDirtyCopper", new ItemStack(DirtyDust, 1, 3)); - OreDictionary.registerOre("dustDirtyTin", new ItemStack(DirtyDust, 1, 4)); - OreDictionary.registerOre("dustDirtySilver", new ItemStack(DirtyDust, 1, 5)); - OreDictionary.registerOre("dustDirtyObsidian", new ItemStack(DirtyDust, 1, 6)); - OreDictionary.registerOre("dustDirtyLead", new ItemStack(DirtyDust, 1, 7)); - - //for RailCraft/IC2. - OreDictionary.registerOre("dustObsidian", new ItemStack(DirtyDust, 1, 6)); - - OreDictionary.registerOre("clumpIron", new ItemStack(Clump, 1, 0)); - OreDictionary.registerOre("clumpGold", new ItemStack(Clump, 1, 1)); - OreDictionary.registerOre("clumpOsmium", new ItemStack(Clump, 1, 2)); - OreDictionary.registerOre("clumpCopper", new ItemStack(Clump, 1, 3)); - OreDictionary.registerOre("clumpTin", new ItemStack(Clump, 1, 4)); - OreDictionary.registerOre("clumpSilver", new ItemStack(Clump, 1, 5)); - OreDictionary.registerOre("clumpObsidian", new ItemStack(Clump, 1, 6)); - OreDictionary.registerOre("clumpLead", new ItemStack(Clump, 1, 7)); - - OreDictionary.registerOre("shardIron", new ItemStack(Shard, 1, 0)); - OreDictionary.registerOre("shardGold", new ItemStack(Shard, 1, 1)); - OreDictionary.registerOre("shardOsmium", new ItemStack(Shard, 1, 2)); - OreDictionary.registerOre("shardCopper", new ItemStack(Shard, 1, 3)); - OreDictionary.registerOre("shardTin", new ItemStack(Shard, 1, 4)); - OreDictionary.registerOre("shardSilver", new ItemStack(Shard, 1, 5)); - OreDictionary.registerOre("shardObsidian", new ItemStack(Shard, 1, 6)); - OreDictionary.registerOre("shardLead", new ItemStack(Shard, 1, 7)); - - OreDictionary.registerOre("crystalIron", new ItemStack(Crystal, 1, 0)); - OreDictionary.registerOre("crystalGold", new ItemStack(Crystal, 1, 1)); - OreDictionary.registerOre("crystalOsmium", new ItemStack(Crystal, 1, 2)); - OreDictionary.registerOre("crystalCopper", new ItemStack(Crystal, 1, 3)); - OreDictionary.registerOre("crystalTin", new ItemStack(Crystal, 1, 4)); - OreDictionary.registerOre("crystalSilver", new ItemStack(Crystal, 1, 5)); - OreDictionary.registerOre("crystalObsidian", new ItemStack(Crystal, 1, 6)); - OreDictionary.registerOre("crystalLead", new ItemStack(Crystal, 1, 7)); + for(Resource resource : Resource.values()) + { + OreDictionary.registerOre("dustDirty" + resource.getName(), new ItemStack(DirtyDust, 1, resource.ordinal())); + OreDictionary.registerOre("clump" + resource.getName(), new ItemStack(Clump, 1, resource.ordinal())); + OreDictionary.registerOre("shard" + resource.getName(), new ItemStack(Shard, 1, resource.ordinal())); + OreDictionary.registerOre("crystal" + resource.getName(), new ItemStack(Crystal, 1, resource.ordinal())); + } OreDictionary.registerOre("oreOsmium", new ItemStack(OreBlock, 1, 0)); OreDictionary.registerOre("oreCopper", new ItemStack(OreBlock, 1, 1)); @@ -1090,6 +1063,14 @@ public class Mekanism GasRegistry.register(new Gas("hydrogenChloride")).registerFluid(); GasRegistry.register(new Gas("liquidOsmium").setVisible(false)); GasRegistry.register(new Gas("liquidStone").setVisible(false)); + + for(Resource resource : Resource.values()) + { + String name = resource.getName(); + + GasRegistry.register(new OreGas(name.toLowerCase(), "oregas." + name.toLowerCase()).setVisible(false)); + GasRegistry.register(new OreGas("clean" + name, "oregas." + name.toLowerCase()).setVisible(false)); + } FluidRegistry.registerFluid(new Fluid("brine")); diff --git a/common/mekanism/common/Resource.java b/common/mekanism/common/Resource.java new file mode 100644 index 000000000..969b99356 --- /dev/null +++ b/common/mekanism/common/Resource.java @@ -0,0 +1,25 @@ +package mekanism.common; + +public enum Resource +{ + IRON("Iron"), + GOLD("Gold"), + OSMIUM("Osmium"), + COPPER("Copper"), + TIN("Tin"), + SILVER("Silver"), + OBSIDIAN("Obsidian"), + LEAD("Lead"); + + private String name; + + private Resource(String s) + { + name = s; + } + + public String getName() + { + return name; + } +} diff --git a/common/mekanism/common/item/ItemClump.java b/common/mekanism/common/item/ItemClump.java index 409b43ac7..cb6736086 100644 --- a/common/mekanism/common/item/ItemClump.java +++ b/common/mekanism/common/item/ItemClump.java @@ -3,6 +3,7 @@ package mekanism.common.item; import java.util.List; import mekanism.common.Mekanism; +import mekanism.common.Resource; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; @@ -12,10 +13,6 @@ public class ItemClump extends ItemMekanism { public Icon[] icons = new Icon[256]; - public static String[] en_USNames = {"Iron", "Gold", "Osmium", - "Copper", "Tin", "Silver", - "Obsidian", "Lead"}; - public ItemClump(int id) { super(id); @@ -26,9 +23,9 @@ public class ItemClump extends ItemMekanism @Override public void registerIcons(IconRegister register) { - for(int i = 0; i <= 7; i++) + for(int i = 0; i < Resource.values().length; i++) { - icons[i] = register.registerIcon("mekanism:" + en_USNames[i] + "Clump"); + icons[i] = register.registerIcon("mekanism:" + Resource.values()[i].getName() + "Clump"); } } @@ -41,7 +38,7 @@ public class ItemClump extends ItemMekanism @Override public void getSubItems(int id, CreativeTabs tabs, List itemList) { - for(int counter = 0; counter <= 7; ++counter) + for(int counter = 0; counter < Resource.values().length; counter++) { itemList.add(new ItemStack(this, 1, counter)); } @@ -50,6 +47,6 @@ public class ItemClump extends ItemMekanism @Override public String getUnlocalizedName(ItemStack item) { - return "item." + en_USNames[item.getItemDamage()].toLowerCase() + "Clump"; + return "item." + Resource.values()[item.getItemDamage()].getName().toLowerCase() + "Clump"; } } diff --git a/common/mekanism/common/item/ItemCrystal.java b/common/mekanism/common/item/ItemCrystal.java index 98eca40e2..dfe729301 100644 --- a/common/mekanism/common/item/ItemCrystal.java +++ b/common/mekanism/common/item/ItemCrystal.java @@ -3,6 +3,7 @@ package mekanism.common.item; import java.util.List; import mekanism.common.Mekanism; +import mekanism.common.Resource; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; @@ -12,10 +13,6 @@ public class ItemCrystal extends ItemMekanism { public Icon[] icons = new Icon[256]; - public static String[] en_USNames = {"Iron", "Gold", "Osmium", - "Copper", "Tin", "Silver", - "Obsidian", "Lead"}; - public ItemCrystal(int id) { super(id); @@ -26,9 +23,9 @@ public class ItemCrystal extends ItemMekanism @Override public void registerIcons(IconRegister register) { - for(int i = 0; i <= 7; i++) + for(int i = 0; i < Resource.values().length; i++) { - icons[i] = register.registerIcon("mekanism:" + en_USNames[i] + "Crystal"); + icons[i] = register.registerIcon("mekanism:" + Resource.values()[i].getName() + "Crystal"); } } @@ -41,7 +38,7 @@ public class ItemCrystal extends ItemMekanism @Override public void getSubItems(int id, CreativeTabs tabs, List itemList) { - for(int counter = 0; counter <= 7; ++counter) + for(int counter = 0; counter < Resource.values().length; counter++) { itemList.add(new ItemStack(this, 1, counter)); } @@ -50,6 +47,6 @@ public class ItemCrystal extends ItemMekanism @Override public String getUnlocalizedName(ItemStack item) { - return "item." + en_USNames[item.getItemDamage()].toLowerCase() + "Crystal"; + return "item." + Resource.values()[item.getItemDamage()].getName().toLowerCase() + "Crystal"; } } diff --git a/common/mekanism/common/item/ItemDirtyDust.java b/common/mekanism/common/item/ItemDirtyDust.java index 7d7b25436..5ff759dc1 100644 --- a/common/mekanism/common/item/ItemDirtyDust.java +++ b/common/mekanism/common/item/ItemDirtyDust.java @@ -3,6 +3,7 @@ package mekanism.common.item; import java.util.List; import mekanism.common.Mekanism; +import mekanism.common.Resource; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; @@ -12,10 +13,6 @@ public class ItemDirtyDust extends ItemMekanism { public Icon[] icons = new Icon[256]; - public static String[] en_USNames = {"Iron", "Gold", "Osmium", - "Copper", "Tin", "Silver", - "Obsidian", "Lead"}; - public ItemDirtyDust(int id) { super(id); @@ -26,9 +23,9 @@ public class ItemDirtyDust extends ItemMekanism @Override public void registerIcons(IconRegister register) { - for(int i = 0; i <= 7; i++) + for(int i = 0; i < Resource.values().length; i++) { - icons[i] = register.registerIcon("mekanism:Dirty" + en_USNames[i] + "Dust"); + icons[i] = register.registerIcon("mekanism:Dirty" + Resource.values()[i].getName() + "Dust"); } } @@ -41,7 +38,7 @@ public class ItemDirtyDust extends ItemMekanism @Override public void getSubItems(int id, CreativeTabs tabs, List itemList) { - for (int counter = 0; counter <= 7; ++counter) + for(int counter = 0; counter < Resource.values().length; counter++) { itemList.add(new ItemStack(this, 1, counter)); } @@ -50,6 +47,6 @@ public class ItemDirtyDust extends ItemMekanism @Override public String getUnlocalizedName(ItemStack item) { - return "item.dirty" + en_USNames[item.getItemDamage()] + "Dust"; + return "item.dirty" + Resource.values()[item.getItemDamage()].getName() + "Dust"; } } diff --git a/common/mekanism/common/item/ItemShard.java b/common/mekanism/common/item/ItemShard.java index a50f7b1d6..2d07895c5 100644 --- a/common/mekanism/common/item/ItemShard.java +++ b/common/mekanism/common/item/ItemShard.java @@ -3,6 +3,7 @@ package mekanism.common.item; import java.util.List; import mekanism.common.Mekanism; +import mekanism.common.Resource; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; @@ -12,10 +13,6 @@ public class ItemShard extends ItemMekanism { public Icon[] icons = new Icon[256]; - public static String[] en_USNames = {"Iron", "Gold", "Osmium", - "Copper", "Tin", "Silver", - "Obsidian", "Lead"}; - public ItemShard(int id) { super(id); @@ -26,9 +23,9 @@ public class ItemShard extends ItemMekanism @Override public void registerIcons(IconRegister register) { - for(int i = 0; i <= 7; i++) + for(int i = 0; i < Resource.values().length; i++) { - icons[i] = register.registerIcon("mekanism:" + en_USNames[i] + "Shard"); + icons[i] = register.registerIcon("mekanism:" + Resource.values()[i].getName() + "Shard"); } } @@ -41,7 +38,7 @@ public class ItemShard extends ItemMekanism @Override public void getSubItems(int id, CreativeTabs tabs, List itemList) { - for(int counter = 0; counter <= 7; ++counter) + for(int counter = 0; counter < Resource.values().length; counter++) { itemList.add(new ItemStack(this, 1, counter)); } @@ -50,6 +47,6 @@ public class ItemShard extends ItemMekanism @Override public String getUnlocalizedName(ItemStack item) { - return "item." + en_USNames[item.getItemDamage()].toLowerCase() + "Shard"; + return "item." + Resource.values()[item.getItemDamage()].getName().toLowerCase() + "Shard"; } } diff --git a/resources/assets/mekanism/lang/en_US.lang b/resources/assets/mekanism/lang/en_US.lang index df2f3c8c4..741e174bf 100644 --- a/resources/assets/mekanism/lang/en_US.lang +++ b/resources/assets/mekanism/lang/en_US.lang @@ -188,6 +188,24 @@ gas.hydrogenChloride=Hydrogen Chloride gas.liquidOsmium=Liquid Osmium gas.liquidStone=Liquid Stone +gas.iron=Iron Slurry +gas.gold=Gold Slurry +gas.osmium=Osmium Slurry +gas.copper=Copper Slurry +gas.tin=Tin Slurry +gas.silver=Silver Slurry +gas.obsidian=Obsidian Slurry +gas.lead=Lead Slurry + +gas.cleanIron=Iron Slurry +gas.cleanGold=Gold Slurry +gas.cleanOsmium=Osmium Slurry +gas.cleanCopper=Copper Slurry +gas.cleanTin=Tin Slurry +gas.cleanSilver=Silver Slurry +gas.cleanObsidian=Obsidian Slurry +gas.cleanLead=Lead Slurry + //Fluids fluid.hydrogen=Liquid Hydrogen fluid.oxygen=Liquid Oxygen @@ -198,6 +216,17 @@ fluid.sulfuricAcid=Liquid Sulfuric Acid fluid.hydrogenChloride=Liquid Hydrogen Chloride fluid.brine=Brine +//OreGas names +oregas.iron=Iron Ore +oregas.gold=Gold Ore +oregas.osmium=Osmium Ore +oregas.copper=Copper Ore +oregas.tin=Tin Ore +oregas.silver=Silver Ore +oregas.obsidian=Obsidian Ore +oregas.lead=Lead Ore + + //Gui text gui.removeSpeedUpgrade=Remove speed upgrade gui.removeEnergyUpgrade=Remove energy upgrade diff --git a/resources/assets/mekanism/textures/blocks/LiquidOre.png b/resources/assets/mekanism/textures/blocks/LiquidOre.png new file mode 100644 index 0000000000000000000000000000000000000000..45d1b19ab5453deb125cc4cba5ee69abf64b7cbd GIT binary patch literal 12172 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 O0000