aboutsummaryrefslogtreecommitdiff
path: root/src/Java
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java')
-rw-r--r--src/Java/gtPlusPlus/GTplusplus.java10
-rw-r--r--src/Java/gtPlusPlus/core/block/ModBlocks.java7
-rw-r--r--src/Java/gtPlusPlus/core/block/base/BasicBlock.java4
-rw-r--r--src/Java/gtPlusPlus/core/fluids/BlockFluidBase.java107
-rw-r--r--src/Java/gtPlusPlus/core/fluids/FluidRegistryHandler.java (renamed from src/Java/gtPlusPlus/core/block/general/fluids/FluidRegistryHandler.java)4
-rw-r--r--src/Java/gtPlusPlus/core/fluids/GenericFluid.java66
-rw-r--r--src/Java/gtPlusPlus/core/item/ModItems.java93
-rw-r--r--src/Java/gtPlusPlus/core/item/base/dusts/BaseItemDust.java182
-rw-r--r--src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockFluid.java78
-rw-r--r--src/Java/gtPlusPlus/core/lib/CORE.java2
-rw-r--r--src/Java/gtPlusPlus/core/lib/MaterialInfo.java31
-rw-r--r--src/Java/gtPlusPlus/core/material/ALLOY.java479
-rw-r--r--src/Java/gtPlusPlus/core/material/ELEMENT.java85
-rw-r--r--src/Java/gtPlusPlus/core/material/Material.java154
-rw-r--r--src/Java/gtPlusPlus/core/material/MaterialStack.java72
-rw-r--r--src/Java/gtPlusPlus/core/proxy/ClientProxy.java1
-rw-r--r--src/Java/gtPlusPlus/core/util/Utils.java42
-rw-r--r--src/Java/gtPlusPlus/core/util/fluid/FluidUtils.java247
-rw-r--r--src/Java/gtPlusPlus/core/util/item/UtilsItems.java85
-rw-r--r--src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java34
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java24
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/items/Gregtech_MetaTool.java291
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/recipe/ProcessingSkookumChoocherToolRecipes.java7
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/Meta_GT_Proxy.java10
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/blocks/fluid/GregtechFluidHandler.java25
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGtTools.java59
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/items/MetaGeneratedGregtechTools.java48
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/items/behaviours/Behaviour_Choocher.java45
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_TieredTank.java18
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_Base.java16
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_BaseMultiblockItem.java49
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_Choocher.java50
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_MaxEfficiencyMultiBlockItem.java27
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/loaders/ProcessingToolHeadChoocher.java84
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechRocketFuelGenerator.java45
35 files changed, 1922 insertions, 659 deletions
diff --git a/src/Java/gtPlusPlus/GTplusplus.java b/src/Java/gtPlusPlus/GTplusplus.java
index 59f7c4e889..caa293fbed 100644
--- a/src/Java/gtPlusPlus/GTplusplus.java
+++ b/src/Java/gtPlusPlus/GTplusplus.java
@@ -23,6 +23,7 @@ import gtPlusPlus.core.util.item.UtilsItems;
import gtPlusPlus.core.util.math.MathUtils;
import gtPlusPlus.xmod.gregtech.HANDLER_GT;
import gtPlusPlus.xmod.gregtech.common.Meta_GT_Proxy;
+import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtTools;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -98,7 +99,7 @@ implements ActionListener
String infusedDust3 = "dustInfused"+infusedDusts[c];
String infusedDust4 = "dustInfused"+infusedDusts[d];
Utils.LOG_INFO("Found the aspect of "+infusedDusts[a]+" to embody into energy crystals.");
- Utils.LOG_INFO("Found the aspect of "+infusedDusts[b]+" to embody into energy crystals.");
+ Utils.LOG_INFO("Found the aspect of "+infusedDusts[b]+" to embody into eshonergy crystals.");
Utils.LOG_INFO("Found the aspect of "+infusedDusts[c]+" to embody into energy crystals.");
Utils.LOG_INFO("Found the aspect of "+infusedDusts[d]+" to embody into energy crystals.");
randomDust_A = infusedDust1;
@@ -108,7 +109,12 @@ implements ActionListener
//ItemStack a1 = UtilsItems.getItemStackOfAmountFromOreDict("dustInfused"+infusedDusts[a], 8);
//ItemStack b1 = UtilsItems.getItemStackOfAmountFromOreDict("dustInfused"+infusedDusts[b], 8);
//ItemStack c1 = UtilsItems.getItemStackOfAmountFromOreDict("dustInfused"+infusedDusts[c], 8);
- //ItemStack d1 = UtilsItems.getItemStackOfAmountFromOreDict("dustInfused"+infusedDusts[d], 8);
+ //ItemStack d1 = UtilsItems.getItemStackOfAmountFromOreDict("dustInfused"+infusedDusts[d], 8);
+
+
+ //Do this weird things for textures.
+ Utils.LOG_WARNING("Processing texture: "+TexturesGtTools.SKOOKUM_CHOOCHER.getTextureFile().getResourcePath());
+
}
diff --git a/src/Java/gtPlusPlus/core/block/ModBlocks.java b/src/Java/gtPlusPlus/core/block/ModBlocks.java
index ceb8880299..de4520fee9 100644
--- a/src/Java/gtPlusPlus/core/block/ModBlocks.java
+++ b/src/Java/gtPlusPlus/core/block/ModBlocks.java
@@ -1,7 +1,7 @@
package gtPlusPlus.core.block;
import gtPlusPlus.core.block.general.LightGlass;
-import gtPlusPlus.core.block.general.fluids.FluidRegistryHandler;
+import gtPlusPlus.core.fluids.FluidRegistryHandler;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.xmod.gregtech.common.blocks.GregtechMetaCasingBlocks;
@@ -25,10 +25,7 @@ public final class ModBlocks {
public static Block MatterFabricatorEffectBlock;
public static Fluid fluidJackDaniels = new Fluid("fluidJackDaniels");
- public static Block blockFluidJackDaniels;
- public static Block blockGtFrameStaballoy;
- public static Block blockGtFrameTantalloy60;
- public static Block blockGtFrameTantalloy61;
+ public static Block blockFluidJackDaniels;
diff --git a/src/Java/gtPlusPlus/core/block/base/BasicBlock.java b/src/Java/gtPlusPlus/core/block/base/BasicBlock.java
index cd879167ba..c95f37d9c5 100644
--- a/src/Java/gtPlusPlus/core/block/base/BasicBlock.java
+++ b/src/Java/gtPlusPlus/core/block/base/BasicBlock.java
@@ -8,7 +8,7 @@ import net.minecraft.block.material.Material;
public class BasicBlock extends Block {
- public BasicBlock(String unlocalizedName, Material material) {
+ public BasicBlock(final String unlocalizedName, final Material material) {
super(material);
this.setBlockName(Utils.sanitizeString(unlocalizedName));
this.setBlockTextureName(CORE.MODID + ":" + unlocalizedName);
@@ -28,7 +28,7 @@ public class BasicBlock extends Block {
private String TEXTURE_NAME;
private String HARVEST_TOOL;
private SoundType soundOfBlock;
- private BlockTypes (String textureName, String harvestTool, SoundType blockSound)
+ private BlockTypes (final String textureName, final String harvestTool, final SoundType blockSound)
{
this.TEXTURE_NAME = textureName;
this.HARVEST_TOOL = harvestTool;
diff --git a/src/Java/gtPlusPlus/core/fluids/BlockFluidBase.java b/src/Java/gtPlusPlus/core/fluids/BlockFluidBase.java
new file mode 100644
index 0000000000..ebd84f9654
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/fluids/BlockFluidBase.java
@@ -0,0 +1,107 @@
+package gtPlusPlus.core.fluids;
+
+import gtPlusPlus.core.creative.AddToCreativeTab;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.material.Material;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.math.MathUtils;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.util.IIcon;
+import net.minecraft.world.IBlockAccess;
+import net.minecraft.world.World;
+import net.minecraftforge.fluids.BlockFluidClassic;
+import net.minecraftforge.fluids.Fluid;
+import cpw.mods.fml.common.registry.LanguageRegistry;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+
+public class BlockFluidBase extends BlockFluidClassic {
+
+ @SideOnly(Side.CLIENT)
+ protected IIcon stillIcon;
+ @SideOnly(Side.CLIENT)
+ protected IIcon flowingIcon;
+
+ protected int colour;
+ protected Material fluidMaterial;
+ final String displayName;
+
+ @SuppressWarnings("deprecation")
+ public BlockFluidBase(Fluid fluid, Material material) {
+ super(fluid, net.minecraft.block.material.Material.water);
+ short[] tempColour = material.getRGBA();
+ this.colour = Utils.rgbtoHexValue(tempColour[0], tempColour[1], tempColour[2]);
+ this.fluidMaterial = material;
+ setCreativeTab(AddToCreativeTab.tabOther);
+ this.displayName = material.getLocalizedName();
+ LanguageRegistry.addName(this, "Molten "+displayName+" ["+MathUtils.celsiusToKelvin(fluidMaterial.getBoilingPoint_C())+"K]");
+ this.setBlockName(GetProperName());
+ }
+
+ @SuppressWarnings("deprecation")
+ public BlockFluidBase(String fluidName, Fluid fluid, short[] colour) {
+ super(fluid, net.minecraft.block.material.Material.water);
+ short[] tempColour = colour;
+ this.colour = Utils.rgbtoHexValue(tempColour[0], tempColour[1], tempColour[2]);
+ setCreativeTab(AddToCreativeTab.tabOther);
+ this.displayName = fluidName;
+ LanguageRegistry.addName(this, "Molten "+displayName);
+ this.setBlockName(GetProperName());
+ }
+
+ @Override
+ public IIcon getIcon(int side, int meta) {
+ return (side == 0 || side == 1)? stillIcon : flowingIcon;
+ }
+
+ @SideOnly(Side.CLIENT)
+ @Override
+ public void registerBlockIcons(IIconRegister register) {
+ stillIcon = register.registerIcon(CORE.MODID+":fluids/fluid.molten.autogenerated");
+ flowingIcon = register.registerIcon(CORE.MODID+":fluids/fluid.molten.autogenerated");
+ }
+
+ @Override
+ public boolean canDisplace(IBlockAccess world, int x, int y, int z) {
+ if (world.getBlock(x, y, z).getMaterial().isLiquid()) return false;
+ return super.canDisplace(world, x, y, z);
+ }
+
+ @Override
+ public boolean displaceIfPossible(World world, int x, int y, int z) {
+ if (world.getBlock(x, y, z).getMaterial().isLiquid()) return false;
+ return super.displaceIfPossible(world, x, y, z);
+ }
+
+ @Override
+ public int colorMultiplier(IBlockAccess par1IBlockAccess, int par2, int par3, int par4){
+
+ if (this.colour == 0){
+ return MathUtils.generateSingularRandomHexValue();
+ }
+
+ return this.colour;
+ }
+
+ @Override
+ public int getRenderColor(int aMeta) {
+ if (this.colour == 0){
+ return MathUtils.generateSingularRandomHexValue();
+ }
+
+ return this.colour;
+ }
+
+ public String GetProperName() {
+ String tempIngot;
+
+ tempIngot = "Molten "+displayName;
+
+ return tempIngot;
+ }
+
+ public Material getFluidMaterial(){
+ return fluidMaterial;
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/core/block/general/fluids/FluidRegistryHandler.java b/src/Java/gtPlusPlus/core/fluids/FluidRegistryHandler.java
index bda2aae35b..477d5da944 100644
--- a/src/Java/gtPlusPlus/core/block/general/fluids/FluidRegistryHandler.java
+++ b/src/Java/gtPlusPlus/core/fluids/FluidRegistryHandler.java
@@ -1,7 +1,8 @@
-package gtPlusPlus.core.block.general.fluids;
+package gtPlusPlus.core.fluids;
import static gtPlusPlus.core.block.ModBlocks.blockFluidJackDaniels;
import static gtPlusPlus.core.block.ModBlocks.fluidJackDaniels;
+import gtPlusPlus.core.block.general.fluids.BlockFluidJackDaniels;
import gtPlusPlus.core.lib.CORE;
import net.minecraft.block.material.Material;
import net.minecraftforge.fluids.FluidRegistry;
@@ -29,6 +30,7 @@ public class FluidRegistryHandler {
run();
}
+ @SuppressWarnings("unused")
private static void run(){
fluidJackDaniels();
}
diff --git a/src/Java/gtPlusPlus/core/fluids/GenericFluid.java b/src/Java/gtPlusPlus/core/fluids/GenericFluid.java
new file mode 100644
index 0000000000..1780cb8577
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/fluids/GenericFluid.java
@@ -0,0 +1,66 @@
+package gtPlusPlus.core.fluids;
+
+import gtPlusPlus.core.item.base.itemblock.ItemBlockFluid;
+import gtPlusPlus.core.material.Material;
+import net.minecraft.block.Block;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidRegistry;
+import cpw.mods.fml.common.registry.GameRegistry;
+
+public class GenericFluid extends Fluid{
+
+ protected final String fluidName;
+ protected final Fluid fluidFactory;
+ protected final Block blockFactory;
+ protected final short[] rgba;
+
+ public GenericFluid(String displayName, String fluidName, int luminosity, int density, int temperature, int viscosity, boolean isGas, short[] rgba) {
+ super(fluidName);
+ fluidFactory = this;
+ this.rgba = rgba;
+ this.fluidName = fluidName;
+ fluidFactory.setLuminosity(luminosity);
+ fluidFactory.setDensity(density);
+ fluidFactory.setTemperature(temperature);
+ fluidFactory.setViscosity(viscosity);
+ fluidFactory.setGaseous(isGas);
+ fluidFactory.setUnlocalizedName("fluid"+fluidName);
+ FluidRegistry.registerFluid(fluidFactory);
+ blockFactory = new BlockFluidBase(displayName, fluidFactory, rgba).setBlockName("fluidblock"+fluidName);
+ GameRegistry.registerBlock(blockFactory, ItemBlockFluid.class, blockFactory.getUnlocalizedName().substring(5));
+
+ //fluidFactory.setUnlocalizedName(blockFactory.getUnlocalizedName());
+
+ }
+
+ public GenericFluid(Material fluidMaterial, int luminosity, int density, int temperature, int viscosity, boolean isGas) {
+
+ super(fluidMaterial.getUnlocalizedName());
+ //IC2_ItemFluidCell fullFluidCell = emptyCell.fill(emptyCell, FluidUtils.getFluidStack(getUnlocalizedName(), 1), true);
+
+ fluidFactory = this;
+ this.rgba = fluidMaterial.getRGBA();
+ this.fluidName = fluidMaterial.getUnlocalizedName();
+ fluidFactory.setLuminosity(luminosity);
+ fluidFactory.setDensity(density);
+ fluidFactory.setTemperature(temperature);
+ fluidFactory.setViscosity(viscosity);
+ fluidFactory.setGaseous(isGas);
+ fluidFactory.setUnlocalizedName("fluid"+fluidName);
+ FluidRegistry.registerFluid(fluidFactory);
+ blockFactory = new BlockFluidBase(fluidFactory, fluidMaterial).setBlockName("fluidblock"+fluidName);
+ GameRegistry.registerBlock(blockFactory, ItemBlockFluid.class, blockFactory.getUnlocalizedName().substring(5));
+ //IC2_ItemFluidCell emptyCell = new IC2_ItemFluidCell(fluidName);
+ /*if (aFullContainer != null && aEmptyContainer != null && !FluidContainerRegistry.registerFluidContainer(new FluidStack(rFluid, aFluidAmount), aFullContainer, aEmptyContainer)) {
+ GT_Values.RA.addFluidCannerRecipe(aFullContainer, container(aFullContainer, false), null, new FluidStack(rFluid, aFluidAmount));
+ }*/
+ //fluidFactory.setUnlocalizedName(blockFactory.getUnlocalizedName());
+
+ }
+
+ @Override
+ public int getColor() {
+ return Math.max(0, Math.min(255, this.rgba[0])) << 16 | Math.max(0, Math.min(255, this.rgba[1])) << 8 | Math.max(0, Math.min(255, this.rgba[2]));
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/core/item/ModItems.java b/src/Java/gtPlusPlus/core/item/ModItems.java
index aafe02d470..1737b6ea4a 100644
--- a/src/Java/gtPlusPlus/core/item/ModItems.java
+++ b/src/Java/gtPlusPlus/core/item/ModItems.java
@@ -2,6 +2,7 @@ package gtPlusPlus.core.item;
import static gtPlusPlus.core.creative.AddToCreativeTab.tabMachines;
import static gtPlusPlus.core.creative.AddToCreativeTab.tabMisc;
import static gtPlusPlus.core.lib.CORE.LOAD_ALL_CONTENT;
+import static gtPlusPlus.core.util.item.UtilsItems.generateItemsFromMaterial;
import gregtech.api.enums.Materials;
import gregtech.api.util.GT_OreDictUnificator;
import gtPlusPlus.core.creative.AddToCreativeTab;
@@ -25,13 +26,15 @@ import gtPlusPlus.core.item.tool.staballoy.StaballoyPickaxe;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.lib.CORE.configSwitches;
import gtPlusPlus.core.lib.LoadedMods;
-import gtPlusPlus.core.lib.MaterialInfo;
+import gtPlusPlus.core.material.ALLOY;
+import gtPlusPlus.core.material.ELEMENT;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.debug.DEBUG_INIT;
import gtPlusPlus.core.util.item.UtilsItems;
import net.minecraft.item.Item;
import net.minecraft.item.Item.ToolMaterial;
import net.minecraft.item.ItemFood;
+import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.EnumHelper;
import cpw.mods.fml.common.registry.GameRegistry;
public final class ModItems {
@@ -105,7 +108,9 @@ public final class ModItems {
public static Item itemPersonalCloakingDeviceCharged;
public static Item itemPersonalHealingDevice;
- public static MultiPickaxeBase MP_GTMATERIAL;
+ public static MultiPickaxeBase MP_GTMATERIAL;
+
+ public static ItemStack FluidCell;
public static BaseItemBackpack backpack_Red;
public static BaseItemBackpack backpack_Green;
@@ -162,53 +167,65 @@ public final class ModItems {
//Start meta Item Generation
ItemsFoods.load();
- UtilsItems.generateItemsFromMaterial("EnergyCrystal", "Energy Crystal", 8, MaterialInfo.ENERGYCRYSTAL, Utils.rgbtoHexValue(228, 225, 0), true);
- UtilsItems.generateItemsFromMaterial("BloodSteel", "Blood Steel", 3, MaterialInfo.BLOODSTEEL, Utils.rgbtoHexValue(142, 28, 0), false);
- UtilsItems.generateItemsFromMaterial("Staballoy", "Staballoy", 6, MaterialInfo.STABALLOY, Utils.rgbtoHexValue(68, 75, 66), true);
- UtilsItems.generateItemsFromMaterial("Tantalloy60", "Tantalloy-60", 5, MaterialInfo.TANTALLOY60, Utils.rgbtoHexValue(68, 75, 166), true);
- UtilsItems.generateItemsFromMaterial("Tantalloy61", "Tantalloy-61", 6, MaterialInfo.TANTALLOY61, Utils.rgbtoHexValue(122, 135, 196), true);
- UtilsItems.generateItemsFromMaterial("Bedrockium", "Bedrockium", 9, MaterialInfo.BEDROCKIUM, Utils.rgbtoHexValue(32, 32, 32), false);
- UtilsItems.generateItemsFromMaterial("Quantum", "Quantum", 10, MaterialInfo.QUANTUM, Utils.rgbtoHexValue(128, 128, 128), true);
+ try{
+ generateItemsFromMaterial(ALLOY.ENERGYCRYSTAL);
+ generateItemsFromMaterial(ALLOY.BLOODSTEEL);
+ generateItemsFromMaterial(ALLOY.STABALLOY);
+ generateItemsFromMaterial(ALLOY.TANTALLOY_60);
+ generateItemsFromMaterial(ALLOY.TANTALLOY_61);
+ generateItemsFromMaterial(ALLOY.BEDROCKIUM);
+ generateItemsFromMaterial(ALLOY.QUANTUM);
- UtilsItems.generateItemsFromMaterial("Inconel625", "Inconel-625", 4, MaterialInfo.INCONEL625, Utils.rgbtoHexValue(128, 200, 128), true); //Inconel 625: Acid resistant, good weldability. The LCF version is typically used in bellows.
- UtilsItems.generateItemsFromMaterial("Inconel690", "Inconel-690", 6, MaterialInfo.INCONEL690, Utils.rgbtoHexValue(118, 220, 138), true); //Inconel 690: Low cobalt content for nuclear applications, and low resistivity.
- UtilsItems.generateItemsFromMaterial("Inconel792", "Inconel-792", 5, MaterialInfo.INCONEL792, Utils.rgbtoHexValue(108, 240, 118), true); //Inconel 792: Increased aluminium content for improved high temperature corrosion properties, used especially in gas turbines.
-
+ generateItemsFromMaterial(ALLOY.INCONEL_625);
+ generateItemsFromMaterial(ALLOY.INCONEL_690);
+ generateItemsFromMaterial(ALLOY.INCONEL_792);
if (!CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK){
- UtilsItems.generateItemsFromMaterial("TungstenCarbide", "Tungsten Carbide", 5, MaterialInfo.TUNGSTENCARBIDE, Utils.rgbtoHexValue(44, 44, 44), true);
+ generateItemsFromMaterial(ALLOY.TUNGSTEN_CARBIDE);
}
- UtilsItems.generateItemsFromMaterial("SiliconCarbide", "Silicon Carbide", 4, MaterialInfo.SILICONCARBIDE, Utils.rgbtoHexValue(32, 32, 32), false);
- UtilsItems.generateItemsFromMaterial("Zeron100", "Zeron-100", 8, MaterialInfo.ZERON100, Utils.rgbtoHexValue(180, 180, 20), true);
- UtilsItems.generateItemsFromMaterial("MaragingSteel250", "Maraging Steel 250", 4, MaterialInfo.MARAGING250, Utils.rgbtoHexValue(140, 140, 140), true);
- UtilsItems.generateItemsFromMaterial("MaragingSteel300", "Maraging Steel 300", 5, MaterialInfo.MARAGING300, Utils.rgbtoHexValue(150, 150, 150), true);
- UtilsItems.generateItemsFromMaterial("MaragingSteel350", "Maraging Steel 350", 6, MaterialInfo.MARAGING350, Utils.rgbtoHexValue(160, 160, 160), true);
- UtilsItems.generateItemsFromMaterial("Stellite", "Stellite", 7, MaterialInfo.STELLITE, Utils.rgbtoHexValue(129, 75, 120), true);
- UtilsItems.generateItemsFromMaterial("Talonite", "Talonite", 8, MaterialInfo.TALONITE, Utils.rgbtoHexValue(228, 75, 120), false);
+ generateItemsFromMaterial(ALLOY.SILICON_CARBIDE);
+ generateItemsFromMaterial(ALLOY.ZERON_100);
+ generateItemsFromMaterial(ALLOY.MARAGING250);
+ generateItemsFromMaterial(ALLOY.MARAGING300);
+ generateItemsFromMaterial(ALLOY.MARAGING350);
+ generateItemsFromMaterial(ALLOY.STELLITE);
+ generateItemsFromMaterial(ALLOY.TALONITE);
- UtilsItems.generateItemsFromMaterial("Tumbaga", "Tumbaga", 2, MaterialInfo.TUMBAGA, Utils.rgbtoHexValue(255,178,15), false); //Tumbaga was the name given by Spaniards to a non-specific alloy of gold and copper
- UtilsItems.generateItemsFromMaterial("Potin", "Potin", 4, MaterialInfo.POTIN, Utils.rgbtoHexValue(201,151,129), false); //Potin is traditionally an alloy of bronze, tin and lead, with varying quantities of each possible
+ //Tumbaga was the name given by Spaniards to a non-specific alloy of gold and copper
+ generateItemsFromMaterial(ALLOY.TUMBAGA);
+ //Potin is traditionally an alloy of bronze, tin and lead, with varying quantities of each possible
+ generateItemsFromMaterial(ALLOY.POTIN);
- UtilsItems.generateItemsFromMaterial("HastelloyW", "Hastelloy-W", 6, MaterialInfo.HASTELLOY_W, Utils.rgbtoHexValue(218, 165, 32), false);
- UtilsItems.generateItemsFromMaterial("HastelloyX", "Hastelloy-X", 6, MaterialInfo.HASTELLOY_X, Utils.rgbtoHexValue(255, 193, 37), false);
- UtilsItems.generateItemsFromMaterial("HastelloyC276", "Hastelloy-C276", 7, MaterialInfo.HASTELLOY_C276, Utils.rgbtoHexValue(238, 180, 34), true);
- UtilsItems.generateItemsFromMaterial("HastelloyN", "Hastelloy-N", 8, MaterialInfo.HASTELLOY_N, Utils.rgbtoHexValue(155, 223, 237), true);
+ generateItemsFromMaterial(ALLOY.HASTELLOY_W);
+ generateItemsFromMaterial(ALLOY.HASTELLOY_X);
+ generateItemsFromMaterial(ALLOY.HASTELLOY_C276);
+ generateItemsFromMaterial(ALLOY.HASTELLOY_N);
+
+ generateItemsFromMaterial(ALLOY.INCOLOY_020);
+ generateItemsFromMaterial(ALLOY.INCOLOY_DS);
+ generateItemsFromMaterial(ALLOY.INCOLOY_MA956);
- UtilsItems.generateItemsFromMaterial("Incoloy020", "Incoloy-020", 7, MaterialInfo.INCOLOY020, Utils.rgbtoHexValue(81, 81, 81), false);
- UtilsItems.generateItemsFromMaterial("IncoloyDS", "Incoloy-DS", 7, MaterialInfo.INCOLOYDS, Utils.rgbtoHexValue(91, 91, 91), false);
- UtilsItems.generateItemsFromMaterial("IncoloyMA956", "Incoloy-MA956", 8, MaterialInfo.INCOLOYMA956, Utils.rgbtoHexValue(101, 101, 101), true);
+ generateItemsFromMaterial(ELEMENT.ZIRCONIUM);
+ generateItemsFromMaterial(ALLOY.ZIRCONIUM_CARBIDE);
+ generateItemsFromMaterial(ALLOY.TANTALUM_CARBIDE);
+ generateItemsFromMaterial(ALLOY.NIOBIUM_CARBIDE);
- UtilsItems.generateItemsFromMaterial("Zirconium", "Zirconium", 6, MaterialInfo.ZIRCONIUM, Utils.rgbtoHexValue(255, 250, 205), false);
- UtilsItems.generateItemsFromMaterial("ZirconiumCarbide", "Zirconium Carbide", 7, MaterialInfo.ZIRCONIUMCARBIDE, Utils.rgbtoHexValue(222, 202, 180), true);
- UtilsItems.generateItemsFromMaterial("TantalumCarbide", "Tantalum Carbide", 7, MaterialInfo.TANTALUMCARBIDE, Utils.rgbtoHexValue(139, 136, 120), true);
- UtilsItems.generateItemsFromMaterial("NiobiumCarbide", "Niobium Carbide", 6, MaterialInfo.NIOMBIUMCARBIDE, Utils.rgbtoHexValue(205, 197, 191), true);
+ //Uranium-233 is a fissile isotope of uranium that is bred from thorium-232 as part of the thorium fuel cycle.
+ UtilsItems.generateItemsFromMaterial(ELEMENT.URANIUM233);
+
+ } catch (Throwable r){
+ Utils.LOG_INFO("Failed to Generated a Material. "+r.getMessage());
+ //Utils.LOG_INFO("Failed to Generated a Material. "+r.getCause().getMessage());
+ Utils.LOG_INFO("Failed to Generated a Material. "+r.getStackTrace()[0].getMethodName());
+ Utils.LOG_INFO("Failed to Generated a Material. "+r.getStackTrace()[1].getMethodName());
+ r.printStackTrace();
+ System.exit(1);
+ }
- //Uranium-233if
- UtilsItems.generateItemsFromMaterial("Uranium233", "Uranium 233", 4, MaterialInfo.URANIUM233, Utils.rgbtoHexValue(73, 220, 83), false); //Uranium-233 is a fissile isotope of uranium that is bred from thorium-232 as part of the thorium fuel cycle.
dustLithiumCarbonate = UtilsItems.generateSpecialUseDusts("LithiumCarbonate", "Lithium Carbonate", Utils.rgbtoHexValue(137, 139, 142))[0];
@@ -382,6 +399,10 @@ public final class ModItems {
//GameRegistry.registerItem(FuelRod_Thorium, "itemFuelRod_Thorium");
//GameRegistry.registerItem(FuelRod_Uranium, "itemFuelRod_Uranium");
//GameRegistry.registerItem(FuelRod_Plutonium, "itemFuelRod_Plutonium");
+
+ //FluidCell = new ItemStack(new IC2_ItemFluidCell("itemGT++FluidCell"));
+
+
}
else {
Utils.LOG_WARNING("IndustrialCraft2 not Found - Skipping Resources.");
diff --git a/src/Java/gtPlusPlus/core/item/base/dusts/BaseItemDust.java b/src/Java/gtPlusPlus/core/item/base/dusts/BaseItemDust.java
index 6d12624487..0342f7f104 100644
--- a/src/Java/gtPlusPlus/core/item/base/dusts/BaseItemDust.java
+++ b/src/Java/gtPlusPlus/core/item/base/dusts/BaseItemDust.java
@@ -5,7 +5,7 @@ import gregtech.api.enums.GT_Values;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_OreDictUnificator;
import gtPlusPlus.core.lib.CORE;
-import gtPlusPlus.core.lib.MaterialInfo;
+import gtPlusPlus.core.material.Material;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.item.UtilsItems;
import gtPlusPlus.core.util.math.MathUtils;
@@ -29,9 +29,10 @@ public class BaseItemDust extends Item{
protected boolean useBlastFurnace;
String name = "";
private int mTier;
- private MaterialInfo dustInfo;
+ private Material dustInfo;
+ private String oredictName;
- public BaseItemDust(String unlocalizedName, String materialName, MaterialInfo matInfo, int colour, String pileSize, boolean blastFurnaceRequired, int tier, int sRadioactivity) {
+ public BaseItemDust(String unlocalizedName, String materialName, Material matInfo, int colour, String pileSize, boolean blastFurnaceRequired, int tier, int sRadioactivity) {
setUnlocalizedName(unlocalizedName);
this.setUnlocalizedName(unlocalizedName);
this.setMaxStackSize(64);
@@ -70,6 +71,7 @@ public class BaseItemDust extends Item{
Utils.LOG_WARNING("Generating OreDict Name: "+temp);
}
if (temp != null && temp != ""){
+ oredictName = temp;
GT_OreDictUnificator.registerOre(temp, UtilsItems.getSimpleStack(this));
}
addMixerRecipe();
@@ -133,109 +135,75 @@ public class BaseItemDust extends Item{
private void addMixerRecipe(){
- ItemStack tempStack = UtilsItems.getSimpleStack(this);
- ItemStack tempOutput = null;
- ItemStack[] inputStacks = dustInfo.getInputs();
- ItemStack[] outputStacks = dustInfo.getOutputs();
- String temp = "";
- Utils.LOG_WARNING("Unlocalized name for OreDict nameGen: "+getUnlocalizedName());
- if (getUnlocalizedName().contains("item.")){
- temp = getUnlocalizedName().replace("item.", "");
- Utils.LOG_WARNING("Generating OreDict Name: "+temp);
+
+ ItemStack thisItem;
+ ItemStack normalDust = dustInfo.getDust(1);
+ ItemStack smallDust = dustInfo.getSmallDust(1);
+ ItemStack tinyDust = dustInfo.getTinyDust(1);
+
+ ItemStack[] inputStacks = dustInfo.getMaterialComposites();
+ ItemStack outputStacks = dustInfo.getDust(10);
+
+ if (oredictName.contains("dustTiny")){
+ thisItem = tinyDust;
+ ItemStack normalStack = dustInfo.getDust(1);
+ ItemStack tinyStack = dustInfo.getTinyDust(9);
+ Utils.LOG_INFO("Generating a 9 Tiny dust to 1 Dust recipe for "+materialName);
+ UtilsRecipe.recipeBuilder(
+ thisItem, thisItem, thisItem,
+ thisItem, thisItem, thisItem,
+ thisItem, thisItem, thisItem,
+ normalStack);
+
+ Utils.LOG_INFO("Generating a 9 Tiny dust from 1 Dust recipe for "+materialName);
+ UtilsRecipe.recipeBuilder(
+ normalStack, null, null,
+ null, null, null,
+ null, null, null,
+ tinyStack);
+
}
- else {
- temp = getUnlocalizedName();
- }
- if (temp.contains("DustTiny")){
- temp = temp.replace("itemDustTiny", "dust");
- Utils.LOG_WARNING("Generating OreDict Name: "+temp);
- }
- else if (temp.contains("DustSmall")){
- temp = temp.replace("itemDustSmall", "dust");
- Utils.LOG_WARNING("Generating OreDict Name: "+temp);
+ else if (oredictName.contains("dustSmall")){
+ thisItem = smallDust;
+ ItemStack normalStack = dustInfo.getDust(1);
+ ItemStack smallStack = dustInfo.getSmallDust(4);
+
+ Utils.LOG_INFO("Generating a 4 Small dust to 1 Dust recipe for "+materialName);
+ UtilsRecipe.recipeBuilder(
+ thisItem, thisItem, null,
+ thisItem, thisItem, null,
+ null, null, null,
+ normalStack);
+
+ Utils.LOG_INFO("Generating a 4 Small dust from 1 Dust recipe for "+materialName);
+ UtilsRecipe.recipeBuilder(
+ null, normalStack, null,
+ null, null, null,
+ null, null, null,
+ smallStack);
+
}
else {
- temp = temp.replace("itemD", "d");
- Utils.LOG_WARNING("Generating OreDict Name: "+temp);
- }
- if (temp != null && temp != ""){
-
- if (getUnlocalizedName().contains("DustTiny") || getUnlocalizedName().contains("DustSmall")){
- tempOutput = UtilsItems.getItemStackOfAmountFromOreDict(temp, 1);
- }
- else {
- if (outputStacks[0] != null){
- Utils.LOG_WARNING("Getting output dusts for mixer recipe. Checking ENUM, got: "+outputStacks[0].toString());
- tempOutput = outputStacks[0];
+ thisItem = normalDust;
+ }
+
+ if (thisItem == normalDust){
+ Utils.LOG_WARNING("Generating a Dust recipe for "+materialName+" in the mixer.");
+
+ if (inputStacks.length != 0){
+ GT_Values.RA.addMixerRecipe(
+ inputStacks[0], inputStacks[1],
+ inputStacks[2], inputStacks[3],
+ null, null,
+ outputStacks,
+ 8*mTier*20, 8*mTier*2);
}
else {
- Utils.LOG_WARNING("Getting output dusts for mixer recipe. Enum check failed, failback item is: "+temp);
- tempOutput = UtilsItems.getItemStackOfAmountFromOreDict(temp, 1);
+ return;
}
}
-
}
- if (tempOutput != null){
- if (getUnlocalizedName().contains("DustTiny")){
- Utils.LOG_WARNING("Generating a 9 Tiny dust to 1 Dust recipe for "+materialName);
- UtilsRecipe.addShapelessGregtechRecipe(tempOutput,
- tempStack, tempStack, tempStack,
- tempStack, tempStack, tempStack,
- tempStack, tempStack, tempStack);
- }
- else if (getUnlocalizedName().contains("DustSmall")){
- Utils.LOG_WARNING("Generating a 4 Small dust to 1 Dust recipe for "+materialName);
- UtilsRecipe.addShapelessGregtechRecipe(tempOutput,
- tempStack, tempStack, null,
- tempStack, tempStack, null,
- null, null, null);
- }
- else {
- Utils.LOG_WARNING("Generating a Dust recipe for "+materialName+" in the mixer.");
-
-
- int i = 0;
- if (inputStacks.length >= 2){
- for (ItemStack is : inputStacks){
- if (is != null){
- Utils.LOG_WARNING("Found "+is.getDisplayName()+" as an input for mixer recipe.");
- if (is.getDisplayName().toLowerCase().contains("tell alkalus")){
- ItemStack tempStackForAName = inputStacks[i];
- String[] inputList = dustInfo.getInputItemsAsList();
- int[] inputSizes = dustInfo.getInputStackSizesAsList();
- inputStacks[i] = UtilsItems.getItemStackOfAmountFromOreDict(inputList[i], inputSizes[i]);
- Utils.LOG_WARNING("Swapping input slot "+i+" which contains "+tempStackForAName.getDisplayName()+" with "+inputStacks[i].getDisplayName()+".");
- }
-
- }
-
- else {
- Utils.LOG_WARNING("Input "+i+" was null.");
- }
-
- i++;
- }
- }
-
- GT_Values.RA.addMixerRecipe(
- inputStacks[0], inputStacks[1],
- inputStacks[2], inputStacks[3],
- null, null,
- tempOutput,
- 8*mTier*20, 8*mTier*2);
-
- /*GT_Values.RA.addMixerRecipe(
- GT_Utility.copyAmount(inputStacks[0].stackSize, new Object[]{inputStacks[0]}), GT_Utility.copyAmount(inputStacks[1].stackSize, new Object[]{inputStacks[1]}),
- GT_Utility.copyAmount(inputStacks[2].stackSize, new Object[]{inputStacks[2]}), GT_Utility.copyAmount(inputStacks[3].stackSize, new Object[]{inputStacks[3]}),
- null, null,
- tempOutput,
- 8*mTier*20, 8*mTier*2);*/
-
- }
- }
-
- }
private void addMacerationRecipe(){
Utils.LOG_WARNING("Adding recipe for "+materialName+" Dusts");
@@ -260,15 +228,25 @@ public class BaseItemDust extends Item{
tempIngot = tempIngot.replace("itemDust", "ingot");
Utils.LOG_WARNING("Generating OreDict Name: "+tempIngot);
- ItemStack[] outputStacks = dustInfo.getOutputs();
+ ItemStack[] outputStacks = {dustInfo.getDust(1)};
if (tempIngot != null && tempIngot != ""){
tempInputStack = UtilsItems.getItemStackOfAmountFromOreDict(tempIngot, 1);
tempOutputStack = UtilsItems.getItemStackOfAmountFromOreDict(tempDust, 1);
- ItemStack tempStackOutput2;
+ ItemStack tempStackOutput2 = null;
int chance = mTier*10/MathUtils.randInt(10, 20);
- if (outputStacks[1] != null && !outputStacks[1].getUnlocalizedName().toLowerCase().contains("aaa_broken")){
- tempStackOutput2 = outputStacks[1];
- tempOutputStack = outputStacks[0];
+ if (outputStacks.length != 0){
+ if (outputStacks.length == 1){
+ tempStackOutput2 = null;
+ }
+ else {
+ if (!outputStacks[1].getUnlocalizedName().toLowerCase().contains("aaa_broken")){
+ tempStackOutput2 = outputStacks[1];
+ tempOutputStack = outputStacks[0];
+ }
+ else {
+ tempStackOutput2 = null;
+ }
+ }
}
else {
tempStackOutput2 = null;
diff --git a/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockFluid.java b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockFluid.java
new file mode 100644
index 0000000000..77af69f809
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/item/base/itemblock/ItemBlockFluid.java
@@ -0,0 +1,78 @@
+package gtPlusPlus.core.item.base.itemblock;
+
+import gtPlusPlus.core.fluids.BlockFluidBase;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.material.Material;
+import gtPlusPlus.core.util.item.UtilsItems;
+import gtPlusPlus.core.util.math.MathUtils;
+
+import java.util.List;
+
+import net.minecraft.block.Block;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemBlock;
+import net.minecraft.item.ItemStack;
+
+public class ItemBlockFluid extends ItemBlock{
+
+ protected final int blockColour;
+ protected final int sRadiation;
+ protected Material thisFluid;
+ final BlockFluidBase baseBlock;
+ String name;
+
+ public ItemBlockFluid(Block block) {
+ super(block);
+ this.baseBlock = (BlockFluidBase) block;
+ this.blockColour = baseBlock.getRenderColor(1);
+ this.thisFluid = baseBlock.getFluidMaterial();
+ this.sRadiation=UtilsItems.getRadioactivityLevel(baseBlock.getUnlocalizedName());
+ this.name = baseBlock.getLocalizedName().replace("tile", "").replace("fluid", "").replace("name", "").replace("block", "").replace(".", "");
+ //GT_OreDictUnificator.registerOre("frameGt"+block.getUnlocalizedName().replace("tile.", "").replace("tile.BlockGtFrame", "").replace("-", "").replace("_", "").replace(" ", "").replace("FrameBox", ""), UtilsItems.getSimpleStack(this));
+ }
+
+ public final Material setFluidMaterial(Material M){
+ return thisFluid=M;
+ }
+
+ public int getRenderColor(int aMeta) {
+ return blockColour;
+ }
+
+ @Override
+ public String getItemStackDisplayName(ItemStack iStack) {
+ if (thisFluid != null){
+ this.name = "Molten "+thisFluid.getLocalizedName();
+ return name;
+ }
+ this.name = "Molten "+baseBlock.getLocalizedName().replace("tile", "").replace("fluid", "").replace("name", "").replace("block", "").replace(".", "");
+ return name;
+ }
+
+ @Override
+ public int getColorFromItemStack(ItemStack stack, int HEX_OxFFFFFF) {
+ if (blockColour == 0){
+ return MathUtils.generateSingularRandomHexValue();
+ }
+ return blockColour;
+
+ }
+
+ @Override
+ public void addInformation(ItemStack stack, EntityPlayer aPlayer, List list, boolean bool) {
+ list.add("Temperature: "+MathUtils.celsiusToKelvin(thisFluid.getMeltingPoint_C())+"K");
+ if (sRadiation > 0){
+ list.add(CORE.GT_Tooltip_Radioactive);
+ }
+ super.addInformation(stack, aPlayer, list, bool);
+ }
+
+ public String GetProperName() {
+ String tempIngot;
+
+ tempIngot = "Molten "+baseBlock.getLocalizedName();
+
+ return tempIngot;
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/core/lib/CORE.java b/src/Java/gtPlusPlus/core/lib/CORE.java
index 99ff5b91a7..cb76e9b94a 100644
--- a/src/Java/gtPlusPlus/core/lib/CORE.java
+++ b/src/Java/gtPlusPlus/core/lib/CORE.java
@@ -21,7 +21,7 @@ public class CORE {
public static final String name = "GT++";
public static final String MODID = "miscutils";
- public static final String VERSION = "1.4.7.1-release";
+ public static final String VERSION = "1.4.8-prerelease";
public static final String MASTER_VERSION = NetworkUtils.getContentFromURL("https://raw.githubusercontent.com/draknyte1/GTplusplus/master/Recommended.txt").toLowerCase();
public static boolean isModUpToDate = Utils.isModUpToDate();
public static boolean DEBUG = false;
diff --git a/src/Java/gtPlusPlus/core/lib/MaterialInfo.java b/src/Java/gtPlusPlus/core/lib/MaterialInfo.java
index fdd7ccfa76..455becc2d1 100644
--- a/src/Java/gtPlusPlus/core/lib/MaterialInfo.java
+++ b/src/Java/gtPlusPlus/core/lib/MaterialInfo.java
@@ -15,36 +15,67 @@ import net.minecraft.item.ItemStack;
public enum MaterialInfo {
ENERGYCRYSTAL(GTplusplus.randomDust_A, 8, GTplusplus.randomDust_B, 8, GTplusplus.randomDust_C, 8, GTplusplus.randomDust_D, 8, "dustEnergyCrystal", 1, noItem, 0),
+
BLOODSTEEL(noItem, 0, noItem, 0, noItem, 0, noItem, 0, noItem, 0, noItem, 0),
+
STABALLOY("dustTitanium", 1, "dustUranium", 8, noItem, 0, noItem, 0, "dustStaballoy", 1, noItem, 0),
+
TANTALLOY60("dustTungsten", 1, "dustTantalum", 8, "dustTinyTitanium", 5, noItem, 0, "dustTantalloy60", 1, noItem, 0),
+
TANTALLOY61("dustTungsten", 1, "dustSmallTitanium", 3, "dustSmallYttrium", 2, "dustTantalum", 9, "dustTantalloy61", 1, noItem, 0),
+
QUANTUM(noItem, 0, noItem, 0, noItem, 0, noItem, 0, noItem, 0, noItem, 0),
+
TUMBAGA("dustGold", 6, "dustCopper", 3, noItem, 0, noItem, 0, "dustTumbaga", 2, noItem, 0),
+
POTIN("dustBronze", 3, "dustTin", 2, "dustLead", 4, noItem, 0, "dustPotin", 3, noItem, 0),
+
BEDROCKIUM(noItem, 0, noItem, 0, noItem, 0, noItem, 0, noItem, 0, noItem, 0),
+
INCONEL625("dustNickel", 5, "dustChrome", 2, "dustWroughtIron", 1, "dustMolybdenum", 1, "dustInconel625", 4, "dustTinyDarkAsh", 1),
+
INCONEL690("dustNickel", 5, "dustChrome", 2, "dustNiobium", 1, "dustMolybdenum", 1, "dustInconel690", 2, "dustTinyDarkAsh", 1),
+
INCONEL792("dustNickel", 5, "dustChrome", 1, "dustAluminium", 2, "dustNiobium", 1, "dustInconel792", 2, "dustTinyDarkAsh", 1),
+
TUNGSTENCARBIDE("dustTungsten", 16, "dustCarbon", 16, noItem, 0, noItem, 0, "dustTungstenCarbide", 4, noItem, 0),
+
SILICONCARBIDE("dustSilicon", 16, "dustCarbon", 16, noItem, 0, noItem, 0, "dustSiliconCarbide", 4, noItem, 0),
+
ZERON100("dustChrome", 5, "dustSmallNickel", 6, "dustSmallMolybdenum", 3, "dustSteel", 14, "dustZeron100", 5, noItem, 0),
+
MARAGING250("dustSteel", 4, "dustNickel", 2, "dustCobalt", 1, "dustTinyTitanium", 1, "dustMaragingSteel250", 6, noItem, 0),
+
MARAGING300("dustSteel", 5, "dustNickel", 2, "dustCobalt", 2, "dustSmallTitanium", 1, "dustMaragingSteel300", 5, noItem, 0),
+
MARAGING350("dustSteel", 6, "dustNickel", 3, "dustCobalt", 3, "dustTitanium", 1, "dustMaragingSteel350", 4, noItem, 0),
+
STELLITE("dustCobalt", 4, "dustChrome", 4, "dustManganese", 2, "dustTitanium", 1, "dustStellite", 2, noItem, 0),
+
TALONITE("dustCobalt", 4, "dustChrome", 4, "dustPhosphorus", 1, "dustMolybdenum", 1, "dustTalonite", 2, noItem, 0),
+
HASTELLOY_W("dustSmallCobalt", 1, "dustSmallChrome", 4, "dustMolybdenum", 2, "dustNickel", 6, "dustHastelloyW", 2, noItem, 0),
+
HASTELLOY_X("dustTinyCobalt", 6, "dustChrome", 2, "dustMolybdenum", 1, "dustNickel", 5, "dustHastelloyX", 2, noItem, 0),
+
HASTELLOY_C276("dustSmallCobalt", 1, "dustSmallChrome", 14, "dustSmallMolybdenum", 14, "dustNickel", 5, "dustHastelloyC276", 2, noItem, 0),
+
INCOLOY020("dustIron", 4, "dustChrome", 2, "dustTinyCarbon", 2, "dustSmallCopper", 4, "dustIncoloy020", 1, noItem, 0),
+
INCOLOYDS("dustIron", 4, "dustChrome", 2, "dustTinyTitanium", 2, "dustSmallManganese", 1, "dustIncoloyDS", 1, noItem, 0),
+
INCOLOYMA956("dustIron", 6, "dustChrome", 2, "dustSmallAluminium", 5, "dustTinyYttrium", 1, "dustIncoloyMA956", 1, noItem, 0),
+
TANTALUMCARBIDE("dustTantalum", 4, "dustCarbon", 2, noItem, 0, noItem, 0, "dustTantalumCarbide", 1, noItem, 0),
+
ZIRCONIUM(noItem, 0, noItem, 0, noItem, 0, noItem, 0, "dustZirconium", 1, noItem, 0),
+
ZIRCONIUMCARBIDE("dustZirconium", 2, "dustCarbon", 2, noItem, 0, noItem, 0, "dustZirconiumCarbide", 1, noItem, 0),
+
NIOMBIUMCARBIDE("dustNiobium", 2, "dustCarbon", 2, noItem, 0, noItem, 0, "dustNiobiumCarbide", 1, noItem, 0),
+
HASTELLOY_N("dustIron", 1, "dustSmallChrome", 7, "dustSmallMolybdenum", 12, "dustNickel", 4, "dustHastelloyN", 1, noItem, 0),
+
URANIUM233(noItem, 0, noItem, 0, noItem, 0, noItem, 0, noItem, 0, noItem, 0);
diff --git a/src/Java/gtPlusPlus/core/material/ALLOY.java b/src/Java/gtPlusPlus/core/material/ALLOY.java
new file mode 100644
index 0000000000..a4cdd77d59
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/material/ALLOY.java
@@ -0,0 +1,479 @@
+package gtPlusPlus.core.material;
+
+
+public final class ALLOY {
+
+ public static final Material ENERGYCRYSTAL = new Material(
+ "Energy Crystal", //Material Name
+ new short[]{228, 255, 0, 0}, //Material Colour
+ 5660, //Melting Point in C
+ 0, //Boiling Point in C
+ 100, //Protons
+ 100, //Neutrons
+ true, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ null);
+
+ public static final Material BLOODSTEEL = new Material(
+ "Blood Steel", //Material Name
+ new short[]{142, 28, 0, 0}, //Material Colour
+ 2500, //Melting Point in C
+ 0, //Boiling Point in C
+ 100, //Protons
+ 100, //Neutrons
+ false, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ null);
+
+ public static final Material STABALLOY = new Material(
+ "Staballoy", //Material Name
+ new short[]{68, 75, 66, 0}, //Material Colour
+ 3450, //Melting Point in C
+ ((ELEMENT.URANIUM.getBoilingPoint_C()*9)+(ELEMENT.TITANIUM.getBoilingPoint_C()*1))/10, //Boiling Point in C
+ ((ELEMENT.URANIUM.getProtons()*9)+ELEMENT.TITANIUM.getProtons())/10, //Protons
+ ((ELEMENT.URANIUM.getNeutrons()*9)+ELEMENT.TITANIUM.getNeutrons())/10, //Neutrons
+ true, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.URANIUM, 90),
+ new MaterialStack(ELEMENT.TITANIUM, 10)
+ });
+
+ public static final Material TANTALLOY_60 = new Material(
+ "Tantalloy-60", //Material Name
+ new short[]{66, 75, 166, 0}, //Material Colour
+ 3025, //Melting Point in C
+ ((ELEMENT.TUNGSTEN.getBoilingPoint_C()*1)+(ELEMENT.TANTALUM.getBoilingPoint_C()*8)+(ELEMENT.TITANIUM.getBoilingPoint_C()*1))/10, //Boiling Point in C
+ ((ELEMENT.TUNGSTEN.getProtons()*1)+(ELEMENT.TANTALUM.getProtons()*8)+(ELEMENT.TITANIUM.getProtons()*1))/10, //Protons
+ ((ELEMENT.TUNGSTEN.getNeutrons()*1)+(ELEMENT.TANTALUM.getNeutrons()*8)+(ELEMENT.TITANIUM.getNeutrons()*1))/10, //Neutrons
+ true, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.TUNGSTEN, 7),
+ new MaterialStack(ELEMENT.TANTALUM, 90),
+ new MaterialStack(ELEMENT.TANTALUM, 2)
+ });
+
+ public static final Material TANTALLOY_61 = new Material(
+ "Tantalloy-61", //Material Name
+ new short[]{122, 135, 196, 0}, //Material Colour
+ 3030, //Melting Point in C
+ ((ELEMENT.TUNGSTEN.getBoilingPoint_C()*1)+(ELEMENT.TANTALUM.getBoilingPoint_C()*7)+(ELEMENT.TITANIUM.getBoilingPoint_C()*1)+(ELEMENT.YTTRIUM.getBoilingPoint_C()*1))/10, //Boiling Point in C
+ ((ELEMENT.TUNGSTEN.getProtons()*1)+(ELEMENT.TANTALUM.getProtons()*7)+(ELEMENT.TITANIUM.getProtons()*1)+(ELEMENT.YTTRIUM.getProtons()*1))/10, //Protons
+ ((ELEMENT.TUNGSTEN.getNeutrons()*1)+(ELEMENT.TANTALUM.getNeutrons()*7)+(ELEMENT.TITANIUM.getNeutrons()*1)+(ELEMENT.YTTRIUM.getNeutrons()*1))/10, //Neutrons
+ true, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.TUNGSTEN, 10),
+ new MaterialStack(ELEMENT.TANTALUM, 70),
+ new MaterialStack(ELEMENT.TITANIUM, 10),
+ new MaterialStack(ELEMENT.YTTRIUM, 10)
+ });
+
+ public static final Material QUANTUM = new Material(
+ "Quantum", //Material Name
+ new short[]{128, 128, 128, 0}, //Material Colour
+ 9999, //Melting Point in C
+ 0, //Boiling Point in C
+ 100, //Protons
+ 100, //Neutrons
+ true, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ null);
+
+ public static final Material BRONZE = new Material(
+ "Bronze", //Material Name
+ new short[]{128, 128, 128, 0}, //Material Colour
+ ((ELEMENT.TIN.getMeltingPoint_C()*1)+(ELEMENT.COPPER.getMeltingPoint_C()*3))/4, //Melting point in C
+ ((ELEMENT.TIN.getBoilingPoint_C()*1)+(ELEMENT.COPPER.getBoilingPoint_C()*3))/4, //Boiling Point in C
+ ((ELEMENT.TIN.getProtons()*1)+(ELEMENT.COPPER.getProtons()*3))/4, //Protons
+ ((ELEMENT.TIN.getNeutrons()*1)+(ELEMENT.COPPER.getNeutrons()*3))/4, //Neutrons
+ false, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.COPPER, 75),
+ new MaterialStack(ELEMENT.TIN, 25)
+ });
+
+ public static final Material TUMBAGA = new Material(
+ "Tumbaga", //Material Name
+ new short[]{255,178,15, 0}, //Material Colour
+ ((ELEMENT.GOLD.getMeltingPoint_C()*7)+(ELEMENT.COPPER.getMeltingPoint_C()*3))/10, //Melting point in C
+ ((ELEMENT.GOLD.getBoilingPoint_C()*7)+(ELEMENT.COPPER.getBoilingPoint_C()*3))/10, //Boiling Point in C
+ ((ELEMENT.GOLD.getProtons()*7)+(ELEMENT.COPPER.getProtons()*3))/10, //Protons
+ ((ELEMENT.GOLD.getNeutrons()*7)+(ELEMENT.COPPER.getNeutrons()*3))/10, //Neutrons
+ false, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.GOLD, 70),
+ new MaterialStack(ELEMENT.COPPER, 30)
+ });
+
+ public static final Material POTIN = new Material(
+ "Potin", //Material Name
+ new short[]{201,151,129, 0}, //Material Colour
+ ((ELEMENT.LEAD.getMeltingPoint_C()*4)+(ALLOY.BRONZE.getMeltingPoint_C()*4)+(ELEMENT.TIN.getMeltingPoint_C()*2))/10, //Melting point in C
+ ((ELEMENT.LEAD.getBoilingPoint_C()*4)+(ALLOY.BRONZE.getBoilingPoint_C()*4)+(ELEMENT.TIN.getBoilingPoint_C()*2))/10, //Boiling Point in C
+ ((ELEMENT.LEAD.getProtons()*4)+(ALLOY.BRONZE.getProtons()*4)+(ELEMENT.TIN.getProtons()*2))/10, //Protons
+ ((ELEMENT.LEAD.getNeutrons()*4)+(ALLOY.BRONZE.getNeutrons()*4)+(ELEMENT.TIN.getNeutrons()*2))/10, //Neutrons
+ false, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.LEAD, 40),
+ new MaterialStack(ALLOY.BRONZE, 40),
+ new MaterialStack(ELEMENT.TIN, 20)
+ });
+
+ public static final Material BEDROCKIUM = new Material(
+ "Bedrockium", //Material Name
+ new short[]{32, 32, 32, 0}, //Material Colour
+ 7735, //Melting Point in C
+ 0, //Boiling Point in C
+ 100, //Protons
+ 100, //Neutrons
+ false, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ null);
+
+ public static final Material INCONEL_625 = new Material(
+ "Inconel-625", //Material Name
+ new short[]{128, 200, 128, 0}, //Material Colour
+ 1425, //Melting Point in C
+ ((ELEMENT.NICKEL.getBoilingPoint_C()*6)+(ELEMENT.CHROMIUM.getBoilingPoint_C()*2)+(ELEMENT.IRON.getBoilingPoint_C()*1)+(ELEMENT.MOLYBDENUM.getBoilingPoint_C()*1))/10, //Boiling Point in C
+ ((ELEMENT.NICKEL.getProtons()*6)+(ELEMENT.CHROMIUM.getProtons()*2)+(ELEMENT.IRON.getProtons()*1)+(ELEMENT.MOLYBDENUM.getProtons()*1))/10, //Protons
+ ((ELEMENT.NICKEL.getNeutrons()*6)+(ELEMENT.CHROMIUM.getNeutrons()*2)+(ELEMENT.IRON.getNeutrons()*1)+(ELEMENT.MOLYBDENUM.getNeutrons()*1))/10, //Neutrons
+ true, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.NICKEL, 60),
+ new MaterialStack(ELEMENT.CHROMIUM, 20),
+ new MaterialStack(ELEMENT.IRON, 10),
+ new MaterialStack(ELEMENT.MOLYBDENUM, 10)
+ });
+
+ public static final Material INCONEL_690 = new Material(
+ "Inconel-690", //Material Name
+ new short[]{118, 220, 138, 0}, //Material Colour
+ 1425, //Melting Point in C
+ ((ELEMENT.NICKEL.getBoilingPoint_C()*6)+(ELEMENT.CHROMIUM.getBoilingPoint_C()*2)+(ELEMENT.NIOBIUM.getBoilingPoint_C()*1)+(ELEMENT.MOLYBDENUM.getBoilingPoint_C()*1))/10, //Boiling Point in C
+ ((ELEMENT.NICKEL.getProtons()*6)+(ELEMENT.CHROMIUM.getProtons()*2)+(ELEMENT.NIOBIUM.getProtons()*1)+(ELEMENT.MOLYBDENUM.getProtons()*1))/10, //Protons
+ ((ELEMENT.NICKEL.getNeutrons()*6)+(ELEMENT.CHROMIUM.getNeutrons()*2)+(ELEMENT.NIOBIUM.getNeutrons()*1)+(ELEMENT.MOLYBDENUM.getNeutrons()*1))/10, //Neutrons
+ true, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.NICKEL, 60),
+ new MaterialStack(ELEMENT.CHROMIUM, 20),
+ new MaterialStack(ELEMENT.NIOBIUM, 10),
+ new MaterialStack(ELEMENT.MOLYBDENUM, 10)
+ });
+
+ public static final Material INCONEL_792 = new Material(
+ "Inconel-792", //Material Name
+ new short[]{108, 240, 118, 0}, //Material Colour
+ 1425, //Melting Point in C
+ ((ELEMENT.NICKEL.getBoilingPoint_C()*6)+(ELEMENT.CHROMIUM.getBoilingPoint_C()*1)+(ELEMENT.IRON.getBoilingPoint_C()*1)+(ELEMENT.ALUMINIUM.getBoilingPoint_C()*2))/10, //Boiling Point in C
+ ((ELEMENT.NICKEL.getProtons()*6)+(ELEMENT.CHROMIUM.getProtons()*1)+(ELEMENT.IRON.getProtons()*1)+(ELEMENT.ALUMINIUM.getProtons()*2))/10, //Protons
+ ((ELEMENT.NICKEL.getNeutrons()*6)+(ELEMENT.CHROMIUM.getNeutrons()*1)+(ELEMENT.IRON.getNeutrons()*1)+(ELEMENT.ALUMINIUM.getNeutrons()*2))/10, //Neutrons
+ true, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.NICKEL, 60),
+ new MaterialStack(ELEMENT.CHROMIUM, 10),
+ new MaterialStack(ELEMENT.NIOBIUM, 10),
+ new MaterialStack(ELEMENT.ALUMINIUM, 20)
+ });
+
+ public static final Material STEEL = new Material(
+ "Steel", //Material Name
+ new short[]{180, 180, 20, 0}, //Material Colour
+ ((ELEMENT.CARBON.getMeltingPoint_C()*5)+(ELEMENT.IRON.getMeltingPoint_C()*95))/100, //Melting point in C
+ ((ELEMENT.CARBON.getBoilingPoint_C()*5)+(ELEMENT.IRON.getBoilingPoint_C()*95))/100, //Boiling Point in C
+ ((ELEMENT.CARBON.getProtons()*5)+(ELEMENT.IRON.getProtons()*95))/100, //Protons
+ ((ELEMENT.CARBON.getNeutrons()*5)+(ELEMENT.IRON.getNeutrons()*95))/100, //Neutrons
+ true, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.CARBON, 05),
+ new MaterialStack(ELEMENT.IRON, 95)
+ });
+
+ public static final Material ZERON_100 = new Material(
+ "Zeron-100", //Material Name
+ new short[]{180, 180, 20, 0}, //Material Colour
+ ((ELEMENT.CHROMIUM.getMeltingPoint_C()*25)+(ELEMENT.NICKEL.getMeltingPoint_C()*6)+(ELEMENT.COBALT.getMeltingPoint_C()*9)+(ALLOY.STEEL.getMeltingPoint_C()*60))/100, //Melting Point in C
+ ((ELEMENT.CHROMIUM.getBoilingPoint_C()*25)+(ELEMENT.NICKEL.getBoilingPoint_C()*6)+(ELEMENT.COBALT.getBoilingPoint_C()*9)+(ALLOY.STEEL.getBoilingPoint_C()*60))/100, //Boiling Point in C
+ ((ELEMENT.CHROMIUM.getProtons()*25)+(ELEMENT.NICKEL.getProtons()*6)+(ELEMENT.COBALT.getProtons()*9)+(ALLOY.STEEL.getProtons()*60))/100, //Protons
+ ((ELEMENT.CHROMIUM.getNeutrons()*25)+(ELEMENT.NICKEL.getNeutrons()*6)+(ELEMENT.COBALT.getNeutrons()*9)+(ALLOY.STEEL.getNeutrons()*60))/100, //Neutrons
+ true, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.CHROMIUM, 25),
+ new MaterialStack(ELEMENT.NICKEL, 6),
+ new MaterialStack(ELEMENT.COBALT, 9),
+ new MaterialStack(ALLOY.STEEL, 60)
+ });
+
+ public static final Material MARAGING250 = new Material(
+ "Maraging Steel 250", //Material Name
+ new short[]{140, 140, 140, 0}, //Material Colour
+ 1413, //Melting Point in C
+ ((ELEMENT.TITANIUM.getBoilingPoint_C()*5)+(ELEMENT.NICKEL.getBoilingPoint_C()*16)+(ELEMENT.COBALT.getBoilingPoint_C()*9)+(ALLOY.STEEL.getBoilingPoint_C()*70))/100, //Boiling Point in C
+ ((ELEMENT.TITANIUM.getProtons()*5)+(ELEMENT.NICKEL.getProtons()*16)+(ELEMENT.COBALT.getProtons()*9)+(ALLOY.STEEL.getProtons()*70))/100, //Protons
+ ((ELEMENT.TITANIUM.getNeutrons()*5)+(ELEMENT.NICKEL.getNeutrons()*16)+(ELEMENT.COBALT.getNeutrons()*9)+(ALLOY.STEEL.getNeutrons()*70))/100, //Neutrons
+ true, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.TITANIUM, 5),
+ new MaterialStack(ELEMENT.NICKEL, 16),
+ new MaterialStack(ELEMENT.COBALT, 9),
+ new MaterialStack(ALLOY.STEEL, 70)
+ });
+
+ public static final Material MARAGING300 = new Material(
+ "Maraging Steel 300", //Material Name
+ new short[]{150, 150, 150, 0}, //Material Colour
+ 1413, //Melting Point in C
+ ((ELEMENT.TITANIUM.getBoilingPoint_C()*10)+(ELEMENT.NICKEL.getBoilingPoint_C()*21)+(ELEMENT.COBALT.getBoilingPoint_C()*14)+(ALLOY.STEEL.getBoilingPoint_C()*55))/100, //Boiling Point in C
+ ((ELEMENT.TITANIUM.getProtons()*10)+(ELEMENT.NICKEL.getProtons()*21)+(ELEMENT.COBALT.getProtons()*14)+(ALLOY.STEEL.getProtons()*55))/100, //Protons
+ ((ELEMENT.TITANIUM.getNeutrons()*10)+(ELEMENT.NICKEL.getNeutrons()*21)+(ELEMENT.COBALT.getNeutrons()*14)+(ALLOY.STEEL.getNeutrons()*55))/100, //Neutrons
+ true, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.TITANIUM, 10),
+ new MaterialStack(ELEMENT.NICKEL, 21),
+ new MaterialStack(ELEMENT.COBALT, 14),
+ new MaterialStack(ALLOY.STEEL, 55)
+ });
+
+ public static final Material MARAGING350 = new Material(
+ "Maraging Steel 350", //Material Name
+ new short[]{160, 160, 160, 0}, //Material Colour
+ 1413, //Melting Point in C
+ ((ELEMENT.TITANIUM.getBoilingPoint_C()*15)+(ELEMENT.NICKEL.getBoilingPoint_C()*21)+(ELEMENT.COBALT.getBoilingPoint_C()*9)+(ALLOY.STEEL.getBoilingPoint_C()*55))/100, //Boiling Point in C
+ ((ELEMENT.TITANIUM.getProtons()*15)+(ELEMENT.NICKEL.getProtons()*21)+(ELEMENT.COBALT.getProtons()*9)+(ALLOY.STEEL.getProtons()*55))/100, //Protons
+ ((ELEMENT.TITANIUM.getNeutrons()*15)+(ELEMENT.NICKEL.getNeutrons()*21)+(ELEMENT.COBALT.getNeutrons()*9)+(ALLOY.STEEL.getNeutrons()*55))/100, //Neutrons
+ true, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.TITANIUM, 15),
+ new MaterialStack(ELEMENT.NICKEL, 21),
+ new MaterialStack(ELEMENT.COBALT, 9),
+ new MaterialStack(ALLOY.STEEL, 55)
+ });
+
+ public static final Material STELLITE = new Material(
+ "Stellite", //Material Name
+ new short[]{129, 75, 120, 0}, //Material Colour
+ 1310, //Melting Point in C
+ ((ELEMENT.TITANIUM.getBoilingPoint_C()*10)+(ELEMENT.CHROMIUM.getBoilingPoint_C()*35)+(ELEMENT.COBALT.getBoilingPoint_C()*35)+(ELEMENT.MANGANESE.getBoilingPoint_C()*20))/100, //Boiling Point in C
+ ((ELEMENT.TITANIUM.getProtons()*10)+(ELEMENT.CHROMIUM.getProtons()*35)+(ELEMENT.COBALT.getProtons()*35)+(ELEMENT.MANGANESE.getProtons()*20))/100, //Protons
+ ((ELEMENT.TITANIUM.getNeutrons()*10)+(ELEMENT.CHROMIUM.getNeutrons()*35)+(ELEMENT.COBALT.getNeutrons()*35)+(ELEMENT.MANGANESE.getNeutrons()*20))/100, //Neutrons
+ true, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.COBALT, 35),
+ new MaterialStack(ELEMENT.CHROMIUM, 35),
+ new MaterialStack(ELEMENT.MANGANESE, 20),
+ new MaterialStack(ELEMENT.TITANIUM, 10)
+ });
+
+ public static final Material TALONITE = new Material(
+ "Talonite", //Material Name
+ new short[]{228, 75, 120, 0}, //Material Colour
+ 1454, //Melting Point in C
+ ((ELEMENT.MOLYBDENUM.getBoilingPoint_C()*10)+(ELEMENT.CHROMIUM.getBoilingPoint_C()*30)+(ELEMENT.COBALT.getBoilingPoint_C()*40)+(ELEMENT.PHOSPHORUS.getBoilingPoint_C()*20))/100, //Boiling Point in C
+ ((ELEMENT.MOLYBDENUM.getProtons()*10)+(ELEMENT.CHROMIUM.getProtons()*30)+(ELEMENT.COBALT.getProtons()*40)+(ELEMENT.PHOSPHORUS.getProtons()*20))/100, //Protons
+ ((ELEMENT.MOLYBDENUM.getNeutrons()*10)+(ELEMENT.CHROMIUM.getNeutrons()*30)+(ELEMENT.COBALT.getNeutrons()*40)+(ELEMENT.PHOSPHORUS.getNeutrons()*20))/100, //Neutrons
+ false, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.COBALT, 40),
+ new MaterialStack(ELEMENT.CHROMIUM, 30),
+ new MaterialStack(ELEMENT.PHOSPHORUS, 20),
+ new MaterialStack(ELEMENT.MOLYBDENUM, 10)
+ });
+
+ public static final Material HASTELLOY_W = new Material(
+ "Hastelloy-W", //Material Name
+ new short[]{218, 165, 32, 0}, //Material Colour
+ 1350, //Melting Point in C
+ ((ELEMENT.IRON.getBoilingPoint_C()*6)+(ELEMENT.MOLYBDENUM.getBoilingPoint_C()*24)+(ELEMENT.CHROMIUM.getBoilingPoint_C()*5)+(ELEMENT.NICKEL.getBoilingPoint_C()*65))/100, //Boiling Point in C
+ ((ELEMENT.IRON.getProtons()*6)+(ELEMENT.MOLYBDENUM.getProtons()*24)+(ELEMENT.CHROMIUM.getProtons()*5)+(ELEMENT.NICKEL.getProtons()*65))/100, //Protons
+ ((ELEMENT.IRON.getNeutrons()*6)+(ELEMENT.MOLYBDENUM.getNeutrons()*24)+(ELEMENT.CHROMIUM.getNeutrons()*5)+(ELEMENT.NICKEL.getNeutrons()*65))/100, //Neutrons
+ false, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.IRON, 06),
+ new MaterialStack(ELEMENT.MOLYBDENUM, 24),
+ new MaterialStack(ELEMENT.CHROMIUM, 5),
+ new MaterialStack(ELEMENT.NICKEL, 65)
+ });
+
+ public static final Material HASTELLOY_X = new Material(
+ "Hastelloy-X", //Material Name
+ new short[]{255, 193, 37, 0}, //Material Colour
+ 1350, //Melting Point in C
+ ((ELEMENT.IRON.getBoilingPoint_C()*18)+(ELEMENT.MOLYBDENUM.getBoilingPoint_C()*9)+(ELEMENT.CHROMIUM.getBoilingPoint_C()*22)+(ELEMENT.NICKEL.getBoilingPoint_C()*51))/100, //Boiling Point in C
+ ((ELEMENT.IRON.getProtons()*18)+(ELEMENT.MOLYBDENUM.getProtons()*9)+(ELEMENT.CHROMIUM.getProtons()*22)+(ELEMENT.NICKEL.getProtons()*51))/100, //Protons
+ ((ELEMENT.IRON.getNeutrons()*18)+(ELEMENT.MOLYBDENUM.getNeutrons()*9)+(ELEMENT.CHROMIUM.getNeutrons()*22)+(ELEMENT.NICKEL.getNeutrons()*51))/100, //Neutrons
+ false, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.IRON, 18),
+ new MaterialStack(ELEMENT.MOLYBDENUM, 9),
+ new MaterialStack(ELEMENT.CHROMIUM, 22),
+ new MaterialStack(ELEMENT.NICKEL, 51)
+ });
+
+ public static final Material HASTELLOY_N = new Material(
+ "Hastelloy-N", //Material Name
+ new short[]{236, 213, 48, 0}, //Material Colour
+ 1350, //Melting Point in C
+ ((ELEMENT.YTTRIUM.getBoilingPoint_C()*5)+(ELEMENT.MOLYBDENUM.getBoilingPoint_C()*16)+(ELEMENT.CHROMIUM.getBoilingPoint_C()*7)+(ELEMENT.NICKEL.getBoilingPoint_C()*72))/100, //Boiling Point in C
+ ((ELEMENT.YTTRIUM.getProtons()*5)+(ELEMENT.MOLYBDENUM.getProtons()*16)+(ELEMENT.CHROMIUM.getProtons()*7)+(ELEMENT.NICKEL.getProtons()*72))/100, //Protons
+ ((ELEMENT.YTTRIUM.getNeutrons()*5)+(ELEMENT.MOLYBDENUM.getNeutrons()*16)+(ELEMENT.CHROMIUM.getNeutrons()*7)+(ELEMENT.NICKEL.getNeutrons()*72))/100, //Neutrons
+ true, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.YTTRIUM, 05),
+ new MaterialStack(ELEMENT.MOLYBDENUM, 16),
+ new MaterialStack(ELEMENT.CHROMIUM, 7),
+ new MaterialStack(ELEMENT.NICKEL, 72)
+ });
+
+ public static final Material HASTELLOY_C276 = new Material(
+ "Hastelloy-C276", //Material Name
+ new short[]{238, 180, 34, 0}, //Material Colour
+ 1350, //Melting Point in C
+ ((ELEMENT.COBALT.getBoilingPoint_C()*2)+(ELEMENT.MOLYBDENUM.getBoilingPoint_C()*16)+(ELEMENT.CHROMIUM.getBoilingPoint_C()*16)+(ELEMENT.NICKEL.getBoilingPoint_C()*66))/100, //Boiling Point in C
+ ((ELEMENT.COBALT.getProtons()*2)+(ELEMENT.MOLYBDENUM.getProtons()*16)+(ELEMENT.CHROMIUM.getProtons()*16)+(ELEMENT.NICKEL.getProtons()*66))/100, //Protons
+ ((ELEMENT.COBALT.getNeutrons()*2)+(ELEMENT.MOLYBDENUM.getNeutrons()*16)+(ELEMENT.CHROMIUM.getNeutrons()*16)+(ELEMENT.NICKEL.getNeutrons()*66))/100, //Neutrons
+ true, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.COBALT, 02),
+ new MaterialStack(ELEMENT.MOLYBDENUM, 16),
+ new MaterialStack(ELEMENT.CHROMIUM, 16),
+ new MaterialStack(ELEMENT.NICKEL, 66)
+ });
+
+ public static final Material INCOLOY_020 = new Material(
+ "Incoloy-020", //Material Name
+ new short[]{101, 81, 71, 0}, //Material Colour
+ 1425, //Melting Point in C
+ ((ELEMENT.IRON.getBoilingPoint_C()*40)+(ELEMENT.COPPER.getBoilingPoint_C()*4)+(ELEMENT.CHROMIUM.getBoilingPoint_C()*20)+(ELEMENT.NICKEL.getBoilingPoint_C()*36))/100, //Boiling Point in C
+ ((ELEMENT.IRON.getProtons()*40)+(ELEMENT.COPPER.getProtons()*4)+(ELEMENT.CHROMIUM.getProtons()*20)+(ELEMENT.NICKEL.getProtons()*36))/100, //Protons
+ ((ELEMENT.IRON.getNeutrons()*40)+(ELEMENT.COPPER.getNeutrons()*4)+(ELEMENT.CHROMIUM.getNeutrons()*20)+(ELEMENT.NICKEL.getNeutrons()*36))/100, //Neutrons
+ false, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.IRON, 40),
+ new MaterialStack(ELEMENT.COPPER, 4),
+ new MaterialStack(ELEMENT.CHROMIUM, 20),
+ new MaterialStack(ELEMENT.NICKEL, 36)
+ });
+
+ public static final Material INCOLOY_DS = new Material(
+ "Incoloy-DS", //Material Name
+ new short[]{71, 101, 81, 0}, //Material Colour
+ 1425, //Melting Point in C
+ ((ELEMENT.IRON.getBoilingPoint_C()*46)+(ELEMENT.COBALT.getBoilingPoint_C()*18)+(ELEMENT.CHROMIUM.getBoilingPoint_C()*18)+(ELEMENT.NICKEL.getBoilingPoint_C()*18))/100, //Boiling Point in C
+ ((ELEMENT.IRON.getProtons()*46)+(ELEMENT.COBALT.getProtons()*18)+(ELEMENT.CHROMIUM.getProtons()*18)+(ELEMENT.NICKEL.getProtons()*18))/100, //Protons
+ ((ELEMENT.IRON.getNeutrons()*46)+(ELEMENT.COBALT.getNeutrons()*18)+(ELEMENT.CHROMIUM.getNeutrons()*18)+(ELEMENT.NICKEL.getNeutrons()*18))/100, //Neutrons
+ false, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.IRON, 46),
+ new MaterialStack(ELEMENT.COBALT, 18),
+ new MaterialStack(ELEMENT.CHROMIUM, 18),
+ new MaterialStack(ELEMENT.NICKEL, 18)
+ });
+
+ public static final Material INCOLOY_MA956 = new Material(
+ "Incoloy-MA956", //Material Name
+ new short[]{81, 71, 101, 0}, //Material Colour
+ 1425, //Melting Point in C
+ ((ELEMENT.IRON.getBoilingPoint_C()*75)+(ELEMENT.ALUMINIUM.getBoilingPoint_C()*4)+(ELEMENT.CHROMIUM.getBoilingPoint_C()*20)+(ELEMENT.YTTRIUM.getBoilingPoint_C()*1))/100, //Boiling Point in C
+ ((ELEMENT.IRON.getProtons()*75)+(ELEMENT.ALUMINIUM.getProtons()*4)+(ELEMENT.CHROMIUM.getProtons()*20)+(ELEMENT.YTTRIUM.getProtons()*1))/100, //Protons
+ ((ELEMENT.IRON.getNeutrons()*75)+(ELEMENT.ALUMINIUM.getNeutrons()*4)+(ELEMENT.CHROMIUM.getNeutrons()*20)+(ELEMENT.YTTRIUM.getNeutrons()*1))/100, //Neutrons
+ true, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.IRON, 75),
+ new MaterialStack(ELEMENT.ALUMINIUM, 4),
+ new MaterialStack(ELEMENT.CHROMIUM, 20),
+ new MaterialStack(ELEMENT.YTTRIUM, 1)
+ });
+
+ public static final Material TUNGSTEN_CARBIDE = new Material(
+ "Tungsten Carbide", //Material Name
+ new short[]{44, 44, 44, 0}, //Material Colour
+ 3422, //Melting Point in C
+ ((ELEMENT.TUNGSTEN.getBoilingPoint_C()*5)+(ELEMENT.CARBON.getBoilingPoint_C()*5))/10, //Boiling Point in C
+ ((ELEMENT.TUNGSTEN.getProtons()*5)+(ELEMENT.CARBON.getProtons()*5))/10, //Protons
+ ((ELEMENT.TUNGSTEN.getNeutrons()*5)+(ELEMENT.CARBON.getNeutrons()*5))/10, //Neutrons
+ true, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.CARBON, 50),
+ new MaterialStack(ELEMENT.TUNGSTEN, 50)
+ });
+
+ public static final Material SILICON_CARBIDE = new Material(
+ "Silicon Carbide", //Material Name
+ new short[]{40, 48, 36, 0}, //Material Colour
+ 1414, //Melting Point in C
+ ((ELEMENT.SILICON.getBoilingPoint_C()*5)+(ELEMENT.CARBON.getBoilingPoint_C()*5))/10, //Boiling Point in C
+ ((ELEMENT.SILICON.getProtons()*5)+(ELEMENT.CARBON.getProtons()*5))/10, //Protons
+ ((ELEMENT.SILICON.getNeutrons()*5)+(ELEMENT.CARBON.getNeutrons()*5))/10, //Neutrons
+ false, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.CARBON, 50),
+ new MaterialStack(ELEMENT.SILICON, 50)
+ });
+
+ public static final Material TANTALUM_CARBIDE = new Material(
+ "Tantalum Carbide", //Material Name
+ new short[]{139, 136, 120, 0}, //Material Colour
+ 2980, //Melting Point in C
+ ((ELEMENT.TANTALUM.getBoilingPoint_C()*5)+(ELEMENT.CARBON.getBoilingPoint_C()*5))/10, //Boiling Point in C
+ ((ELEMENT.TANTALUM.getProtons()*5)+(ELEMENT.CARBON.getProtons()*5))/10, //Protons
+ ((ELEMENT.TANTALUM.getNeutrons()*5)+(ELEMENT.CARBON.getNeutrons()*5))/10, //Neutrons
+ true, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.CARBON, 50),
+ new MaterialStack(ELEMENT.TANTALUM, 50)
+ });
+
+ public static final Material ZIRCONIUM_CARBIDE = new Material(
+ "Zirconium Carbide", //Material Name
+ new short[]{222, 202, 180, 0}, //Material Colour
+ 1855, //Melting Point in C
+ ((ELEMENT.ZIRCONIUM.getBoilingPoint_C()*5)+(ELEMENT.CARBON.getBoilingPoint_C()*5))/10, //Boiling Point in C
+ ((ELEMENT.ZIRCONIUM.getProtons()*5)+(ELEMENT.CARBON.getProtons()*5))/10, //Protons
+ ((ELEMENT.ZIRCONIUM.getNeutrons()*5)+(ELEMENT.CARBON.getNeutrons()*5))/10, //Neutrons
+ true, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.CARBON, 50),
+ new MaterialStack(ELEMENT.ZIRCONIUM, 50)
+ });
+
+ public static final Material NIOBIUM_CARBIDE = new Material(
+ "Niobium Carbide", //Material Name
+ new short[]{205, 197, 191, 0}, //Material Colour
+ 2477, //Melting Point in C
+ ((ELEMENT.NIOBIUM.getBoilingPoint_C()*5)+(ELEMENT.CARBON.getBoilingPoint_C()*5))/10, //Boiling Point in C
+ ((ELEMENT.NIOBIUM.getProtons()*5)+(ELEMENT.CARBON.getProtons()*5))/10, //Protons
+ ((ELEMENT.NIOBIUM.getNeutrons()*5)+(ELEMENT.CARBON.getNeutrons()*5))/10, //Neutrons
+ true, //Uses Blast furnace?
+ //Material Stacks with Percentage of required elements.
+ new MaterialStack[]{
+ new MaterialStack(ELEMENT.CARBON, 50),
+ new MaterialStack(ELEMENT.NIOBIUM, 50)
+ });
+
+
+}
diff --git a/src/Java/gtPlusPlus/core/material/ELEMENT.java b/src/Java/gtPlusPlus/core/material/ELEMENT.java
new file mode 100644
index 0000000000..307105eaf0
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/material/ELEMENT.java
@@ -0,0 +1,85 @@
+package gtPlusPlus.core.material;
+
+import gregtech.api.enums.Materials;
+import gtPlusPlus.core.util.materials.MaterialUtils;
+
+public final class ELEMENT {
+
+
+ //First 50 Elements
+ public static final Material HYDROGEN = MaterialUtils.generateMaterialFromGtENUM(Materials.Hydrogen);
+ public static final Material HELIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Helium);
+ public static final Material LITHIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Lithium);
+ public static final Material BERYLLIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Beryllium);
+ public static final Material BORON = MaterialUtils.generateMaterialFromGtENUM(Materials.Boron);
+ public static final Material CARBON = MaterialUtils.generateMaterialFromGtENUM(Materials.Carbon);
+ public static final Material NITROGEN = MaterialUtils.generateMaterialFromGtENUM(Materials.Nitrogen);
+ public static final Material OXYGEN = MaterialUtils.generateMaterialFromGtENUM(Materials.Oxygen);
+ public static final Material FLUORINE = MaterialUtils.generateMaterialFromGtENUM(Materials.Fluorine);
+ //public static final Material NEON = MaterialUtils.generateMaterialFromGtENUM(Materials.Ne);
+ public static final Material SODIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Sodium);
+ public static final Material MAGNESIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Magnesium);
+ public static final Material ALUMINIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Aluminium);
+ public static final Material SILICON = MaterialUtils.generateMaterialFromGtENUM(Materials.Silicon);
+ public static final Material PHOSPHORUS = MaterialUtils.generateMaterialFromGtENUM(Materials.Phosphorus);
+ public static final Material SULFUR = MaterialUtils.generateMaterialFromGtENUM(Materials.Sulfur);
+ public static final Material CHLORINE = MaterialUtils.generateMaterialFromGtENUM(Materials.Chlorine);
+ public static final Material ARGON = MaterialUtils.generateMaterialFromGtENUM(Materials.Argon);
+ public static final Material POTASSIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Potassium);
+ public static final Material CALCIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Calcium);
+ public static final Material SCANDIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Scandium);
+ public static final Material TITANIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Titanium);
+ public static final Material VANADIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Vanadium);
+ public static final Material CHROMIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Chrome);
+ public static final Material MANGANESE = MaterialUtils.generateMaterialFromGtENUM(Materials.Manganese);
+ public static final Material IRON = MaterialUtils.generateMaterialFromGtENUM(Materials.Iron);
+ public static final Material COBALT = MaterialUtils.generateMaterialFromGtENUM(Materials.Cobalt);
+ public static final Material NICKEL = MaterialUtils.generateMaterialFromGtENUM(Materials.Nickel);
+ public static final Material COPPER = MaterialUtils.generateMaterialFromGtENUM(Materials.Copper);
+ public static final Material ZINC = MaterialUtils.generateMaterialFromGtENUM(Materials.Zinc);
+ public static final Material GALLIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Gallium);
+ //public static final Material GERMANIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Germanium);
+ public static final Material ARSENIC = MaterialUtils.generateMaterialFromGtENUM(Materials.Arsenic);
+ //public static final Material SELENIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Selenium);
+ //public static final Material BROMINE = MaterialUtils.generateMaterialFromGtENUM(Materials.Bromine);
+ //public static final Material KRYPTON = MaterialUtils.generateMaterialFromGtENUM(Materials.Krypton);
+ public static final Material RUBIDIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Rubidium);
+ public static final Material STRONTIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Strontium);
+ public static final Material YTTRIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Yttrium);
+ public static final Material ZIRCONIUM = new Material("Zirconium", new short[]{255, 250, 205}, 1855, 4377, 40, 51, false, null);//Not a GT Inherited Material
+ public static final Material NIOBIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Niobium);
+ public static final Material MOLYBDENUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Molybdenum);
+ //public static final Material TECHNETIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Technetium);
+ //public static final Material RUTHENIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Ruthenium);
+ //public static final Material RHODIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Rhodium);
+ public static final Material PALLADIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Palladium);
+ public static final Material SILVER = MaterialUtils.generateMaterialFromGtENUM(Materials.Silver);
+ public static final Material CADMIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Cadmium);
+ public static final Material INDIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Indium);
+ public static final Material TIN = MaterialUtils.generateMaterialFromGtENUM(Materials.Tin);
+
+
+
+
+
+
+
+
+
+ //Second 50 elements
+ public static final Material TANTALUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Tantalum);
+ public static final Material TUNGSTEN = MaterialUtils.generateMaterialFromGtENUM(Materials.Tungsten);
+ public static final Material OSMIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Osmium);
+ public static final Material IRIDIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Iridium);
+ public static final Material PLATINUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Platinum);
+ public static final Material GOLD = MaterialUtils.generateMaterialFromGtENUM(Materials.Gold);
+ public static final Material LEAD = MaterialUtils.generateMaterialFromGtENUM(Materials.Lead);
+ public static final Material BISMUTH = MaterialUtils.generateMaterialFromGtENUM(Materials.Bismuth);
+ public static final Material RADON = MaterialUtils.generateMaterialFromGtENUM(Materials.Radon);
+ public static final Material THORIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Thorium);
+ public static final Material URANIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Uranium);
+ public static final Material PLUTONIUM = MaterialUtils.generateMaterialFromGtENUM(Materials.Plutonium);
+ public static final Material URANIUM233 = new Material("Uranium-233", new short[]{73, 220, 83, 0}, 1132, 4131, 92, 141, false, null);//Not a GT Inherited Material
+
+
+}
diff --git a/src/Java/gtPlusPlus/core/material/Material.java b/src/Java/gtPlusPlus/core/material/Material.java
new file mode 100644
index 0000000000..2939016798
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/material/Material.java
@@ -0,0 +1,154 @@
+package gtPlusPlus.core.material;
+
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.item.UtilsItems;
+import gtPlusPlus.core.util.math.MathUtils;
+import net.minecraft.item.ItemStack;
+
+public class Material {
+
+ final String unlocalizedName;
+ final String localizedName;
+
+ private MaterialStack[] materialInput = new MaterialStack[4];
+
+ final short[] RGBA;
+
+ final boolean usesBlastFurnace;
+
+ final int meltingPointK;
+ final int boilingPointK;
+ final int meltingPointC;
+ final int boilingPointC;
+ final long vProtons;
+ final long vNeutrons;
+ final long vMass;
+
+ public Material(String materialName, short[] rgba, int meltingPoint, int boilingPoint, long protons, long neutrons, boolean blastFurnace, MaterialStack[] inputs){
+
+ this.unlocalizedName = Utils.sanitizeString(materialName);
+ this.localizedName = materialName;
+ this.RGBA = rgba;
+ this.meltingPointC = meltingPoint;
+ if (boilingPoint == 0){
+ boilingPoint = meltingPoint*4;
+ }
+ this.boilingPointC = boilingPoint;
+ this.meltingPointK = (int) MathUtils.celsiusToKelvin(meltingPointC);
+ this.boilingPointK = (int) MathUtils.celsiusToKelvin(boilingPointC);
+ this.vProtons = protons;
+ this.vNeutrons = neutrons;
+ this.vMass = getMass();
+ this.usesBlastFurnace = blastFurnace;
+
+ if (inputs == null){
+ this.materialInput = null;
+ }
+ else {
+ if (inputs.length != 0){
+ for (int i=0; i < inputs.length; i++){
+ if (inputs[i] != null){
+ this.materialInput[i] = inputs[i];
+ }
+ }
+ }
+ }
+ Utils.LOG_INFO("Creating a Material instance for "+materialName);
+ Utils.LOG_INFO("Protons: "+vProtons);
+ Utils.LOG_INFO("Neutrons: "+vNeutrons);
+ Utils.LOG_INFO("Mass: "+vMass+"/units");
+ Utils.LOG_INFO("Melting Point: "+meltingPointC+"C.");
+ Utils.LOG_INFO("Boiling Point: "+boilingPointC+"C.");
+ }
+
+ public String getLocalizedName(){
+ return localizedName;
+ }
+
+ public String getUnlocalizedName(){
+ return unlocalizedName;
+ }
+
+ public short[] getRGBA(){
+ return RGBA;
+ }
+
+ public long getProtons() {
+ return vProtons;
+ }
+
+ public long getNeutrons() {
+ return vNeutrons;
+ }
+
+ public long getMass() {
+ return vProtons + vNeutrons;
+ }
+
+ public int getMeltingPoint_C() {
+ return meltingPointC;
+ }
+
+ public int getBoilingPoint_C() {
+ return boilingPointC;
+ }
+
+ public boolean requiresBlastFurnace(){
+ return usesBlastFurnace;
+ }
+
+ public ItemStack getDust(int stacksize){
+ return UtilsItems.getItemStackOfAmountFromOreDictNoBroken("dust"+unlocalizedName, stacksize);
+ }
+
+ public ItemStack getSmallDust(int stacksize){
+ return UtilsItems.getItemStackOfAmountFromOreDictNoBroken("dustSmall"+unlocalizedName, stacksize);
+ }
+
+ public ItemStack getTinyDust(int stacksize){
+ return UtilsItems.getItemStackOfAmountFromOreDictNoBroken("dustTiny"+unlocalizedName, stacksize);
+ }
+
+ public ItemStack[] getValidInputStacks(){
+ return UtilsItems.validItemsForOreDict(unlocalizedName);
+ }
+
+ public ItemStack[] getMaterialComposites(){
+ //Utils.LOG_INFO("Something requested the materials needed for "+localizedName);
+ if (materialInput != null && materialInput.length >= 1){
+ ItemStack[] temp = new ItemStack[materialInput.length];
+ for (int i=0;i<materialInput.length;i++){
+ //Utils.LOG_INFO("i:"+i);
+ ItemStack testNull = null;
+ try {
+ testNull = materialInput[i].getDustStack();
+ } catch (Throwable r){
+ Utils.LOG_INFO("Failed gathering material stack for "+localizedName+".");
+ Utils.LOG_INFO("What Failed: Length:"+materialInput.length+" current:"+i);
+ }
+ try {
+ if (testNull != null){
+ //Utils.LOG_INFO("not null");
+ temp[i] = materialInput[i].getDustStack();
+ }
+ } catch (Throwable r){
+ Utils.LOG_INFO("Failed setting slot "+i+", using "+localizedName);
+ }
+ }
+ return temp;
+ }
+ return new ItemStack[]{};
+ }
+
+ public int[] getMaterialCompositeStackSizes(){
+ if (materialInput != null && materialInput.length >= 1){
+ int[] temp = new int[materialInput.length];
+ for (int i=0;i<materialInput.length;i++){
+ temp[i] = materialInput[i].getDustStack().stackSize;
+ }
+ return temp;
+ }
+ return new int[]{};
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/core/material/MaterialStack.java b/src/Java/gtPlusPlus/core/material/MaterialStack.java
new file mode 100644
index 0000000000..f8b9b35bd8
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/material/MaterialStack.java
@@ -0,0 +1,72 @@
+package gtPlusPlus.core.material;
+
+import gtPlusPlus.core.util.item.UtilsItems;
+import net.minecraft.item.ItemStack;
+
+public class MaterialStack {
+
+ final Material materialInput;
+ final double percentageToUse;
+
+ public MaterialStack(Material inputs, double percentage){
+
+ this.materialInput = inputs;
+ this.percentageToUse = percentage;
+
+
+ }
+
+ public ItemStack getDustStack(){
+ int caseStatus = 0;
+ int amount = 0;
+ if (percentageToUse >= 0 && percentageToUse <= 0.99){
+ caseStatus = 1;
+ amount = (int) (1/percentageToUse);
+ //amount = Integer.valueOf(String.valueOf(percentageToUse).charAt(2));
+ }
+ else if (percentageToUse >= 1 && percentageToUse <= 9.99){
+ caseStatus = 2;
+ amount = (int) (percentageToUse);
+ //amount = Integer.valueOf(String.valueOf(percentageToUse).charAt(0));
+ }
+ else if (percentageToUse >= 10 && percentageToUse <= 99.99){
+ caseStatus = 3;
+ amount = (int) (percentageToUse/10);
+ //amount = Integer.valueOf(String.valueOf(percentageToUse).charAt(0));
+ }
+ else if (percentageToUse == 100){
+ caseStatus = 4;
+ amount = 10;
+ }
+ else {
+ amount = 0;
+ }
+ switch (caseStatus) {
+ case 1: {
+ return UtilsItems.getItemStackOfAmountFromOreDictNoBroken("dustTiny"+materialInput.unlocalizedName, amount);
+ }
+ case 2: {
+ return UtilsItems.getItemStackOfAmountFromOreDictNoBroken("dustSmall"+materialInput.unlocalizedName, amount);
+ }
+ case 3: {
+ return UtilsItems.getItemStackOfAmountFromOreDictNoBroken("dust"+materialInput.unlocalizedName, amount);
+ }
+ case 4: {
+ return UtilsItems.getItemStackOfAmountFromOreDictNoBroken("dust"+materialInput.unlocalizedName, amount);
+ }
+ default:
+ return null;
+ }
+
+ }
+
+ public ItemStack[] getValidItemStacks(){
+ return UtilsItems.validItemsForOreDict(materialInput.unlocalizedName);
+ }
+
+
+
+
+
+
+}
diff --git a/src/Java/gtPlusPlus/core/proxy/ClientProxy.java b/src/Java/gtPlusPlus/core/proxy/ClientProxy.java
index 3019a71266..3b3c257ffa 100644
--- a/src/Java/gtPlusPlus/core/proxy/ClientProxy.java
+++ b/src/Java/gtPlusPlus/core/proxy/ClientProxy.java
@@ -33,6 +33,7 @@ public class ClientProxy extends CommonProxy{
@Override
public void registerRenderThings(){
+ //MinecraftForgeClient.registerItemRenderer(ModItems.FluidCell.getItem(), new RenderLiquidCell());
//RenderingRegistry.registerEntityRenderingHandler(EntityBloodSteelMob.class, new RenderBloodSteelMob(new ModelBloodSteelMob(), 0));
//RenderingRegistry.registerEntityRenderingHandler(EntityBloodSteelHostileMob.class, new RenderBloodSteelMobHostile(new ModelBloodSteelMob(), 0));
//RenderingRegistry.registerEntityRenderingHandler(EntityGrenade.class, new RenderSnowball(ModItems.tutGrenade));
diff --git a/src/Java/gtPlusPlus/core/util/Utils.java b/src/Java/gtPlusPlus/core/util/Utils.java
index 72c4632df2..42d6dc4ad4 100644
--- a/src/Java/gtPlusPlus/core/util/Utils.java
+++ b/src/Java/gtPlusPlus/core/util/Utils.java
@@ -213,10 +213,10 @@ public class Utils {
/**
*
- * @param colorStr e.g. "#FFFFFF"
+ * @param colourStr e.g. "#FFFFFF"
* @return String - formatted "rgb(0,0,0)"
*/
- public static String hex2Rgb(String hexString) {
+ public static String hex2RgbFormatted(String hexString) {
Color c = new Color(
Integer.valueOf(hexString.substring(1, 3), 16),
Integer.valueOf(hexString.substring(3, 5), 16),
@@ -232,6 +232,38 @@ public class Utils {
sb.append(")");
return sb.toString();
}
+
+ /**
+ *
+ * @param colourStr e.g. "#FFFFFF"
+ * @return
+ */
+ public static Color hex2Rgb(String colorStr) {
+ return new Color(
+ Integer.valueOf( colorStr.substring( 1, 3 ), 16 ),
+ Integer.valueOf( colorStr.substring( 3, 5 ), 16 ),
+ Integer.valueOf( colorStr.substring( 5, 7 ), 16 ) );
+ }
+
+ /**
+ *
+ * @param colourInt e.g. 0XFFFFFF
+ * @return Colour
+ */
+ public static Color hex2Rgb(int colourInt) {
+ return Color.decode(String.valueOf(colourInt));
+ }
+
+ /**
+ *
+ * @param colourInt e.g. 0XFFFFFF
+ * @return short[]
+ */
+ public static short[] hex2RgbShort(int colourInt) {
+ Color rgb = Color.decode(String.valueOf(colourInt));
+ short[] rgba = {(short) rgb.getRed(), (short) rgb.getGreen(), (short) rgb.getBlue(), (short) rgb.getAlpha()};
+ return rgba;
+ }
public static Timer ShortTimer(int seconds) {
Timer timer;
@@ -259,6 +291,11 @@ public class Utils {
List<Object> targetList = new ArrayList<Object>(Arrays.asList(sourceArray));
return targetList;
}
+
+ public static List<Object> convertArrayListToList(ArrayList sourceArray) {
+ List<Object> targetList = new ArrayList<Object>(Arrays.asList(sourceArray));
+ return targetList;
+ }
public static EntityPlayer getPlayerOnServerFromUUID(UUID parUUID){
if (parUUID == null)
@@ -524,6 +561,7 @@ public class Utils {
temp = temp.replace("}", "");
temp = temp.replace("[", "");
temp = temp.replace("]", "");
+ temp = temp.replace(" ", "");
output = temp;
return output;
diff --git a/src/Java/gtPlusPlus/core/util/fluid/FluidUtils.java b/src/Java/gtPlusPlus/core/util/fluid/FluidUtils.java
index 53873c6e4e..e576eba8f5 100644
--- a/src/Java/gtPlusPlus/core/util/fluid/FluidUtils.java
+++ b/src/Java/gtPlusPlus/core/util/fluid/FluidUtils.java
@@ -1,8 +1,20 @@
package gtPlusPlus.core.util.fluid;
+import gregtech.api.enums.Dyes;
+import gregtech.api.enums.GT_Values;
+import gregtech.api.enums.ItemList;
+import gregtech.api.util.GT_LanguageManager;
+import gtPlusPlus.core.fluids.GenericFluid;
+import gtPlusPlus.core.material.Material;
import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes.GT_Materials;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidContainerRegistry;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
+import net.minecraftforge.fluids.IFluidContainerItem;
public class FluidUtils {
@@ -16,7 +28,7 @@ public class FluidUtils {
}
}
-
+
public static FluidStack[] getFluidStackArray(String fluidName, int amount){
Utils.LOG_WARNING("Trying to get a fluid stack of "+fluidName);
try {
@@ -28,7 +40,7 @@ public class FluidUtils {
}
}
-
+
public static FluidStack[] getFluidStackArray(FluidStack fluidName, int amount){
Utils.LOG_WARNING("Trying to get a fluid stack of "+fluidName);
try {
@@ -41,4 +53,235 @@ public class FluidUtils {
}
+
+ /**
+ * @param String displayName
+ * @param String fluidName
+ * @param int meltingPointC Temp
+ * @param short[] rgba
+ * @param byte state
+ * States: 0 (Solid), 1 (Fluid), 2(Gas), 3(Plasma) 4(Fuel I think? Don't use.)
+ *
+ * @return short[]
+ */
+ public static Fluid generateFluid(String displayName, String fluidName, int tempK, short[] rgba ,int aState){
+ Fluid generatedFluid = null;
+ switch (aState) {
+ case 0: {
+ generatedFluid = new GenericFluid(displayName, fluidName, 0, 100, tempK, 10000, false, rgba);
+ break;
+ }
+ default:
+ case 1:
+ case 4: {
+ generatedFluid = new GenericFluid(displayName, fluidName, 0, 100, tempK, 1000, false, rgba);
+ break;
+ }
+ case 2: {
+ generatedFluid = new GenericFluid(displayName, fluidName, 0, -100, tempK, 200, true, rgba);
+ break;
+ }
+ case 3: {
+ generatedFluid = new GenericFluid(displayName, fluidName, 15, -10000, tempK, 10, true, rgba);
+ break;
+ }
+ }
+ return generatedFluid;
+ }
+ /**
+ *
+ * @param String fluidName
+ * @param int meltingPointC Temp
+ * @param short[] rgba
+ * @param byte state
+ * States: 0 (Solid), 1 (Fluid), 2(Gas), 3(Plasma) 4(Fuel I think? Don't use.)
+ *
+ * @return short[]
+ */
+ public static Fluid generateFluid(Material material ,int aState){
+ int tempK = material.getMeltingPoint_C();
+ Fluid generatedFluid = null;
+ switch (aState) {
+ case 0: {
+ generatedFluid = new GenericFluid(material, 0, 100, tempK, 10000, false);
+ break;
+ }
+ default:
+ case 1:
+ case 4: {
+ generatedFluid = new GenericFluid(material, 0, 100, tempK, 1000, false);
+ break;
+ }
+ case 2: {
+ generatedFluid = new GenericFluid(material, 0, -100, tempK, 200, true);
+ break;
+ }
+ case 3: {
+ generatedFluid = new GenericFluid(material, 15, -10000, tempK, 10, true);
+ break;
+ }
+ }
+ return generatedFluid;
+ }
+
+
+ public static Fluid addAutogeneratedMoltenFluid(String materialNameFormatted, short[] rgba, int MeltingPoint) {
+ return addFluid("molten." + materialNameFormatted.toLowerCase(), "molten.autogenerated", "Molten " + materialNameFormatted, null, rgba, 1, (MeltingPoint <= 0L) ? 1000L : MeltingPoint, null, null, 0);
+ }
+
+ public static Fluid addAutogeneratedMoltenFluid(final GT_Materials aMaterial) {
+ return addFluid("molten." + aMaterial.name().toLowerCase(), "molten.autogenerated", "Molten " + aMaterial.name(), aMaterial, aMaterial.mMoltenRGBa, 1, (aMaterial.mMeltingPoint <= 0L) ? 1000L : aMaterial.mMeltingPoint, null, null, 0);
+ }
+
+ public static Fluid addFluid(final String aName, final String aLocalized, final GT_Materials aMaterial, final int aState, final long aTemperatureK) {
+ return addFluid(aName, aLocalized, aMaterial, aState, aTemperatureK, null, null, 0);
+ }
+
+ public static Fluid addFluid(final String aName, final String aLocalized, final GT_Materials aMaterial, final int aState, final long aTemperatureK, final ItemStack aFullContainer, final ItemStack aEmptyContainer, final int aFluidAmount) {
+ return addFluid(aName, aName.toLowerCase(), aLocalized, aMaterial, null, aState, aTemperatureK, aFullContainer, aEmptyContainer, aFluidAmount);
+ }
+
+ public static Fluid addFluid(String aName, final String aTexture, final String aLocalized, final GT_Materials aMaterial, final short[] aRGBa, final int aState, final long aTemperatureK, final ItemStack aFullContainer, final ItemStack aEmptyContainer, final int aFluidAmount) {
+ aName = Utils.sanitizeString(aName.toLowerCase());
+ Fluid rFluid = new FluidGT6(aName, aTexture, (aRGBa != null) ? aRGBa : Dyes._NULL.getRGBA());
+ GT_LanguageManager.addStringLocalization(rFluid.getUnlocalizedName(), (aLocalized == null) ? aName : aLocalized);
+ if (FluidRegistry.registerFluid(rFluid)) {
+ switch (aState) {
+ case 0: {
+ rFluid.setGaseous(false);
+ rFluid.setViscosity(10000);
+ break;
+ }
+ case 1:
+ case 4: {
+ rFluid.setGaseous(false);
+ rFluid.setViscosity(1000);
+ break;
+ }
+ case 2: {
+ rFluid.setGaseous(true);
+ rFluid.setDensity(-100);
+ rFluid.setViscosity(200);
+ break;
+ }
+ case 3: {
+ rFluid.setGaseous(true);
+ rFluid.setDensity(-10000);
+ rFluid.setViscosity(10);
+ rFluid.setLuminosity(15);
+ break;
+ }
+ }
+ }
+ else {
+ rFluid = FluidRegistry.getFluid(aName);
+ }
+ if (rFluid.getTemperature() == new Fluid("test").getTemperature() || rFluid.getTemperature() <= 0) {
+ rFluid.setTemperature((int) (aTemperatureK));
+ }
+ if (aMaterial != null) {
+ switch (aState) {
+ case 1: {
+ aMaterial.mFluid = (rFluid);
+ break;
+ }
+ case 2: {
+ aMaterial.mGas = (rFluid);
+ break;
+ }
+ case 3: {
+ aMaterial.mPlasma = (rFluid);
+ break;
+ }
+ }
+ }
+ if (aFullContainer != null && aEmptyContainer != null && !FluidContainerRegistry.registerFluidContainer(new FluidStack(rFluid, aFluidAmount), aFullContainer, aEmptyContainer)) {
+ GT_Values.RA.addFluidCannerRecipe(aFullContainer, container(aFullContainer, false), null, new FluidStack(rFluid, aFluidAmount));
+ }
+ return rFluid;
+ }
+
+ public static boolean valid(final Object aStack) {
+ return aStack != null && aStack instanceof ItemStack && ((ItemStack)aStack).getItem() != null && ((ItemStack)aStack).stackSize >= 0;
+ }
+
+ public static boolean invalid(final Object aStack) {
+ return aStack == null || !(aStack instanceof ItemStack) || ((ItemStack)aStack).getItem() == null || ((ItemStack)aStack).stackSize < 0;
+ }
+
+ public static boolean equal(final ItemStack aStack1, final ItemStack aStack2) {
+ return equal(aStack1, aStack2, false);
+ }
+
+ public static boolean equal(final ItemStack aStack1, final ItemStack aStack2, final boolean aIgnoreNBT) {
+ return aStack1 != null && aStack2 != null && equal_(aStack1, aStack2, aIgnoreNBT);
+ }
+
+ public static boolean equal_(final ItemStack aStack1, final ItemStack aStack2, final boolean aIgnoreNBT) {
+ return aStack1.getItem() == aStack2.getItem() && (aIgnoreNBT || (aStack1.getTagCompound() == null == (aStack2.getTagCompound() == null) && (aStack1.getTagCompound() == null || aStack1.getTagCompound().equals((Object)aStack2.getTagCompound())))) && (meta(aStack1) == meta(aStack2) || meta(aStack1) == 32767 || meta(aStack2) == 32767);
+ }
+
+ public static ItemStack copy(final Object... aStacks) {
+ for (final Object tStack : aStacks) {
+ if (valid(tStack)) {
+ return ((ItemStack)tStack).copy();
+ }
+ }
+ return null;
+ }
+
+ public static ItemStack copyMeta(final long aMetaData, final Object... aStacks) {
+ final ItemStack rStack = copy(aStacks);
+ if (invalid(rStack)) {
+ return null;
+ }
+ return meta(rStack, aMetaData);
+ }
+
+ public static short meta(final ItemStack aStack) {
+ return (short)Items.feather.getDamage(aStack);
+ }
+
+ public static ItemStack meta(final ItemStack aStack, final long aMeta) {
+ Items.feather.setDamage(aStack, (int)(short)aMeta);
+ return aStack;
+ }
+
+ public static ItemStack amount(final long aAmount, final Object... aStacks) {
+ final ItemStack rStack = copy(aStacks);
+ if (invalid(rStack)) {
+ return null;
+ }
+ rStack.stackSize = (int)aAmount;
+ return rStack;
+ }
+
+ public static ItemStack container(final ItemStack aStack, final boolean aCheckIFluidContainerItems) {
+ if (invalid(aStack)) {
+ return null;
+ }
+ if (aStack.getItem().hasContainerItem(aStack)) {
+ return aStack.getItem().getContainerItem(aStack);
+ }
+ if (equal(aStack, ItemList.Cell_Empty.get(1), true)) {
+ return null;
+ }
+ if (aCheckIFluidContainerItems && aStack.getItem() instanceof IFluidContainerItem && ((IFluidContainerItem)aStack.getItem()).getCapacity(aStack) > 0) {
+ final ItemStack tStack = amount(1L, aStack);
+ ((IFluidContainerItem)aStack.getItem()).drain(tStack, Integer.MAX_VALUE, true);
+ if (!equal(aStack, tStack)) {
+ return tStack;
+ }
+ return null;
+ }
+ if (equal(aStack, ItemList.IC2_ForgeHammer.get(1)) || equal(aStack, ItemList.IC2_WireCutter.get(1))) {
+ return copyMeta(meta(aStack) + 1, aStack);
+ }
+ return null;
+ }
+
+ public static ItemStack container(final ItemStack aStack, final boolean aCheckIFluidContainerItems, final int aStacksize) {
+ return amount(aStacksize, container(aStack, aCheckIFluidContainerItems));
+ }
+
}
diff --git a/src/Java/gtPlusPlus/core/util/item/UtilsItems.java b/src/Java/gtPlusPlus/core/util/item/UtilsItems.java
index d68174f7bb..7a70b41f96 100644
--- a/src/Java/gtPlusPlus/core/util/item/UtilsItems.java
+++ b/src/Java/gtPlusPlus/core/util/item/UtilsItems.java
@@ -22,11 +22,14 @@ import gtPlusPlus.core.item.base.screws.BaseItemScrew;
import gtPlusPlus.core.item.tool.staballoy.MultiPickaxeBase;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.lib.LoadedMods;
-import gtPlusPlus.core.lib.MaterialInfo;
+import gtPlusPlus.core.material.Material;
import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.fluid.FluidUtils;
+import gtPlusPlus.core.util.materials.MaterialUtils;
import gtPlusPlus.core.util.wrapper.var;
import java.util.ArrayList;
+import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
@@ -39,34 +42,9 @@ import cpw.mods.fml.common.registry.GameRegistry;
public class UtilsItems {
- public static ItemStack getItemStackOfItem(Boolean modToCheck, String mod_itemname_meta){
- if (modToCheck){
- try{
- Item em = null;
-
- Item em1 = getItem(mod_itemname_meta);
- Utils.LOG_WARNING("Found: "+em1.toString());
- if (em1 != null){
- em = em1;
- }
- if (em != null ){
- ItemStack returnStack = new ItemStack(em,1);
- return returnStack;
- }
- Utils.LOG_WARNING(mod_itemname_meta+" not found.");
- return null;
- } catch (NullPointerException e) {
- Utils.LOG_ERROR(mod_itemname_meta+" not found. [NULL]");
- return null;
- }
- }
- return null;
- }
-
public static ItemStack getSimpleStack(Item x){
return getSimpleStack(x, 1);
}
-
public static ItemStack getSimpleStack(Item x, int i){
try {
ItemStack r = new ItemStack(x, i);
@@ -75,7 +53,6 @@ public class UtilsItems {
return null;
}
}
-
public static ItemStack getSimpleStack(ItemStack x, int i){
try {
ItemStack r = x.copy();
@@ -252,6 +229,16 @@ public class UtilsItems {
Item itemSpawnEgg = new BasicSpawnEgg(entityModID, parSpawnName, colourEgg, colourOverlay).setUnlocalizedName("spawn_egg_"+parSpawnName.toLowerCase()).setTextureName(CORE.MODID+":spawn_egg");
GameRegistry.registerItem(itemSpawnEgg, "spawnEgg"+parSpawnName);
}
+
+
+ public static ItemStack[] validItemsForOreDict(String oredictName){
+ List<?> validNames = MaterialUtils.oreDictValuesForEntry(oredictName);
+ ItemStack[] inputs = null;
+ for (int i=0; i<validNames.size();i++){
+ inputs[i] = (ItemStack) validNames.get(i);
+ }
+ return inputs;
+ }
public static ItemStack getItemStackOfAmountFromOreDict(String oredictName, int amount){
ArrayList<ItemStack> oreDictList = OreDictionary.getOres(oredictName);
@@ -269,25 +256,30 @@ public class UtilsItems {
if (returnValue.getItem().getClass() != ModItems.AAA_Broken.getClass() || returnValue.getItem() != ModItems.AAA_Broken){
return returnValue;
}
-
+ Utils.LOG_INFO(oredictName+" was not valid.");
return null;
}
- public static void generateItemsFromMaterial(String unlocalizedName, String materialName, int materialTier, MaterialInfo matInfo, int Colour, boolean hotIngot){
+ public static void generateItemsFromMaterial(Material matInfo){
+
+ String unlocalizedName = matInfo.getUnlocalizedName();
+ String materialName = matInfo.getLocalizedName();
+ short[] C = matInfo.getRGBA();
+ int Colour = Utils.rgbtoHexValue(C[0], C[1], C[2]);
+ boolean hotIngot = matInfo.requiresBlastFurnace();
+ int materialTier = 0; //TODO
+
if (materialTier > 10 || materialTier <= 0){
materialTier = 2;
}
- int sRadiation = 0;
- if (materialName.toLowerCase().contains("uranium")){
- sRadiation = 2;
- }
- else if (materialName.toLowerCase().contains("plutonium")){
- sRadiation = 4;
- }
- else if (materialName.toLowerCase().contains("thorium")){
- sRadiation = 1;
+
+
+ int sRadiation = 0;
+ if (isRadioactive(materialName)){
+ sRadiation = getRadioactivityLevel(materialName);
}
+
if (sRadiation >= 1){
Item temp;
Block tempBlock;
@@ -326,11 +318,13 @@ public class UtilsItems {
temp = new BaseItemScrew("itemScrew"+unlocalizedName, materialName, Colour, materialTier);
temp = new BaseItemRotor("itemRotor"+unlocalizedName, materialName, Colour);
temp = new BaseItemGear("itemGear"+unlocalizedName, materialName, Colour, materialTier);
- }
+ }
+
+ FluidUtils.generateFluid(matInfo, 1);
}
- public static Item[] generateDusts(String unlocalizedName, String materialName, int materialTier, MaterialInfo matInfo, int Colour, boolean hotIngot){
+ public static Item[] generateDusts(String unlocalizedName, String materialName, int materialTier, Material matInfo, int Colour, boolean hotIngot){
int radioactive = getRadioactivityLevel(materialName);
Item[] output = {
new BaseItemDust("itemDust"+unlocalizedName, materialName, matInfo, Colour, "Dust", hotIngot, materialTier, radioactive),
@@ -420,6 +414,17 @@ public class UtilsItems {
}
+ public static String[] getArrayStackNamesAsArray(ItemStack[] aStack){
+ String[] itemNames = {};
+ int arpos = 0;
+ for (ItemStack alph : aStack){
+ itemNames[arpos] = alph.getDisplayName();
+ arpos++;
+ }
+ return itemNames;
+
+ }
+
public static String getFluidArrayStackNames(FluidStack[] aStack){
String itemNames = "Fluid Array: ";
for (FluidStack alph : aStack){
diff --git a/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java b/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java
index 69548eb49a..0eae02d827 100644
--- a/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java
+++ b/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java
@@ -5,12 +5,15 @@ import gregtech.api.enums.Materials;
import gregtech.api.enums.TC_Aspects.TC_AspectStack;
import gregtech.api.enums.TextureSet;
import gregtech.api.objects.MaterialStack;
-import gtPlusPlus.core.lib.MaterialInfo;
+import gtPlusPlus.core.material.Material;
import gtPlusPlus.core.util.Utils;
+import java.util.ArrayList;
import java.util.List;
+import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.EnumHelper;
+import net.minecraftforge.oredict.OreDictionary;
public class MaterialUtils {
@@ -31,6 +34,27 @@ public class MaterialUtils {
aColor, aExtraData, aMaterialList, aAspects);
}
+ public static List<?> oreDictValuesForEntry(String oredictName){
+ List<?> oredictItemNames;
+ if(OreDictionary.doesOreNameExist(oredictName)){
+ ArrayList<ItemStack> oredictItems = OreDictionary.getOres(oredictName);
+ oredictItemNames = Utils.convertArrayListToList(oredictItems);
+ return oredictItemNames;
+ }
+ return null;
+ }
+
+ public static Material generateMaterialFromGtENUM(Materials material){
+ String name = material.name();
+ short[] rgba = material.mRGBa;
+ int melting = material.mMeltingPoint;
+ int boiling = material.mBlastFurnaceTemp;
+ long protons = material.getProtons();
+ long neutrons = material.getNeutrons();
+ boolean blastFurnace = material.mBlastFurnaceRequired;
+ return new Material(name, rgba, melting, boiling, protons, neutrons, blastFurnace, null);
+ }
+
/*
* That's shown, many times, in the EnumHelper code, all the add functions just wrap the addEnum function.
@@ -50,7 +74,7 @@ public class MaterialUtils {
- public static Materials GenerateGtMaterialForSingleUse(MaterialInfo s){
+ /*public static Materials GenerateGtMaterialForSingleUse(MaterialInfo s){
Materials yourName = EnumHelper.addEnum(
@@ -66,10 +90,10 @@ public class MaterialUtils {
- /*Class<? extends ItemCell> clz = item.getClass();
+ Class<? extends ItemCell> clz = item.getClass();
Method methode = clz.getDeclaredMethod("addCell", int.class, InternalName.class, Block[].class);
methode.setAccessible(true);
- ItemStack temp = (ItemStack) methode.invoke(item, cellID++, yourName, new Block[0]);*/
+ ItemStack temp = (ItemStack) methode.invoke(item, cellID++, yourName, new Block[0]);
@@ -82,6 +106,6 @@ public class MaterialUtils {
e.printStackTrace();
}
return null;
- }
+ }*/
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java b/src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java
index 4dafe394b8..0808eab6b3 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java
@@ -4,37 +4,39 @@ import gregtech.api.util.GT_Config;
import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes.GT_Materials;
import gtPlusPlus.xmod.gregtech.common.blocks.fluid.GregtechFluidHandler;
import gtPlusPlus.xmod.gregtech.common.items.MetaGeneratedGregtechItems;
+import gtPlusPlus.xmod.gregtech.common.items.MetaGeneratedGregtechTools;
+import gtPlusPlus.xmod.gregtech.loaders.ProcessingToolHeadChoocher;
import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechConduits;
public class HANDLER_GT {
-
+
public static GT_Config mMaterialProperties = null;
public static void preInit(){
new MetaGeneratedGregtechItems();
if (mMaterialProperties != null){
GT_Materials.init(mMaterialProperties);
- GregtechFluidHandler.run();
- //new Processing_Ingot1();
- //new Processing_Plate1();
- //new Processing_Block();
}
+ GregtechFluidHandler.run();
+ //new Processing_Ingot1();
+ //new Processing_Plate1();
+ //new Processing_Block();
//new Processing_HotIngots();
}
-
+
public static void init(){
-
+
//Add Custom Pipes, Wires and Cables.
GregtechConduits.run();
- //new ProcessingToolHeadChoocher();
- //new MetaGeneratedGregtechTools();
+ new MetaGeneratedGregtechTools();
+ new ProcessingToolHeadChoocher().run();
/*if (Meta_GT_Proxy.mSortToTheEnd) {
new GT_ItemIterator().run();
Meta_GT_Proxy.registerUnificationEntries();
new GT_FuelLoader().run();
}*/
}
-
+
public static void postInit(){
/*Meta_GT_Proxy.activateOreDictHandler();
if (Meta_GT_Proxy.mSortToTheEnd) {
@@ -45,5 +47,5 @@ public class HANDLER_GT {
new GT_FuelLoader().run();
}*/
}
-
+
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/items/Gregtech_MetaTool.java b/src/Java/gtPlusPlus/xmod/gregtech/api/items/Gregtech_MetaTool.java
index 20163eecb4..d4644d6b99 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/items/Gregtech_MetaTool.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/items/Gregtech_MetaTool.java
@@ -1,28 +1,22 @@
package gtPlusPlus.xmod.gregtech.api.items;
import static gregtech.api.enums.GT_Values.MOD_ID_RC;
-import gregtech.api.GregTech_API;
import gregtech.api.enchants.Enchantment_Radioactivity;
import gregtech.api.enums.Materials;
-import gregtech.api.enums.TC_Aspects.TC_AspectStack;
import gregtech.api.interfaces.IDamagableItem;
-import gregtech.api.util.GT_LanguageManager;
+import gregtech.api.interfaces.IToolStats;
+import gregtech.api.items.GT_MetaGenerated_Tool;
import gregtech.api.util.GT_ModHandler;
-import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Utility;
import gtPlusPlus.core.creative.AddToCreativeTab;
-import gtPlusPlus.xmod.gregtech.api.interfaces.internal.Interface_ToolStats;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;
-import java.util.Random;
import mods.railcraft.api.core.items.IToolCrowbar;
import net.minecraft.block.Block;
-import net.minecraft.client.renderer.texture.IIconRegister;
-import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.Entity;
@@ -30,29 +24,24 @@ import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.item.EntityMinecart;
import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.item.EnumAction;
-import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.potion.Potion;
import net.minecraft.stats.AchievementList;
import net.minecraft.stats.StatList;
import net.minecraft.util.EnumChatFormatting;
-import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import net.minecraftforge.event.world.BlockEvent;
import buildcraft.api.tools.IToolWrench;
import cpw.mods.fml.common.Optional;
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
/**
* This is an example on how you can create a Tool ItemStack, in this case a Bismuth Wrench:
* GT_MetaGenerated_Tool.sInstances.get("gt.metatool.01").getToolWithStats(16, 1, Materials.Bismuth, Materials.Bismuth, null);
*/
@Optional.InterfaceList(value = {@Optional.Interface(iface = "mods.railcraft.api.core.items.IToolCrowbar", modid = MOD_ID_RC), @Optional.Interface(iface = "buildcraft.api.tools.IToolWrench", modid = "BuildCraft")})
-public abstract class Gregtech_MetaTool extends Gregtech_MetaItem_Base implements IDamagableItem, IToolCrowbar, IToolWrench {
+public abstract class Gregtech_MetaTool extends GT_MetaGenerated_Tool implements IDamagableItem, IToolCrowbar, IToolWrench {
/**
* All instances of this Item Class are listed here.
* This gets used to register the Renderer to all Items of this Type, if useStandardMetaItemRenderer() returns true.
@@ -63,7 +52,7 @@ public abstract class Gregtech_MetaTool extends Gregtech_MetaItem_Base implement
/* ---------- CONSTRUCTOR AND MEMBER VARIABLES ---------- */
- public final HashMap<Short, Interface_ToolStats> mToolStats = new HashMap<Short, Interface_ToolStats>();
+ public final HashMap<Short, IToolStats> mToolStats = new HashMap<Short, IToolStats>();
/**
* Creates the Item using these Parameters.
@@ -78,140 +67,19 @@ public abstract class Gregtech_MetaTool extends Gregtech_MetaItem_Base implement
sInstances.put(getUnlocalizedName(), this);
}
- /* ---------- FOR ADDING CUSTOM ITEMS INTO THE REMAINING 766 RANGE ---------- */
-
- public static final Materials getPrimaryMaterial(ItemStack aStack) {
- NBTTagCompound aNBT = aStack.getTagCompound();
- if (aNBT != null) {
- aNBT = aNBT.getCompoundTag("GT.ToolStats");
- if (aNBT != null) return Materials.getRealMaterial(aNBT.getString("PrimaryMaterial"));
- }
- return Materials._NULL;
- }
-
- public static final Materials getSecondaryMaterial(ItemStack aStack) {
- NBTTagCompound aNBT = aStack.getTagCompound();
- if (aNBT != null) {
- aNBT = aNBT.getCompoundTag("GT.ToolStats");
- if (aNBT != null) return Materials.getRealMaterial(aNBT.getString("SecondaryMaterial"));
- }
- return Materials._NULL;
- }
-
- /* ---------- INTERNAL OVERRIDES ---------- */
-
- public static final long getToolMaxDamage(ItemStack aStack) {
- NBTTagCompound aNBT = aStack.getTagCompound();
- if (aNBT != null) {
- aNBT = aNBT.getCompoundTag("GT.ToolStats");
- if (aNBT != null) return aNBT.getLong("MaxDamage");
- }
- return 0;
- }
-
- public static final long getToolDamage(ItemStack aStack) {
- NBTTagCompound aNBT = aStack.getTagCompound();
- if (aNBT != null) {
- aNBT = aNBT.getCompoundTag("GT.ToolStats");
- if (aNBT != null) return aNBT.getLong("Damage");
- }
- return 0;
- }
-
- public static final boolean setToolDamage(ItemStack aStack, long aDamage) {
- NBTTagCompound aNBT = aStack.getTagCompound();
- if (aNBT != null) {
- aNBT = aNBT.getCompoundTag("GT.ToolStats");
- if (aNBT != null) {
- aNBT.setLong("Damage", aDamage);
- return true;
- }
- }
- return false;
- }
-
- /**
- * This adds a Custom Item to the ending Range.
- *
- * @param aID The Id of the assigned Tool Class [0 - 32765] (only even Numbers allowed! Uneven ID's are empty electric Items)
- * @param aEnglish The Default Localized Name of the created Item
- * @param aToolTip The Default ToolTip of the created Item, you can also insert null for having no ToolTip
- * @param aToolStats The Food Value of this Item. Can be null as well.
- * @param aOreDictNamesAndAspects The OreDict Names you want to give the Item. Also used to assign Thaumcraft Aspects.
- * @return An ItemStack containing the newly created Item, but without specific Stats.
- */
- public final ItemStack addTool(int aID, String aEnglish, String aToolTip, Interface_ToolStats aToolStats, Object... aOreDictNamesAndAspects) {
- if (aToolTip == null) aToolTip = "";
- if (aID >= 0 && aID < 32766 && aID % 2 == 0) {
- GT_LanguageManager.addStringLocalization(getUnlocalizedName() + "." + aID + ".name", aEnglish);
- GT_LanguageManager.addStringLocalization(getUnlocalizedName() + "." + aID + ".tooltip", aToolTip);
- GT_LanguageManager.addStringLocalization(getUnlocalizedName() + "." + (aID + 1) + ".name", aEnglish + " (Empty)");
- GT_LanguageManager.addStringLocalization(getUnlocalizedName() + "." + (aID + 1) + ".tooltip", "You need to recharge it");
- mToolStats.put((short) aID, aToolStats);
- mToolStats.put((short) (aID + 1), aToolStats);
- aToolStats.onStatsAddedToTool(this, aID);
- ItemStack rStack = new ItemStack(this, 1, aID);
- List<TC_AspectStack> tAspects = new ArrayList<TC_AspectStack>();
- for (Object tOreDictNameOrAspect : aOreDictNamesAndAspects) {
- if (tOreDictNameOrAspect instanceof TC_AspectStack)
- ((TC_AspectStack) tOreDictNameOrAspect).addToAspectList(tAspects);
- else
- GT_OreDictUnificator.registerOre(tOreDictNameOrAspect, rStack);
- }
- if (GregTech_API.sThaumcraftCompat != null)
- GregTech_API.sThaumcraftCompat.registerThaumcraftAspectsToItem(rStack, tAspects, false);
- return rStack;
- }
- return null;
- }
-
- /**
- * This Function gets an ItemStack Version of this Tool
- *
- * @param aToolID the ID of the Tool Class
- * @param aAmount Amount of Items (well normally you only need 1)
- * @param aPrimaryMaterial Primary Material of this Tool
- * @param aSecondaryMaterial Secondary (Rod/Handle) Material of this Tool
- * @param aElectricArray The Electric Stats of this Tool (or null if not electric)
- */
- public final ItemStack getToolWithStats(int aToolID, int aAmount, Materials aPrimaryMaterial, Materials aSecondaryMaterial, long[] aElectricArray) {
- ItemStack rStack = new ItemStack(this, aAmount, aToolID);
- Interface_ToolStats tToolStats = getToolStats(rStack);
- if (tToolStats != null) {
- NBTTagCompound tMainNBT = new NBTTagCompound(), tToolNBT = new NBTTagCompound();
- if (aPrimaryMaterial != null) {
- tToolNBT.setString("PrimaryMaterial", aPrimaryMaterial.toString());
- tToolNBT.setLong("MaxDamage", 100L * (long) (aPrimaryMaterial.mDurability * tToolStats.getMaxDurabilityMultiplier()));
- }
- if (aSecondaryMaterial != null) tToolNBT.setString("SecondaryMaterial", aSecondaryMaterial.toString());
-
- if (aElectricArray != null) {
- tToolNBT.setBoolean("Electric", true);
- tToolNBT.setLong("MaxCharge", aElectricArray[0]);
- tToolNBT.setLong("Voltage", aElectricArray[1]);
- tToolNBT.setLong("Tier", aElectricArray[2]);
- tToolNBT.setLong("SpecialData", aElectricArray[3]);
- }
-
- tMainNBT.setTag("GT.ToolStats", tToolNBT);
- rStack.setTagCompound(tMainNBT);
- }
- isItemStackUsable(rStack);
- return rStack;
- }
-
/**
* Called by the Block Harvesting Event within the GT_Proxy
*/
+ @Override
public void onHarvestBlockEvent(ArrayList<ItemStack> aDrops, ItemStack aStack, EntityPlayer aPlayer, Block aBlock, int aX, int aY, int aZ, byte aMetaData, int aFortune, boolean aSilkTouch, BlockEvent.HarvestDropsEvent aEvent) {
- Interface_ToolStats tStats = getToolStats(aStack);
+ IToolStats tStats = getToolStats(aStack);
if (isItemStackUsable(aStack) && getDigSpeed(aStack, aBlock, aMetaData) > 0.0F)
doDamage(aStack, tStats.convertBlockDrops(aDrops, aStack, aPlayer, aBlock, aX, aY, aZ, aMetaData, aFortune, aSilkTouch, aEvent) * tStats.getToolDamagePerDropConversion());
}
@Override
public boolean onLeftClickEntity(ItemStack aStack, EntityPlayer aPlayer, Entity aEntity) {
- Interface_ToolStats tStats = getToolStats(aStack);
+ IToolStats tStats = getToolStats(aStack);
if (tStats == null || !isItemStackUsable(aStack)) return true;
GT_Utility.doSoundAtClient(tStats.getEntityHitSound(), 1, 1.0F);
if (super.onLeftClickEntity(aStack, aPlayer, aEntity)) return true;
@@ -252,50 +120,16 @@ public abstract class Gregtech_MetaTool extends Gregtech_MetaItem_Base implement
@Override
public ItemStack onItemRightClick(ItemStack aStack, World aWorld, EntityPlayer aPlayer) {
- Interface_ToolStats tStats = getToolStats(aStack);
+ IToolStats tStats = getToolStats(aStack);
if (tStats != null && tStats.canBlock()) aPlayer.setItemInUse(aStack, 72000);
return super.onItemRightClick(aStack, aWorld, aPlayer);
}
- @Override
- public final int getMaxItemUseDuration(ItemStack aStack) {
- return 72000;
- }
-
- @Override
- public final EnumAction getItemUseAction(ItemStack aStack) {
- Interface_ToolStats tStats = getToolStats(aStack);
- if (tStats != null && tStats.canBlock()) return EnumAction.block;
- return EnumAction.none;
- }
-
- @Override
- @SideOnly(Side.CLIENT)
- public final void getSubItems(Item var1, CreativeTabs aCreativeTab, List aList) {
- for (int i = 0; i < 32766; i += 2)
- if (getToolStats(new ItemStack(this, 1, i)) != null) {
- ItemStack tStack = new ItemStack(this, 1, i);
- isItemStackUsable(tStack);
- aList.add(tStack);
- }
- }
-
- @Override
- @SideOnly(Side.CLIENT)
- public final void registerIcons(IIconRegister aIconRegister) {
- //
- }
-
- @Override
- public final IIcon getIconFromDamage(int aMetaData) {
- return null;
- }
-
- @Override
+
public void addAdditionalToolTips(List aList, ItemStack aStack) {
long tMaxDamage = getToolMaxDamage(aStack);
Materials tMaterial = getPrimaryMaterial(aStack);
- Interface_ToolStats tStats = getToolStats(aStack);
+ IToolStats tStats = getToolStats(aStack);
int tOffset = getElectricStats(aStack) != null ? 2 : 1;
if (tStats != null) {
String name = aStack.getUnlocalizedName();
@@ -332,93 +166,35 @@ public abstract class Gregtech_MetaTool extends Gregtech_MetaItem_Base implement
return null;
}
+ @Override
public float getToolCombatDamage(ItemStack aStack) {
- Interface_ToolStats tStats = getToolStats(aStack);
+ IToolStats tStats = getToolStats(aStack);
if (tStats == null) return 0;
return tStats.getBaseDamage() + getPrimaryMaterial(aStack).mToolQuality;
}
@Override
- public final boolean doDamageToItem(ItemStack aStack, int aVanillaDamage) {
- return doDamage(aStack, aVanillaDamage * 100);
- }
-
- public final boolean doDamage(ItemStack aStack, long aAmount) {
- if (!isItemStackUsable(aStack)) return false;
- Long[] tElectric = getElectricStats(aStack);
- if (tElectric == null) {
- long tNewDamage = getToolDamage(aStack) + aAmount;
- setToolDamage(aStack, tNewDamage);
- if (tNewDamage >= getToolMaxDamage(aStack)) {
- Interface_ToolStats tStats = getToolStats(aStack);
- if (tStats == null || GT_Utility.setStack(aStack, tStats.getBrokenItem(aStack)) == null) {
- if (tStats != null) /*GT_Utility.doSoundAtClient(tStats.getBreakingSound(), 1, 1.0F);*/
- if (aStack.stackSize > 0) aStack.stackSize--;
-
- }
- }
- return true;
- }
- if (use(aStack, (int) aAmount, null)) {
- if (new Random().nextInt(25) == 0) {
- long tNewDamage = getToolDamage(aStack) + aAmount;
- setToolDamage(aStack, tNewDamage);
- if (tNewDamage >= getToolMaxDamage(aStack)) {
- Interface_ToolStats tStats = getToolStats(aStack);
- if (tStats == null || GT_Utility.setStack(aStack, tStats.getBrokenItem(aStack)) == null) {
- if (tStats != null) /*GT_Utility.doSoundAtClient(tStats.getBreakingSound(), 1, 1.0F);*/
- if (aStack.stackSize > 0) aStack.stackSize--;
- }
- }
- }
- return true;
- }
- return false;
- }
-
- @Override
public float getDigSpeed(ItemStack aStack, Block aBlock, int aMetaData) {
if (!isItemStackUsable(aStack)) return 0.0F;
- Interface_ToolStats tStats = getToolStats(aStack);
+ IToolStats tStats = getToolStats(aStack);
if (tStats == null || Math.max(0, getHarvestLevel(aStack, "")) < aBlock.getHarvestLevel(aMetaData)) return 0.0F;
return tStats.isMinableBlock(aBlock, (byte) aMetaData) ? Math.max(Float.MIN_NORMAL, tStats.getSpeedMultiplier() * getPrimaryMaterial(aStack).mToolSpeed) : 0.0F;
}
@Override
- public final boolean canHarvestBlock(Block aBlock, ItemStack aStack) {
- return getDigSpeed(aStack, aBlock, (byte) 0) > 0.0F;
- }
-
- @Override
- public final int getHarvestLevel(ItemStack aStack, String aToolClass) {
- Interface_ToolStats tStats = getToolStats(aStack);
- return tStats == null ? -1 : tStats.getBaseQuality() + getPrimaryMaterial(aStack).mToolQuality;
- }
-
- @Override
public boolean onBlockDestroyed(ItemStack aStack, World aWorld, Block aBlock, int aX, int aY, int aZ, EntityLivingBase aPlayer) {
if (!isItemStackUsable(aStack)) return false;
- Interface_ToolStats tStats = getToolStats(aStack);
+ IToolStats tStats = getToolStats(aStack);
if (tStats == null) return false;
GT_Utility.doSoundAtClient(tStats.getMiningSound(), 1, 1.0F);
doDamage(aStack, (int) Math.max(1, aBlock.getBlockHardness(aWorld, aX, aY, aZ) * tStats.getToolDamagePerBlockBreak()));
return getDigSpeed(aStack, aBlock, aWorld.getBlockMetadata(aX, aY, aZ)) > 0.0F;
}
- @Override
- public final ItemStack getContainerItem(ItemStack aStack) {
- return getContainerItem(aStack, true);
- }
-
- @Override
- public final boolean hasContainerItem(ItemStack aStack) {
- return getContainerItem(aStack, false) != null;
- }
-
private ItemStack getContainerItem(ItemStack aStack, boolean playSound) {
if (!isItemStackUsable(aStack)) return null;
aStack = GT_Utility.copyAmount(1, aStack);
- Interface_ToolStats tStats = getToolStats(aStack);
+ IToolStats tStats = getToolStats(aStack);
if (tStats == null) return null;
doDamage(aStack, tStats.getToolDamagePerContainerCraft());
aStack = aStack.stackSize > 0 ? aStack : null;
@@ -429,35 +205,36 @@ public abstract class Gregtech_MetaTool extends Gregtech_MetaItem_Base implement
return aStack;
}
- public Interface_ToolStats getToolStats(ItemStack aStack) {
+ @Override
+ public IToolStats getToolStats(ItemStack aStack) {
isItemStackUsable(aStack);
return getToolStatsInternal(aStack);
}
- private Interface_ToolStats getToolStatsInternal(ItemStack aStack) {
+ private IToolStats getToolStatsInternal(ItemStack aStack) {
return aStack == null ? null : mToolStats.get((short) aStack.getItemDamage());
}
@Override
public boolean canWhack(EntityPlayer aPlayer, ItemStack aStack, int aX, int aY, int aZ) {
if (!isItemStackUsable(aStack)) return false;
- Interface_ToolStats tStats = getToolStats(aStack);
+ IToolStats tStats = getToolStats(aStack);
return tStats != null && tStats.isCrowbar();
}
@Override
public void onWhack(EntityPlayer aPlayer, ItemStack aStack, int aX, int aY, int aZ) {
- Interface_ToolStats tStats = getToolStats(aStack);
+ IToolStats tStats = getToolStats(aStack);
if (tStats != null) doDamage(aStack, tStats.getToolDamagePerEntityAttack());
}
@Override
public boolean canWrench(EntityPlayer player, int x, int y, int z) {
- System.out.println("canWrench");
+ //System.out.println("canWrench");
if(player==null)return false;
if(player.getCurrentEquippedItem()==null)return false;
if (!isItemStackUsable(player.getCurrentEquippedItem())) return false;
- Interface_ToolStats tStats = getToolStats(player.getCurrentEquippedItem());
+ IToolStats tStats = getToolStats(player.getCurrentEquippedItem());
return tStats != null && tStats.isWrench();
}
@@ -465,61 +242,51 @@ public abstract class Gregtech_MetaTool extends Gregtech_MetaItem_Base implement
public void wrenchUsed(EntityPlayer player, int x, int y, int z) {
if(player==null)return;
if(player.getCurrentEquippedItem()==null)return;
- Interface_ToolStats tStats = getToolStats(player.getCurrentEquippedItem());
+ IToolStats tStats = getToolStats(player.getCurrentEquippedItem());
if (tStats != null) doDamage(player.getCurrentEquippedItem(), tStats.getToolDamagePerEntityAttack());
}
@Override
public boolean canLink(EntityPlayer aPlayer, ItemStack aStack, EntityMinecart cart) {
if (!isItemStackUsable(aStack)) return false;
- Interface_ToolStats tStats = getToolStats(aStack);
+ IToolStats tStats = getToolStats(aStack);
return tStats != null && tStats.isCrowbar();
}
@Override
public void onLink(EntityPlayer aPlayer, ItemStack aStack, EntityMinecart cart) {
- Interface_ToolStats tStats = getToolStats(aStack);
+ IToolStats tStats = getToolStats(aStack);
if (tStats != null) doDamage(aStack, tStats.getToolDamagePerEntityAttack());
}
@Override
public boolean canBoost(EntityPlayer aPlayer, ItemStack aStack, EntityMinecart cart) {
if (!isItemStackUsable(aStack)) return false;
- Interface_ToolStats tStats = getToolStats(aStack);
+ IToolStats tStats = getToolStats(aStack);
return tStats != null && tStats.isCrowbar();
}
@Override
public void onBoost(EntityPlayer aPlayer, ItemStack aStack, EntityMinecart cart) {
- Interface_ToolStats tStats = getToolStats(aStack);
+ IToolStats tStats = getToolStats(aStack);
if (tStats != null) doDamage(aStack, tStats.getToolDamagePerEntityAttack());
}
@Override
public void onCreated(ItemStack aStack, World aWorld, EntityPlayer aPlayer) {
- Interface_ToolStats tStats = getToolStats(aStack);
+ IToolStats tStats = getToolStats(aStack);
if (tStats != null && aPlayer != null) tStats.onToolCrafted(aStack, aPlayer);
super.onCreated(aStack, aWorld, aPlayer);
}
@Override
- public final boolean doesContainerItemLeaveCraftingGrid(ItemStack aStack) {
- return false;
- }
-
- @Override
- public final int getItemStackLimit(ItemStack aStack) {
- return 1;
- }
-
- @Override
public boolean isFull3D() {
return true;
}
@Override
public boolean isItemStackUsable(ItemStack aStack) {
- Interface_ToolStats tStats = getToolStatsInternal(aStack);
+ IToolStats tStats = getToolStatsInternal(aStack);
if (aStack.getItemDamage() % 2 == 1 || tStats == null) {
NBTTagCompound aNBT = aStack.getTagCompound();
if (aNBT != null) aNBT.removeTag("ench");
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/recipe/ProcessingSkookumChoocherToolRecipes.java b/src/Java/gtPlusPlus/xmod/gregtech/api/recipe/ProcessingSkookumChoocherToolRecipes.java
index f6c74ad12b..8f4fe09dbe 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/recipe/ProcessingSkookumChoocherToolRecipes.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/recipe/ProcessingSkookumChoocherToolRecipes.java
@@ -3,17 +3,18 @@ package gtPlusPlus.xmod.gregtech.api.recipe;
import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
import gregtech.api.enums.ToolDictNames;
+import gregtech.api.interfaces.IOreRecipeRegistrator;
import gregtech.api.util.GT_ModHandler;
-import gregtech.common.items.GT_MetaGenerated_Tool_01;
+import gtPlusPlus.xmod.gregtech.common.items.MetaGeneratedGregtechTools;
import net.minecraft.item.ItemStack;
-public class ProcessingSkookumChoocherToolRecipes implements gregtech.api.interfaces.IOreRecipeRegistrator {
+public class ProcessingSkookumChoocherToolRecipes implements IOreRecipeRegistrator {
public ProcessingSkookumChoocherToolRecipes() {
//GregtechOrePrefixes.toolSkookumChoocher.add(this);
}
@Override
public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName, ItemStack aStack) {
- GT_ModHandler.addShapelessCraftingRecipe(GT_MetaGenerated_Tool_01.INSTANCE.getToolWithStats(32, 1, aMaterial, aMaterial, null), new Object[]{aOreDictName, OrePrefixes.stick.get(aMaterial), OrePrefixes.screw.get(aMaterial), ToolDictNames.craftingToolScrewdriver});
+ GT_ModHandler.addShapelessCraftingRecipe(MetaGeneratedGregtechTools.INSTANCE.getToolWithStats(7734, 1, aMaterial, aMaterial, null), new Object[]{aOreDictName, OrePrefixes.stick.get(aMaterial), OrePrefixes.screw.get(aMaterial), ToolDictNames.craftingToolScrewdriver});
}
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/Meta_GT_Proxy.java b/src/Java/gtPlusPlus/xmod/gregtech/common/Meta_GT_Proxy.java
index 5777e8de03..15bd666b53 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/Meta_GT_Proxy.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/Meta_GT_Proxy.java
@@ -12,7 +12,6 @@ import gregtech.api.enums.TC_Aspects;
import gregtech.api.enums.ToolDictNames;
import gregtech.api.objects.ItemData;
import gregtech.api.objects.MaterialStack;
-import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_Log;
import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Recipe;
@@ -23,7 +22,6 @@ import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes;
import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes.GT_Materials;
-import gtPlusPlus.xmod.gregtech.api.objects.GregtechFluid;
import gtPlusPlus.xmod.gregtech.api.util.GregtechOreDictUnificator;
import gtPlusPlus.xmod.gregtech.api.util.GregtechRecipeRegistrator;
import gtPlusPlus.xmod.gregtech.common.items.MetaGeneratedGregtechItems;
@@ -38,10 +36,6 @@ import java.util.List;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
-import net.minecraftforge.fluids.Fluid;
-import net.minecraftforge.fluids.FluidContainerRegistry;
-import net.minecraftforge.fluids.FluidRegistry;
-import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.oredict.OreDictionary;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.ModContainer;
@@ -108,7 +102,7 @@ public class Meta_GT_Proxy {
}
}
- public static Fluid addFluid(String aName, String aLocalized, GT_Materials aMaterial, int aState, int aTemperatureK) {
+ /*public static Fluid addFluid(String aName, String aLocalized, GT_Materials aMaterial, int aState, int aTemperatureK) {
return addFluid(aName, aLocalized, aMaterial, aState, aTemperatureK, null, null, 0);
}
@@ -173,7 +167,7 @@ public class Meta_GT_Proxy {
GT_Values.RA.addFluidCannerRecipe(aFullContainer, GT_Utility.getContainerItem(aFullContainer, false), null, new FluidStack(rFluid, aFluidAmount));
}
return rFluid;
- }
+ }*/
@SubscribeEvent
public static void registerOre2(OreDictionary.OreRegisterEvent aEvent) {
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/fluid/GregtechFluidHandler.java b/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/fluid/GregtechFluidHandler.java
index cfb0e1d984..b30b0144bc 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/fluid/GregtechFluidHandler.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/fluid/GregtechFluidHandler.java
@@ -9,7 +9,6 @@ import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.fluid.FluidUtils;
import gtPlusPlus.core.util.item.UtilsItems;
import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes.GT_Materials;
-import gtPlusPlus.xmod.gregtech.common.Meta_GT_Proxy;
import net.minecraftforge.fluids.FluidStack;
public class GregtechFluidHandler {
@@ -40,32 +39,32 @@ public class GregtechFluidHandler {
if (!LoadedMods.ThermalFoundation){
Utils.LOG_INFO("Adding in our own GT versions of Thermal Foundation Fluids");
- Meta_GT_Proxy.addFluid("cryotheum", "Gelid Cryotheum", GT_Materials.Cryotheum, 4, -1200, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.Cryotheum, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
- Meta_GT_Proxy.addFluid("pyrotheum", "Blazing Pyrotheum", GT_Materials.Pyrotheum, 4, 4000, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.Pyrotheum, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
+ FluidUtils.addFluid("cryotheum", "Gelid Cryotheum", GT_Materials.Cryotheum, 4, -1200, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.Cryotheum, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
+ FluidUtils.addFluid("pyrotheum", "Blazing Pyrotheum", GT_Materials.Pyrotheum, 4, 4000, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.Pyrotheum, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
}
if (LoadedMods.IndustrialCraft2){
Utils.LOG_INFO("Adding in GT Fluids for various nuclear related content.");
- Meta_GT_Proxy.addFluid("hydrofluoricAcid", "Hydrofluoric Acid", GT_Materials.HydrofluoricAcid, 1, 120, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.HydrofluoricAcid, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
+ FluidUtils.addFluid("hydrofluoricAcid", "Hydrofluoric Acid", GT_Materials.HydrofluoricAcid, 1, 120, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.HydrofluoricAcid, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
generateIC2FluidCell("HydrofluoricAcid");
- Meta_GT_Proxy.addFluid("sulfurDioxide", "Sulfur Dioxide", GT_Materials.SulfurDioxide, 4, -100, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.SulfurDioxide, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
+ FluidUtils.addFluid("sulfurDioxide", "Sulfur Dioxide", GT_Materials.SulfurDioxide, 4, -100, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.SulfurDioxide, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
generateIC2FluidCell("SulfurDioxide");
- Meta_GT_Proxy.addFluid("sulfurousAcid", "Sulfurous Acid", GT_Materials.SulfurousAcid, 4, 75, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.SulfurousAcid, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
+ FluidUtils.addFluid("sulfurousAcid", "Sulfurous Acid", GT_Materials.SulfurousAcid, 4, 75, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.SulfurousAcid, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
generateIC2FluidCell("SulfurousAcid");
- Meta_GT_Proxy.addFluid("sulfuricApatite", "Sulfuric Apatite Mix", GT_Materials.SulfuricApatite, 4, 500, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.SulfuricApatite, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
+ FluidUtils.addFluid("sulfuricApatite", "Sulfuric Apatite Mix", GT_Materials.SulfuricApatite, 4, 500, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.SulfuricApatite, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
generateIC2FluidCell("SulfuricApatite");
- Meta_GT_Proxy.addFluid("uraniumHexafluoride", "Uranium Hexafluoride", GT_Materials.UraniumHexaFluoride, 4, 200, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.UraniumHexaFluoride, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
+ FluidUtils.addFluid("uraniumHexafluoride", "Uranium Hexafluoride", GT_Materials.UraniumHexaFluoride, 4, 200, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.UraniumHexaFluoride, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
generateIC2FluidCell("UraniumHexaFluoride");
- Meta_GT_Proxy.addFluid("uraniumTetrafluoride", "Uranium Tetrafluoride", GT_Materials.UraniumTetraFluoride, 4, 950, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.UraniumTetraFluoride, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
+ FluidUtils.addFluid("uraniumTetrafluoride", "Uranium Tetrafluoride", GT_Materials.UraniumTetraFluoride, 4, 950, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.UraniumTetraFluoride, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
generateIC2FluidCell("UraniumTetraFluoride");
- Meta_GT_Proxy.addFluid("thoriumTetrafluoride", "Thorium Tetrafluoride", GT_Materials.ThoriumTetraFluoride, 4, 1250, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.ThoriumTetraFluoride, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
+ FluidUtils.addFluid("thoriumTetrafluoride", "Thorium Tetrafluoride", GT_Materials.ThoriumTetraFluoride, 4, 1250, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.ThoriumTetraFluoride, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
generateIC2FluidCell("ThoriumTetraFluoride");
@@ -78,16 +77,16 @@ public class GregtechFluidHandler {
else {
Utils.LOG_INFO("No Suitable versions of Hydrogen Chloride available, adding our own.");
}
- Meta_GT_Proxy.addFluid("hydrogenChloride", "Hydrogen Chloride", GT_Materials.HydrogenChloride, 4, 75, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.HydrogenChloride, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
+ FluidUtils.addFluid("hydrogenChloride", "Hydrogen Chloride", GT_Materials.HydrogenChloride, 4, 75, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.HydrogenChloride, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
generateIC2FluidCell("HydrogenChloride");
}
}
- Meta_GT_Proxy.addFluid("sulfuricLithium", "Sulfuric Lithium Mix", GT_Materials.SulfuricLithium, 4, 280, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.SulfuricLithium, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
+ FluidUtils.addFluid("sulfuricLithium", "Sulfuric Lithium Mix", GT_Materials.SulfuricLithium, 4, 280, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.SulfuricLithium, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
generateIC2FluidCell("SulfuricLithium");
- Meta_GT_Proxy.addFluid("lithiumHydroxide", "Lithium Hydroxide", GT_Materials.LithiumHydroxide, 4, 500, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.LithiumHydroxide, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
+ FluidUtils.addFluid("lithiumHydroxide", "Lithium Hydroxide", GT_Materials.LithiumHydroxide, 4, 500, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.LithiumHydroxide, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
generateIC2FluidCell("SulfuricApatite");
/*Meta_GT_Proxy.addFluid("sulfuricApatite", "Sulfuric Apatite", GT_Materials.SulfuricApatite, 4, 500, GT_OreDictUnificator.get(OrePrefixes.cell, GT_Materials.SulfuricApatite, 1L), ItemList.Cell_Empty.get(1L, new Object[0]), 1000);
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGtTools.java b/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGtTools.java
new file mode 100644
index 0000000000..1b3af3a842
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGtTools.java
@@ -0,0 +1,59 @@
+package gtPlusPlus.xmod.gregtech.common.blocks.textures;
+
+import gregtech.api.GregTech_API;
+import gregtech.api.interfaces.IIconContainer;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.Utils;
+import net.minecraft.client.renderer.texture.TextureMap;
+import net.minecraft.util.IIcon;
+import net.minecraft.util.ResourceLocation;
+
+public final class TexturesGtTools {
+
+ public final static CustomIcon SKOOKUM_CHOOCHER = new CustomIcon("iconsets/SKOOKUMCHOOCHER");
+
+
+
+
+
+
+
+
+
+
+
+
+ public final static class CustomIcon implements IIconContainer, Runnable {
+ protected IIcon mIcon, mOverlay;
+ protected final String mIconName;
+
+ public CustomIcon(final String aIconName) {
+ mIconName = aIconName;
+ Utils.LOG_INFO("Constructing a Custom Texture. " + mIconName);
+ GregTech_API.sGTItemIconload.add(this);
+ }
+
+ @Override
+ public IIcon getIcon() {
+ return mIcon;
+ }
+
+ @Override
+ public IIcon getOverlayIcon() {
+ return mOverlay;
+ }
+
+ @Override
+ public void run() {
+ mIcon = GregTech_API.sItemIcons.registerIcon(CORE.MODID + ":" + mIconName);
+ //Utils.LOG_INFO("Registering a Custom Texture. "+mIcon.g);
+ mOverlay = GregTech_API.sItemIcons.registerIcon(CORE.MODID + ":" + mIconName + "_OVERLAY");
+ }
+
+ @Override
+ public ResourceLocation getTextureFile() {
+ return TextureMap.locationItemsTexture;
+ }
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/items/MetaGeneratedGregtechTools.java b/src/Java/gtPlusPlus/xmod/gregtech/common/items/MetaGeneratedGregtechTools.java
index 2ee00f99d4..d5bd4c134c 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/items/MetaGeneratedGregtechTools.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/items/MetaGeneratedGregtechTools.java
@@ -3,37 +3,29 @@ package gtPlusPlus.xmod.gregtech.common.items;
import gregtech.api.GregTech_API;
import gregtech.api.enums.TC_Aspects;
import gregtech.api.enums.ToolDictNames;
+import gregtech.api.items.GT_MetaGenerated_Tool;
import gtPlusPlus.xmod.gregtech.api.enums.GregtechToolDictNames;
-import gtPlusPlus.xmod.gregtech.api.items.Gregtech_MetaTool;
import gtPlusPlus.xmod.gregtech.common.tools.TOOL_Gregtech_Choocher;
-public class MetaGeneratedGregtechTools extends Gregtech_MetaTool {
-
- public static final short TURBINE_SMALL = 10;
- public static final short TURBINE = 12;
- public static final short TURBINE_LARGE = 14;
- public static final short HUGE_ITEM = 16;
- public static final short TURBINE_BLADE = 18;
-
- public static final short HARDHAMMER = 20;
- public static final short SOFTHAMMER = 22;
- public static final short WRENCH = 24;
-
- public static MetaGeneratedGregtechTools INSTANCE;
+public class MetaGeneratedGregtechTools extends GT_MetaGenerated_Tool {
- public MetaGeneratedGregtechTools() {
- super("MU-metaitem.02");
- INSTANCE = this;
-
- GregTech_API.registerTool(addTool(7734, "Skookum Choocher", "Can Really Chooch. Does a Skookum job at Hammering and Wrenching stuff.", new TOOL_Gregtech_Choocher(), new Object[]{GregtechToolDictNames.craftingToolSkookumChoocher, ToolDictNames.craftingToolHardHammer, ToolDictNames.craftingToolWrench, new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.FABRICO, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L)}), GregTech_API.sWrenchList);
-
-
- //GregTech_API.registerTool(addTool(WRENCH, "Wrench", "Hold Leftclick to dismantle Machines", (Interface_ToolStats) new GT_Tool_Wrench(), new Object[]{ToolDictNames.craftingToolWrench, new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.MACHINA, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L)}), GregTech_API.sWrenchList);
-
- //addTool(TURBINE_SMALL, "Small Turbine", "Turbine Rotors for your power station", new GT_Tool_Turbine_Small(), new Object[]{});
- //addTool(TURBINE, "Turbine", "Turbine Rotors for your power station", new GT_Tool_Turbine_Normal(), new Object[]{});
- //addTool(TURBINE_LARGE, "Large Turbine", "Turbine Rotors for your power station", new GT_Tool_Turbine_Large(), new Object[]{});
- //addTool(HUGE_ITEM, "Huge Item", "Item 4 for your power station", new TOOL_Gregtech_MaxEfficiencyMultiBlockItem(), new Object[]{});
+ public static final short SKOOKUM_CHOOCHER = 7734;
+ public static MetaGeneratedGregtechTools INSTANCE;
- }
+ public MetaGeneratedGregtechTools() {
+ super("plusplus.metatool.01");
+ INSTANCE = this;
+ GregTech_API.registerTool(
+ addTool(
+ SKOOKUM_CHOOCHER, "Skookum Choocher",
+ "Can Really Chooch. Does a Skookum job at Hammering and Wrenching stuff.",
+ new TOOL_Gregtech_Choocher(),
+ new Object[]{GregtechToolDictNames.craftingToolSkookumChoocher,
+ ToolDictNames.craftingToolHardHammer,
+ ToolDictNames.craftingToolWrench,
+ new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.FABRICO, 2L),
+ new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 2L)}),
+ GregTech_API.sWrenchList);
+ }
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/items/behaviours/Behaviour_Choocher.java b/src/Java/gtPlusPlus/xmod/gregtech/common/items/behaviours/Behaviour_Choocher.java
new file mode 100644
index 0000000000..1c4b4bc6c9
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/items/behaviours/Behaviour_Choocher.java
@@ -0,0 +1,45 @@
+package gtPlusPlus.xmod.gregtech.common.items.behaviours;
+
+import gregtech.api.items.GT_MetaBase_Item;
+import gregtech.api.util.GT_LanguageManager;
+import gregtech.common.items.behaviors.Behaviour_None;
+import gregtech.common.items.behaviors.Behaviour_Prospecting;
+import gregtech.common.items.behaviors.Behaviour_Wrench;
+
+import java.util.List;
+
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.world.World;
+
+public class Behaviour_Choocher
+ extends Behaviour_None {
+ private final Behaviour_Wrench wrench = new Behaviour_Wrench(150);
+ private final Behaviour_Prospecting prospecting = new Behaviour_Prospecting(1, 1250);
+ private final String mTooltip = GT_LanguageManager.addStringLocalization("gt.behaviour.choochering", "Wrench by default, Hold shift & Right click to prospect.");
+
+ public Behaviour_Choocher() {
+
+ }
+
+ @Override
+ public boolean onItemUseFirst(GT_MetaBase_Item aItem, ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int aSide, float hitX, float hitY, float hitZ) {
+ if (aWorld.isRemote) {
+ return false;
+ }
+ if (!aPlayer.isSneaking()){
+ //Utils.LOG_INFO("Using Choocher as a wrench.");
+ wrench.onItemUseFirst(aItem, aStack, aPlayer, aWorld, aSide, aSide, aSide, aSide, hitZ, hitZ, hitZ);
+ return false;
+ }
+ //Utils.LOG_INFO("Using Choocher as a hard hammer.");
+ prospecting.onItemUseFirst(aItem, aStack, aPlayer, aWorld, aX, aY, aZ, aSide, hitX, hitY, hitZ);
+
+ return false;
+ }
+
+ public List<String> getAdditionalToolTips(GT_MetaBase_Item aItem, List<String> aList, ItemStack aStack) {
+ aList.add(this.mTooltip);
+ return aList;
+ }
+}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_TieredTank.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_TieredTank.java
index ef7a3b77c8..113e475ac4 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_TieredTank.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_TieredTank.java
@@ -5,14 +5,20 @@ import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicTank;
import gregtech.api.objects.GT_RenderedTexture;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.GregtechMetaBasicTank;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fluids.FluidStack;
public class GT_MetaTileEntity_TieredTank
- extends GT_MetaTileEntity_BasicTank {
+ extends GregtechMetaBasicTank {
+
+ protected FluidStack internalTank = getInternalStack();
+ protected String fluidName = internalTank.getFluid().getName();
+ protected int fluidAmount = internalTank.amount;
+
public GT_MetaTileEntity_TieredTank(int aID, String aName, String aNameRegional, int aTier) {
super(aID, aName, aNameRegional, aTier, 3, "Stores " + ((int) (Math.pow(2, aTier) * 32000)) + "L of fluid");
}
@@ -43,12 +49,20 @@ public class GT_MetaTileEntity_TieredTank
@Override
public void saveNBTData(NBTTagCompound aNBT) {
+ super.saveNBTData(aNBT);
+ Utils.LOG_INFO("Dumping Fluid data. Name: "+mFluid.getFluid().getName()+" Amount: "+mFluid.amount+"L");
if (mFluid != null) aNBT.setTag("mFluid", mFluid.writeToNBT(new NBTTagCompound()));
}
@Override
public void loadNBTData(NBTTagCompound aNBT) {
+ super.loadNBTData(aNBT);
mFluid = FluidStack.loadFluidStackFromNBT(aNBT.getCompoundTag("mFluid"));
+ if (getInternalStack() != null){
+ Utils.LOG_INFO("Dumping Fluid data. Name: "+mFluid.getFluid().getName()+" Amount: "+mFluid.amount+"L");}
+ else{
+ //Utils.LOG_INFO("Loaded FluidStack was NULL");
+ }
}
@Override
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_Base.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_Base.java
index 11e8a6b240..5a2e1dd522 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_Base.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_Base.java
@@ -2,7 +2,7 @@ package gtPlusPlus.xmod.gregtech.common.tools;
import gregtech.api.GregTech_API;
import gregtech.api.damagesources.GT_DamageSources;
-import gtPlusPlus.xmod.gregtech.api.interfaces.internal.Interface_ToolStats;
+import gregtech.api.interfaces.IToolStats;
import gtPlusPlus.xmod.gregtech.api.items.Gregtech_MetaTool;
import java.util.List;
@@ -20,7 +20,7 @@ import net.minecraft.util.IChatComponent;
import net.minecraftforge.event.world.BlockEvent;
public abstract class TOOL_Gregtech_Base
-implements Interface_ToolStats {
+implements IToolStats {
public static final Enchantment[] FORTUNE_ENCHANTMENT = {Enchantment.fortune};
public static final Enchantment[] LOOTING_ENCHANTMENT = {Enchantment.looting};
public static final Enchantment[] ZERO_ENCHANTMENTS = new Enchantment[0];
@@ -115,8 +115,17 @@ implements Interface_ToolStats {
public boolean isMiningTool() {
return true;
}
-
+
+ public boolean isChainsaw(){
+ return false;
+ }
+
@Override
+ public boolean isGrafter(){
+ return false;
+ }
+
+
public DamageSource getDamageSource(EntityLivingBase aPlayer, Entity aEntity) {
return GT_DamageSources.getCombatDamage((aPlayer instanceof EntityPlayer) ? "player" : "mob", aPlayer, (aEntity instanceof EntityLivingBase) ? getDeathMessage(aPlayer, (EntityLivingBase) aEntity) : null);
}
@@ -152,7 +161,6 @@ implements Interface_ToolStats {
aPlayer.triggerAchievement(AchievementList.buildWorkBench);
}
- @Override
public void onStatsAddedToTool(Gregtech_MetaTool aItem, int aID) {
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_BaseMultiblockItem.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_BaseMultiblockItem.java
deleted file mode 100644
index d4f566dcd4..0000000000
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_BaseMultiblockItem.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package gtPlusPlus.xmod.gregtech.common.tools;
-
-import gregtech.api.interfaces.IIconContainer;
-import gtPlusPlus.xmod.gregtech.api.items.Gregtech_MetaTool;
-import net.minecraft.block.Block;
-import net.minecraft.entity.EntityLivingBase;
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.ChatComponentText;
-import net.minecraft.util.EnumChatFormatting;
-import net.minecraft.util.IChatComponent;
-
-public abstract class TOOL_Gregtech_BaseMultiblockItem extends TOOL_Gregtech_Base {
- @Override
- public abstract float getBaseDamage();
-
- @Override
- public boolean isMinableBlock(Block aBlock, byte aMetaData) {
- return false;
- }
-
- @Override
- public IIconContainer getIcon(boolean aIsToolHead, ItemStack aStack) {
- return aIsToolHead ? getTurbineIcon() : null;
- }
-
- @Override
- public short[] getRGBa(boolean aIsToolHead, ItemStack aStack) {
- return aIsToolHead ? Gregtech_MetaTool.getPrimaryMaterial(aStack).mRGBa : null;
- }
-
- @Override
- public IChatComponent getDeathMessage(EntityLivingBase aPlayer, EntityLivingBase aEntity) {
- return new ChatComponentText(EnumChatFormatting.GREEN + aPlayer.getCommandSenderName() + EnumChatFormatting.WHITE + " put " + EnumChatFormatting.RED +
- aEntity.getCommandSenderName() + "s" + EnumChatFormatting.WHITE + " head into a turbine");
- }
-
- public abstract IIconContainer getTurbineIcon();
-
- @Override
- public abstract float getSpeedMultiplier();
-
- @Override
- public abstract float getMaxDurabilityMultiplier();
-
- @Override
- public ItemStack getBrokenItem(ItemStack aStack) {
- return null;
- }
-}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_Choocher.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_Choocher.java
index 42d8750f24..d2338c264e 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_Choocher.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_Choocher.java
@@ -2,14 +2,12 @@ package gtPlusPlus.xmod.gregtech.common.tools;
import gregtech.GT_Mod;
import gregtech.api.GregTech_API;
-import gregtech.api.enums.OrePrefixes;
import gregtech.api.interfaces.IIconContainer;
+import gregtech.api.items.GT_MetaGenerated_Tool;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
-import gtPlusPlus.xmod.gregtech.api.enums.CustomGtTextures;
-import gtPlusPlus.xmod.gregtech.api.items.Gregtech_MetaTool;
-import gtPlusPlus.xmod.gregtech.api.items.types.ToolType_HardHammer;
-import gtPlusPlus.xmod.gregtech.api.items.types.ToolType_Wrench;
+import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtTools;
+import gtPlusPlus.xmod.gregtech.common.items.behaviours.Behaviour_Choocher;
import java.util.Arrays;
import java.util.List;
@@ -83,12 +81,12 @@ public class TOOL_Gregtech_Choocher
@Override
public String getCraftingSound() {
- return null;
+ return (String) GregTech_API.sSoundList.get(Integer.valueOf(1));
}
@Override
public String getEntityHitSound() {
- return null;
+ return (String) GregTech_API.sSoundList.get(Integer.valueOf(2));
}
@Override
@@ -157,33 +155,21 @@ public class TOOL_Gregtech_Choocher
return null;
}
- public IIconContainer getIcon(boolean aIsToolHead, ItemStack aStack) {
- return aIsToolHead ? CustomGtTextures.ItemIcons.SKOOKUMCHOOCHER : Gregtech_MetaTool.getSecondaryMaterial(aStack).mIconSet.mTextures[OrePrefixes.stick.mTextureIndex];
- }
-
- /* @Override
- public IIconContainer getIcon(boolean aIsToolHead, ItemStack aStack) {
- return aIsToolHead ? Textures.ItemIcons.WIRE_CUTTER : Textures.ItemIcons.VOID;
- }*/
-
-
-/* @Override
+ @Override
public IIconContainer getIcon(boolean aIsToolHead, ItemStack aStack) {
- return aIsToolHead ? Textures.class..ItemIcons.SKOOKUMCHOOCHER : null;
- }
-*/
- //
+ //Utils.LOG_INFO("Texture: "+TexturesGtTools.SKOOKUM_CHOOCHER.getTextureFile());
+ return TexturesGtTools.SKOOKUM_CHOOCHER;
+ }
@Override
public short[] getRGBa(boolean aIsToolHead, ItemStack aStack) {
- return aIsToolHead ? Gregtech_MetaTool.getPrimaryMaterial(aStack).mRGBa : null;
+ return GT_MetaGenerated_Tool.getPrimaryMaterial(aStack).mRGBa;
}
- @Override
+ /*@Override
public void onStatsAddedToTool(Gregtech_MetaTool aItem, int aID) {
- aItem.addItemBehavior(aID, new ToolType_Wrench(150));
- aItem.addItemBehavior(aID, new ToolType_HardHammer(1, 1250));
- }
+ aItem.addItemBehavior(aID, new Behaviour_Choocher());
+ }*/
@Override
public void onToolCrafted(ItemStack aStack, EntityPlayer aPlayer) {
@@ -200,4 +186,14 @@ public class TOOL_Gregtech_Choocher
public IChatComponent getDeathMessage(EntityLivingBase aPlayer, EntityLivingBase aEntity) {
return new ChatComponentText(EnumChatFormatting.RED + aEntity.getCommandSenderName() + EnumChatFormatting.WHITE + " has been Choochered by " + EnumChatFormatting.GREEN + aPlayer.getCommandSenderName() + EnumChatFormatting.WHITE);
}
+
+ @Override
+ public void onStatsAddedToTool(GT_MetaGenerated_Tool aItem, int aID) {
+ aItem.addItemBehavior(aID, new Behaviour_Choocher());
+ }
+
+ @Override
+ public boolean isGrafter() {
+ return false;
+ }
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_MaxEfficiencyMultiBlockItem.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_MaxEfficiencyMultiBlockItem.java
deleted file mode 100644
index a9a43a9444..0000000000
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_MaxEfficiencyMultiBlockItem.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package gtPlusPlus.xmod.gregtech.common.tools;
-
-import gregtech.api.enums.Textures;
-import gregtech.api.interfaces.IIconContainer;
-
-public class TOOL_Gregtech_MaxEfficiencyMultiBlockItem extends TOOL_Gregtech_BaseMultiblockItem {
- @Override
- public float getSpeedMultiplier() {
- return 4.0F;
- }
-
- @Override
- public float getMaxDurabilityMultiplier() {
- return 4.0F;
- }
-
- @Override
- public float getBaseDamage() {
- return 3.0F;
- }
-
- @Override
- public IIconContainer getTurbineIcon() {
- return Textures.ItemIcons.TURBINE_HUGE;
- }
-
-}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/ProcessingToolHeadChoocher.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/ProcessingToolHeadChoocher.java
index b569f2a310..fe27c09fef 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/ProcessingToolHeadChoocher.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/ProcessingToolHeadChoocher.java
@@ -1,19 +1,20 @@
package gtPlusPlus.xmod.gregtech.loaders;
-import gregtech.api.enums.Dyes;
-import gregtech.api.enums.ItemList;
import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
import gregtech.api.enums.SubTag;
+import gregtech.api.enums.ToolDictNames;
import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_OreDictUnificator;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.recipe.UtilsRecipe;
import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes;
import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes.GT_Materials;
import gtPlusPlus.xmod.gregtech.api.interfaces.internal.Interface_OreRecipeRegistrator;
import gtPlusPlus.xmod.gregtech.common.items.MetaGeneratedGregtechTools;
-import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
-public class ProcessingToolHeadChoocher implements Interface_OreRecipeRegistrator {
+public class ProcessingToolHeadChoocher implements Interface_OreRecipeRegistrator, Runnable {
public ProcessingToolHeadChoocher() {
GregtechOrePrefixes.toolSkookumChoocher.add(this);
}
@@ -21,30 +22,10 @@ public class ProcessingToolHeadChoocher implements Interface_OreRecipeRegistrato
@Override
public void registerOre(GregtechOrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName, ItemStack aStack) {
if ((aMaterial != Materials.Stone) && (aMaterial != Materials.Flint)) {
- GT_ModHandler.addShapelessCraftingRecipe(MetaGeneratedGregtechTools.INSTANCE.getToolWithStats((aMaterial.contains(SubTag.BOUNCY)) || (aMaterial.contains(SubTag.WOOD)) ? 14 : 12, 1, aMaterial, aMaterial.mHandleMaterial, null), GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | GT_ModHandler.RecipeBits.BUFFERED, new Object[]{aOreDictName, OrePrefixes.stick.get(aMaterial.mHandleMaterial)});
- GT_ModHandler.addCraftingRecipe(MetaGeneratedGregtechTools.INSTANCE.getToolWithStats((aMaterial.contains(SubTag.BOUNCY)) || (aMaterial.contains(SubTag.WOOD)) ? 14 : 12, 1, aMaterial, aMaterial.mHandleMaterial, null), GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"XX ", "XXS", "XX ", Character.valueOf('X'), aMaterial == Materials.Wood ? OrePrefixes.plank.get(Materials.Wood) : OrePrefixes.ingot.get(aMaterial), Character.valueOf('S'), OrePrefixes.stick.get(aMaterial.mHandleMaterial)});
- GT_ModHandler.addCraftingRecipe(MetaGeneratedGregtechTools.INSTANCE.getToolWithStats((aMaterial.contains(SubTag.BOUNCY)) || (aMaterial.contains(SubTag.WOOD)) ? 14 : 12, 1, aMaterial, aMaterial.mHandleMaterial, null), GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"XX ", "XXS", "XX ", Character.valueOf('X'), aMaterial == Materials.Wood ? OrePrefixes.plank.get(Materials.Wood) : OrePrefixes.gem.get(aMaterial), Character.valueOf('S'), OrePrefixes.stick.get(aMaterial.mHandleMaterial)});
if (aMaterial != Materials.Rubber)
- GT_ModHandler.addCraftingRecipe(MetaGeneratedGregtechTools.INSTANCE.getToolWithStats(44, 1, aMaterial, aMaterial, null), GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"xRR", " SR", "S f", Character.valueOf('S'), OrePrefixes.stick.get(aMaterial), Character.valueOf('R'), OrePrefixes.plate.get(Materials.Rubber)});
if ((!aMaterial.contains(SubTag.WOOD)) && (!aMaterial.contains(SubTag.BOUNCY)) && (!aMaterial.contains(SubTag.NO_SMASHING))) {
GT_ModHandler.addCraftingRecipe(MetaGeneratedGregtechTools.INSTANCE.getToolWithStats(16, 1, aMaterial, aMaterial, null), GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"IhI", "III", " I ", Character.valueOf('I'), OrePrefixes.ingot.get(aMaterial)});
- GT_ModHandler.addCraftingRecipe(MetaGeneratedGregtechTools.INSTANCE.getToolWithStats(20, 1, aMaterial, aMaterial, null), GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"hDS", "DSD", "SDf", Character.valueOf('S'), OrePrefixes.stick.get(aMaterial), Character.valueOf('D'), Dyes.dyeBlue});
- GT_ModHandler.addCraftingRecipe(MetaGeneratedGregtechTools.INSTANCE.getToolWithStats(22, 1, aMaterial, aMaterial.mHandleMaterial, null), GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | GT_ModHandler.RecipeBits.BUFFERED, new Object[]{" fS", " Sh", "W ", Character.valueOf('S'), OrePrefixes.stick.get(aMaterial), Character.valueOf('W'), OrePrefixes.stick.get(aMaterial.mHandleMaterial)});
- GT_ModHandler.addCraftingRecipe(MetaGeneratedGregtechTools.INSTANCE.getToolWithStats(26, 1, aMaterial, aMaterial, null), GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"PfP", "hPd", "STS", Character.valueOf('S'), OrePrefixes.stick.get(aMaterial), Character.valueOf('P'), OrePrefixes.plate.get(aMaterial), Character.valueOf('T'), OrePrefixes.screw.get(aMaterial)});
- GT_ModHandler.addCraftingRecipe(MetaGeneratedGregtechTools.INSTANCE.getToolWithStats(28, 1, aMaterial, aMaterial, null), GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"SWS", "SSS", "xSh", Character.valueOf('S'), OrePrefixes.stick.get(aMaterial), Character.valueOf('W'), new ItemStack(Blocks.wool, 1, 32767)});
- GT_ModHandler.addCraftingRecipe(MetaGeneratedGregtechTools.INSTANCE.getToolWithStats(30, 1, aMaterial, aMaterial, null), GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"PfP", "PdP", "STS", Character.valueOf('S'), OrePrefixes.stick.get(aMaterial), Character.valueOf('P'), OrePrefixes.plate.get(aMaterial), Character.valueOf('T'), OrePrefixes.screw.get(aMaterial)});
- GT_ModHandler.addCraftingRecipe(MetaGeneratedGregtechTools.INSTANCE.getToolWithStats(34, 1, aMaterial, aMaterial, null), GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"fPh", " S ", Character.valueOf('S'), OrePrefixes.stick.get(aMaterial), Character.valueOf('P'), OrePrefixes.plate.get(aMaterial)});
- GT_ModHandler.addCraftingRecipe(MetaGeneratedGregtechTools.INSTANCE.getToolWithStats(36, 1, aMaterial, aMaterial, null), GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"PPf", "PP ", "Sh ", Character.valueOf('S'), OrePrefixes.stick.get(aMaterial), Character.valueOf('P'), OrePrefixes.plate.get(aMaterial)});
- GT_ModHandler.addCraftingRecipe(MetaGeneratedGregtechTools.INSTANCE.getToolWithStats(160, 1, aMaterial, Materials.Rubber, new long[]{100000L, 32L, 1L, -1L}), GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"LBf", "Sd ", "P ", 'B', OrePrefixes.bolt.get(aMaterial), 'P', OrePrefixes.plate.get(Materials.Rubber), 'S', OrePrefixes.stick.get(Materials.Iron), 'L', ItemList.Battery_RE_LV_Lithium.get(1L, new Object[0])});
-
-// GT_ModHandler.addCraftingRecipe(GT_Utility.copyAmount(1L,OrePrefixes.turbineBlade.get(aMaterial)), gregtech.api.util.GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | gregtech.api.util.GT_ModHandler.RecipeBits.BUFFERED, new Object[] { "B", "B", "B", 'S', OrePrefixes.screw.get(aMaterial), 'B', OrePrefixes.plate.get(aMaterial) });
-
-
- //GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.turbineBlade, aMaterial, 4L), GT_OreDictUnificator.get(OrePrefixes.stickLong, Materials.Magnalium, 1L), MetaGeneratedGregtechTools.INSTANCE.getToolWithStats(170, 1, aMaterial, aMaterial, null), 160, 100);
- //GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.turbineBlade, aMaterial, 8L), GT_OreDictUnificator.get(OrePrefixes.stickLong, Materials.Titanium, 1L), MetaGeneratedGregtechTools.INSTANCE.getToolWithStats(172, 1, aMaterial, aMaterial, null), 320, 400);
- //GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.turbineBlade, aMaterial, 12L), GT_OreDictUnificator.get(OrePrefixes.stickLong, Materials.TungstenSteel, 1L), MetaGeneratedGregtechTools.INSTANCE.getToolWithStats(174, 1, aMaterial, aMaterial, null), 640, 1600);
- //GT_Values.RA.addAssemblerRecipe(GT_OreDictUnificator.get(OrePrefixes.turbineBlade, aMaterial, 16L), GT_OreDictUnificator.get(OrePrefixes.stickLong, Materials.Americium, 1L), MetaGeneratedGregtechTools.INSTANCE.getToolWithStats(176, 1, aMaterial, aMaterial, null), 1280, 6400);
- }
+ }
}
}
@@ -55,4 +36,57 @@ public class ProcessingToolHeadChoocher implements Interface_OreRecipeRegistrato
// TODO Auto-generated method stub
}
+
+ public void materialsLoops(){
+ Materials[] i = Materials.values();
+ int size = i.length;
+ Utils.LOG_WARNING("Materials to attempt tool gen. with: "+size);
+ int used = 0;
+ Materials aMaterial = null;
+ for (int r=0;r<size;r++){
+ aMaterial = i[r];
+ if ((aMaterial != Materials.Stone) && (aMaterial != Materials.Flint) && (aMaterial != Materials.Rubber) && (aMaterial != Materials._NULL)) {
+ if ((!aMaterial.contains(SubTag.WOOD)) && (!aMaterial.contains(SubTag.BOUNCY)) && (!aMaterial.contains(SubTag.NO_SMASHING))&& (!aMaterial.contains(SubTag.TRANSPARENT))&& (!aMaterial.contains(SubTag.FLAMMABLE))&& (!aMaterial.contains(SubTag.MAGICAL))&& (!aMaterial.contains(SubTag.NO_SMELTING))) {
+ Utils.LOG_WARNING("Found "+aMaterial.name()+" as a valid Skookum Choocher Material.");
+ //Input 1
+ ItemStack plate = GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 1L);
+ ItemStack ingot = GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial, 1L);
+ ItemStack screw = GT_OreDictUnificator.get(OrePrefixes.screw, aMaterial, 1L);
+ ItemStack longrod = GT_OreDictUnificator.get(OrePrefixes.stickLong, aMaterial, 1L);
+ ItemStack hammerhead = GT_OreDictUnificator.get(OrePrefixes.toolHeadHammer, aMaterial, 1L);
+
+ if (null != plate && null != ingot && null != hammerhead && null != longrod && null != screw){
+ UtilsRecipe.recipeBuilder(
+ hammerhead, ToolDictNames.craftingToolScrewdriver.name(), plate,
+ ingot, plate, plate,
+ longrod, screw, null,
+ MetaGeneratedGregtechTools.INSTANCE.getToolWithStats(MetaGeneratedGregtechTools.SKOOKUM_CHOOCHER, 1, aMaterial, null, null));
+ used++;
+ }
+ else {
+ Utils.LOG_WARNING(""+aMaterial.name()+" could not be used for all input compoenents. [3x"+aMaterial.name()+" plates, 2x"+aMaterial.name()+" ingots, 1x"+aMaterial.name()+" Hard Hammer Head.");
+ }
+ //GT_ModHandler.addCraftingRecipe(, GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | GT_ModHandler.RecipeBits.BUFFERED, new Object[]{"P H", "PIP", " I ", Character.valueOf('I'), OrePrefixes.ingot.get(aMaterial), Character.valueOf('P'), OrePrefixes.plate.get(aMaterial), Character.valueOf('H'), OrePrefixes.toolHeadHammer.get(aMaterial)});
+ }
+ else {
+ Utils.LOG_WARNING(""+aMaterial.name()+" was not a valid Skookum Choocher Material.");
+ }
+ }
+ else {
+ Utils.LOG_WARNING(""+aMaterial.name()+" was not a valid Skookum Choocher Material.");
+ }
+
+
+ }
+
+ Utils.LOG_INFO("Materials used for tool gen: "+used);
+ }
+
+ @Override
+ public void run() {
+ Utils.LOG_INFO("Generating Skookum Choochers of all GT Materials.");
+ materialsLoops();
+ }
+
+
} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechRocketFuelGenerator.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechRocketFuelGenerator.java
index a58d258ff3..dc9173a502 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechRocketFuelGenerator.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechRocketFuelGenerator.java
@@ -1,12 +1,20 @@
package gtPlusPlus.xmod.gregtech.registration.gregtech;
+import gregtech.api.enums.ItemList;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.util.GT_ModHandler;
import gtPlusPlus.core.lib.LoadedMods;
+import gtPlusPlus.core.recipe.RECIPE_CONSTANTS;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList;
+import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes;
+import gtPlusPlus.xmod.gregtech.api.enums.GregtechOrePrefixes.GT_Materials;
import gtPlusPlus.xmod.gregtech.common.tileentities.generators.GregtechMetaTileEntityRocketFuelGenerator;
+import net.minecraft.item.ItemStack;
public class GregtechRocketFuelGenerator {
-
+
public static void run()
{
if (LoadedMods.Gregtech){
@@ -20,6 +28,39 @@ public class GregtechRocketFuelGenerator {
GregtechItemList.Rocket_Engine_EV.set(new GregtechMetaTileEntityRocketFuelGenerator(793, "advancedgenerator.rocketFuel.tier.01", "Basic Rocket Engine", 4).getStackForm(1L));
GregtechItemList.Rocket_Engine_IV.set(new GregtechMetaTileEntityRocketFuelGenerator(794, "advancedgenerator.rocketFuel.tier.02", "Advanced Rocket Engine", 5).getStackForm(1L));
GregtechItemList.Rocket_Engine_LuV.set(new GregtechMetaTileEntityRocketFuelGenerator(795, "advancedgenerator.rocketFuel.tier.03", "Turbo Rocket Engine", 6).getStackForm(1L));
+
+ GT_ModHandler.addCraftingRecipe(
+ GregtechItemList.Rocket_Engine_EV.get(1L, new Object[0]),
+ GT_ModHandler.RecipeBits.DISMANTLEABLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED,
+ new Object[]{"PCP", "EME", "GWG",
+ Character.valueOf('M'), ItemList.Hull_EV,
+ Character.valueOf('P'), ItemList.Electric_Piston_EV,
+ Character.valueOf('E'), ItemList.Electric_Motor_EV,
+ Character.valueOf('C'), GregtechOrePrefixes.circuit.get(Materials.Ultimate),
+ Character.valueOf('W'), OrePrefixes.cableGt02.get(Materials.Aluminium),
+ Character.valueOf('G'), OrePrefixes.gearGt.get(Materials.Titanium)});
+
+ GT_ModHandler.addCraftingRecipe(GregtechItemList.Rocket_Engine_IV.get(1L, new Object[0]),
+ GT_ModHandler.RecipeBits.DISMANTLEABLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED,
+ new Object[]{"PCP", "EME", "GWG",
+ Character.valueOf('M'), ItemList.Hull_IV,
+ Character.valueOf('P'), ItemList.Electric_Piston_IV,
+ Character.valueOf('E'), ItemList.Electric_Motor_IV,
+ Character.valueOf('C'), GregtechOrePrefixes.circuit.get(GT_Materials.Symbiotic),
+ Character.valueOf('W'), OrePrefixes.cableGt02.get(Materials.Platinum),
+ Character.valueOf('G'), OrePrefixes.gearGt.get(Materials.TungstenSteel)});
+
+ final ItemStack INGREDIENT_1 = RECIPE_CONSTANTS.electricPiston_LuV;
+ final ItemStack INGREDIENT_2 = RECIPE_CONSTANTS.electricMotor_LuV;
+ GT_ModHandler.addCraftingRecipe(GregtechItemList.Rocket_Engine_LuV.get(1L, new Object[0]),
+ GT_ModHandler.RecipeBits.DISMANTLEABLE | GT_ModHandler.RecipeBits.NOT_REMOVABLE | GT_ModHandler.RecipeBits.REVERSIBLE | GT_ModHandler.RecipeBits.BUFFERED,
+ new Object[]{"PCP", "EME", "GWG",
+ Character.valueOf('M'), ItemList.Hull_LuV,
+ Character.valueOf('P'), INGREDIENT_1,
+ Character.valueOf('E'), INGREDIENT_2,
+ Character.valueOf('C'), GregtechOrePrefixes.circuit.get(GT_Materials.Neutronic),
+ Character.valueOf('W'), OrePrefixes.cableGt02.get(Materials.Tungsten),
+ Character.valueOf('G'), OrePrefixes.gearGt.get(Materials.Chrome)});
}
-
+
}