diff options
Diffstat (limited to 'src/main/java/goodgenerator/items')
9 files changed, 1644 insertions, 0 deletions
diff --git a/src/main/java/goodgenerator/items/FuelRod.java b/src/main/java/goodgenerator/items/FuelRod.java new file mode 100644 index 0000000000..9a0becf8b1 --- /dev/null +++ b/src/main/java/goodgenerator/items/FuelRod.java @@ -0,0 +1,183 @@ +package goodgenerator.items; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ic2.api.item.IBoxable; +import ic2.api.reactor.IReactor; +import ic2.api.reactor.IReactorComponent; +import ic2.core.util.StackUtil; +import ic2.core.util.Util; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +import java.util.ArrayList; +import java.util.List; + +import static goodgenerator.util.DescTextLocalization.addText; + +public class FuelRod extends RadioactiveItem implements IReactorComponent, IBoxable { + private final int numberOfCells; + private final int maxDmg; + private final float Power; + private final int Heat; + private float HeatBonus = 0; + private final ItemStack result; + + public FuelRod(String aName, int aCells, int aEUt, int aHeat, int aRads, int aDuration, ItemStack aResult, CreativeTabs Tab) { + super(aName, Tab, aRads); + this.setMaxStackSize(64); + this.numberOfCells = aCells; + this.maxDmg = aDuration; + this.Power = (float)aEUt / 25.0F; + this.result = aResult; + this.Heat = aHeat; + } + + public FuelRod(String aName, int aCells, int aEUt, int aHeat, int aRads, int aDuration, float aHeatBonus, ItemStack aResult, CreativeTabs Tab) { + super(aName, Tab, aRads); + this.setMaxStackSize(64); + this.numberOfCells = aCells; + this.maxDmg = aDuration; + this.Power = (float)aEUt / 25.0F; + this.result = aResult; + this.Heat = aHeat; + this.HeatBonus = aHeatBonus; + } + + public void processChamber(IReactor reactor, ItemStack stack, int x, int y, boolean heatRun) { + if (reactor.produceEnergy()) { + for(int iteration = 0; iteration < this.numberOfCells; ++iteration) { + int pulses = 1 + this.numberOfCells / 2; + int heat; + if (!heatRun) { + for(heat = 0; heat < pulses; ++heat) { + this.acceptUraniumPulse(reactor, stack, stack, x, y, x, y, heatRun); + } + checkPulseable(reactor, x - 1, y, stack, x, y, heatRun); + checkPulseable(reactor, x + 1, y, stack, x, y, heatRun); + checkPulseable(reactor, x, y - 1, stack, x, y, heatRun); + checkPulseable(reactor, x, y + 1, stack, x, y, heatRun); + } else { + pulses += checkPulseable(reactor, x - 1, y, stack, x, y, heatRun) + checkPulseable(reactor, x + 1, y, stack, x, y, heatRun) + checkPulseable(reactor, x, y - 1, stack, x, y, heatRun) + checkPulseable(reactor, x, y + 1, stack, x, y, heatRun); + heat = sumUp(pulses) * this.Heat; + ArrayList<FuelRod.ItemStackCoord> heatAcceptors = new ArrayList<>(); + this.checkHeatAcceptor(reactor, x - 1, y, heatAcceptors); + this.checkHeatAcceptor(reactor, x + 1, y, heatAcceptors); + this.checkHeatAcceptor(reactor, x, y - 1, heatAcceptors); + this.checkHeatAcceptor(reactor, x, y + 1, heatAcceptors); + + while(heatAcceptors.size() > 0 && heat > 0) { + int dheat = heat / heatAcceptors.size(); + heat -= dheat; + dheat = ((IReactorComponent) heatAcceptors.get(0).stack.getItem()).alterHeat(reactor, heatAcceptors.get(0).stack, heatAcceptors.get(0).x, heatAcceptors.get(0).y, dheat); + heat += dheat; + heatAcceptors.remove(0); + } + + if (heat > 0) { + reactor.addHeat(heat); + } + } + } + if (this.getCustomDamage(stack) >= this.getMaxCustomDamage(stack) - 1) { + reactor.setItemAt(x, y, result); + } else if (heatRun) { + this.applyCustomDamage(stack, 1, null); + } + } + } + + private static int checkPulseable(IReactor reactor, int x, int y, ItemStack me, int mex, int mey, boolean heatrun) { + ItemStack other = reactor.getItemAt(x, y); + return other != null && other.getItem() instanceof IReactorComponent && ((IReactorComponent)other.getItem()).acceptUraniumPulse(reactor, other, me, x, y, mex, mey, heatrun) ? 1 : 0; + } + + private static int sumUp(int x) { + return (x * x + x) / 2; + } + + private void checkHeatAcceptor(IReactor reactor, int x, int y, ArrayList<FuelRod.ItemStackCoord> heatAcceptors) { + ItemStack thing = reactor.getItemAt(x, y); + if (thing != null && thing.getItem() instanceof IReactorComponent && ((IReactorComponent)thing.getItem()).canStoreHeat(reactor, thing, x, y)) { + heatAcceptors.add(new ItemStackCoord(thing, x, y)); + } + + } + + public boolean acceptUraniumPulse(IReactor reactor, ItemStack yourStack, ItemStack pulsingStack, int youX, int youY, int pulseX, int pulseY, boolean heatrun) { + if (!heatrun) { + reactor.addOutput(Power * (1 + HeatBonus * ((float) reactor.getHeat() /(float) reactor.getMaxHeat()))); + } + return true; + } + + public boolean canStoreHeat(IReactor reactor, ItemStack yourStack, int x, int y) { + return false; + } + + public int getMaxHeat(IReactor reactor, ItemStack yourStack, int x, int y) { + return 0; + } + + public int getCurrentHeat(IReactor reactor, ItemStack yourStack, int x, int y) { + return 0; + } + + public int alterHeat(IReactor reactor, ItemStack yourStack, int x, int y, int heat) { + return heat; + } + + public float influenceExplosion(IReactor reactor, ItemStack yourStack) { + return (float)(2 * this.numberOfCells); + } + + @Override + public boolean canBeStoredInToolbox(ItemStack itemStack) { + return true; + } + + private static class ItemStackCoord { + public ItemStack stack; + public int x; + public int y; + + public ItemStackCoord(ItemStack stack1, int x1, int y1) { + this.stack = stack1; + this.x = x1; + this.y = y1; + } + } + + public int getCustomDamage(ItemStack stack) { + NBTTagCompound nbt = StackUtil.getOrCreateNbtData(stack); + return nbt.getInteger("advDmg"); + } + + public int getMaxCustomDamage(ItemStack stack) { + return this.maxDmg; + } + + public void setCustomDamage(ItemStack stack, int damage) { + NBTTagCompound nbt = StackUtil.getOrCreateNbtData(stack); + nbt.setInteger("advDmg", damage); + int maxStackDamage = stack.getMaxDamage(); + if (maxStackDamage > 2) { + stack.setItemDamage(1 + (int) Util.map(damage, this.maxDmg, maxStackDamage - 2)); + } + } + + public boolean applyCustomDamage(ItemStack stack, int damage, EntityLivingBase src) { + this.setCustomDamage(stack, this.getCustomDamage(stack) + damage); + return true; + } + + @SideOnly(Side.CLIENT) + @Override + public void addInformation(ItemStack item, EntityPlayer player, List tooltip, boolean p_77624_4_) { + super.addInformation(item, player, tooltip, p_77624_4_); + tooltip.add(String.format(addText("fuelrod.tooltip", 1)[0], getMaxCustomDamage(item) - getCustomDamage(item), getMaxCustomDamage(item))); + } +} diff --git a/src/main/java/goodgenerator/items/MyItemBlocks.java b/src/main/java/goodgenerator/items/MyItemBlocks.java new file mode 100644 index 0000000000..2136c6a9c4 --- /dev/null +++ b/src/main/java/goodgenerator/items/MyItemBlocks.java @@ -0,0 +1,89 @@ +package goodgenerator.items; + +import goodgenerator.blocks.regularBlock.TEBlock; +import goodgenerator.util.CharExchanger; +import goodgenerator.util.DescTextLocalization; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gregtech.api.util.GT_LanguageManager; +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemBlock; +import goodgenerator.main.GoodGenerator; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; + +import java.util.Arrays; +import java.util.List; + +import static goodgenerator.loader.Loaders.essentiaCell; +import static goodgenerator.loader.Loaders.yottaFluidTankCell; +import static goodgenerator.util.CharExchanger.tierName; + +public class MyItemBlocks extends ItemBlock { + private final String mNoMobsToolTip = GT_LanguageManager.addStringLocalization("gt.nomobspawnsonthisblock", "Mobs cannot Spawn on this Block"); + private final String mNoTileEntityToolTip = GT_LanguageManager.addStringLocalization("gt.notileentityinthisblock", "This is NOT a TileEntity!"); + + + public MyItemBlocks(Block block){ + super(block); + this.setMaxDamage(0); + this.setHasSubtypes(true); + this.setCreativeTab(GoodGenerator.GG); + } + + @Override + public int getMetadata(int aMeta) { + return aMeta; + } + + @Override + public String getUnlocalizedName(ItemStack aStack) { + return this.field_150939_a.getUnlocalizedName() + "." + this.getDamage(aStack); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(ItemStack stack, int pass) { + return this.field_150939_a.getIcon(0, stack.getItemDamage()); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) { + return this.getIcon(stack, renderPass); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamageForRenderPass(int p_77618_1_, int p_77618_2_) { + return this.field_150939_a.getIcon(0, p_77618_2_); + } + + @Override + @SuppressWarnings({"unchecked"}) + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack p_77624_1_, EntityPlayer p_77624_2_, List p_77624_3_, boolean p_77624_4_) { + if (p_77624_1_ == null) return; + p_77624_3_.add(mNoMobsToolTip); + if (Block.getBlockFromItem(p_77624_1_.getItem()) instanceof TEBlock) { + TEBlock tile = (TEBlock) Block.getBlockFromItem(p_77624_1_.getItem()); + if (tile.getIndex() == 1) + p_77624_3_.addAll(Arrays.asList(DescTextLocalization.addText("EssentiaHatch.tooltip", 2))); + } + else p_77624_3_.add(mNoTileEntityToolTip); + + if (Block.getBlockFromItem(p_77624_1_.getItem()).equals(yottaFluidTankCell)) { + StringBuilder cap = new StringBuilder(); + cap.append(" 1000000"); + for (int i = 0; i < p_77624_1_.getItemDamage(); i++) cap.append("00"); + cap.append(" L"); + p_77624_3_.add(StatCollector.translateToLocal("YOTTankCell.tooltip.0") + CharExchanger.formatNumber(cap.toString())); + } + + if (Block.getBlockFromItem(p_77624_1_.getItem()).equals(essentiaCell)) { + p_77624_3_.add(StatCollector.translateToLocal("hatchTier.tooltip.0") + " " + tierName[p_77624_1_.getItemDamage() + 3]); + } + } +} diff --git a/src/main/java/goodgenerator/items/MyItems.java b/src/main/java/goodgenerator/items/MyItems.java new file mode 100644 index 0000000000..58203953db --- /dev/null +++ b/src/main/java/goodgenerator/items/MyItems.java @@ -0,0 +1,112 @@ +package goodgenerator.items; + +import goodgenerator.main.GoodGenerator; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class MyItems extends Item { + + @SideOnly(Side.CLIENT) + protected IIcon[] texture; + private String tex; + private String[] textureNames; + private String Name; + private List<String> tooltips = new ArrayList<>(); + + public MyItems(String name, CreativeTabs Tab){ + this.setUnlocalizedName(name); + this.setCreativeTab(Tab); + this.tex = name; + this.Name = name; + } + + public MyItems(String name, CreativeTabs Tab, String[] textures){ + this.setUnlocalizedName(name); + this.setCreativeTab(Tab); + this.setHasSubtypes(true); + this.textureNames = textures; + this.Name = name; + } + + public MyItems(String name, String tooltip, CreativeTabs Tab) { + this.setUnlocalizedName(name); + this.setCreativeTab(Tab); + this.tex = name; + this.tooltips.add(tooltip); + this.Name = name; + } + + public MyItems(String name, String[] tooltip, CreativeTabs Tab) { + this.setUnlocalizedName(name); + this.setCreativeTab(Tab); + this.tex = name; + this.tooltips = Arrays.asList(tooltip); + this.Name = name; + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(int meta) { + if (this.texture == null || this.texture.length < 1) return this.itemIcon; + else return meta < this.texture.length ? this.texture[meta] : this.texture[0]; + } + + @Override + public int getMetadata(int aMeta) { + return aMeta; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconRegister) { + if (this.textureNames == null || this.textureNames.length < 1) { + this.itemIcon = iconRegister.registerIcon(GoodGenerator.MOD_ID + ":" + this.tex); + } + else { + this.texture = new IIcon[this.textureNames.length]; + for (int i = 0; i < this.textureNames.length; ++i) { + this.texture[i] = iconRegister.registerIcon(this.textureNames[i]); + } + } + } + + @Override + public String getUnlocalizedName(ItemStack p_77667_1_) { + if (this.textureNames == null || this.textureNames.length < 1){ + return "item." + this.Name; + } + else { + return "item." + this.Name + "." + p_77667_1_.getItemDamage(); + } + } + + @Override + @SideOnly(Side.CLIENT) + @SuppressWarnings("unchecked") + public void getSubItems(Item item, CreativeTabs tab, List list) { + if (this.texture == null || this.texture.length < 1) list.add(new ItemStack(item, 1, 0)); + else { + for (int i = 0; i < this.texture.length; ++i) { + list.add(new ItemStack(item, 1, i)); + } + } + } + + @SideOnly(Side.CLIENT) + @SuppressWarnings({"unchecked"}) + public void addInformation(ItemStack p_77624_1_, EntityPlayer p_77624_2_, List p_77624_3_, boolean p_77624_4_) { + if (tooltips.size() > 0) { + p_77624_3_.addAll(tooltips); + } + } +} diff --git a/src/main/java/goodgenerator/items/MyMaterial.java b/src/main/java/goodgenerator/items/MyMaterial.java new file mode 100644 index 0000000000..5e2a5e2a0d --- /dev/null +++ b/src/main/java/goodgenerator/items/MyMaterial.java @@ -0,0 +1,1015 @@ +package goodgenerator.items; + +import goodgenerator.util.CharExchanger; +import com.github.bartimaeusnek.bartworks.system.material.Werkstoff; +import com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader; +import gregtech.api.enums.TextureSet; +import com.github.bartimaeusnek.bartworks.util.Pair; + +import static com.github.bartimaeusnek.bartworks.util.BW_Util.subscriptNumbers; +import static gregtech.api.enums.Materials.*; + +@SuppressWarnings({"unchecked"}) +public class MyMaterial implements Runnable { + + protected static final int OffsetID = 10001; + + //Uranium Based Fuel Line + public static final Werkstoff graphiteUraniumMixture = new Werkstoff( + new short[]{0x3a,0x77,0x3d}, + "Graphite-Uranium Mixture", + subscriptNumbers("C3U"), + new Werkstoff.Stats(), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addMixerRecipes().onlyDust(), + OffsetID, + TextureSet.SET_DULL, + new Pair<> (Graphite,3), + new Pair<> (Uranium,1) + ); + + public static final Werkstoff uraniumBasedLiquidFuel = new Werkstoff( + new short[]{0x00,0xff,0x00}, + "Uranium Based Liquid Fuel", + subscriptNumbers("U36Rb8Qt4Rn"), + new Werkstoff.Stats().setRadioactive(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 1, + TextureSet.SET_FLUID + ); + + public static final Werkstoff uraniumBasedLiquidFuelExcited = new Werkstoff( + new short[]{0x00,0xff,0x00}, + "Uranium Based Liquid Fuel (Excited State)", + subscriptNumbers("*(U36Rb8Qt4Rn)*"), + new Werkstoff.Stats().setRadioactive(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 2, + TextureSet.SET_FLUID + ); + + public static final Werkstoff uraniumBasedLiquidFuelDepleted = new Werkstoff( + new short[]{0x6e,0x8b,0x3d}, + "Uranium Based Liquid Fuel (Depleted)", + subscriptNumbers("Pb?Bi?Ba?Xe?"), + new Werkstoff.Stats().setToxic(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 3, + TextureSet.SET_FLUID + ); + + //Thorium Based Fuel + public static final Werkstoff uraniumCarbideThoriumMixture = new Werkstoff( + new short[]{0x16,0x32,0x07}, + "Uranium Carbide-Thorium Mixture", + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addMixerRecipes().onlyDust(), + OffsetID + 4, + TextureSet.SET_DULL, + new Pair<> (Thorium,8), + new Pair<> (WerkstoffLoader.Thorium232,4), + new Pair<> (Uranium235,1), + new Pair<> (Carbon,3) + ); + + public static final Werkstoff thoriumBasedLiquidFuel = new Werkstoff( + new short[]{0x50,0x32,0x66}, + "Thorium Based Liquid Fuel", + subscriptNumbers("Th432Li4D2Hg"), + new Werkstoff.Stats().setRadioactive(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 5, + TextureSet.SET_FLUID + ); + + public static final Werkstoff thoriumBasedLiquidFuelExcited = new Werkstoff( + new short[]{0x50,0x32,0x66}, + "Thorium Based Liquid Fuel (Excited State)", + subscriptNumbers("*(Th432Li4D2Hg)*"), + new Werkstoff.Stats().setRadioactive(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 6, + TextureSet.SET_FLUID + ); + + public static final Werkstoff thoriumBasedLiquidFuelDepleted = new Werkstoff( + new short[]{0x7d,0x6c,0x8a}, + "Thorium Based Liquid Fuel (Depleted)", + subscriptNumbers("Lu?Pr?B?In?"), + new Werkstoff.Stats().setToxic(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 7, + TextureSet.SET_FLUID + ); + + //Plutonium Based Fuel + public static final Werkstoff plutoniumOxideUraniumMixture = new Werkstoff( + new short[]{0xd1,0x1f,0x4a}, + "Plutonium Oxide-Uranium Mixture", + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addMixerRecipes().onlyDust(), + OffsetID + 8, + TextureSet.SET_SHINY, + new Pair<> (Plutonium,10), + new Pair<> (Oxygen,12), + new Pair<> (Uranium,2), + new Pair<> (Carbon,8) + ); + + public static final Werkstoff plutoniumBasedLiquidFuel = new Werkstoff( + new short[]{0xef,0x15,0x15}, + "Plutonium Based Liquid Fuel", + subscriptNumbers("Pu45Nt8Cs16Am2"), + new Werkstoff.Stats().setRadioactive(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 9, + TextureSet.SET_FLUID + ); + + public static final Werkstoff plutoniumBasedLiquidFuelExcited = new Werkstoff( + new short[]{0xef,0x15,0x15}, + "Plutonium Based Liquid Fuel (Excited State)", + subscriptNumbers("*(Pu45Nt8Cs16Am2)*"), + new Werkstoff.Stats().setRadioactive(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 10, + TextureSet.SET_FLUID + ); + + public static final Werkstoff plutoniumBasedLiquidFuelDepleted = new Werkstoff( + new short[]{0x67,0x19,0x19}, + "Plutonium Based Liquid Fuel (Depleted)", + subscriptNumbers("Tn?Ce?Au?Kr?"), + new Werkstoff.Stats().setToxic(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 11, + TextureSet.SET_FLUID + ); + + //Thorium-233 + public static final Werkstoff oxalate = new Werkstoff( + new short[]{0x79,0xd8,0x55}, + "Oxalate", + Werkstoff.Types.BIOLOGICAL, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 12, + TextureSet.SET_FLUID, + new Pair<> (Hydrogen,2), + new Pair<> (Carbon,2), + new Pair<> (Oxygen,4) + ); + + public static final Werkstoff vanadiumPentoxide = new Werkstoff( + new short[]{0xde,0x8d,0x12}, + "Vanadium Pentoxide", + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().onlyDust(), + OffsetID + 13, + TextureSet.SET_SHINY, + new Pair<> (Vanadium,2), + new Pair<> (Oxygen,5) + ); + + public static final Werkstoff thoriumNitrate = new Werkstoff( + new short[]{0xba,0xe8,0x26}, + "Thorium Nitrate", + subscriptNumbers("Th(NO3)4"), + new Werkstoff.Stats(), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 14, + TextureSet.SET_DULL + ); + + public static final Werkstoff thoriumOxalate = new Werkstoff( + new short[]{0x50,0x63,0x13}, + "Thorium Oxalate", + subscriptNumbers("Th(C2O4)2"), + new Werkstoff.Stats(), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().onlyDust(), + OffsetID + 15, + TextureSet.SET_DULL + ); + + public static final Werkstoff thoriumHydroxide = new Werkstoff( + new short[]{0x92,0xae,0x89}, + "Thorium Hydroxide", + subscriptNumbers("Th(OH)4"), + new Werkstoff.Stats(), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().onlyDust(), + OffsetID + 16, + TextureSet.SET_SHINY + ); + + public static final Werkstoff sodiumOxalate = new Werkstoff( + new short[]{0xe4,0xf8,0x9b}, + "Sodium Oxalate", + subscriptNumbers("Na2C2O4"), + new Werkstoff.Stats(), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().onlyDust(), + OffsetID + 17, + TextureSet.SET_DULL + ); + + public static final Werkstoff thoriumTetrachloride = new Werkstoff( + new short[]{0x13,0x7c,0x16}, + "Thorium Tetrachloride", + subscriptNumbers("ThCl4"), + new Werkstoff.Stats(), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 18, + TextureSet.SET_FLUID + ); + + public static final Werkstoff thoriumTetrafluoride = new Werkstoff( + new short[]{0x15,0x6a,0x6a}, + "Thorium Tetrafluoride", + subscriptNumbers("ThF4"), + new Werkstoff.Stats(), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 19, + TextureSet.SET_FLUID + ); + + public static final Werkstoff thorium232Tetrafluoride = new Werkstoff( + new short[]{0x15,0x6a,0x6a}, + "Thorium-232 Tetrafluoride", + new Werkstoff.Stats(), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 20, + TextureSet.SET_FLUID, + new Pair<> (WerkstoffLoader.Thorium232,1), + new Pair<> (Fluorine,4) + ); + + //Atomic Separation Catalyst + public static final Werkstoff orundum = new Werkstoff( + new short[]{0xcd,0x26,0x26}, + "Orundum", + "Or", + new Werkstoff.Stats().setProtons(120).setMass(300), + Werkstoff.Types.ELEMENT, + new Werkstoff.GenerationFeatures().addGems(), + OffsetID + 22, + TextureSet.SET_DIAMOND + ); + + public static final Werkstoff atomicSeparationCatalyst = new Werkstoff( + new short[]{0xe8,0x5e,0x0c}, + "Atomic Separation Catalyst", + "the melting core...", + new Werkstoff.Stats().setMeltingPoint(5000).setBlastFurnace(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().onlyDust().addMolten().addMetalItems().addSimpleMetalWorkingItems().addCraftingMetalWorkingItems().addMultipleIngotMetalWorkingItems(), + OffsetID + 21, + TextureSet.SET_SHINY, + new Pair<>(MyMaterial.orundum, 2), + new Pair<>(Plutonium, 1), + new Pair<>(Naquadah, 2) + ); + + //Naquadah Fuel Rework + public static final Werkstoff extremelyUnstableNaquadah = new Werkstoff( + new short[]{0x06,0x26,0x05}, + "Extremely Unstable Naquadah", + "Nq"+ CharExchanger.shifter(9734), + new Werkstoff.Stats().setMeltingPoint(7000).setBlastFurnace(true).setProtons(200).setMass(450).setRadioactive(true), + Werkstoff.Types.ELEMENT, + new Werkstoff.GenerationFeatures().disable().onlyDust().addMolten().addMetalItems().addSimpleMetalWorkingItems().addCraftingMetalWorkingItems().addMultipleIngotMetalWorkingItems(), + OffsetID + 23, + TextureSet.SET_SHINY + ); + + public static final Werkstoff lightNaquadahFuel = new Werkstoff( + new short[]{92,203,92}, + "Light Naquadah Fuel", + "far from enough", + new Werkstoff.Stats().setToxic(true).setRadioactive(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 24, + TextureSet.SET_FLUID + ); + + public static final Werkstoff heavyNaquadahFuel = new Werkstoff( + new short[]{54,255,54}, + "Heavy Naquadah Fuel", + "still need processing", + new Werkstoff.Stats().setToxic(true).setRadioactive(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 25, + TextureSet.SET_FLUID + ); + + public static final Werkstoff naquadahGas = new Werkstoff( + new short[]{93,219,0}, + "Naquadah Gas", + "Who need it?", + new Werkstoff.Stats().setToxic(true).setRadioactive(true).setGas(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 26, + TextureSet.SET_FLUID + ); + + public static final Werkstoff naquadahAsphalt = new Werkstoff( + new short[]{5,37,5}, + "Naquadah Asphalt", + "It will damage the reactor.", + new Werkstoff.Stats().setToxic(true).setRadioactive(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 27, + TextureSet.SET_FLUID + ); + + public static final Werkstoff ether = new Werkstoff( + new short[]{0xeb,0xbc,0x2f}, + "Ether", + subscriptNumbers("CH3CH2OCH2CH3"), + new Werkstoff.Stats(), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 28, + TextureSet.SET_FLUID, + new Pair<> (Carbon,4), + new Pair<> (Hydrogen, 10), + new Pair<> (Oxygen, 1) + ); + + public static final Werkstoff antimonyTrichloride = new Werkstoff( + new short[]{0x0f,0xdc,0x34}, + "Antimony Trichloride Solution", + subscriptNumbers("SbCl3"), + new Werkstoff.Stats(), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 29, + TextureSet.SET_FLUID + ); + + public static final Werkstoff antimonyPentachlorideSolution = new Werkstoff( + new short[]{0x15,0x93,0x2c}, + "Antimony Pentachloride Solution", + subscriptNumbers("SbCl5"), + new Werkstoff.Stats(), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 30, + TextureSet.SET_FLUID + ); + + public static final Werkstoff antimonyPentachloride = new Werkstoff( + new short[]{0x15,0x93,0x2c}, + "Antimony Pentachloride", + subscriptNumbers("SbCl5"), + new Werkstoff.Stats(), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 31, + TextureSet.SET_FLUID + ); + + public static final Werkstoff antimonyPentafluoride = new Werkstoff( + new short[]{0x16,0xd5,0xe2}, + "Antimony Pentafluoride", + subscriptNumbers("SbF5"), + new Werkstoff.Stats(), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 32, + TextureSet.SET_FLUID + ); + + public static final Werkstoff fluoroantimonicAcid = new Werkstoff( + new short[]{0x16,0xd5,0xe2}, + "Fluoroantimonic Acid", + subscriptNumbers("HSbF6"), + new Werkstoff.Stats(), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 33, + TextureSet.SET_FLUID + ); + + public static final Werkstoff radioactiveSludge = new Werkstoff( + new short[]{0xb3,0x49,0x1e}, + "Radioactive Sludge", + ">>> DANGER <<<", + new Werkstoff.Stats().setRadioactive(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().onlyDust(), + OffsetID + 34, + TextureSet.SET_DULL + ); + + public static final Werkstoff acidNaquadahEmulsion = new Werkstoff( + new short[]{0x25,0x22,0x22}, + "Acid Naquadah Emulsion", + "??Nq??H"+CharExchanger.shifter(8314), + new Werkstoff.Stats().setRadioactive(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 35, + TextureSet.SET_FLUID + ); + + public static final Werkstoff naquadahEmulsion = new Werkstoff( + new short[]{0x4a,0x46,0x45}, + "Naquadah Emulsion", + "??Nq??", + new Werkstoff.Stats().setRadioactive(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 36, + TextureSet.SET_FLUID + ); + + public static final Werkstoff naquadahSolution = new Werkstoff( + new short[]{0x84,0x81,0x80}, + "Naquadah Solution", + "~Nq~", + new Werkstoff.Stats().setRadioactive(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 37, + TextureSet.SET_FLUID + ); + + public static final Werkstoff naquadahBasedFuelMkI = new Werkstoff( + new short[]{0x62,0x5c,0x5b}, + "Naquadah Based Liquid Fuel MkI", + new Werkstoff.Stats().setRadioactive(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 38, + TextureSet.SET_FLUID + ); + + public static final Werkstoff naquadahBasedFuelMkIDepleted = new Werkstoff( + new short[]{0xcb,0xc3,0xc1}, + "Naquadah Based Liquid Fuel MkI (Depleted)", + new Werkstoff.Stats().setToxic(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 39, + TextureSet.SET_FLUID + ); + + public static final Werkstoff naquadahBasedFuelMkII = new Werkstoff( + new short[]{0x52,0x4e,0x4d}, + "Naquadah Based Liquid Fuel MkII", + new Werkstoff.Stats().setRadioactive(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 40, + TextureSet.SET_FLUID + ); + + public static final Werkstoff naquadahBasedFuelMkIIDepleted = new Werkstoff( + new short[]{0xb5,0xb0,0xae}, + "Naquadah Based Liquid Fuel MkII (Depleted)", + new Werkstoff.Stats().setToxic(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 41, + TextureSet.SET_FLUID + ); + /*These materials will be enable when they are removed in GregTech*/ + /* + public static final Werkstoff praseodymium = new Werkstoff( + new short[]{0xff,0xff,0xff}, + "praseodymium", + "Pr", + new Werkstoff.Stats(), + Werkstoff.Types.ELEMENT, + new Werkstoff.GenerationFeatures().disable().onlyDust().addMolten().addMetalItems(), + OffsetID + 42, + TextureSet.SET_METALLIC + ); + + public static final Werkstoff rubidium = new Werkstoff( + new short[]{0xff,0x2a,0x00}, + "rubidium", + "Rb", + new Werkstoff.Stats(), + Werkstoff.Types.ELEMENT, + new Werkstoff.GenerationFeatures().disable().onlyDust().addMolten().addMetalItems(), + OffsetID + 43, + TextureSet.SET_SHINY + ); + + public static final Werkstoff thulium = new Werkstoff( + new short[]{0xff,0xff,0xff}, + "Thulium", + "Tm", + new Werkstoff.Stats(), + Werkstoff.Types.ELEMENT, + new Werkstoff.GenerationFeatures().disable().onlyDust().addMolten().addMetalItems(), + OffsetID + 44, + TextureSet.SET_METALLIC + ); + */ + public static final Werkstoff naquadahBasedFuelMkIII = new Werkstoff( + new short[]{0x29,0x22,0x21}, + "Naquadah Based Liquid Fuel MkIII", + new Werkstoff.Stats().setRadioactive(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 45, + TextureSet.SET_FLUID + ); + + public static final Werkstoff naquadahBasedFuelMkIIIDepleted = new Werkstoff( + new short[]{0x66,0x40,0x38}, + "Naquadah Based Liquid Fuel MkIII (Depleted)", + new Werkstoff.Stats().setToxic(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 46, + TextureSet.SET_FLUID + ); + + public static final Werkstoff naquadahBasedFuelMkIV = new Werkstoff( + new short[]{0x0e,0x0c,0x0c}, + "Naquadah Based Liquid Fuel MkIV", + new Werkstoff.Stats().setRadioactive(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 47, + TextureSet.SET_FLUID + ); + + public static final Werkstoff naquadahBasedFuelMkIVDepleted = new Werkstoff( + new short[]{0x8e,0x34,0x22}, + "Naquadah Based Liquid Fuel MkIV (Depleted)", + new Werkstoff.Stats().setToxic(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 48, + TextureSet.SET_FLUID + ); + + public static final Werkstoff naquadahBasedFuelMkV = new Werkstoff( + new short[]{0x00,0x00,0x00}, + "Naquadah Based Liquid Fuel MkV", + "THE END", + new Werkstoff.Stats().setRadioactive(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 49, + TextureSet.SET_FLUID + ); + + public static final Werkstoff naquadahBasedFuelMkVDepleted = new Werkstoff( + new short[]{0xff,0xff,0xff}, + "Naquadah Based Liquid Fuel MkV (Depleted)", + "THE END (literally)", + new Werkstoff.Stats().setToxic(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 50, + TextureSet.SET_FLUID + ); + + public static final Werkstoff zincChloride = new Werkstoff( + new short[]{0x73,0xa5,0xfc}, + "Zinc Chloride", + subscriptNumbers("ZnCl2"), + new Werkstoff.Stats(), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().onlyDust(), + OffsetID + 51, + TextureSet.SET_SHINY + ); + + public static final Werkstoff zincThoriumAlloy = new Werkstoff( + new short[]{0x12,0x34,0x56}, + "Zn-Th Alloy", + subscriptNumbers("ZnTh"), + new Werkstoff.Stats(), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().onlyDust().addMolten().addMetalItems(), + OffsetID + 52, + TextureSet.SET_SHINY, + new Pair<>(Zinc, 1), + new Pair<>(Thorium, 1) + ); + + //Naquadah Rework Materials + public static final Werkstoff naquadahEarth = new Werkstoff( + new short[]{0x4c,0x4c,0x4c}, + "Naquadah Oxide Mixture", + subscriptNumbers("??NqTiGaAd??"), + new Werkstoff.Stats(), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures(), + OffsetID + 53, + TextureSet.SET_METALLIC + ); + + public static final Werkstoff titaniumTrifluoride = new Werkstoff( + new short[]{0xc0,0x92,0xa8}, + "Titanium Trifluoride", + subscriptNumbers("TiF3"), + new Werkstoff.Stats().setElektrolysis(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().onlyDust(), + OffsetID + 54, + TextureSet.SET_METALLIC, + new Pair<> (Titanium, 1), + new Pair<> (Fluorine, 3) + ); + + public static final Werkstoff lowQualityNaquadahEmulsion = new Werkstoff( + new short[]{0x4c,0x4c,0x4c}, + "Low Quality Naquadah Emulsion", + subscriptNumbers("??NqGaAd??"), + new Werkstoff.Stats(), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 55, + TextureSet.SET_FLUID + ); + + public static final Werkstoff galliumHydroxide = new Werkstoff( + new short[]{0xa6,0xa6,0xa6}, + "Gallium Hydroxide", + subscriptNumbers("Ga(OH)3"), + new Werkstoff.Stats().setElektrolysis(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().onlyDust(), + OffsetID + 56, + TextureSet.SET_DULL, + new Pair<> (Gallium, 1), + new Pair<> (Oxygen, 3), + new Pair<> (Hydrogen, 3) + ); + + public static final Werkstoff lowQualityNaquadahSolution = new Werkstoff( + new short[]{0x71,0x62,0x62}, + "Low Quality Naquadah Solution", + subscriptNumbers("~??NqAd??~"), + new Werkstoff.Stats(), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 57, + TextureSet.SET_FLUID + ); + + public static final Werkstoff towEthyl1Hexanol = new Werkstoff( + new short[]{0x80,0xb5,0x57}, + "2-Ethyl-1-Hexanol", + subscriptNumbers("C8H18O"), + new Werkstoff.Stats().setElektrolysis(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 58, + TextureSet.SET_FLUID, + new Pair<> (Carbon, 8), + new Pair<> (Oxygen, 1), + new Pair<> (Hydrogen, 18) + ); + + public static final Werkstoff P507 = new Werkstoff( + new short[]{0x29,0xc2,0x2a}, + "P-507", + subscriptNumbers("(C8H17)2PO3H"), + new Werkstoff.Stats().setElektrolysis(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 59, + TextureSet.SET_FLUID, + new Pair<> (Carbon, 16), + new Pair<> (Phosphorus, 1), + new Pair<> (Oxygen, 3), + new Pair<> (Hydrogen, 35) + ); + + public static final Werkstoff naquadahAdamantiumSolution = new Werkstoff( + new short[]{0x3d,0x38,0x38}, + "Naquadah-Adamantium Solution", + subscriptNumbers("~NqAd~"), + new Werkstoff.Stats(), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 60, + TextureSet.SET_FLUID + ); + + public static final Werkstoff naquadahRichSolution = new Werkstoff( + new short[]{0x33,0x33,0x33}, + "Naquadah-Rich Solution", + subscriptNumbers("~?Nq?~"), + new Werkstoff.Stats(), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 61, + TextureSet.SET_FLUID + ); + + public static final Werkstoff naquadahine = new Werkstoff( + new short[]{0x33,0x33,0x33}, + "Naquadahine", + subscriptNumbers("NqO2"), + new Werkstoff.Stats().setElektrolysis(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().onlyDust(), + OffsetID + 62, + TextureSet.SET_METALLIC, + new Pair<> (Naquadah, 1), + new Pair<> (Oxygen, 2) + ); + + public static final Werkstoff fluorineRichWasteLiquid = new Werkstoff( + new short[]{0x13,0x68,0x62}, + "Fluorine-Rich Waste Liquid", + new Werkstoff.Stats().setToxic(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 63, + TextureSet.SET_FLUID + ); + + public static final Werkstoff wasteLiquid = new Werkstoff( + new short[]{0x14,0x1c,0x68}, + "Waste Liquid", + new Werkstoff.Stats().setToxic(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 64, + TextureSet.SET_FLUID + ); + + public static final Werkstoff adamantine = new Werkstoff( + new short[]{0xb7,0xb7,0xb7}, + "Adamantine", + subscriptNumbers("Ad2O3"), + new Werkstoff.Stats().setElektrolysis(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().onlyDust(), + OffsetID + 65, + TextureSet.SET_DULL, + new Pair<> (Adamantium, 2), + new Pair<> (Oxygen, 3) + ); + + public static final Werkstoff enrichedNaquadahEarth = new Werkstoff( + new short[]{0x82,0x68,0x68}, + "Enriched-Naquadah Oxide Mixture", + subscriptNumbers("??KeNq") + CharExchanger.shifter(8314) + "??", + new Werkstoff.Stats().setRadioactive(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures(), + OffsetID + 66, + TextureSet.SET_METALLIC + ); + + public static final Werkstoff triniumSulphate = new Werkstoff( + new short[]{0xda,0xda,0xda}, + "Trinium Sulphate", + subscriptNumbers("KeSO4"), + new Werkstoff.Stats().setElektrolysis(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().onlyDust(), + OffsetID + 67, + TextureSet.SET_METALLIC, + new Pair<> (Trinium, 1), + new Pair<> (Sulfur, 1), + new Pair<> (Oxygen, 4) + ); + + public static final Werkstoff enrichedNaquadahRichSolution = new Werkstoff( + new short[]{0x52,0x39,0x39}, + "Enriched-Naquadah-Rich Solution", + subscriptNumbers("~?Nq") + CharExchanger.shifter(8314) + "?~", + new Werkstoff.Stats().setRadioactive(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 68, + TextureSet.SET_FLUID + ); + + public static final Werkstoff concentratedEnrichedNaquadahSludge = new Werkstoff( + new short[]{0x52,0x39,0x39}, + "Concentrated Enriched-Naquadah Sludge", + subscriptNumbers("?Nq") + CharExchanger.shifter(8314) + "?", + new Werkstoff.Stats().setRadioactive(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().onlyDust(), + OffsetID + 69, + TextureSet.SET_METALLIC + ); + + public static final Werkstoff enrichedNaquadahSulphate = new Werkstoff( + new short[]{0x52,0x39,0x39}, + "Enriched-Naquadah Sulphate", + "Nq" + CharExchanger.shifter(8314) + subscriptNumbers("(SO4)2"), + new Werkstoff.Stats().setRadioactive(true).setElektrolysis(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().onlyDust(), + OffsetID + 70, + TextureSet.SET_DULL, + new Pair<>(NaquadahEnriched, 1), + new Pair<>(Sulfur, 2), + new Pair<>(Oxygen, 8) + ); + + public static final Werkstoff naquadriaEarth = new Werkstoff( + new short[]{0x4d,0x4d,0x55}, + "Naquadria Oxide Mixture", + subscriptNumbers("??Nq*BaIn??"), + new Werkstoff.Stats().setRadioactive(true).setToxic(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures(), + OffsetID + 71, + TextureSet.SET_METALLIC + ); + + public static final Werkstoff indiumPhosphate = new Werkstoff( + new short[]{0x2b,0x2e,0x70}, + "Indium Phosphate", + subscriptNumbers("InPO4"), + new Werkstoff.Stats().setToxic(true).setElektrolysis(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().onlyDust(), + OffsetID + 72, + TextureSet.SET_DULL, + new Pair<>(Indium, 1), + new Pair<>(Phosphorus, 1), + new Pair<>(Oxygen, 4) + ); + + public static final Werkstoff lowQualityNaquadriaPhosphate = new Werkstoff( + new short[]{0x4d,0x4d,0x55}, + "Low Quality Naquadria Phosphate", + subscriptNumbers("??Nq*3(PO4)4??"), + new Werkstoff.Stats().setRadioactive(true).setToxic(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().onlyDust(), + OffsetID + 73, + TextureSet.SET_DULL + ); + + public static final Werkstoff naquadriaRichSolution = new Werkstoff( + new short[]{0x1f,0x1e,0x33}, + "Naquadria-Rich Solution", + subscriptNumbers("~?Nq*?~"), + new Werkstoff.Stats().setRadioactive(true).setToxic(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 74, + TextureSet.SET_FLUID + ); + + public static final Werkstoff lowQualityNaquadriaSulphate = new Werkstoff( + new short[]{0x73,0x72,0x84}, + "Low Quality Naquadria Sulphate", + subscriptNumbers("??Nq*(SO4)2??"), + new Werkstoff.Stats().setRadioactive(true).setToxic(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().onlyDust(), + OffsetID + 75, + TextureSet.SET_METALLIC + ); + + public static final Werkstoff lowQualityNaquadriaSolution = new Werkstoff( + new short[]{0x73,0x72,0x84}, + "Low Quality Naquadria Sulphate", + subscriptNumbers("~??Nq*??~"), + new Werkstoff.Stats().setRadioactive(true).setToxic(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 76, + TextureSet.SET_FLUID + ); + + public static final Werkstoff naquadriaSulphate = new Werkstoff( + new short[]{0x1f,0x1e,0x33}, + "Naquadria Sulphate", + subscriptNumbers("Nq*(SO4)2"), + new Werkstoff.Stats().setRadioactive(true).setToxic(true).setElektrolysis(true), + Werkstoff.Types.COMPOUND, + new Werkstoff.GenerationFeatures().disable().onlyDust(), + OffsetID + 77, + TextureSet.SET_METALLIC, + new Pair<>(Naquadria, 1), + new Pair<>(Sulfur, 2), + new Pair<>(Oxygen, 8) + ); + + public static final Werkstoff naquadahGoo = new Werkstoff( + new short[]{0x4c,0x4c,0x4c}, + "Naquadah Goo", + subscriptNumbers("??NqTiGaAd??"), + new Werkstoff.Stats(), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 78, + TextureSet.SET_FLUID + ); + + public static final Werkstoff enrichedNaquadahGoo = new Werkstoff( + new short[]{0x82,0x68,0x68}, + "Enriched Naquadah Goo", + subscriptNumbers("??KeNq") + CharExchanger.shifter(8314) + "??", + new Werkstoff.Stats().setRadioactive(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 79, + TextureSet.SET_FLUID + ); + + public static final Werkstoff naquadriaGoo = new Werkstoff( + new short[]{0x4d,0x4d,0x55}, + "Naquadria Goo", + subscriptNumbers("??Nq*BaIn??"), + new Werkstoff.Stats().setRadioactive(true).setToxic(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().disable().addCells(), + OffsetID + 80, + TextureSet.SET_FLUID + ); + + //material for reactor stuff + public static final Werkstoff zircaloy4 = new Werkstoff( + new short[]{0x8a,0x6e,0x68}, + "Zircaloy-4", + subscriptNumbers("Zr34Sn5Fe2Cr"), + new Werkstoff.Stats().setCentrifuge(true).setBlastFurnace(true).setMeltingPoint(2800), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().onlyDust().addMolten().addMetalItems().addCraftingMetalWorkingItems().addSimpleMetalWorkingItems().addMixerRecipes((short) 4), + OffsetID + 81, + TextureSet.SET_METALLIC, + new Pair<>(WerkstoffLoader.Zirconium, 34), + new Pair<>(Tin, 5), + new Pair<>(Iron, 2), + new Pair<>(Chrome, 1) + ); + + public static final Werkstoff zircaloy2 = new Werkstoff( + new short[]{0xa4,0x8f,0x8b}, + "Zircaloy-2", + subscriptNumbers("Zr34Sn4FeCrNi"), + new Werkstoff.Stats().setCentrifuge(true).setBlastFurnace(true).setMeltingPoint(2800), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().onlyDust().addMolten().addMetalItems().addCraftingMetalWorkingItems().addSimpleMetalWorkingItems().addMixerRecipes((short) 2), + OffsetID + 82, + TextureSet.SET_METALLIC, + new Pair<>(WerkstoffLoader.Zirconium, 34), + new Pair<>(Tin, 4), + new Pair<>(Iron, 1), + new Pair<>(Chrome, 1), + new Pair<>(Nickel, 1) + ); + + public static final Werkstoff incoloy903 = new Werkstoff( + new short[]{0xa4,0x8f,0x8b}, + "Incoloy-903", + subscriptNumbers("Fe12Ni10Co8Ti4Mo2Al"), + new Werkstoff.Stats().setCentrifuge(true).setBlastFurnace(true).setMeltingPoint(3700).setGas(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().onlyDust().addMolten().addMetalItems().addCraftingMetalWorkingItems().addSimpleMetalWorkingItems().addMixerRecipes((short) 6), + OffsetID + 83, + TextureSet.SET_METALLIC, + new Pair<>(Iron, 12), + new Pair<>(Nickel, 10), + new Pair<>(Cobalt, 8), + new Pair<>(Titanium, 4), + new Pair<>(Molybdenum, 2), + new Pair<>(Aluminium, 1) + ); + + public static final Werkstoff adamantiumAlloy = new Werkstoff( + new short[]{0xa0,0xa0,0xa0}, + "Adamantium Alloy", + subscriptNumbers("Ad5Nq2La3"), + new Werkstoff.Stats().setCentrifuge(true).setBlastFurnace(true).setMeltingPoint(5000).setGas(true), + Werkstoff.Types.MIXTURE, + new Werkstoff.GenerationFeatures().onlyDust().addMolten().addMetalItems().addCraftingMetalWorkingItems().addSimpleMetalWorkingItems().addMixerRecipes((short) 3), + OffsetID + 84, + TextureSet.SET_SHINY, + new Pair<>(Adamantium, 5), + new Pair<>(Naquadah, 2), + new Pair<>(Lanthanum, 3) + ); + + @Override + public void run() { } +} diff --git a/src/main/java/goodgenerator/items/RadioactiveItem.java b/src/main/java/goodgenerator/items/RadioactiveItem.java new file mode 100644 index 0000000000..81ed7aa98a --- /dev/null +++ b/src/main/java/goodgenerator/items/RadioactiveItem.java @@ -0,0 +1,40 @@ +package goodgenerator.items; + +import gregtech.api.util.GT_Utility; +import ic2.core.IC2Potion; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; + +public class RadioactiveItem extends MyItems{ + + protected final int mRadio; + + public RadioactiveItem(String name, CreativeTabs Tab, int Rad) { + super(name, Tab); + this.mRadio = Rad; + } + + public RadioactiveItem(String name, String[] tooltip, CreativeTabs Tab, int Rad) { + super(name, tooltip, Tab); + this.mRadio = Rad; + } + + public RadioactiveItem(String name, String tooltip, CreativeTabs Tab, int Rad) { + super(name, tooltip, Tab); + this.mRadio = Rad; + } + + @Override + public void onUpdate(ItemStack aStack, World aWorld, Entity aPlayer, int aTimer, boolean aIsInHand) { + super.onUpdate(aStack, aWorld, aPlayer, aTimer, aIsInHand); + EntityLivingBase tPlayer = (EntityPlayer) aPlayer; + if (!GT_Utility.isWearingFullRadioHazmat(tPlayer)) + tPlayer.addPotionEffect(new PotionEffect(IC2Potion.radiation.id, mRadio, 4)); + } + +} diff --git a/src/main/java/goodgenerator/items/nuclear/IsotopeMaterial.java b/src/main/java/goodgenerator/items/nuclear/IsotopeMaterial.java new file mode 100644 index 0000000000..3d3d36cee0 --- /dev/null +++ b/src/main/java/goodgenerator/items/nuclear/IsotopeMaterial.java @@ -0,0 +1,55 @@ +package goodgenerator.items.nuclear; + +import goodgenerator.loader.Loaders; +import net.minecraft.item.ItemStack; + +import java.util.HashMap; +import java.util.HashSet; + +public class IsotopeMaterial { + + public static final HashSet<IsotopeMaterial> mIsotopeMaterial = new HashSet<>(); + public static final HashMap<Integer, IsotopeMaterial> mIDMap = new HashMap<>(); + public static final HashMap<String, IsotopeMaterial> mNameMap = new HashMap<>(); + + public final int mID; + public final int mNeutron; + public final String mName; + public final String mLocalizedName; + public final String mMaterialName; + public final short[] mRGB; + public final NuclearTextures mTexture; + + public IsotopeMaterial(int aID, String aName, String aMaterialName, String aLocalizedName, NuclearTextures aTexture, int aR, int aG, int aB, int aNeutron) { + this.mID = aID; + this.mNeutron = aNeutron; + this.mName = aName; + this.mMaterialName = aMaterialName; + this.mLocalizedName = aLocalizedName; + this.mRGB = new short[] {(short) aR,(short) aG,(short) aB, 0}; + this.mTexture = aTexture; + mIsotopeMaterial.add(this); + mIDMap.put(this.mID, this); + mNameMap.put(this.mName, this); + } + + public ItemStack getFull(int aAmount) { + if (aAmount > 64) aAmount = 64; + return new ItemStack(Loaders.Isotope, aAmount, mID + 1000); + } + + public ItemStack getTiny(int aAmount) { + if (aAmount > 64) aAmount = 64; + return new ItemStack(Loaders.Isotope, aAmount, mID + 2000); + } + + public ItemStack getFullOxide(int aAmount) { + if (aAmount > 64) aAmount = 64; + return new ItemStack(Loaders.Isotope, aAmount, mID + 3000); + } + + public ItemStack getTinyOxide(int aAmount) { + if (aAmount > 64) aAmount = 64; + return new ItemStack(Loaders.Isotope, aAmount, mID + 4000); + } +} diff --git a/src/main/java/goodgenerator/items/nuclear/IsotopeMaterialLoader.java b/src/main/java/goodgenerator/items/nuclear/IsotopeMaterialLoader.java new file mode 100644 index 0000000000..75c2dba39c --- /dev/null +++ b/src/main/java/goodgenerator/items/nuclear/IsotopeMaterialLoader.java @@ -0,0 +1,16 @@ +package goodgenerator.items.nuclear; + +public class IsotopeMaterialLoader implements Runnable { + + protected static final int OffsetID = 0; + + public static final IsotopeMaterial Thorium232 = new IsotopeMaterial( + OffsetID, + "Thorium232", "Thorium", "Thorium-232", + NuclearTextures.STABLE1, 59, 59, 59, + 232 + ); + + @Override + public void run() { } +} diff --git a/src/main/java/goodgenerator/items/nuclear/NuclearMetaItemGenerator.java b/src/main/java/goodgenerator/items/nuclear/NuclearMetaItemGenerator.java new file mode 100644 index 0000000000..bd530699b3 --- /dev/null +++ b/src/main/java/goodgenerator/items/nuclear/NuclearMetaItemGenerator.java @@ -0,0 +1,103 @@ +package goodgenerator.items.nuclear; + +import com.github.bartimaeusnek.bartworks.util.Pair; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import goodgenerator.main.GoodGenerator; +import gregtech.api.interfaces.IIconContainer; +import gregtech.api.items.GT_MetaGenerated_Item; +import gregtech.api.util.GT_LanguageManager; +import gregtech.api.util.GT_OreDictUnificator; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +import java.util.List; + +import static goodgenerator.items.nuclear.IsotopeMaterial.mIDMap; +import static goodgenerator.items.nuclear.IsotopeMaterial.mIsotopeMaterial; + +public class NuclearMetaItemGenerator extends GT_MetaGenerated_Item { + + /** + * <p>Full ingot - 1000 + * <p>Tiny ingot - 2000 + * <p>Full-Oxide - 3000 + * <p>Tiny-Oxide - 4000 + */ + public static final Pair<Integer, String>[] TYPE_OFFSET = new Pair[] { + new Pair<>(1000, "%s"), + new Pair<>(2000, "Tiny of %s"), + new Pair<>(3000, "%s Oxide"), + new Pair<>(4000, "Tiny of %s Oxide"), + }; + public static final Pair<Integer, String>[] OREPREFIX = new Pair[] { + new Pair<>(1000, "item%s"), + new Pair<>(2000, "itemTiny%s"), + new Pair<>(3000, "item%sOxide"), + new Pair<>(4000, "itemTiny%sOxide"), + }; + + public NuclearMetaItemGenerator() { + super("nuclearIsotopeMaterial", (short) 32766, (short) 0); + this.setCreativeTab(GoodGenerator.GG); + for (IsotopeMaterial tIsotope : mIsotopeMaterial) { + for (Pair<Integer, String> tType : TYPE_OFFSET) { + int tOffset = tType.getKey(); + String tOreName = tType.getValue(); + ItemStack tStack = new ItemStack(this, 1, tIsotope.mID + tOffset); + GT_LanguageManager.addStringLocalization(this.getUnlocalizedName(tStack) + ".name", String.format(tOreName, tIsotope.mLocalizedName)); + GT_LanguageManager.addStringLocalization(this.getUnlocalizedName(tStack) + ".tooltip", String.format("§b%s's Isotope.§r", tIsotope.mMaterialName)); + } + for (Pair<Integer, String> tOreDict : OREPREFIX) { + int tOffset = tOreDict.getKey(); + String tOreName = tOreDict.getValue(); + ItemStack tStack = new ItemStack(this, 1, tIsotope.mID + tOffset); + GT_OreDictUnificator.registerOre(String.format(tOreName, tIsotope.mName), tStack); + } + } + } + + @Override + public String getItemStackDisplayName(ItemStack aStack) { + return GT_LanguageManager.getTranslation(this.getUnlocalizedName(aStack) + ".name"); + } + + @Override + public IIconContainer getIconContainer(int aMetaData) { + int tID = aMetaData % 1000; + int tType = aMetaData / 1000 - 1; + IsotopeMaterial tMaterial = mIDMap.get(tID); + if (tMaterial != null) { + return tMaterial.mTexture.mTextures[tType]; + } + return null; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item var1, CreativeTabs aCreativeTab, List aList) { + for (IsotopeMaterial tIsotope : mIsotopeMaterial) { + for (int i = 1; i <= 4; i ++) { + ItemStack tStack = new ItemStack(this, 1, tIsotope.mID + i * 1000); + aList.add(tStack); + } + } + } + + @Override + public short[] getRGBa(ItemStack aStack) { + int tID = aStack.getItemDamage() % 1000; + IsotopeMaterial tMaterial = mIDMap.get(tID); + if (tMaterial != null) { + return tMaterial.mRGB; + } + return null; + } + + @Override + public final IIcon getIconFromDamage(int aMetaData) { + return this.getIconContainer(aMetaData).getIcon(); + } +} diff --git a/src/main/java/goodgenerator/items/nuclear/NuclearTextures.java b/src/main/java/goodgenerator/items/nuclear/NuclearTextures.java new file mode 100644 index 0000000000..b68c31a014 --- /dev/null +++ b/src/main/java/goodgenerator/items/nuclear/NuclearTextures.java @@ -0,0 +1,31 @@ +package goodgenerator.items.nuclear; + +import gregtech.api.enums.Textures; +import gregtech.api.interfaces.IIconContainer; + +public class NuclearTextures { + public static final NuclearTextures + STABLE1 = new NuclearTextures("stable1"), + STABLE2 = new NuclearTextures("stable2"), + UNSTABLE1 = new NuclearTextures("unstable1"), + UNSTABLE2 = new NuclearTextures("unstable2"), + UNSTABLE3 = new NuclearTextures("unstable3"), + UNSTABLE4 = new NuclearTextures("unstable4"); + + public final IIconContainer[] mTextures = new IIconContainer[4]; + public final String mSetName; + public static final String mTextureDir = "icons/isotope/"; + public static final int + FULL = 0, + TINY = 1, + FULL_OXIDE = 2, + TINY_OXIDE = 3; + + public NuclearTextures(String aName) { + mSetName = aName; + mTextures[0] = new Textures.ItemIcons.CustomIcon(mTextureDir + aName); + mTextures[1] = new Textures.ItemIcons.CustomIcon(mTextureDir + aName + "tiny"); + mTextures[2] = new Textures.ItemIcons.CustomIcon(mTextureDir + aName); + mTextures[3] = new Textures.ItemIcons.CustomIcon(mTextureDir + aName + "tiny"); + } +} |