aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/xmod/gregtech/api/enums
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gtPlusPlus/xmod/gregtech/api/enums')
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java980
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechOreDictNames.java39
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechOrePrefixes.java1324
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechToolDictNames.java9
4 files changed, 2352 insertions, 0 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java b/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
new file mode 100644
index 0000000000..6367d22f77
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
@@ -0,0 +1,980 @@
+package gtPlusPlus.xmod.gregtech.api.enums;
+
+import static gregtech.api.enums.GT_Values.W;
+
+import net.minecraft.block.Block;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+
+import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.api.util.GT_Utility;
+import gtPlusPlus.xmod.gregtech.api.interfaces.GregtechItemContainer;
+
+/**
+ * Class containing all non-OreDict Items of GregTech.
+ */
+public enum GregtechItemList implements GregtechItemContainer {
+
+ /**
+ * Items
+ */
+
+ // Advanced Hazmat Suit
+ Armour_Hazmat_Advanced_Helmet,
+ Armour_Hazmat_Advanced_Chest,
+ Armour_Hazmat_Advanced_Legs,
+ Armour_Hazmat_Advanced_Boots,
+
+ // Gregtech Machine Parts
+ Electric_Motor_LuV,
+ Electric_Motor_ZPM,
+ Electric_Motor_UV,
+ Electric_Pump_LuV,
+ Electric_Pump_ZPM,
+ Electric_Pump_UV,
+ Conveyor_Module_LuV,
+ Conveyor_Module_ZPM,
+ Conveyor_Module_UV,
+ Electric_Piston_LuV,
+ Electric_Piston_ZPM,
+ Electric_Piston_UV,
+ Robot_Arm_LuV,
+ Robot_Arm_ZPM,
+ Robot_Arm_UV,
+ Field_Generator_LuV,
+ Field_Generator_ZPM,
+ Field_Generator_UV,
+ Emitter_LuV,
+ Emitter_ZPM,
+ Emitter_UV,
+ Sensor_LuV,
+ Sensor_ZPM,
+ Sensor_UV,
+
+ // Mixed Components
+ TransmissionComponent_LV,
+ TransmissionComponent_MV,
+ TransmissionComponent_HV,
+ TransmissionComponent_EV,
+ TransmissionComponent_IV,
+ TransmissionComponent_LuV,
+ TransmissionComponent_ZPM,
+ TransmissionComponent_UV,
+ TransmissionComponent_UHV,
+
+ // Recipe Circuit
+ Circuit_BioRecipeSelector,
+ Circuit_T3RecipeSelector,
+
+ // Circuits
+ Old_Circuit_Primitive,
+ Old_Circuit_Basic,
+ Old_Circuit_Good,
+ Old_Circuit_Advanced,
+ Old_Circuit_Data,
+ Old_Circuit_Elite,
+ Old_Circuit_Master,
+ Old_Tool_DataOrb,
+ Old_Circuit_Ultimate,
+ Old_Tool_DataStick,
+ Circuit_IV,
+ Circuit_LuV,
+ Circuit_ZPM,
+
+ // Circuit Parts
+ Circuit_Board_IV,
+ Circuit_Board_LuV,
+ Circuit_Board_ZPM,
+ Circuit_Parts_Crystal_Chip_IV,
+ Circuit_Parts_Crystal_Chip_LuV,
+ Circuit_Parts_Crystal_Chip_ZPM,
+ Circuit_Parts_IV,
+ Circuit_Parts_LuV,
+ Circuit_Parts_ZPM,
+ Circuit_Parts_Wiring_IV,
+ Circuit_Parts_Wiring_LuV,
+ Circuit_Parts_Wiring_ZPM,
+
+ // Old Style Circuits
+ Old_Circuit_Board_Basic,
+ Old_Circuit_Board_Advanced,
+ Old_Circuit_Board_Elite,
+ Old_Circuit_Parts_Crystal_Chip_Elite,
+ Old_Circuit_Parts_Crystal_Chip_Master,
+ Old_Circuit_Parts_Advanced,
+ Old_Circuit_Parts_Wiring_Basic,
+ Old_Circuit_Parts_Wiring_Advanced,
+ Old_Circuit_Parts_Wiring_Elite,
+ Old_Empty_Board_Basic,
+ Old_Empty_Board_Elite,
+
+ // Batteries
+ Battery_RE_EV_Sodium,
+ Battery_RE_EV_Cadmium,
+ Battery_RE_EV_Lithium,
+
+ // Shapes for Extruder
+ Shape_Extruder_WindmillShaft,
+ Shape_Extruder_SmallGear,
+
+ // Cooked Raisin Toast for ImQ009
+ Food_Baked_Raisin_Bread,
+
+ // Fluid Cells to regulate flows.
+ Fluid_Cell_1L,
+ Fluid_Cell_16L,
+ Fluid_Cell_36L,
+ Fluid_Cell_144L,
+
+ // Debug
+ TESTITEM,
+
+ // Larger Volumetric Flasks
+ VOLUMETRIC_FLASK_8k,
+ VOLUMETRIC_FLASK_32k,
+
+ // RTG Fuels
+ Pellet_RTG_PU238,
+ Pellet_RTG_SR90,
+ Pellet_RTG_PO210,
+ Pellet_RTG_AM241,
+
+ // Computer Cube
+ Gregtech_Computer_Cube,
+
+ // Casings for batteries
+ Battery_Casing_Gem_1,
+ Battery_Casing_Gem_2,
+ Battery_Casing_Gem_3,
+ Battery_Casing_Gem_4,
+
+ // Custom Batteries
+ Battery_Gem_1,
+ Battery_Gem_2,
+ Battery_Gem_3,
+ Battery_Gem_4,
+
+ // Compressed Fusion MK3
+ Compressed_Fusion_Reactor,
+
+ // Carbon Materials
+
+ // End Game Laser Engraver Lens
+ Laser_Lens_WoodsGlass,
+ Laser_Lens_Special,
+
+ // Pellet Mold
+ Pellet_Mold,
+
+ // Upgrade chip for Distillus
+ Distillus_Upgrade_Chip,
+ Maceration_Upgrade_Chip,
+
+ // Milling Balls
+ Milling_Ball_Alumina,
+ Milling_Ball_Soapstone,
+
+ // ----------------------------------------------------------------------------
+
+ /**
+ * MultiBlocks
+ */
+
+ // Tier GT++ Casings
+ GTPP_Casing_ULV,
+ GTPP_Casing_LV,
+ GTPP_Casing_MV,
+ GTPP_Casing_HV,
+ GTPP_Casing_EV,
+ GTPP_Casing_IV,
+ GTPP_Casing_LuV,
+ GTPP_Casing_ZPM,
+ GTPP_Casing_UV,
+ GTPP_Casing_UHV,
+
+ // IronBlastFurnace Machine_Bronze_BlastFurnace
+ Casing_IronPlatedBricks,
+
+ // Large Centrifuge
+ Industrial_Centrifuge,
+ Casing_Centrifuge1,
+
+ // Large Alloy Smelter
+ Industrial_AlloySmelter,
+
+ // Coke Oven
+ Industrial_CokeOven,
+ Casing_CokeOven,
+ Casing_CokeOven_Coil1,
+ Casing_CokeOven_Coil2,
+
+ // Bending Maching // Plate Press // Press
+ Industrial_PlatePress,
+ Casing_MaterialPress,
+
+ // Matter Fab
+ Industrial_MassFab,
+ Casing_MatterGen,
+ Casing_MatterFab,
+
+ // ABS
+ Industrial_AlloyBlastSmelter,
+ Casing_Coil_BlastSmelter,
+ Casing_BlastSmelter,
+ Mega_AlloyBlastSmelter,
+
+ // Quantum Force Transformer
+ QuantumForceTransformer,
+ Casing_Coil_QuantumForceTransformer,
+ NeutronPulseManipulator,
+ CosmicFabricManipulator,
+ InfinityInfusedManipulator,
+ SpaceTimeContinuumRipper,
+ NeutronShieldingCore,
+ CosmicFabricShieldingCore,
+ InfinityInfusedShieldingCore,
+ SpaceTimeBendingCore,
+ ForceFieldGlass,
+
+ // Industrial Electrolyzer
+ Industrial_Electrolyzer,
+ Casing_Electrolyzer,
+
+ // Industrial Maceration Stack
+ Industrial_MacerationStack,
+ Casing_MacerationStack,
+
+ // Industrial Wire Factory
+ Industrial_WireFactory,
+ Casing_WireFactory,
+
+ // Power sub-station for mass storage. 3 hatches for input and output, whatever voltages you desire.
+ PowerSubStation,
+ Casing_Vanadium_Redox,
+ Casing_Vanadium_Redox_IV,
+ Casing_Vanadium_Redox_LuV,
+ Casing_Vanadium_Redox_ZPM,
+ Casing_Vanadium_Redox_UV,
+ Casing_Vanadium_Redox_MAX,
+ Casing_Power_SubStation,
+
+ // LFTR
+ ThoriumReactor,
+ Casing_Reactor_I,
+ Casing_Reactor_II,
+
+ // Nuclear Salt Processing Plant
+ Nuclear_Salt_Processing_Plant,
+
+ // Multitank
+ /* Industrial_MultiTank, */
+ Industrial_MultiTankDense,
+ Casing_MultitankExterior,
+
+ // Fission Fuel Refinery
+ Industrial_FuelRefinery,
+ Casing_Refinery_External,
+ Casing_Refinery_Structural,
+ Casing_Refinery_Internal,
+
+ // Industrial Sifter
+ Industrial_Sifter,
+ Casing_Sifter,
+ Casing_SifterGrate,
+
+ // Large Thermal Centrifuge
+ Industrial_ThermalCentrifuge,
+ Casing_ThermalCentrifuge,
+
+ // Cyclotron
+ COMET_Cyclotron,
+ Casing_Cyclotron_Coil,
+ Casing_Cyclotron_External,
+
+ // Thermal Boiler
+ GT4_Thermal_Boiler,
+ Casing_ThermalContainment,
+
+ // Tree Farm
+ Industrial_TreeFarm,
+ TreeFarmer_Structural,
+ Casing_PLACEHOLDER_TreeFarmer,
+
+ // Fish Pond
+ Industrial_FishingPond,
+ Casing_FishPond,
+
+ // Algae
+ AlgaeFarm_Controller,
+
+ // Chemical Plant
+ ChemicalPlant_Controller,
+
+ // GT4 autoCrafter
+ GT4_Multi_Crafter,
+ Casing_Autocrafter,
+
+ // industrial Ore-Washer
+ Industrial_WashPlant,
+ Casing_WashPlant,
+
+ // Cutting Factory Controller
+ Industrial_CuttingFactoryController,
+ Casing_CuttingFactoryFrame,
+
+ // Large Extruder
+ Industrial_Extruder,
+ Casing_Extruder,
+
+ // Multi-Machine
+ Industrial_MultiMachine,
+ Casing_Multi_Use,
+
+ // Bedrock Mining Platforms
+ /* BedrockMiner_MKI, */
+ /* BedrockMiner_MKII, */
+ /* BedrockMiner_MKIII, */
+ Casing_BedrockMiner,
+
+ // Large Packager
+ Amazon_Warehouse_Controller,
+ Casing_AmazonWarehouse,
+
+ // Advanced GT vanilla Multis
+ Machine_Adv_BlastFurnace,
+ Casing_Adv_BlastFurnace,
+ Machine_Adv_ImplosionCompressor,
+ Machine_Adv_DistillationTower,
+
+ // Advanced Vacuum Freezer
+ Industrial_Cryogenic_Freezer,
+ Casing_AdvancedVacuum,
+
+ // FusionTek MK IV
+ FusionComputer_UV2,
+ Casing_Fusion_External,
+ Casing_Fusion_Internal,
+
+ // FusionTech MK V
+
+ FusionComputer_UV3,
+ Casing_Fusion_External2,
+ Casing_Fusion_Internal2,
+
+ // large mixer
+ Industrial_Mixer,
+
+ // Naq Reactor
+ Casing_Naq_Reactor_A,
+ Casing_Naq_Reactor_B,
+ Casing_Naq_Reactor_C,
+ /* Controller_Naq_Reactor, */
+ Casing_Containment,
+
+ // Arc Furnace
+ Industrial_Arc_Furnace,
+ Casing_Industrial_Arc_Furnace,
+
+ // Solar Tower
+ Industrial_Solar_Tower,
+ Casing_SolarTower_Structural,
+ Casing_SolarTower_SaltContainment,
+ Casing_SolarTower_HeatContainment,
+
+ // Larger Turbines
+ Large_Steam_Turbine,
+ Large_HPSteam_Turbine,
+ Large_Gas_Turbine,
+ Large_Plasma_Turbine,
+ Large_SCSteam_Turbine,
+ Casing_Turbine_Shaft,
+ Casing_Turbine_LP,
+ Casing_Turbine_HP,
+ Casing_Turbine_Gas,
+ Casing_Turbine_Plasma,
+ Casing_Turbine_SC,
+ XL_HeatExchanger,
+ Casing_XL_HeatExchanger,
+
+ // Large Engine
+ Casing_Reinforced_Engine_Casing,
+
+ // Large Vacuum Furnace
+ Casing_Vacuum_Furnace,
+ Controller_Vacuum_Furnace,
+
+ // Large Rocket Engine
+ Casing_RocketEngine,
+ Controller_RocketEngine,
+
+ // Large Semi-Fluid
+ Controller_LargeSemifluidGenerator,
+
+ // IsaMill
+ Controller_IsaMill,
+ Casing_IsaMill_Casing,
+ Casing_IsaMill_Gearbox,
+ Casing_IsaMill_Pipe,
+
+ // Flotation Cell
+ Controller_Flotation_Cell,
+ Casing_Flotation_Cell,
+
+ // Sparge Tower
+ Controller_Sparge_Tower,
+ Casing_Sparge_Tower_Exterior,
+ Casing_Sparge_Tower_Interior,
+
+ // Elemental Duplicator
+ Controller_ElementalDuplicator,
+ Casing_ElementalDuplicator,
+
+ // Forge Hammer
+ Controller_IndustrialForgeHammer,
+ Casing_IndustrialForgeHammer,
+
+ // Molecular Transformer
+ Controller_MolecularTransformer,
+ Casing_Molecular_Transformer_1,
+ Casing_Molecular_Transformer_2,
+ Casing_Molecular_Transformer_3,
+
+ // Big Steam Macerator
+ Controller_SteamMaceratorMulti,
+ // Big Steam Compressor
+ Controller_SteamCompressorMulti,
+
+ // Industrial Rock Breaker
+ Controller_IndustrialRockBreaker,
+
+ // Industrial Chisel
+ Controller_IndustrialAutoChisel,
+ Casing_IndustrialAutoChisel,
+
+ // Industrial Fluid Heater
+ Controller_IndustrialFluidHeater,
+
+ // Custom Machine Casings
+ Casing_Machine_Custom_1,
+ Casing_Machine_Custom_2,
+ Casing_Machine_Custom_3,
+ Casing_Machine_Custom_4,
+ Casing_Machine_Custom_5,
+ Casing_Machine_Custom_6,
+
+ // ----------------------------------------------------------------------------
+
+ /**
+ * Custom hatches/Busses
+ */
+
+ // Buffer Dynamos
+ Hatch_Buffer_Dynamo_ULV,
+ Hatch_Buffer_Dynamo_LV,
+ Hatch_Buffer_Dynamo_MV,
+ Hatch_Buffer_Dynamo_HV,
+ Hatch_Buffer_Dynamo_EV,
+ Hatch_Buffer_Dynamo_IV,
+ Hatch_Buffer_Dynamo_LuV,
+ Hatch_Buffer_Dynamo_ZPM,
+ Hatch_Buffer_Dynamo_UV,
+ Hatch_Buffer_Dynamo_MAX,
+
+ // Air Intake hatch
+ Hatch_Air_Intake,
+ Hatch_Air_Intake_Extreme,
+
+ // Reservoir Hatch
+ Hatch_Reservoir,
+
+ // XL Turbine Rotor Hatch
+ Hatch_Turbine_Rotor,
+
+ // Standard Turbine Rotor Hatch
+ Hatch_Input_TurbineHousing,
+
+ // Milling Ball Bus
+ Bus_Milling_Balls,
+
+ // Catalyst Bus
+ Bus_Catalysts,
+
+ // Custom Fluid Hatches
+ Hatch_Input_Cryotheum,
+ Hatch_Input_Pyrotheum,
+ Hatch_Input_Naquadah,
+ Hatch_Input_Steam,
+
+ // Steam Multi Buses
+ Hatch_Input_Bus_Steam,
+ Hatch_Output_Bus_Steam,
+
+ // Elemental Duplicator Data Orb Bus
+ Hatch_Input_Elemental_Duplicator,
+
+ // RTG Hatch
+
+ // Battery hatches for PSS
+ Hatch_Input_Battery_MV,
+ Hatch_Input_Battery_EV,
+ Hatch_Output_Battery_MV,
+ Hatch_Output_Battery_EV,
+
+ // Advanced Mufflers
+ Hatch_Muffler_Adv_LV,
+ Hatch_Muffler_Adv_MV,
+ Hatch_Muffler_Adv_HV,
+ Hatch_Muffler_Adv_EV,
+ Hatch_Muffler_Adv_IV,
+ Hatch_Muffler_Adv_LuV,
+ Hatch_Muffler_Adv_ZPM,
+ Hatch_Muffler_Adv_UV,
+ Hatch_Muffler_Adv_MAX,
+
+ // Super Input Busses
+ Hatch_SuperBus_Input_LV,
+ Hatch_SuperBus_Input_MV,
+ Hatch_SuperBus_Input_HV,
+ Hatch_SuperBus_Input_EV,
+ Hatch_SuperBus_Input_IV,
+ Hatch_SuperBus_Input_LuV,
+ Hatch_SuperBus_Input_ZPM,
+ Hatch_SuperBus_Input_UV,
+ Hatch_SuperBus_Input_MAX,
+
+ // Super Output Busses
+ Hatch_SuperBus_Output_LV,
+ Hatch_SuperBus_Output_MV,
+ Hatch_SuperBus_Output_HV,
+ Hatch_SuperBus_Output_EV,
+ Hatch_SuperBus_Output_IV,
+ Hatch_SuperBus_Output_LuV,
+ Hatch_SuperBus_Output_ZPM,
+ Hatch_SuperBus_Output_UV,
+ Hatch_SuperBus_Output_MAX,
+
+ // Chisel Buses for Industrial Chisel
+ GT_MetaTileEntity_ChiselBus_LV,
+ GT_MetaTileEntity_ChiselBus_MV,
+ GT_MetaTileEntity_ChiselBus_HV,
+
+ // Solidifier Hatches for Industrial Multi Machine
+ GT_MetaTileEntity_Solidifier_I,
+ GT_MetaTileEntity_Solidifier_II,
+ GT_MetaTileEntity_Solidifier_III,
+ GT_MetaTileEntity_Solidifier_IV,
+
+ // ----------------------------------------------------------------------------
+
+ /**
+ * Blocks
+ */
+ ResonanceChamber_I,
+ ResonanceChamber_II,
+ ResonanceChamber_III,
+ ResonanceChamber_IV,
+
+ Modulator_I,
+ Modulator_II,
+ Modulator_III,
+ Modulator_IV,
+
+ // ----------------------------------------------------------------------------
+
+ /**
+ * Single Block Tile Entities
+ */
+
+ // Crate Box
+ CrateStorage,
+
+ // Auto TC Research Creator
+ Thaumcraft_Researcher,
+
+ // infinite Items
+ Infinite_Item_Chest,
+
+ // GT4 automation
+ GT4_Electric_Auto_Workbench_LV,
+ GT4_Electric_Auto_Workbench_MV,
+ GT4_Electric_Auto_Workbench_HV,
+ GT4_Electric_Auto_Workbench_EV,
+ GT4_Electric_Auto_Workbench_IV,
+ GT4_Electric_Auto_Workbench_LuV,
+ GT4_Electric_Auto_Workbench_ZPM,
+ GT4_Electric_Auto_Workbench_UV,
+ GT4_Electric_Inventory_Manager_LV,
+ GT4_Electric_Inventory_Manager_MV,
+ GT4_Electric_Inventory_Manager_HV,
+ GT4_Electric_Inventory_Manager_EV,
+ GT4_Electric_Inventory_Manager_IV,
+ GT4_Electric_Inventory_Manager_LuV,
+ GT4_Electric_Inventory_Manager_ZPM,
+ GT4_Electric_Inventory_Manager_UV,
+
+ // GT4 Crop Harvester
+ GT4_Crop_Harvester_LV,
+ GT4_Crop_Harvester_MV,
+ GT4_Crop_Harvester_HV,
+ GT4_Crop_Harvester_EV,
+ GT4_Crop_Harvester_IV,
+ GT4_Crop_Harvester_LuV,
+ GT4_Crop_Harvester_ZPM,
+ GT4_Crop_Harvester_UV,
+
+ // Geothermal Engines
+ Geothermal_Engine_EV,
+ Geothermal_Engine_IV,
+ Geothermal_Engine_LuV,
+
+ // Tesseracts
+ GT4_Tesseract_Generator,
+ GT4_Tesseract_Terminal,
+
+ // Advanced Boilers
+ Boiler_Advanced_LV,
+ Boiler_Advanced_MV,
+ Boiler_Advanced_HV,
+
+ // Fancy Pollution Devices
+ Pollution_Detector,
+ Pollution_Cleaner_LV,
+ Pollution_Cleaner_MV,
+ Pollution_Cleaner_HV,
+ Pollution_Cleaner_EV,
+ Pollution_Cleaner_IV,
+ Pollution_Cleaner_LuV,
+ Pollution_Cleaner_ZPM,
+ Pollution_Cleaner_UV,
+ Pollution_Cleaner_MAX,
+
+ // Debug machine
+ Pollution_Creator,
+
+ // Basically is an automatic Cauldron
+ SimpleDustWasher_ULV,
+ SimpleDustWasher_MV,
+ SimpleDustWasher_EV,
+ SimpleDustWasher_LuV,
+ SimpleDustWasher_UV,
+
+ // Solar Tower Reflector
+ Solar_Tower_Reflector,
+
+ // Super Tier Chests
+ Super_Chest_LV,
+ Super_Chest_MV,
+ Super_Chest_HV,
+ Super_Chest_EV,
+ Super_Chest_IV,
+
+ // Wireless Chargers
+ Charger_LV,
+ Charger_MV,
+ Charger_HV,
+ Charger_EV,
+ Charger_IV,
+ Charger_LuV,
+ Charger_ZPM,
+ Charger_UV,
+ Charger_UHV,
+
+ // Reactor Processing Unit
+ ReactorProcessingUnit_IV,
+ ReactorProcessingUnit_ZPM,
+
+ // Cold Trap
+ ColdTrap_IV,
+ ColdTrap_ZPM,
+
+ // Solar Generators
+ GT_Solar_ULV,
+ GT_Solar_LV,
+ GT_Solar_MV,
+ GT_Solar_HV,
+ GT_Solar_EV,
+ GT_Solar_IV,
+ GT_Solar_LuV,
+ GT_Solar_ZPM,
+ GT_Solar_UV,
+ GT_Solar_MAX,
+
+ // Variable voltage RF convertor
+ Energy_Buffer_1by1_ULV,
+ Energy_Buffer_1by1_LV,
+ Energy_Buffer_1by1_MV,
+ Energy_Buffer_1by1_HV,
+ Energy_Buffer_1by1_EV,
+ Energy_Buffer_1by1_IV,
+ Energy_Buffer_1by1_LuV,
+ Energy_Buffer_1by1_ZPM,
+ Energy_Buffer_1by1_UV,
+ Energy_Buffer_1by1_MAX,
+
+ // Rocket Engines
+ Rocket_Engine_EV,
+ Rocket_Engine_IV,
+ Rocket_Engine_LuV,
+
+ // Hi Amp Transformers
+ Transformer_HA_LV_ULV,
+ Transformer_HA_MV_LV,
+ Transformer_HA_HV_MV,
+ Transformer_HA_EV_HV,
+ Transformer_HA_IV_EV,
+ Transformer_HA_LuV_IV,
+ Transformer_HA_ZPM_LuV,
+ Transformer_HA_UV_ZPM,
+ Transformer_HA_MAX_UV,
+
+ // Semi-Fluid generators
+ Generator_SemiFluid_LV,
+ Generator_SemiFluid_MV,
+ Generator_SemiFluid_HV,
+ Generator_SemiFluid_EV,
+ Generator_SemiFluid_IV,
+
+ // Advanced Mixer 4x4
+ Machine_Advanced_LV_Mixer,
+ Machine_Advanced_MV_Mixer,
+ Machine_Advanced_HV_Mixer,
+ Machine_Advanced_EV_Mixer,
+ Machine_Advanced_IV_Mixer,
+ Machine_Advanced_LuV_Mixer,
+ Machine_Advanced_ZPM_Mixer,
+ Machine_Advanced_UV_Mixer,
+
+ // Block that enables uplink to a superconductor network
+ SuperConductorInputNode,
+
+ // Heat Pipes
+ HeatPipe_Tier_1,
+ HeatPipe_Tier_2,
+ HeatPipe_Tier_3,
+
+ // Chemical Dehydrators for nuclear fuels
+ GT_Dehydrator_MV,
+ GT_Dehydrator_HV,
+ GT_Dehydrator_EV,
+ GT_Dehydrator_IV,
+ GT_Dehydrator_LuV,
+ GT_Dehydrator_ZPM,
+
+ // Fluid Storage Tanks
+ GT_FluidTank_ULV,
+ GT_FluidTank_LV,
+ GT_FluidTank_MV,
+ GT_FluidTank_HV,
+ GT_FluidTank_EV,
+ GT_FluidTank_IV,
+ GT_FluidTank_LuV,
+ GT_FluidTank_ZPM,
+ GT_FluidTank_UV,
+ GT_FluidTank_MAX,
+
+ // GT RTG
+ RTG,
+
+ // Chisel Machines
+ GT_Chisel_LV,
+ GT_Chisel_MV,
+ GT_Chisel_HV,
+
+ // Plasma Tank
+ /* Plasma_Tank, */
+
+ // ----------------------------------------------------------------------------
+
+ /**
+ * Covers
+ */
+
+ // Fluid Void Covers
+ Cover_Overflow_LV,
+ Cover_Overflow_MV,
+ Cover_Overflow_HV,
+ Cover_Overflow_EV,
+ Cover_Overflow_IV,
+
+ // Item Void Covers
+ Cover_Overflow_Item_ULV,
+ Cover_Overflow_Item_LV,
+ Cover_Overflow_Item_MV,
+ Cover_Overflow_Item_HV,
+ Cover_Overflow_Item_EV,
+ Cover_Overflow_Item_IV,
+
+ // ----------------------------------------------------------------------------
+ // Additional washers
+ SimpleDustWasher_LV,
+ SimpleDustWasher_HV,
+ SimpleDustWasher_IV,
+ SimpleDustWasher_ZPM,
+
+ ;
+
+ public static final GregtechItemList[] DYE_ONLY_ITEMS = { Energy_Buffer_1by1_EV, Energy_Buffer_1by1_EV };
+ private ItemStack mStack;
+ private boolean mHasNotBeenSet = true;
+
+ @Override
+ public GregtechItemList set(final Item aItem) {
+ this.mHasNotBeenSet = false;
+ if (aItem == null) {
+ return this;
+ }
+ final ItemStack aStack = new ItemStack(aItem, 1, 0);
+ this.mStack = GT_Utility.copyAmount(1, aStack);
+ return this;
+ }
+
+ @Override
+ public GregtechItemList set(final ItemStack aStack) {
+ this.mHasNotBeenSet = false;
+ this.mStack = GT_Utility.copyAmount(1, aStack);
+ return this;
+ }
+
+ @Override
+ public Item getItem() {
+ if (this.mHasNotBeenSet) {
+ throw new IllegalAccessError("The Enum '" + this.name() + "' has not been set to an Item at this time!");
+ }
+ if (GT_Utility.isStackInvalid(this.mStack)) {
+ return null;
+ }
+ return this.mStack.getItem();
+ }
+
+ @Override
+ public Block getBlock() {
+ if (this.mHasNotBeenSet) {
+ throw new IllegalAccessError("The Enum '" + this.name() + "' has not been set to an Item at this time!");
+ }
+ return getBlockFromStack(this.getItem());
+ }
+
+ @Override
+ public final boolean hasBeenSet() {
+ return !this.mHasNotBeenSet;
+ }
+
+ @Override
+ public boolean isStackEqual(final Object aStack) {
+ return this.isStackEqual(aStack, false, false);
+ }
+
+ @Override
+ public boolean isStackEqual(final Object aStack, final boolean aWildcard, final boolean aIgnoreNBT) {
+ if (GT_Utility.isStackInvalid(aStack)) {
+ return false;
+ }
+ return GT_Utility
+ .areUnificationsEqual((ItemStack) aStack, aWildcard ? this.getWildcard(1) : this.get(1), aIgnoreNBT);
+ }
+
+ public static Block getBlockFromStack(Object aStack) {
+ if (GT_Utility.isStackInvalid(aStack)) return Blocks.air;
+ return Block.getBlockFromItem(((ItemStack) aStack).getItem());
+ }
+
+ @Override
+ public ItemStack get(final long aAmount, final Object... aReplacements) {
+ if (this.mHasNotBeenSet) {
+ throw new IllegalAccessError("The Enum '" + this.name() + "' has not been set to an Item at this time!");
+ }
+ if (GT_Utility.isStackInvalid(this.mStack)) {
+ return GT_Utility.copyAmount(aAmount, aReplacements);
+ }
+ return GT_Utility.copyAmount(aAmount, GT_OreDictUnificator.get(this.mStack));
+ }
+
+ @Override
+ public ItemStack getWildcard(final long aAmount, final Object... aReplacements) {
+ if (this.mHasNotBeenSet) {
+ throw new IllegalAccessError("The Enum '" + this.name() + "' has not been set to an Item at this time!");
+ }
+ if (GT_Utility.isStackInvalid(this.mStack)) {
+ return GT_Utility.copyAmount(aAmount, aReplacements);
+ }
+ return GT_Utility.copyAmountAndMetaData(aAmount, W, GT_OreDictUnificator.get(this.mStack));
+ }
+
+ @Override
+ public ItemStack getUndamaged(final long aAmount, final Object... aReplacements) {
+ if (this.mHasNotBeenSet) {
+ throw new IllegalAccessError("The Enum '" + this.name() + "' has not been set to an Item at this time!");
+ }
+ if (GT_Utility.isStackInvalid(this.mStack)) {
+ return GT_Utility.copyAmount(aAmount, aReplacements);
+ }
+ return GT_Utility.copyAmountAndMetaData(aAmount, 0, GT_OreDictUnificator.get(this.mStack));
+ }
+
+ @Override
+ public ItemStack getAlmostBroken(final long aAmount, final Object... aReplacements) {
+ if (this.mHasNotBeenSet) {
+ throw new IllegalAccessError("The Enum '" + this.name() + "' has not been set to an Item at this time!");
+ }
+ if (GT_Utility.isStackInvalid(this.mStack)) {
+ return GT_Utility.copyAmount(aAmount, aReplacements);
+ }
+ return GT_Utility
+ .copyAmountAndMetaData(aAmount, this.mStack.getMaxDamage() - 1, GT_OreDictUnificator.get(this.mStack));
+ }
+
+ @Override
+ public ItemStack getWithName(final long aAmount, final String aDisplayName, final Object... aReplacements) {
+ final ItemStack rStack = this.get(1, aReplacements);
+ if (GT_Utility.isStackInvalid(rStack)) {
+ return null;
+ }
+ rStack.setStackDisplayName(aDisplayName);
+ return GT_Utility.copyAmount(aAmount, rStack);
+ }
+
+ @Override
+ public ItemStack getWithCharge(final long aAmount, final int aEnergy, final Object... aReplacements) {
+ final ItemStack rStack = this.get(1, aReplacements);
+ if (GT_Utility.isStackInvalid(rStack)) {
+ return null;
+ }
+ GT_ModHandler.chargeElectricItem(rStack, aEnergy, Integer.MAX_VALUE, true, false);
+ return GT_Utility.copyAmount(aAmount, rStack);
+ }
+
+ @Override
+ public ItemStack getWithDamage(final long aAmount, final long aMetaValue, final Object... aReplacements) {
+ if (this.mHasNotBeenSet) {
+ throw new IllegalAccessError("The Enum '" + this.name() + "' has not been set to an Item at this time!");
+ }
+ if (GT_Utility.isStackInvalid(this.mStack)) {
+ return GT_Utility.copyAmount(aAmount, aReplacements);
+ }
+ return GT_Utility.copyAmountAndMetaData(aAmount, aMetaValue, GT_OreDictUnificator.get(this.mStack));
+ }
+
+ @Override
+ public GregtechItemList registerOre(final Object... aOreNames) {
+ if (this.mHasNotBeenSet) {
+ throw new IllegalAccessError("The Enum '" + this.name() + "' has not been set to an Item at this time!");
+ }
+ for (final Object tOreName : aOreNames) {
+ GT_OreDictUnificator.registerOre(tOreName, this.get(1));
+ }
+ return this;
+ }
+
+ @Override
+ public GregtechItemList registerWildcardAsOre(final Object... aOreNames) {
+ if (this.mHasNotBeenSet) {
+ throw new IllegalAccessError("The Enum '" + this.name() + "' has not been set to an Item at this time!");
+ }
+ for (final Object tOreName : aOreNames) {
+ GT_OreDictUnificator.registerOre(tOreName, this.getWildcard(1));
+ }
+ return this;
+ }
+}
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechOreDictNames.java b/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechOreDictNames.java
new file mode 100644
index 0000000000..4bd8831098
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechOreDictNames.java
@@ -0,0 +1,39 @@
+package gtPlusPlus.xmod.gregtech.api.enums;
+
+/*
+ * Electric Components. usual Materials for this are: Primitive (Tier 1) Basic (Tier 2) as used by UE as well : IC2
+ * Circuit and RE-Battery Good (Tier 3) Advanced (Tier 4) as used by UE as well : Advanced Circuit, Advanced Battery and
+ * Lithium Battery Data (Tier 5) : Data Storage Circuit Elite (Tier 6) as used by UE as well : Energy Crystal and Data
+ * Control Circuit Master (Tier 7) : Energy Flow Circuit and Lapotron Crystal Ultimate (Tier 8) : Data Orb and
+ * Lapotronic Energy Orb Infinite (Cheaty) Circuits Circuit_Primitive, Circuit_Basic, Circuit_Good, Circuit_Advanced,
+ * Circuit_Data, Circuit_Elite, Circuit_Master, Tool_DataOrb, Circuit_Ultimate, Tool_DataStick, Circuit_IV, Circuit_LuV,
+ * Circuit_ZPM, Circuit Parts Circuit_Board_IV, Circuit_Board_LuV, Circuit_Board_ZPM, Circuit_Parts_Crystal_Chip_IV,
+ * Circuit_Parts_Crystal_Chip_LuV, Circuit_Parts_Crystal_Chip_ZPM, Circuit_Parts_IV, Circuit_Parts_LuV,
+ * Circuit_Parts_ZPM, Circuit_Parts_Wiring_IV, Circuit_Parts_Wiring_LuV, Circuit_Parts_Wiring_ZPM;
+ */
+public enum GregtechOreDictNames {
+
+ buffer_core,
+ itemGregConduit,
+ Circuit_IV,
+ Circuit_LuV,
+ Circuit_ZPM,
+ Circuit_Board_IV,
+ Circuit_Board_LuV,
+ Circuit_Board_ZPM,
+ Circuit_Parts_Crystal_Chip_IV,
+ Circuit_Parts_Crystal_Chip_LuV,
+ Circuit_Parts_Crystal_Chip_ZPM,
+ Circuit_Parts_IV,
+ Circuit_Parts_LuV,
+ Circuit_Parts_ZPM,
+ Circuit_Parts_Wiring_IV,
+ Circuit_Parts_Wiring_LuV,
+ Circuit_Parts_Wiring_ZPM;
+
+ public String unlocalisedName;
+
+ private void ModObject() {
+ this.unlocalisedName = this.name();
+ }
+}
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechOrePrefixes.java b/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechOrePrefixes.java
new file mode 100644
index 0000000000..3185810495
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechOrePrefixes.java
@@ -0,0 +1,1324 @@
+package gtPlusPlus.xmod.gregtech.api.enums;
+
+import static gregtech.api.enums.GT_Values.B;
+import static gregtech.api.enums.GT_Values.D2;
+import static gregtech.api.enums.GT_Values.M;
+import static gtPlusPlus.core.util.Utils.getTcAspectStack;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+
+import net.minecraft.enchantment.Enchantment;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
+
+import gregtech.api.enums.ConfigCategories;
+import gregtech.api.enums.Dyes;
+import gregtech.api.enums.Element;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.SubTag;
+import gregtech.api.enums.TC_Aspects;
+import gregtech.api.enums.TC_Aspects.TC_AspectStack;
+import gregtech.api.enums.TextureSet;
+import gregtech.api.interfaces.IColorModulationContainer;
+import gregtech.api.interfaces.ICondition;
+import gregtech.api.interfaces.ISubTagContainer;
+import gregtech.api.objects.MaterialStack;
+import gregtech.api.util.GT_Config;
+import gregtech.api.util.GT_Log;
+import gregtech.api.util.GT_Utility;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.xmod.gregtech.api.interfaces.internal.Interface_OreRecipeRegistrator;
+import gtPlusPlus.xmod.gregtech.api.objects.GregtechItemData;
+import gtPlusPlus.xmod.gregtech.api.objects.GregtechMaterialStack;
+
+public enum GregtechOrePrefixes {
+
+ /*
+ * Electric Components. usual Materials for this are: Primitive (Tier 1) Basic (Tier 2) as used by UE as well : IC2
+ * Circuit and RE-Battery Good (Tier 3) Advanced (Tier 4) as used by UE as well : Advanced Circuit, Advanced Battery
+ * and Lithium Battery Data (Tier 5) : Data Storage Circuit Elite (Tier 6) as used by UE as well : Energy Crystal
+ * and Data Control Circuit Master (Tier 7) : Energy Flow Circuit and Lapotron Crystal Ultimate (Tier 8) : Data Orb
+ * and Lapotronic Energy Orb Infinite (Cheaty)
+ */
+ ingotHot("Hot Ingots", "Hot ", " Ingot", true, true, false, false, false, false, false, true, false, false, B[1],
+ M * 1, 16, 12), // A hot Ingot, which has to be cooled down by a Vacuum Freezer.
+ ingot("Ingots", "", " Ingot", true, true, false, false, false, false, false, true, false, false, B[1], M * 1, 64,
+ 11), // A regular Ingot. Introduced by Eloraam
+ dustTiny("Tiny Dusts", "Tiny Pile of ", " Dust", true, true, false, false, false, false, false, true, false, false,
+ B[0] | B[1] | B[2] | B[3], M / 9, 64, 0), // 1/9th of a Dust.
+ dustSmall("Small Dusts", "Small Pile of ", " Dust", true, true, false, false, false, false, false, true, false,
+ false, B[0] | B[1] | B[2] | B[3], M / 4, 64, 1), // 1/4th of a Dust.
+ dustImpure("Impure Dusts", "Impure Pile of ", " Dust", true, true, false, false, false, false, false, true, false,
+ true, B[3], M * 1, 64, 3), // Dust with impurities. 1 Unit of Main Material and 1/9 - 1/4 Unit of secondary
+ // Material
+ dustRefined("Refined Dusts", "Refined Pile of ", " Dust", true, true, false, false, false, false, false, true,
+ false, true, B[3], M * 1, 64, 2),
+ dustPure("Purified Dusts", "Purified Pile of ", " Dust", true, true, false, false, false, false, false, true, false,
+ true, B[3], M * 1, 64, 4),
+ dust("Dusts", "", " Dust", true, true, false, false, false, false, false, true, false, false,
+ B[0] | B[1] | B[2] | B[3], M * 1, 64, 2), // Pure Dust worth of one Ingot or Gem. Introduced by Alblaka.
+ nugget("Nuggets", "", " Nugget", true, true, false, false, false, false, false, true, false, false, B[1], M / 9, 64,
+ 9), // A Nugget. Introduced by Eloraam
+ plate("Plates", "", " Plate", true, true, false, false, false, false, true, true, false, false, B[1] | B[2], M * 1,
+ 64, 17), // Regular Plate made of one Ingot/Dust. Introduced by Calclavia
+ block("Storage Blocks", "Block of ", "", true, true, false, false, false, true, true, false, false, false, 0, M * 9,
+ 64, 71), // Storage Block consisting out of 9 Ingots/Gems/Dusts. Introduced by CovertJaguar
+ gem("Gemstones", "", "", true, true, true, false, false, false, true, true, false, false, B[2], M * 1, 64, 8), // A
+ // regular
+ // Gem
+ // worth
+ // one
+ // Dust.
+ // Introduced
+ // by
+ // Eloraam
+ gemChipped("Chipped Gemstones", "Chipped ", "", true, true, true, false, false, false, true, true, false, false,
+ B[2], M / 4, 64, 59), // A regular Gem worth one small Dust. Introduced by TerraFirmaCraft
+ gemFlawed("Flawed Gemstones", "Flawed ", "", true, true, true, false, false, false, true, true, false, false, B[2],
+ M / 2, 64, 60), // A regular Gem worth two small Dusts. Introduced by TerraFirmaCraft
+ gemFlawless("Flawless Gemstones", "Flawless ", "", true, true, true, false, false, false, true, true, false, false,
+ B[2], M * 2, 32, 61), // A regular Gem worth two Dusts. Introduced by TerraFirmaCraft
+ gemExquisite("Exquisite Gemstones", "Exquisite ", "", true, true, true, false, false, false, true, true, false,
+ false, B[2], M * 4, 16, 62), // A regular Gem worth four Dusts. Introduced by TerraFirmaCraft
+ stick("Sticks/Rods", "", " Rod", true, true, false, false, false, false, true, true, false, false, B[1] | B[2],
+ M / 2, 64, 23), // Stick made of half an Ingot. Introduced by Eloraam
+ type2("16x Wires", "16x ", " Wire", true, true, false, false, false, false, true, false, false, false, 0, M * 8, 64,
+ -1),
+
+ toolAngleGrinder("Angle Grinder", "", "Angle Grinder", true, true, false, false, false, false, true, true, false,
+ false, B[6], M * 6, 16, 37), // consisting out of 6 Ingots.
+ toolElectricSnips("Electric Snips", "", "Electric Snips", true, true, false, false, false, false, true, true, false,
+ false, B[6], M * 6, 16, 37), // consisting out of 6 Ingots.
+ toolElectricLighter("Electric Lighter", "", "Electric Lighter", true, true, false, false, false, false, true, true,
+ false, false, B[6], M * 6, 16, 37), // consisting out of 6 Ingots.
+ toolElectricButcherKnife("Electric Butcher Knife", "", "Electric Butcher Knife", true, true, false, false, false,
+ false, true, true, false, false, B[6], M * 6, 16, 37), // consisting out of 6 Ingots.
+
+ batterySingleuse("Single Use Batteries", "", "", false, true, false, false, false, false, false, false, false,
+ false, 0, -1, 64, -1),
+ battery("Reusable Batteries", "", "", false, true, false, false, false, false, false, false, false, false, 0, -1,
+ 64, -1), // Introduced by Calclavia
+ circuit("Circuits", "", "", true, true, false, false, false, false, false, false, false, false, 0, -1, 64, -1), // Introduced
+ // by
+ // Calclavia
+ chipset("Chipsets", "", "", true, true, false, false, false, false, false, false, false, false, 0, -1, 64, -1), // Introduced
+ ;
+
+ public static final int VERSION = 508;
+
+ static {
+ ingotHot.mHeatDamage = 3.0F;
+ }
+
+ public final ArrayList<ItemStack> mPrefixedItems = new ArrayList<>();
+ public final short mTextureIndex;
+ public final String mRegularLocalName, mLocalizedMaterialPre, mLocalizedMaterialPost;
+ public final boolean mIsUsedForOreProcessing, mIsEnchantable, mIsUnificatable, mIsMaterialBased, mIsSelfReferencing,
+ mIsContainer, mDontUnificateActively, mIsUsedForBlocks, mAllowNormalRecycling, mGenerateDefaultItem;
+ public final List<TC_AspectStack> mAspects = new ArrayList<>();
+ public final Collection<GregtechOrePrefixes> mFamiliarPrefixes = new HashSet<>();
+ /**
+ * Used to determine the amount of Material this Prefix contains. Multiply or Divide GregTech_API.MATERIAL_UNIT to
+ * get the Amounts in comparision to one Ingot. 0 = Null Negative = Undefined Amount
+ */
+ public final long mMaterialAmount;
+
+ private final Collection<Materials> mNotGeneratedItems = new HashSet<>(), mIgnoredMaterials = new HashSet<>(),
+ mGeneratedItems = new HashSet<>();
+ private final ArrayList<Interface_OreRecipeRegistrator> mOreProcessing = new ArrayList<>();
+ private final ArrayList<Interface_OreRecipeRegistrator> mOreProcessingFake = new ArrayList<>();
+ public final ItemStack mContainerItem = null;
+ public final ICondition<ISubTagContainer> mCondition = null;
+ public byte mDefaultStackSize = 64;
+ public final GregtechMaterialStack mSecondaryMaterial = null;
+ public final GregtechOrePrefixes mPrefixInto = this;
+ public float mHeatDamage = 0.0F; // Negative for Frost Damage
+ /**
+ * Yes this Value can be changed to add Bits for the MetaGenerated-Item-Check.
+ */
+ public int mMaterialGenerationBits = 0;
+
+ private GregtechOrePrefixes(final String aRegularLocalName, final String aLocalizedMaterialPre,
+ final String aLocalizedMaterialPost, final boolean aIsUnificatable, final boolean aIsMaterialBased,
+ final boolean aIsSelfReferencing, final boolean aIsContainer, final boolean aDontUnificateActively,
+ final boolean aIsUsedForBlocks, final boolean aAllowNormalRecycling, final boolean aGenerateDefaultItem,
+ final boolean aIsEnchantable, final boolean aIsUsedForOreProcessing, final int aMaterialGenerationBits,
+ final long aMaterialAmount, final int aDefaultStackSize, final int aTextureindex) {
+ this.mIsUnificatable = aIsUnificatable;
+ this.mIsMaterialBased = aIsMaterialBased;
+ this.mIsSelfReferencing = aIsSelfReferencing;
+ this.mIsContainer = aIsContainer;
+ this.mDontUnificateActively = aDontUnificateActively;
+ this.mIsUsedForBlocks = aIsUsedForBlocks;
+ this.mAllowNormalRecycling = aAllowNormalRecycling;
+ this.mGenerateDefaultItem = aGenerateDefaultItem;
+ this.mIsEnchantable = aIsEnchantable;
+ this.mIsUsedForOreProcessing = aIsUsedForOreProcessing;
+ this.mMaterialGenerationBits = aMaterialGenerationBits;
+ this.mMaterialAmount = aMaterialAmount;
+ this.mRegularLocalName = aRegularLocalName;
+ this.mLocalizedMaterialPre = aLocalizedMaterialPre;
+ this.mLocalizedMaterialPost = aLocalizedMaterialPost;
+ this.mDefaultStackSize = (byte) aDefaultStackSize;
+ this.mTextureIndex = (short) aTextureindex;
+
+ // TODO - Utilise some form of way to check if it's gt 5.9 if so, use string switch.
+ if (this.name()
+ .startsWith("ore")) {
+ getTcAspectStack(TC_Aspects.TERRA.name(), 1).addToAspectList(this.mAspects);
+ } else if (this.name()
+ .startsWith("wire")
+ || this.name()
+ .startsWith("cable")) {
+ getTcAspectStack(TC_Aspects.ELECTRUM.name(), 1).addToAspectList(this.mAspects);
+ } else
+ if (this.name()
+ .startsWith("dust")) {
+ getTcAspectStack(TC_Aspects.PERDITIO.name(), 1).addToAspectList(this.mAspects);
+ } else if (this.name()
+ .startsWith("crushed")) {
+ getTcAspectStack(TC_Aspects.PERFODIO.name(), 1).addToAspectList(this.mAspects);
+ } else if (this.name()
+ .startsWith("ingot")
+ || this.name()
+ .startsWith("nugget")) {
+ getTcAspectStack(TC_Aspects.METALLUM.name(), 1).addToAspectList(this.mAspects);
+ } else
+ if (this.name()
+ .startsWith("armor")) {
+ getTcAspectStack(TC_Aspects.TUTAMEN.name(), 1).addToAspectList(this.mAspects);
+ } else if (this.name()
+ .startsWith("stone")) {
+ getTcAspectStack(TC_Aspects.TERRA.name(), 1).addToAspectList(this.mAspects);
+ } else if (this.name()
+ .startsWith("pipe")) {
+ getTcAspectStack(TC_Aspects.ITER.name(), 1).addToAspectList(this.mAspects);
+ } else if (this.name()
+ .startsWith("gear")) {
+ getTcAspectStack(TC_Aspects.MOTUS.name(), 1).addToAspectList(this.mAspects);
+ getTcAspectStack(TC_Aspects.MACHINA.name(), 1)
+ .addToAspectList(this.mAspects);
+ } else if (this.name()
+ .startsWith("frame")
+ || this.name()
+ .startsWith("plate")) {
+ getTcAspectStack(TC_Aspects.FABRICO.name(), 1)
+ .addToAspectList(this.mAspects);
+ } else
+ if (this.name()
+ .startsWith("tool")) {
+ getTcAspectStack(TC_Aspects.INSTRUMENTUM.name(), 2)
+ .addToAspectList(this.mAspects);
+ } else if (this.name()
+ .startsWith("gem")
+ || this.name()
+ .startsWith("crystal")
+ || this.name()
+ .startsWith("lens")) {
+ getTcAspectStack(TC_Aspects.VITREUS.name(), 1)
+ .addToAspectList(this.mAspects);
+ } else
+ if (this.name()
+ .startsWith("crate")) {
+ getTcAspectStack(TC_Aspects.ITER.name(), 2)
+ .addToAspectList(this.mAspects);
+ } else if (this.name()
+ .startsWith("circuit")) {
+ getTcAspectStack("COGNITIO", 1);
+ } else if (this.name()
+ .startsWith("battery")) {
+ getTcAspectStack(TC_Aspects.ELECTRUM.name(), 1)
+ .addToAspectList(this.mAspects);
+ }
+ }
+
+ public static GregtechOrePrefixes getOrePrefix(final String aOre) {
+ for (final GregtechOrePrefixes tPrefix : values()) {
+ if (aOre.startsWith(tPrefix.toString())) {
+ return tPrefix;
+ }
+ }
+ return null;
+ }
+
+ public static String stripPrefix(final String aOre) {
+ for (final GregtechOrePrefixes tPrefix : values()) {
+ if (aOre.startsWith(tPrefix.toString())) {
+ return aOre.replaceFirst(tPrefix.toString(), "");
+ }
+ }
+ return aOre;
+ }
+
+ public static String replacePrefix(final String aOre, final GregtechOrePrefixes aPrefix) {
+ for (final GregtechOrePrefixes tPrefix : values()) {
+ if (aOre.startsWith(tPrefix.toString())) {
+ return aOre.replaceFirst(tPrefix.toString(), aPrefix.toString());
+ }
+ }
+ return "";
+ }
+
+ public static GregtechOrePrefixes getPrefix(final String aPrefixName) {
+ return getPrefix(aPrefixName, null);
+ }
+
+ public static GregtechOrePrefixes getPrefix(final String aPrefixName, final GregtechOrePrefixes aReplacement) {
+ final Object tObject = GT_Utility.getFieldContent(GregtechOrePrefixes.class, aPrefixName, false, false);
+ if ((tObject != null) && (tObject instanceof GregtechOrePrefixes)) {
+ return (GregtechOrePrefixes) tObject;
+ }
+ return aReplacement;
+ }
+
+ public static Materials getMaterial(final String aOre) {
+ return Materials.get(stripPrefix(aOre));
+ }
+
+ public static Materials getMaterial(final String aOre, final GregtechOrePrefixes aPrefix) {
+ return Materials.get(aOre.replaceFirst(aPrefix.toString(), ""));
+ }
+
+ public static Materials getRealMaterial(final String aOre, final GregtechOrePrefixes aPrefix) {
+ return Materials.getRealMaterial(aOre.replaceFirst(aPrefix.toString(), ""));
+ }
+
+ public static boolean isInstanceOf(final String aName, final GregtechOrePrefixes aPrefix) {
+ return aName == null ? false : aName.startsWith(aPrefix.toString());
+ }
+
+ public boolean add(final ItemStack aStack) {
+ if (aStack == null) {
+ return false;
+ }
+ if (!this.contains(aStack)) {
+ this.mPrefixedItems.add(aStack);
+ }
+ while (this.mPrefixedItems.contains(null)) {
+ this.mPrefixedItems.remove(null);
+ }
+ return true;
+ }
+
+ public boolean contains(final ItemStack aStack) {
+ if (aStack == null) {
+ return false;
+ }
+ for (final ItemStack tStack : this.mPrefixedItems) {
+ if (GT_Utility.areStacksEqual(aStack, tStack, !tStack.hasTagCompound())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public boolean doGenerateItem(final Materials aMaterial) {
+ return (aMaterial != null) && (aMaterial != Materials._NULL)
+ && (((aMaterial.mTypes & this.mMaterialGenerationBits) != 0) || this.mGeneratedItems.contains(aMaterial))
+ && !this.mNotGeneratedItems.contains(aMaterial)
+ && ((this.mCondition == null) || this.mCondition.isTrue(aMaterial));
+ }
+
+ public boolean ignoreMaterials(final Materials... aMaterials) {
+ for (final Materials tMaterial : aMaterials) {
+ if (tMaterial != null) {
+ this.mIgnoredMaterials.add(tMaterial);
+ }
+ }
+ return true;
+ }
+
+ public boolean addFamiliarPrefix(final GregtechOrePrefixes aPrefix) {
+ if ((aPrefix == null) || this.mFamiliarPrefixes.contains(aPrefix) || (aPrefix == this)) {
+ return false;
+ }
+ return this.mFamiliarPrefixes.add(aPrefix);
+ }
+
+ public boolean add(final Interface_OreRecipeRegistrator aRegistrator) {
+ if (aRegistrator == null) {
+ return false;
+ }
+ return this.mOreProcessing.add(aRegistrator);
+ }
+
+ public void processOre(final GT_Materials aMaterial, final String aOreDictName, final String aModName,
+ final ItemStack aStack) {
+ if ((aMaterial != null)
+ && ((aMaterial != GT_Materials._NULL) || this.mIsSelfReferencing || !this.mIsMaterialBased)
+ && GT_Utility.isStackValid(aStack)) {
+ for (final Interface_OreRecipeRegistrator tRegistrator : this.mOreProcessing) {
+ if (D2) {
+ GT_Log.ore.println(
+ "Processing '" + aOreDictName
+ + "' with the Prefix '"
+ + this.name()
+ + "' and the Material '"
+ + aMaterial.name()
+ + "' at "
+ + GT_Utility.getClassName(tRegistrator));
+ }
+ tRegistrator.registerOre(this, aMaterial, aOreDictName, aModName, GT_Utility.copyAmount(1, aStack));
+ }
+ }
+ }
+
+ // TODO
+ public void processOre(final Materials aMaterial, final String aOreDictName, final String aModName,
+ final ItemStack aStack) {
+ if ((aMaterial != null) && ((aMaterial != Materials._NULL) || this.mIsSelfReferencing || !this.mIsMaterialBased)
+ && GT_Utility.isStackValid(aStack)) {
+ for (final Interface_OreRecipeRegistrator tRegistrator : this.mOreProcessingFake) {
+ if (D2) {
+ GT_Log.ore.println(
+ "Processing '" + aOreDictName
+ + "' with the Prefix '"
+ + this.name()
+ + "' and the Material '"
+ + aMaterial.mName
+ + "' at "
+ + GT_Utility.getClassName(tRegistrator));
+ }
+ tRegistrator.registerOre(this, aMaterial, aOreDictName, aModName, GT_Utility.copyAmount(1, aStack));
+ }
+ }
+ }
+
+ public Object get(final Object aMaterial) {
+ if (aMaterial instanceof GT_Materials) {
+ return new GregtechItemData(this, (GT_Materials) aMaterial);
+ }
+ return this.name() + aMaterial;
+ }
+
+ public String getDefaultLocalNameForItem(final Materials aMaterial) {
+
+ // Use Standard Localization
+ return this.mLocalizedMaterialPre + aMaterial.mDefaultLocalName + this.mLocalizedMaterialPost;
+ }
+
+ public enum GT_Materials implements IColorModulationContainer, ISubTagContainer {
+
+ /**
+ * This is the Default Material returned in case no Material has been found or a NullPointer has been inserted
+ * at a location where it shouldn't happen.
+ * <p/>
+ * Mainly for preventing NullPointer Exceptions and providing Default Values.
+ *
+ * Unknown Material Components. Dead End Section.
+ *
+ * Alkalus Range 730-799 & 970-998 (aMetaItemSubID, TextureSet, aToolSpeed, aToolDurability, aToolQuality,
+ * aTypes, R, G, B, Alpha, aLocalName, aFuelType, aFuelPower, aMeltingPoint, aBlastFurnaceTemp,
+ * aBlastFurnaceRequired, aTransparent, aOreValue, aDensityMultiplier, aDensityDivider, aColor
+ * this(aMetaItemSubID, aIconSet, aToolSpeed, aToolDurability, aToolQuality, true);
+ *
+ */
+ _NULL(-1, TextureSet.SET_NONE, 1.0F, 0, 0, 0, 255, 255, 255, 0, "NULL", 0, 0, 0, 0, false, false, 1, 1, 1,
+ Dyes._NULL, Element._NULL, Arrays.asList(getTcAspectStack(TC_Aspects.VACUOS.name(), 1))),
+
+ // Lapis(526, TextureSet.SET_LAPIS, 1.0F, 0, 1, 1 | 4 | 8, 70, 70, 220, 0, "Lapis", 0, 0, -1, 0, false, false,
+ // 3, 1, 1, Dyes.dyeBlue, 2, Arrays.asList(new MaterialStack(Materials.Lazurite, 12), new
+ // MaterialStack(Materials.Sodalite, 2), new MaterialStack(Materials.Pyrite, 1), new
+ // MaterialStack(Materials.Calcite, 1)), Arrays.asList(getTcAspectStack(TC_Aspects.SENSUS, 1))),
+ Pyrotheum(20, TextureSet.SET_FLUID, 1.0F, 0, 1, 2 | 16 | 32, 255, 128, 0, 0, "Pyrotheum", 0, 0, -1, 0, false,
+ false, 2, 3, 1, Dyes.dyeYellow, 2,
+ Arrays.asList(
+ new MaterialStack(Materials.Coal, 1),
+ new MaterialStack(Materials.Redstone, 1),
+ new MaterialStack(Materials.Blaze, 1),
+ new MaterialStack(Materials.Sulfur, 1)),
+ Arrays.asList(getTcAspectStack("PRAECANTATIO", 2), getTcAspectStack(TC_Aspects.IGNIS, 1))),
+ Cryotheum(21, TextureSet.SET_FLUID, 1.0F, 0, 1, 2 | 16 | 32, 102, 178, 255, 0, "Cryotheum", 0, 0, -1, 0, false,
+ false, 2, 3, 1, Dyes.dyeLightBlue, 2,
+ Arrays.asList(
+ new MaterialStack(Materials.Blizz, 1),
+ new MaterialStack(Materials.Redstone, 1),
+ new MaterialStack(Materials.Snow, 1),
+ new MaterialStack(Materials.Niter, 1)),
+ Arrays.asList(getTcAspectStack("PRAECANTATIO", 2), getTcAspectStack(TC_Aspects.GELUM, 1))),
+ Ender(22, TextureSet.SET_FLUID, 1.0F, 0, 2, 1, 255, 255, 255, 0, "Ender", 0, 0, -1, 0, false, false, 3, 1, 1,
+ Dyes.dyeGreen),
+
+ /**
+ * Circuitry, Batteries and other Technical things
+ */
+ Symbiotic(-1, TextureSet.SET_NONE, 1.0F, 0, 0, 0, 255, 255, 255, 0, "IV Tier", 0, 0, -1, 0, false, false, 1, 1,
+ 1, Dyes.dyeLightGray,
+ Arrays.asList(getTcAspectStack(TC_Aspects.ELECTRUM, 4), getTcAspectStack(TC_Aspects.MACHINA, 4))),
+ Neutronic(-1, TextureSet.SET_NONE, 1.0F, 0, 0, 0, 255, 255, 255, 0, "LuV Tier", 0, 0, -1, 0, false, false, 1, 1,
+ 1, Dyes.dyeLightGray,
+ Arrays.asList(getTcAspectStack(TC_Aspects.ELECTRUM, 6), getTcAspectStack(TC_Aspects.MACHINA, 6))),
+ Quantum(-1, TextureSet.SET_NONE, 1.0F, 0, 0, 0, 255, 255, 255, 0, "ZPM Tier", 0, 0, -1, 0, false, false, 1, 1,
+ 1, Dyes.dyeLightGray,
+ Arrays.asList(getTcAspectStack(TC_Aspects.ELECTRUM, 8), getTcAspectStack(TC_Aspects.MACHINA, 8))),
+
+ Superconductor(-1, TextureSet.SET_NONE, 1.0F, 0, 0, 0, 190, 240, 190, 0, "Superconductor", 0, 0, -1, 0, false,
+ false, 1, 1, 1, Dyes.dyeGreen, Arrays.asList(getTcAspectStack(TC_Aspects.ELECTRUM, 8))),
+
+ Staballoy(30, TextureSet.SET_ROUGH, 10.0F, 5120, 4, 1 | 2 | 16 | 32 | 64 | 128, 68, 75, 66, 0, "Staballoy", 0,
+ 0, 1500, 2800, true, false, 1, 3, 1, Dyes.dyeGreen, 2,
+ Arrays.asList(new MaterialStack(Materials.Titanium, 1), new MaterialStack(Materials.Uranium, 9)),
+ Arrays.asList(getTcAspectStack(TC_Aspects.METALLUM, 8), getTcAspectStack(TC_Aspects.STRONTIO, 3))),
+ Bedrockium(31, TextureSet.SET_FINE, 8.0F, 8196, 3, 1 | 2 | 16 | 32 | 64 | 128, 39, 39, 39, 0, "Bedrockium", 0,
+ 0, -1, 0, false, false, 1, 5, 1, Dyes.dyeLightGray, 2,
+ Arrays.asList(new MaterialStack(Materials.Carbon, 63), new MaterialStack(Materials.Carbon, 56)),
+ Arrays.asList(getTcAspectStack(TC_Aspects.VACUOS, 8), getTcAspectStack(TC_Aspects.TUTAMEN, 3))),
+ BloodSteel(32, TextureSet.SET_METALLIC, 11.0F, 768, 4, 1 | 2 | 16 | 32 | 64 | 128, 142, 28, 0, 0, "Blood Steel",
+ 0, 0, -1, 0, false, false, 1, 1, 1, Dyes.dyeRed, 2, Arrays.asList(new MaterialStack(Materials.Steel, 3)),
+ Arrays.asList(getTcAspectStack(TC_Aspects.VICTUS, 8), getTcAspectStack(TC_Aspects.IGNIS, 3))),
+ Void(33, TextureSet.SET_METALLIC, 6.0F, 1280, 3, 1 | 2 | 16 | 32 | 64 | 128, 82, 17, 82, 0, "Void Metal", 0, 0,
+ -1, 0, false, false, 3, 1, 1, Dyes.dyeBlack,
+ Arrays.asList(getTcAspectStack("PRAECANTATIO", 5), getTcAspectStack(TC_Aspects.VACUOS, 7))),
+ ConductiveIron(34, TextureSet.SET_METALLIC, 5.0F, 256, 2, 1 | 2, 164, 109, 100, 0, "Conductive Iron", 0, 0, -1,
+ 0, false, false, 3, 1, 1, Dyes.dyeRed, 2,
+ Arrays.asList(new MaterialStack(Materials.Iron, 6), new MaterialStack(Materials.Redstone, 2)),
+ Arrays.asList(getTcAspectStack(TC_Aspects.POTENTIA, 2), getTcAspectStack(TC_Aspects.METALLUM, 2))),
+ ElectricalSteel(35, TextureSet.SET_METALLIC, 7.0F, 768, 3, 1 | 2 | 64 | 128, 194, 194, 194, 0,
+ "Electrical Steel", 0, 0, 1811, 1000, true, false, 3, 1, 1, Dyes.dyeLightGray, 2,
+ Arrays.asList(
+ new MaterialStack(Materials.Iron, 3),
+ new MaterialStack(Materials.Coal, 2),
+ new MaterialStack(Materials.Silicon, 2)),
+ Arrays.asList(getTcAspectStack(TC_Aspects.MAGNETO, 2), getTcAspectStack(TC_Aspects.ELECTRUM, 5))),
+ EnergeticAlloy(36, TextureSet.SET_SHINY, 5.0F, 512, 3, 1 | 2 | 64 | 128, 252, 152, 45, 0, "Energetic Alloy", 0,
+ 0, -1, 0, false, false, 3, 1, 1, Dyes.dyeOrange, 2,
+ Arrays.asList(
+ new MaterialStack(Materials.Gold, 3),
+ new MaterialStack(Materials.Glowstone, 2),
+ new MaterialStack(Materials.Redstone, 2)),
+ Arrays.asList(getTcAspectStack(TC_Aspects.POTENTIA, 4), getTcAspectStack(TC_Aspects.LUX, 3))),
+ VibrantAlloy(37, TextureSet.SET_SHINY, 7.0F, 1280, 4, 1 | 2 | 64 | 128, 204, 242, 142, 0, "Vibrant Alloy", 0, 0,
+ -1, 0, false, false, 3, 1, 1, Dyes.dyeLime, 2,
+ Arrays.asList(new MaterialStack(Materials.EnergeticAlloy, 1), new MaterialStack(Materials.EnderPearl, 3)),
+ Arrays.asList(getTcAspectStack(TC_Aspects.MACHINA, 5), getTcAspectStack(TC_Aspects.TELUM, 4))),
+ PulsatingIron(38, TextureSet.SET_SHINY, 5.0F, 256, 2, 1 | 2 | 64 | 128, 50, 91, 21, 0, "Pulsating Iron", 0, 0,
+ -1, 0, false, false, 3, 1, 1, Dyes.dyeGreen, 2,
+ Arrays.asList(new MaterialStack(Materials.Iron, 2), new MaterialStack(Materials.EnderPearl, 2)),
+ Arrays.asList(getTcAspectStack(TC_Aspects.ALIENIS, 3), getTcAspectStack(TC_Aspects.METALLUM, 3))),
+ /* TODO */ RedstoneAlloy(39, TextureSet.SET_METALLIC, 1.0F, 256, 2, 1 | 2 | 16 | 32 | 64, 178, 34, 34, 0,
+ "Redstone Alloy", 0, 0, -1, 0, false, false, 3, 1, 1, Dyes.dyeRed, 2,
+ Arrays.asList(new MaterialStack(Materials.Iron, 2), new MaterialStack(Materials.Redstone, 4))),
+
+ // Needs more Use, I think.
+ Tantalloy60(40, TextureSet.SET_DULL, 8.0F, 5120, 3, 1 | 2 | 16 | 32 | 64 | 128, 68, 75, 166, 0, "Tantalloy-60",
+ 0, 0, 3035, 2200, true, false, 1, 2, 1, Dyes.dyeLightBlue, 2,
+ Arrays.asList(new MaterialStack(Materials.Tungsten, 1), new MaterialStack(Materials.Tantalum, 9)),
+ Arrays.asList(getTcAspectStack(TC_Aspects.METALLUM, 8), getTcAspectStack(TC_Aspects.STRONTIO, 3))),
+ Tantalloy61(41, TextureSet.SET_DULL, 7.0F, 5120, 2, 1 | 2 | 16 | 32 | 64 | 128, 122, 135, 196, 0,
+ "Tantalloy-61", 0, 0, 3015, 2150, true, false, 1, 2, 1, Dyes.dyeLightBlue, 2,
+ Arrays.asList(
+ new MaterialStack(Materials.Tungsten, 1),
+ new MaterialStack(Materials.Tantalum, 9),
+ new MaterialStack(Materials.Titanium, 1)),
+ Arrays.asList(getTcAspectStack(TC_Aspects.METALLUM, 8), getTcAspectStack(TC_Aspects.STRONTIO, 3))),
+
+ Potin(42, TextureSet.SET_METALLIC, 7.0F, 5120, 2, 1 | 2 | 16 | 32 | 64 | 128, 201, 151, 129, 0, "Potin", 0, 0,
+ 3015, 2150, true, false, 1, 2, 1, Dyes.dyeLightBlue, 2,
+ Arrays.asList(
+ new MaterialStack(Materials.Tungsten, 1),
+ new MaterialStack(Materials.Tantalum, 9),
+ new MaterialStack(Materials.Titanium, 1)),
+ Arrays.asList(getTcAspectStack(TC_Aspects.METALLUM, 8), getTcAspectStack(TC_Aspects.STRONTIO, 3))),
+ Inconel792(43, TextureSet.SET_METALLIC, 7.0F, 5120, 2, 1 | 2 | 16 | 32 | 64 | 128, 108, 240, 118, 0,
+ "Inconel-792", 0, 0, 3015, 2150, true, false, 1, 2, 1, Dyes.dyeLightBlue, 2,
+ Arrays.asList(
+ new MaterialStack(Materials.Tungsten, 1),
+ new MaterialStack(Materials.Tantalum, 9),
+ new MaterialStack(Materials.Titanium, 1)),
+ Arrays.asList(getTcAspectStack(TC_Aspects.METALLUM, 8), getTcAspectStack(TC_Aspects.STRONTIO, 3))),
+ Inconel690(44, TextureSet.SET_DULL, 7.0F, 5120, 2, 1 | 2 | 16 | 32 | 64 | 128, 118, 220, 138, 0, "Inconel-690",
+ 0, 0, 3015, 2150, true, false, 1, 2, 1, Dyes.dyeLightBlue, 2,
+ Arrays.asList(
+ new MaterialStack(Materials.Tungsten, 1),
+ new MaterialStack(Materials.Tantalum, 9),
+ new MaterialStack(Materials.Titanium, 1)),
+ Arrays.asList(getTcAspectStack(TC_Aspects.METALLUM, 8), getTcAspectStack(TC_Aspects.STRONTIO, 3))),
+ MaragingSteel300(45, TextureSet.SET_METALLIC, 7.0F, 5120, 2, 1 | 2 | 16 | 32 | 64 | 128, 150, 150, 150, 0,
+ "Maraging Steel 300", 0, 0, 3015, 2150, true, false, 1, 2, 1, Dyes.dyeLightBlue, 2,
+ Arrays.asList(
+ new MaterialStack(Materials.Tungsten, 1),
+ new MaterialStack(Materials.Tantalum, 9),
+ new MaterialStack(Materials.Titanium, 1)),
+ Arrays.asList(getTcAspectStack(TC_Aspects.METALLUM, 8), getTcAspectStack(TC_Aspects.STRONTIO, 3))),
+ MaragingSteel350(46, TextureSet.SET_METALLIC, 7.0F, 5120, 2, 1 | 2 | 16 | 32 | 64 | 128, 160, 160, 160, 0,
+ "Maraging Steel 350", 0, 0, 3015, 2150, true, false, 1, 2, 1, Dyes.dyeLightBlue, 2,
+ Arrays.asList(
+ new MaterialStack(Materials.Tungsten, 1),
+ new MaterialStack(Materials.Tantalum, 9),
+ new MaterialStack(Materials.Titanium, 1)),
+ Arrays.asList(getTcAspectStack(TC_Aspects.METALLUM, 8), getTcAspectStack(TC_Aspects.STRONTIO, 3))),
+ HastelloyX(47, TextureSet.SET_SHINY, 7.0F, 5120, 2, 1 | 2 | 16 | 32 | 64 | 128, 255, 193, 37, 0, "Hastelloy-X",
+ 0, 0, 3015, 2150, true, false, 1, 2, 1, Dyes.dyeLightBlue, 2,
+ Arrays.asList(
+ new MaterialStack(Materials.Tungsten, 1),
+ new MaterialStack(Materials.Tantalum, 9),
+ new MaterialStack(Materials.Titanium, 1)),
+ Arrays.asList(getTcAspectStack(TC_Aspects.METALLUM, 8), getTcAspectStack(TC_Aspects.STRONTIO, 3))),
+
+ TriniumNaquadahCarbonite(48, TextureSet.SET_SHINY, 7.0F, 5120, 2, 1 | 2 | 16 | 32 | 64 | 128, 255, 233, 0, 0,
+ "Trinium Naquadah Carbonite", 0, 0, 3015, 2150, true, false, 1, 2, 1, Dyes.dyeLightBlue, 2,
+ Arrays.asList(
+ new MaterialStack(Materials.Tungsten, 1),
+ new MaterialStack(Materials.Tantalum, 9),
+ new MaterialStack(Materials.Titanium, 1)),
+ Arrays.asList(getTcAspectStack(TC_Aspects.METALLUM, 8), getTcAspectStack(TC_Aspects.STRONTIO, 3))),
+
+ // Radioactive Materials
+ HydrofluoricAcid(-1, TextureSet.SET_FLUID, 1.0F, 0, 1, 2 | 16 | 32, 200, 200, 200, 0, "Hydrofluoric Acid", 0, 0,
+ -1, 0, false, false, 2, 3, 1, Dyes.dyeWhite, 2,
+ Arrays.asList(
+ new MaterialStack(Materials.Coal, 1),
+ new MaterialStack(Materials.Redstone, 1),
+ new MaterialStack(Materials.Blaze, 1),
+ new MaterialStack(Materials.Sulfur, 1))),
+ UraniumHexaFluoride(-1, TextureSet.SET_FLUID, 1.0F, 0, 1, 2 | 16 | 32, 73, 220, 83, 0, "Uranium Hexafluoride",
+ 0, 0, -1, 0, false, false, 2, 3, 1, Dyes.dyeLime, 2,
+ Arrays.asList(
+ new MaterialStack(Materials.Coal, 1),
+ new MaterialStack(Materials.Redstone, 1),
+ new MaterialStack(Materials.Blaze, 1),
+ new MaterialStack(Materials.Sulfur, 1))),
+ UraniumTetraFluoride(-1, TextureSet.SET_FLUID, 1.0F, 0, 1, 2 | 16 | 32, 73, 220, 83, 0, "Uranium Tetrafluoride",
+ 0, 0, -1, 0, false, false, 2, 3, 1, Dyes.dyeLime, 2,
+ Arrays.asList(
+ new MaterialStack(Materials.Coal, 1),
+ new MaterialStack(Materials.Redstone, 1),
+ new MaterialStack(Materials.Blaze, 1),
+ new MaterialStack(Materials.Sulfur, 1))),
+ ThoriumTetraFluoride(-1, TextureSet.SET_FLUID, 1.0F, 0, 1, 2 | 16 | 32, 15, 120, 15, 0, "Thorium Tetrafluoride",
+ 0, 0, -1, 0, false, false, 2, 3, 1, Dyes.dyeGreen, 2,
+ Arrays.asList(
+ new MaterialStack(Materials.Coal, 1),
+ new MaterialStack(Materials.Redstone, 1),
+ new MaterialStack(Materials.Blaze, 1),
+ new MaterialStack(Materials.Sulfur, 1))),
+
+ SulfurousAcid(-1, TextureSet.SET_FLUID, 1.0F, 0, 1, 2 | 16 | 32, 110, 220, 30, 0, "Sulfurous Acid", 0, 0, -1, 0,
+ false, false, 2, 3, 1, Dyes.dyeWhite, 2,
+ Arrays.asList(
+ new MaterialStack(Materials.Coal, 1),
+ new MaterialStack(Materials.Redstone, 1),
+ new MaterialStack(Materials.Blaze, 1),
+ new MaterialStack(Materials.Sulfur, 1))),
+ SulfurDioxide(-1, TextureSet.SET_FLUID, 1.0F, 0, 1, 2 | 16 | 32, 150, 200, 50, 0, "Sulfur Dioxide", 0, 0, -1, 0,
+ false, false, 2, 3, 1, Dyes.dyeWhite, 2,
+ Arrays.asList(
+ new MaterialStack(Materials.Coal, 1),
+ new MaterialStack(Materials.Redstone, 1),
+ new MaterialStack(Materials.Blaze, 1),
+ new MaterialStack(Materials.Sulfur, 1))),
+ HydrogenChloride(-1, TextureSet.SET_FLUID, 1.0F, 0, 1, 2 | 16 | 32, 150, 240, 90, 0, "Hydrogen Chloride", 0, 0,
+ -1, 0, false, false, 2, 3, 1, Dyes.dyeWhite, 2,
+ Arrays.asList(
+ new MaterialStack(Materials.Coal, 1),
+ new MaterialStack(Materials.Redstone, 1),
+ new MaterialStack(Materials.Blaze, 1),
+ new MaterialStack(Materials.Sulfur, 1))),
+ SulfuricApatite(-1, TextureSet.SET_FLUID, 1.0F, 0, 1, 2 | 16 | 32, 0, 105, 105, 0, "Sulfuric Apatite Solution",
+ 0, 0, -1, 0, false, false, 2, 3, 1, Dyes.dyeWhite, 2,
+ Arrays.asList(
+ new MaterialStack(Materials.Coal, 1),
+ new MaterialStack(Materials.Redstone, 1),
+ new MaterialStack(Materials.Blaze, 1),
+ new MaterialStack(Materials.Sulfur, 1))),
+
+ SulfuricLithium(-1, TextureSet.SET_FLUID, 1.0F, 0, 1, 2 | 16 | 32, 0, 105, 105, 0, "Sulfuric Lithium Solution",
+ 0, 0, -1, 0, false, false, 2, 3, 1, Dyes.dyeWhite, 2,
+ Arrays.asList(
+ new MaterialStack(Materials.Coal, 1),
+ new MaterialStack(Materials.Redstone, 1),
+ new MaterialStack(Materials.Blaze, 1),
+ new MaterialStack(Materials.Sulfur, 1))),
+ LithiumHydroxide(-1, TextureSet.SET_FLUID, 1.0F, 0, 1, 2 | 16 | 32, 0, 105, 105, 0, "Lithium Hydroxide", 0, 0,
+ -1, 0, false, false, 2, 3, 1, Dyes.dyeWhite, 2,
+ Arrays.asList(
+ new MaterialStack(Materials.Coal, 1),
+ new MaterialStack(Materials.Redstone, 1),
+ new MaterialStack(Materials.Blaze, 1),
+ new MaterialStack(Materials.Sulfur, 1))),;
+
+ /**
+ * List of all Materials.
+ */
+ public static final Collection<GT_Materials> VALUES = new HashSet<>(Arrays.asList(values()));
+
+ static {
+ /*
+ * Primitive.add(SubTag.NO_SMASHING, SubTag.NO_SMELTING); Basic.add(SubTag.NO_SMASHING, SubTag.NO_SMELTING);
+ * Good.add(SubTag.NO_SMASHING, SubTag.NO_SMELTING); Advanced.add(SubTag.NO_SMASHING, SubTag.NO_SMELTING);
+ * Data.add(SubTag.NO_SMASHING, SubTag.NO_SMELTING); Elite.add(SubTag.NO_SMASHING, SubTag.NO_SMELTING);
+ * Master.add(SubTag.NO_SMASHING, SubTag.NO_SMELTING); Ultimate.add(SubTag.NO_SMASHING, SubTag.NO_SMELTING);
+ * Superconductor.add(SubTag.NO_SMASHING, SubTag.NO_SMELTING); Infinite.add(SubTag.NO_SMASHING,
+ * SubTag.NO_SMELTING);
+ */
+ Symbiotic.add(SubTag.NO_SMASHING, SubTag.NO_SMELTING);
+ Neutronic.add(SubTag.NO_SMASHING, SubTag.NO_SMELTING);
+ Quantum.add(SubTag.NO_SMASHING, SubTag.NO_SMELTING);
+ }
+
+ /**
+ * This Array can be changed dynamically by a Tick Handler in order to get a glowing Effect on all GT Meta Items
+ * out of this Material.
+ */
+ public final short[] mRGBa = new short[] { 255, 255, 255, 0 }, mMoltenRGBa = new short[] { 255, 255, 255, 0 };
+
+ public final TextureSet mIconSet;
+ public final int mMetaItemSubID;
+ public final boolean mUnificatable;
+ public final GT_Materials mMaterialInto;
+ public final List<MaterialStack> mMaterialList = new ArrayList<>();
+ public final List<GT_Materials> mOreByProducts = new ArrayList<>(), mOreReRegistrations = new ArrayList<>();
+ public final List<TC_AspectStack> mAspects = new ArrayList<>();
+ private final ArrayList<ItemStack> mMaterialItems = new ArrayList<>();
+ private final Collection<SubTag> mSubTags = new HashSet<>();
+ public Enchantment mEnchantmentTools = null, mEnchantmentArmors = null;
+ public byte mEnchantmentToolsLevel = 0, mEnchantmentArmorsLevel = 0;
+ public boolean mBlastFurnaceRequired = false;
+ public float mToolSpeed = 1.0F, mHeatDamage = 0.0F;
+ public String mChemicalFormula = "?", mDefaultLocalName = "null";
+ public Dyes mColor = Dyes._NULL;
+ public short mMeltingPoint = 0, mBlastFurnaceTemp = 0;
+ public int mTypes = 0, mDurability = 16, mFuelPower = 0, mFuelType = 0, mExtraData = 0, mOreValue = 0,
+ mOreMultiplier = 1, mByProductMultiplier = 1, mSmeltingMultiplier = 1;
+ public long mDensity = M;
+ public Element mElement = null;
+ public GT_Materials mDirectSmelting = this;
+ public GT_Materials mOreReplacement = this;
+ public GT_Materials mMacerateInto = this;
+ public GT_Materials mSmeltInto = this;
+ public GT_Materials mArcSmeltInto = this;
+ public final GT_Materials mHandleMaterial = this;
+ public byte mToolQuality = 0;
+ public final Fluid mSolid = null;
+ public Fluid mFluid = null;
+ public Fluid mGas = null;
+ public Fluid mPlasma = null;
+ /**
+ * This Fluid is used as standard Unit for Molten Materials. 1296 is a Molten Block, what means 144 is one
+ * Material Unit worth
+ */
+ public final Fluid mStandardMoltenFluid = null;
+
+ private GT_Materials(final int aMetaItemSubID, final TextureSet aIconSet, final float aToolSpeed,
+ final int aToolDurability, final int aToolQuality, final boolean aUnificatable) {
+ this.mUnificatable = aUnificatable;
+ this.mMaterialInto = this;
+ this.mMetaItemSubID = aMetaItemSubID;
+ this.mToolQuality = (byte) aToolQuality;
+ this.mDurability = aToolDurability;
+ this.mToolSpeed = aToolSpeed;
+ this.mIconSet = aIconSet;
+ if (aMetaItemSubID >= 0) {
+ if (CORE.sMU_GeneratedMaterials[aMetaItemSubID] == null) {
+ CORE.sMU_GeneratedMaterials[aMetaItemSubID] = this;
+ } else {
+ throw new IllegalArgumentException("The Index " + aMetaItemSubID + " is already used!");
+ }
+ }
+ }
+
+ private GT_Materials(final GT_Materials aMaterialInto, final boolean aReRegisterIntoThis) {
+ this.mUnificatable = false;
+ this.mDefaultLocalName = aMaterialInto.mDefaultLocalName;
+ this.mMaterialInto = aMaterialInto.mMaterialInto;
+ if (aReRegisterIntoThis) {
+ this.mMaterialInto.mOreReRegistrations.add(this);
+ }
+ this.mChemicalFormula = aMaterialInto.mChemicalFormula;
+ this.mMetaItemSubID = -1;
+ this.mIconSet = TextureSet.SET_NONE;
+ }
+
+ /**
+ * @param aMetaItemSubID the Sub-ID used in my own MetaItems. Range 0-1000. -1 for no Material
+ * @param aTypes which kind of Items should be generated. Bitmask as follows: 1 = Dusts of all
+ * kinds. 2 = Dusts, Ingots, Plates, Rods/Sticks, Machine Components and other
+ * Metal specific things. 4 = Dusts, Gems, Plates, Lenses (if transparent). 8 =
+ * Dusts, Impure Dusts, crushed Ores, purified Ores, centrifuged Ores etc. 16 =
+ * Cells 32 = Plasma Cells 64 = Tool Heads 128 = Gears
+ * @param aR, aG, aB Color of the Material 0-255 each.
+ * @param aA transparency of the Material Texture. 0 = fully visible, 255 = Invisible.
+ * @param aLocalName The Name used as Default for localization.
+ * @param aFuelType Type of Generator to get Energy from this Material.
+ * @param aFuelPower EU generated. Will be multiplied by 1000, also additionally multiplied by 2 for
+ * Gems.
+ * @param aAmplificationValue Amount of UUM amplifier gotten from this.
+ * @param aUUMEnergy Amount of EU needed to shape the UUM into this Material.
+ * @param aMeltingPoint Used to determine the smelting Costs in Furnii.
+ * @param aBlastFurnaceTemp Used to determine the needed Heat capactiy Costs in Blast Furnii.
+ * @param aBlastFurnaceRequired If this requires a Blast Furnace.
+ * @param aColor Vanilla MC Wool Color which comes the closest to this.
+ */
+ private GT_Materials(final int aMetaItemSubID, final TextureSet aIconSet, final float aToolSpeed,
+ final int aToolDurability, final int aToolQuality, final int aTypes, final int aR, final int aG,
+ final int aB, final int aA, final String aLocalName, final int aFuelType, final int aFuelPower,
+ final int aMeltingPoint, final int aBlastFurnaceTemp, final boolean aBlastFurnaceRequired,
+ final boolean aTransparent, final int aOreValue, final int aDensityMultiplier, final int aDensityDivider,
+ final Dyes aColor) {
+ this(aMetaItemSubID, aIconSet, aToolSpeed, aToolDurability, aToolQuality, true);
+ this.mDefaultLocalName = aLocalName;
+ this.mMeltingPoint = (short) aMeltingPoint;
+ this.mBlastFurnaceTemp = (short) aBlastFurnaceTemp;
+ this.mBlastFurnaceRequired = aBlastFurnaceRequired;
+ if (aTransparent) {
+ this.add(SubTag.TRANSPARENT);
+ }
+ this.mFuelPower = aFuelPower;
+ this.mFuelType = aFuelType;
+ this.mOreValue = aOreValue;
+ this.mDensity = (M * aDensityMultiplier) / aDensityDivider;
+ this.mColor = aColor == null ? Dyes._NULL : aColor;
+ if (this.mColor != null) {
+ this.add(SubTag.HAS_COLOR);
+ }
+ this.mRGBa[0] = this.mMoltenRGBa[0] = (short) aR;
+ this.mRGBa[1] = this.mMoltenRGBa[1] = (short) aG;
+ this.mRGBa[2] = this.mMoltenRGBa[2] = (short) aB;
+ this.mRGBa[3] = this.mMoltenRGBa[3] = (short) aA;
+ this.mTypes = aTypes;
+ if ((this.mTypes & 2) != 0) {
+ this.add(SubTag.SMELTING_TO_FLUID);
+ }
+ }
+
+ private GT_Materials(final int aMetaItemSubID, final TextureSet aIconSet, final float aToolSpeed,
+ final int aToolDurability, final int aToolQuality, final int aTypes, final int aR, final int aG,
+ final int aB, final int aA, final String aLocalName, final int aFuelType, final int aFuelPower,
+ final int aMeltingPoint, final int aBlastFurnaceTemp, final boolean aBlastFurnaceRequired,
+ final boolean aTransparent, final int aOreValue, final int aDensityMultiplier, final int aDensityDivider,
+ final Dyes aColor, final List<TC_AspectStack> aAspects) {
+ this(
+ aMetaItemSubID,
+ aIconSet,
+ aToolSpeed,
+ aToolDurability,
+ aToolQuality,
+ aTypes,
+ aR,
+ aG,
+ aB,
+ aA,
+ aLocalName,
+ aFuelType,
+ aFuelPower,
+ aMeltingPoint,
+ aBlastFurnaceTemp,
+ aBlastFurnaceRequired,
+ aTransparent,
+ aOreValue,
+ aDensityMultiplier,
+ aDensityDivider,
+ aColor);
+ this.mAspects.addAll(aAspects);
+ }
+
+ /**
+ * @param aElement The Element Enum represented by this Material
+ */
+ private GT_Materials(final int aMetaItemSubID, final TextureSet aIconSet, final float aToolSpeed,
+ final int aToolDurability, final int aToolQuality, final int aTypes, final int aR, final int aG,
+ final int aB, final int aA, final String aLocalName, final int aFuelType, final int aFuelPower,
+ final int aMeltingPoint, final int aBlastFurnaceTemp, final boolean aBlastFurnaceRequired,
+ final boolean aTransparent, final int aOreValue, final int aDensityMultiplier, final int aDensityDivider,
+ final Dyes aColor, final Element aElement, final List<TC_AspectStack> aAspects) {
+ this(
+ aMetaItemSubID,
+ aIconSet,
+ aToolSpeed,
+ aToolDurability,
+ aToolQuality,
+ aTypes,
+ aR,
+ aG,
+ aB,
+ aA,
+ aLocalName,
+ aFuelType,
+ aFuelPower,
+ aMeltingPoint,
+ aBlastFurnaceTemp,
+ aBlastFurnaceRequired,
+ aTransparent,
+ aOreValue,
+ aDensityMultiplier,
+ aDensityDivider,
+ aColor);
+ this.mElement = aElement;
+ // mElement.mLinkedMaterials.add(this);
+ if (aElement == Element._NULL) {
+ this.mChemicalFormula = "Empty";
+ } else {
+ this.mChemicalFormula = aElement.toString();
+ this.mChemicalFormula = this.mChemicalFormula.replaceAll("_", "-");
+ }
+ this.mAspects.addAll(aAspects);
+ }
+
+ private GT_Materials(final int aMetaItemSubID, final TextureSet aIconSet, final float aToolSpeed,
+ final int aToolDurability, final int aToolQuality, final int aTypes, final int aR, final int aG,
+ final int aB, final int aA, final String aLocalName, final int aFuelType, final int aFuelPower,
+ final int aMeltingPoint, final int aBlastFurnaceTemp, final boolean aBlastFurnaceRequired,
+ final boolean aTransparent, final int aOreValue, final int aDensityMultiplier, final int aDensityDivider,
+ final Dyes aColor, final int aExtraData, final List<MaterialStack> aMaterialList) {
+ this(
+ aMetaItemSubID,
+ aIconSet,
+ aToolSpeed,
+ aToolDurability,
+ aToolQuality,
+ aTypes,
+ aR,
+ aG,
+ aB,
+ aA,
+ aLocalName,
+ aFuelType,
+ aFuelPower,
+ aMeltingPoint,
+ aBlastFurnaceTemp,
+ aBlastFurnaceRequired,
+ aTransparent,
+ aOreValue,
+ aDensityMultiplier,
+ aDensityDivider,
+ aColor,
+ aExtraData,
+ aMaterialList,
+ null);
+ }
+
+ private GT_Materials(final int aMetaItemSubID, final TextureSet aIconSet, final float aToolSpeed,
+ final int aToolDurability, final int aToolQuality, final int aTypes, final int aR, final int aG,
+ final int aB, final int aA, final String aLocalName, final int aFuelType, final int aFuelPower,
+ final int aMeltingPoint, final int aBlastFurnaceTemp, final boolean aBlastFurnaceRequired,
+ final boolean aTransparent, final int aOreValue, final int aDensityMultiplier, final int aDensityDivider,
+ final Dyes aColor, final int aExtraData, final List<MaterialStack> aMaterialList,
+ final List<TC_AspectStack> aAspects) {
+ this(
+ aMetaItemSubID,
+ aIconSet,
+ aToolSpeed,
+ aToolDurability,
+ aToolQuality,
+ aTypes,
+ aR,
+ aG,
+ aB,
+ aA,
+ aLocalName,
+ aFuelType,
+ aFuelPower,
+ aMeltingPoint,
+ aBlastFurnaceTemp,
+ aBlastFurnaceRequired,
+ aTransparent,
+ aOreValue,
+ aDensityMultiplier,
+ aDensityDivider,
+ aColor);
+ this.mExtraData = aExtraData;
+ this.mMaterialList.addAll(aMaterialList);
+ this.mChemicalFormula = "";
+ for (final MaterialStack tMaterial : this.mMaterialList) {
+ this.mChemicalFormula += tMaterial.toString();
+ }
+ this.mChemicalFormula = this.mChemicalFormula.replaceAll("_", "-");
+
+ int tAmountOfComponents = 0, tMeltingPoint = 0;
+ for (final MaterialStack tMaterial : this.mMaterialList) {
+ tAmountOfComponents += tMaterial.mAmount;
+ if (tMaterial.mMaterial.mMeltingPoint > 0) {
+ tMeltingPoint += tMaterial.mMaterial.mMeltingPoint * tMaterial.mAmount;
+ }
+ if (aAspects == null) {
+ for (final TC_AspectStack tAspect : tMaterial.mMaterial.mAspects) {
+ tAspect.addToAspectList(this.mAspects);
+ }
+ }
+ }
+
+ if (this.mMeltingPoint < 0) {
+ this.mMeltingPoint = (short) (tMeltingPoint / tAmountOfComponents);
+ }
+
+ tAmountOfComponents *= aDensityMultiplier;
+ tAmountOfComponents /= aDensityDivider;
+ if (aAspects == null) {
+ for (final TC_AspectStack tAspect : this.mAspects) {
+ tAspect.mAmount = Math.max(1, tAspect.mAmount / Math.max(1, tAmountOfComponents));
+ }
+ } else {
+ this.mAspects.addAll(aAspects);
+ }
+ }
+
+ public static GT_Materials get(final String aMaterialName) {
+ final Object tObject = GT_Utility.getFieldContent(GT_Materials.class, aMaterialName, false, false);
+ if ((tObject != null) && (tObject instanceof GT_Materials)) {
+ return (GT_Materials) tObject;
+ }
+ return _NULL;
+ }
+
+ public static GT_Materials getRealMaterial(final String aMaterialName) {
+ return get(aMaterialName).mMaterialInto;
+ }
+
+ /**
+ * Called in preInit with the Config to set Values.
+ *
+ * @param aConfiguration
+ */
+ public static void init(final GT_Config aConfiguration) {
+ for (final GT_Materials tMaterial : VALUES) {
+ final String tString = tMaterial.toString()
+ .toLowerCase();
+ tMaterial.mHeatDamage = (float) aConfiguration
+ .get(ConfigCategories.Materials.heatdamage, tString, tMaterial.mHeatDamage);
+ if (tMaterial.mBlastFurnaceRequired) {
+ tMaterial.mBlastFurnaceRequired = aConfiguration
+ .get(ConfigCategories.Materials.blastfurnacerequirements, tString, true);
+ }
+ if (tMaterial.mBlastFurnaceRequired && aConfiguration.get(
+ ConfigCategories.Materials.blastinductionsmelter,
+ tString,
+ tMaterial.mBlastFurnaceTemp < 1500)) {}
+ }
+ }
+
+ public boolean isRadioactive() {
+ if (this.mElement != null) {
+ return this.mElement.mHalfLifeSeconds >= 0;
+ }
+ for (final MaterialStack tMaterial : this.mMaterialList) {
+ if (tMaterial.mMaterial.isRadioactive()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public long getProtons() {
+ if (this.mElement != null) {
+ return this.mElement.getProtons();
+ }
+ if (this.mMaterialList.size() <= 0) {
+ return Element.Tc.getProtons();
+ }
+ long rAmount = 0, tAmount = 0;
+ for (final MaterialStack tMaterial : this.mMaterialList) {
+ tAmount += tMaterial.mAmount;
+ rAmount += tMaterial.mAmount * tMaterial.mMaterial.getProtons();
+ }
+ return (this.getDensity() * rAmount) / (tAmount * M);
+ }
+
+ public long getNeutrons() {
+ if (this.mElement != null) {
+ return this.mElement.getNeutrons();
+ }
+ if (this.mMaterialList.size() <= 0) {
+ return Element.Tc.getNeutrons();
+ }
+ long rAmount = 0, tAmount = 0;
+ for (final MaterialStack tMaterial : this.mMaterialList) {
+ tAmount += tMaterial.mAmount;
+ rAmount += tMaterial.mAmount * tMaterial.mMaterial.getNeutrons();
+ }
+ return (this.getDensity() * rAmount) / (tAmount * M);
+ }
+
+ public long getMass() {
+ if (this.mElement != null) {
+ return this.mElement.getMass();
+ }
+ if (this.mMaterialList.size() <= 0) {
+ return Element.Tc.getMass();
+ }
+ long rAmount = 0, tAmount = 0;
+ for (final MaterialStack tMaterial : this.mMaterialList) {
+ tAmount += tMaterial.mAmount;
+ rAmount += tMaterial.mAmount * tMaterial.mMaterial.getMass();
+ }
+ return (this.getDensity() * rAmount) / (tAmount * M);
+ }
+
+ public long getDensity() {
+ return this.mDensity;
+ }
+
+ public String getToolTip() {
+ return this.getToolTip(1, false);
+ }
+
+ public String getToolTip(final boolean aShowQuestionMarks) {
+ return this.getToolTip(1, aShowQuestionMarks);
+ }
+
+ public String getToolTip(final long aMultiplier) {
+ return this.getToolTip(aMultiplier, false);
+ }
+
+ public String getToolTip(final long aMultiplier, final boolean aShowQuestionMarks) {
+ if (!aShowQuestionMarks && this.mChemicalFormula.equals("?")) {
+ return "";
+ }
+ if ((aMultiplier >= (M * 2)) && !this.mMaterialList.isEmpty()) {
+ return (((this.mElement != null)
+ || ((this.mMaterialList.size() < 2) && (this.mMaterialList.get(0).mAmount == 1)))
+ ? this.mChemicalFormula
+ : "(" + this.mChemicalFormula + ")")
+ + aMultiplier;
+ }
+ return this.mChemicalFormula;
+ }
+
+ /**
+ * Adds an ItemStack to this Material.
+ */
+ public GT_Materials add(final ItemStack aStack) {
+ if ((aStack != null) && !this.contains(aStack)) {
+ this.mMaterialItems.add(aStack);
+ }
+ return this;
+ }
+
+ /**
+ * This is used to determine if any of the ItemStacks belongs to this Material.
+ */
+ public boolean contains(final ItemStack... aStacks) {
+ if ((aStacks == null) || (aStacks.length <= 0)) {
+ return false;
+ }
+ for (final ItemStack tStack : this.mMaterialItems) {
+ for (final ItemStack aStack : aStacks) {
+ if (GT_Utility.areStacksEqual(aStack, tStack, !tStack.hasTagCompound())) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * This is used to determine if an ItemStack belongs to this Material.
+ */
+ public boolean remove(final ItemStack aStack) {
+ if (aStack == null) {
+ return false;
+ }
+ boolean temp = false;
+ for (int i = 0; i < this.mMaterialItems.size(); i++) {
+ if (GT_Utility.areStacksEqual(aStack, this.mMaterialItems.get(i))) {
+ this.mMaterialItems.remove(i--);
+ temp = true;
+ }
+ }
+ return temp;
+ }
+
+ /**
+ * Adds a SubTag to this Material
+ */
+ @Override
+ public ISubTagContainer add(final SubTag... aTags) {
+ if (aTags != null) {
+ for (final SubTag aTag : aTags) {
+ if ((aTag != null) && !this.contains(aTag)) {
+ aTag.addContainerToList(this);
+ this.mSubTags.add(aTag);
+ }
+ }
+ }
+ return this;
+ }
+
+ /**
+ * If this Material has this exact SubTag
+ */
+ @Override
+ public boolean contains(final SubTag aTag) {
+ return this.mSubTags.contains(aTag);
+ }
+
+ /**
+ * Removes a SubTag from this Material
+ */
+ @Override
+ public boolean remove(final SubTag aTag) {
+ return this.mSubTags.remove(aTag);
+ }
+
+ /**
+ * Sets the Heat Damage for this Material (negative = frost)
+ */
+ public GT_Materials setHeatDamage(final float aHeatDamage) {
+ this.mHeatDamage = aHeatDamage;
+ return this;
+ }
+
+ /**
+ * Adds a Material to the List of Byproducts when grinding this Ore. Is used for more precise Ore grinding, so
+ * that it is possible to choose between certain kinds of Materials.
+ */
+ public GT_Materials addOreByProduct(final GT_Materials aMaterial) {
+ if (!this.mOreByProducts.contains(aMaterial.mMaterialInto)) {
+ this.mOreByProducts.add(aMaterial.mMaterialInto);
+ }
+ return this;
+ }
+
+ /**
+ * Adds multiple Materials to the List of Byproducts when grinding this Ore. Is used for more precise Ore
+ * grinding, so that it is possible to choose between certain kinds of Materials.
+ */
+ public GT_Materials addOreByProducts(final GT_Materials... aMaterials) {
+ for (final GT_Materials tMaterial : aMaterials) {
+ if (tMaterial != null) {
+ this.addOreByProduct(tMaterial);
+ }
+ }
+ return this;
+ }
+
+ /**
+ * If this Ore gives multiple drops of its Main Material. Lapis Ore for example gives about 6 drops.
+ */
+ public GT_Materials setOreMultiplier(final int aOreMultiplier) {
+ if (aOreMultiplier > 0) {
+ this.mOreMultiplier = aOreMultiplier;
+ }
+ return this;
+ }
+
+ /**
+ * If this Ore gives multiple drops of its Byproduct Material.
+ */
+ public GT_Materials setByProductMultiplier(final int aByProductMultiplier) {
+ if (aByProductMultiplier > 0) {
+ this.mByProductMultiplier = aByProductMultiplier;
+ }
+ return this;
+ }
+
+ /**
+ * If this Ore gives multiple drops of its Main Material. Lapis Ore for example gives about 6 drops.
+ */
+ public GT_Materials setSmeltingMultiplier(final int aSmeltingMultiplier) {
+ if (aSmeltingMultiplier > 0) {
+ this.mSmeltingMultiplier = aSmeltingMultiplier;
+ }
+ return this;
+ }
+
+ /**
+ * This Ore should be smolten directly into an Ingot of this Material instead of an Ingot of itself.
+ */
+ public GT_Materials setDirectSmelting(final GT_Materials aMaterial) {
+ if (aMaterial != null) {
+ this.mDirectSmelting = aMaterial.mMaterialInto.mDirectSmelting;
+ }
+ return this;
+ }
+
+ /**
+ * This Material should be the Main Material this Ore gets ground into. Example, Chromite giving Chrome or
+ * Tungstate giving Tungsten.
+ */
+ public GT_Materials setOreReplacement(final GT_Materials aMaterial) {
+ if (aMaterial != null) {
+ this.mOreReplacement = aMaterial.mMaterialInto.mOreReplacement;
+ }
+ return this;
+ }
+
+ /**
+ * This Material smelts always into an instance of aMaterial. Used for Magnets.
+ */
+ public GT_Materials setSmeltingInto(final GT_Materials aMaterial) {
+ if (aMaterial != null) {
+ this.mSmeltInto = aMaterial.mMaterialInto.mSmeltInto;
+ }
+ return this;
+ }
+
+ /**
+ * This Material arc smelts always into an instance of aMaterial. Used for Wrought Iron.
+ */
+ public GT_Materials setArcSmeltingInto(final GT_Materials aMaterial) {
+ if (aMaterial != null) {
+ this.mArcSmeltInto = aMaterial.mMaterialInto.mArcSmeltInto;
+ }
+ return this;
+ }
+
+ /**
+ * This Material macerates always into an instance of aMaterial.
+ */
+ public GT_Materials setMaceratingInto(final GT_Materials aMaterial) {
+ if (aMaterial != null) {
+ this.mMacerateInto = aMaterial.mMaterialInto.mMacerateInto;
+ }
+ return this;
+ }
+
+ public GT_Materials setEnchantmentForTools(final Enchantment aEnchantment, final int aEnchantmentLevel) {
+ this.mEnchantmentTools = aEnchantment;
+ this.mEnchantmentToolsLevel = (byte) aEnchantmentLevel;
+ return this;
+ }
+
+ public GT_Materials setEnchantmentForArmors(final Enchantment aEnchantment, final int aEnchantmentLevel) {
+ this.mEnchantmentArmors = aEnchantment;
+ this.mEnchantmentArmorsLevel = (byte) aEnchantmentLevel;
+ return this;
+ }
+
+ public FluidStack getSolid(final long aAmount) {
+ if (this.mSolid == null) {
+ return null;
+ }
+ return new FluidStack(this.mSolid, (int) aAmount);
+ }
+
+ public FluidStack getFluid(final long aAmount) {
+ if (this.mFluid == null) {
+ return null;
+ }
+ return new FluidStack(this.mFluid, (int) aAmount);
+ }
+
+ public FluidStack getGas(final long aAmount) {
+ if (this.mGas == null) {
+ return null;
+ }
+ return new FluidStack(this.mGas, (int) aAmount);
+ }
+
+ public FluidStack getPlasma(final long aAmount) {
+ if (this.mPlasma == null) {
+ return null;
+ }
+ return new FluidStack(this.mPlasma, (int) aAmount);
+ }
+
+ public FluidStack getMolten(final long aAmount) {
+ if (this.mStandardMoltenFluid == null) {
+ return null;
+ }
+ return new FluidStack(this.mStandardMoltenFluid, (int) aAmount);
+ }
+
+ @Override
+ public short[] getRGBA() {
+ return this.mRGBa;
+ }
+
+ public static final int VERSION = 508;
+ }
+}
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechToolDictNames.java b/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechToolDictNames.java
new file mode 100644
index 0000000000..0a116b1b9f
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechToolDictNames.java
@@ -0,0 +1,9 @@
+package gtPlusPlus.xmod.gregtech.api.enums;
+
+public enum GregtechToolDictNames {
+ craftingToolHandPump,
+ craftingToolAngleGrinder,
+ craftingToolElectricSnips,
+ craftingToolElectricLighter,
+ craftingToolElectricButcherKnife;
+}