aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/loaders/oreprocessing
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/loaders/oreprocessing')
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingAll.java24
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingArrows.java135
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingBeans.java35
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingBlock.java187
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingBolt.java44
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingCell.java441
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingCircuit.java44
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingCompressed.java25
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingCrafting.java464
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingCrate.java132
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingCrop.java154
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingCrushedOre.java107
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingCrystallized.java49
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingDirty.java136
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingDust.java630
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingDye.java91
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingFineWire.java33
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingFoil.java45
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingFood.java107
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingGear.java109
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingGem.java612
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingIngot.java296
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingItem.java45
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingLens.java96
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingLog.java384
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingNugget.java89
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingOre.java245
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingOrePoor.java72
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingOreSmelting.java194
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingPipe.java141
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingPlank.java137
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingPlate.java604
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingPure.java50
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingRawOre.java219
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingRecycling.java45
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingRotor.java97
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingRound.java52
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingSand.java36
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingSaplings.java50
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingScrew.java46
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingShaping.java620
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingSlab.java36
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingStick.java141
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingStickLong.java120
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingStone.java348
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingStoneCobble.java30
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingStoneVarious.java25
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingToolHead.java1273
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingToolOther.java137
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingTransforming.java176
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingWax.java31
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingWire.java506
52 files changed, 9945 insertions, 0 deletions
diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingAll.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingAll.java
new file mode 100644
index 0000000000..2f390b25e8
--- /dev/null
+++ b/src/main/java/gregtech/loaders/oreprocessing/ProcessingAll.java
@@ -0,0 +1,24 @@
+package gregtech.loaders.oreprocessing;
+
+import net.minecraft.item.ItemStack;
+
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.OrePrefixes;
+
+public class ProcessingAll implements gregtech.api.interfaces.IOreRecipeRegistrator { // TODO ACTUALLY COMPARE ALL THE
+ // PROCESSING CLASSES
+
+ public ProcessingAll() {
+ for (OrePrefixes tPrefix : OrePrefixes.values()) tPrefix.add(this);
+ }
+
+ @Override
+ public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName,
+ ItemStack aStack) {
+ if (((aStack.getItem() instanceof net.minecraft.item.ItemBlock))
+ && (aPrefix.mDefaultStackSize < aStack.getItem()
+ .getItemStackLimit(aStack)))
+ aStack.getItem()
+ .setMaxStackSize(aPrefix.mDefaultStackSize);
+ }
+}
diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingArrows.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingArrows.java
new file mode 100644
index 0000000000..11d1b1e1b8
--- /dev/null
+++ b/src/main/java/gregtech/loaders/oreprocessing/ProcessingArrows.java
@@ -0,0 +1,135 @@
+package gregtech.loaders.oreprocessing;
+
+import static gregtech.api.recipe.RecipeMaps.chemicalBathRecipes;
+import static gregtech.api.util.GT_RecipeBuilder.SECONDS;
+
+import net.minecraft.enchantment.Enchantment;
+import net.minecraft.enchantment.EnchantmentHelper;
+import net.minecraft.item.ItemStack;
+
+import gregtech.api.enums.GT_Values;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.OreDictNames;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.enums.SubTag;
+import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.api.util.GT_Utility;
+import gregtech.common.GT_Proxy;
+
+public class ProcessingArrows implements gregtech.api.interfaces.IOreRecipeRegistrator {
+
+ public ProcessingArrows() {
+ OrePrefixes.arrowGtWood.add(this);
+ OrePrefixes.arrowGtPlastic.add(this);
+ }
+
+ @Override
+ public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName,
+ ItemStack aStack) {
+ ItemStack tOutput = GT_Utility.copyAmount(1, aStack);
+ GT_Utility.updateItemStack(tOutput);
+ GT_Utility.ItemNBT.addEnchantment(
+ tOutput,
+ Enchantment.smite,
+ EnchantmentHelper.getEnchantmentLevel(Enchantment.smite.effectId, tOutput) + 3);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(GT_Utility.copyAmount(1, aStack))
+ .itemOutputs(tOutput)
+ .fluidInputs(Materials.HolyWater.getFluid(25L))
+ .duration(5 * SECONDS)
+ .eut(2)
+ .addTo(chemicalBathRecipes);
+
+ tOutput = GT_Utility.copyAmount(1, aStack);
+ GT_Utility.updateItemStack(tOutput);
+ GT_Utility.ItemNBT.addEnchantment(
+ tOutput,
+ Enchantment.fireAspect,
+ EnchantmentHelper.getEnchantmentLevel(Enchantment.fireAspect.effectId, tOutput) + 3);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(GT_Utility.copyAmount(1, aStack))
+ .itemOutputs(tOutput)
+ .fluidInputs(Materials.FierySteel.getFluid(25L))
+ .duration(5 * SECONDS)
+ .eut(2)
+ .addTo(chemicalBathRecipes);
+
+ tOutput = GT_Utility.copyAmount(1, aStack);
+ GT_Utility.updateItemStack(tOutput);
+ GT_Utility.ItemNBT.addEnchantment(
+ tOutput,
+ Enchantment.fireAspect,
+ EnchantmentHelper.getEnchantmentLevel(Enchantment.fireAspect.effectId, tOutput) + 1);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(GT_Utility.copyAmount(1, aStack))
+ .itemOutputs(tOutput)
+ .fluidInputs(Materials.Blaze.getMolten(18L))
+ .duration(5 * SECONDS)
+ .eut(2)
+ .addTo(chemicalBathRecipes);
+
+ tOutput = GT_Utility.copyAmount(1, aStack);
+ GT_Utility.updateItemStack(tOutput);
+ GT_Utility.ItemNBT.addEnchantment(
+ tOutput,
+ Enchantment.knockback,
+ EnchantmentHelper.getEnchantmentLevel(Enchantment.knockback.effectId, tOutput) + 1);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(GT_Utility.copyAmount(1, aStack))
+ .itemOutputs(tOutput)
+ .fluidInputs(Materials.Rubber.getMolten(18L))
+ .duration(5 * SECONDS)
+ .eut(2)
+ .addTo(chemicalBathRecipes);
+
+ tOutput = GT_Utility.copyAmount(1, aStack);
+ GT_Utility.updateItemStack(tOutput);
+ GT_Utility.ItemNBT.addEnchantment(
+ tOutput,
+ gregtech.api.enchants.Enchantment_EnderDamage.INSTANCE,
+ EnchantmentHelper
+ .getEnchantmentLevel(gregtech.api.enchants.Enchantment_EnderDamage.INSTANCE.effectId, tOutput) + 1);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(GT_Utility.copyAmount(1, aStack))
+ .itemOutputs(tOutput)
+ .fluidInputs(Materials.Mercury.getFluid(25L))
+ .duration(5 * SECONDS)
+ .eut(2)
+ .addTo(chemicalBathRecipes);
+
+ if (!aMaterial.mUnificatable) {
+ return;
+ }
+ if (aMaterial.mMaterialInto != aMaterial) {
+ return;
+ }
+
+ if (aMaterial.contains(SubTag.NO_WORKING)) {
+ return;
+ }
+
+ switch (aPrefix) {
+ case arrowGtWood:
+ GT_ModHandler.addCraftingRecipe(
+ GT_OreDictUnificator.get(OrePrefixes.arrowGtWood, aMaterial, 1L),
+ GT_Proxy.tBits,
+ new Object[] { " A", " S ", "F ", 'S', OrePrefixes.stick.get(Materials.Wood), 'F',
+ OreDictNames.craftingFeather, 'A', OrePrefixes.toolHeadArrow.get(aMaterial) });
+ case arrowGtPlastic:
+ GT_ModHandler.addCraftingRecipe(
+ GT_OreDictUnificator.get(OrePrefixes.arrowGtPlastic, aMaterial, 1L),
+ GT_Proxy.tBits,
+ new Object[] { " A", " S ", "F ", 'S', OrePrefixes.stick.get(Materials.Plastic), 'F',
+ OreDictNames.craftingFeather, 'A', OrePrefixes.toolHeadArrow.get(aMaterial) });
+ default:
+ break;
+ }
+
+ }
+}
diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingBeans.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingBeans.java
new file mode 100644
index 0000000000..2fb200216e
--- /dev/null
+++ b/src/main/java/gregtech/loaders/oreprocessing/ProcessingBeans.java
@@ -0,0 +1,35 @@
+package gregtech.loaders.oreprocessing;
+
+import static gregtech.api.recipe.RecipeMaps.maceratorRecipes;
+import static gregtech.api.util.GT_RecipeBuilder.SECONDS;
+
+import net.minecraft.item.ItemStack;
+
+import gregtech.api.enums.GT_Values;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.api.util.GT_Utility;
+
+public class ProcessingBeans implements gregtech.api.interfaces.IOreRecipeRegistrator {
+
+ public ProcessingBeans() {
+ OrePrefixes.beans.add(this);
+ }
+
+ @Override
+ public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName,
+ ItemStack aStack) {
+
+ if (!aOreDictName.equals("beansCocoa")) {
+ return;
+ }
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(GT_Utility.copyAmount(1, aStack))
+ .itemOutputs(GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Cocoa, 1L))
+ .duration(20 * SECONDS)
+ .eut(2)
+ .addTo(maceratorRecipes);
+ }
+}
diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingBlock.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingBlock.java
new file mode 100644
index 0000000000..b9926b188b
--- /dev/null
+++ b/src/main/java/gregtech/loaders/oreprocessing/ProcessingBlock.java
@@ -0,0 +1,187 @@
+package gregtech.loaders.oreprocessing;
+
+import static gregtech.api.recipe.RecipeMaps.compressorRecipes;
+import static gregtech.api.recipe.RecipeMaps.cutterRecipes;
+import static gregtech.api.recipe.RecipeMaps.fluidSolidifierRecipes;
+import static gregtech.api.recipe.RecipeMaps.hammerRecipes;
+import static gregtech.api.util.GT_RecipeBuilder.SECONDS;
+import static gregtech.api.util.GT_RecipeBuilder.TICKS;
+import static gregtech.api.util.GT_Utility.calculateRecipeEU;
+
+import net.minecraft.item.ItemStack;
+
+import gregtech.api.enums.GT_Values;
+import gregtech.api.enums.ItemList;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.MaterialsBotania;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.enums.TierEU;
+import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.api.util.GT_Utility;
+
+public class ProcessingBlock implements gregtech.api.interfaces.IOreRecipeRegistrator {
+
+ public ProcessingBlock() {
+ OrePrefixes.block.add(this);
+ }
+
+ @Override
+ public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName,
+ ItemStack aStack) {
+
+ if (aMaterial == Materials.Ichorium) {
+ return;
+ }
+
+ if (aMaterial.getProcessingMaterialTierEU() < TierEU.IV
+ && GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 1L) != null) {
+
+ if (aMaterial == MaterialsBotania.Livingrock || aMaterial == MaterialsBotania.Livingwood
+ || aMaterial == MaterialsBotania.Dreamwood) {
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(GT_Utility.copyAmount(1, aStack), GT_Utility.getIntegratedCircuit(3))
+ .itemOutputs(GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 9L))
+ .fluidInputs(
+ Materials.Water.getFluid(
+ Math.max(
+ 4,
+ Math.min(1000, ((int) Math.max(aMaterial.getMass() * 10L, 1L)) * TICKS * 30 / 320))))
+ .duration(2 * ((int) Math.max(aMaterial.getMass() * 10L, 1L)) * TICKS)
+ .eut(TierEU.RECIPE_LV)
+ .addTo(cutterRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(GT_Utility.copyAmount(1, aStack), GT_Utility.getIntegratedCircuit(3))
+ .itemOutputs(GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 9L))
+ .fluidInputs(
+ GT_ModHandler.getDistilledWater(
+ Math.max(
+ 3,
+ Math.min(750, ((int) Math.max(aMaterial.getMass() * 10L, 1L)) * TICKS * 30 / 426))))
+ .duration(2 * ((int) Math.max(aMaterial.getMass() * 10L, 1L)) * TICKS)
+ .eut(TierEU.RECIPE_LV)
+ .addTo(cutterRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(GT_Utility.copyAmount(1, aStack), GT_Utility.getIntegratedCircuit(3))
+ .itemOutputs(GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 9L))
+ .fluidInputs(
+ Materials.Lubricant.getFluid(
+ Math.max(
+ 1,
+ Math.min(250, ((int) Math.max(aMaterial.getMass() * 10L, 1L)) * TICKS * 30 / 1280))))
+ .duration(((int) Math.max(aMaterial.getMass() * 10L, 1L)) * TICKS)
+ .eut(TierEU.RECIPE_LV)
+ .addTo(cutterRecipes);
+
+ }
+
+ else if (aMaterial != Materials.Clay && aMaterial != Materials.Basalt) {
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(GT_Utility.copyAmount(1, aStack))
+ .itemOutputs(GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 9L))
+ .fluidInputs(
+ Materials.Water.getFluid(
+ Math.max(
+ 4,
+ Math.min(1000, ((int) Math.max(aMaterial.getMass() * 10L, 1L)) * TICKS * 30 / 320))))
+ .duration(2 * ((int) Math.max(aMaterial.getMass() * 10L, 1L)) * TICKS)
+ .eut(TierEU.RECIPE_LV)
+ .addTo(cutterRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(GT_Utility.copyAmount(1, aStack))
+ .itemOutputs(GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 9L))
+ .fluidInputs(
+ GT_ModHandler.getDistilledWater(
+ Math.max(
+ 3,
+ Math.min(750, ((int) Math.max(aMaterial.getMass() * 10L, 1L)) * TICKS * 30 / 426))))
+ .duration(2 * ((int) Math.max(aMaterial.getMass() * 10L, 1L)) * TICKS)
+ .eut(TierEU.RECIPE_LV)
+ .addTo(cutterRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(GT_Utility.copyAmount(1, aStack))
+ .itemOutputs(GT_OreDictUnificator.get(OrePrefixes.plate, aMaterial, 9L))
+ .fluidInputs(
+ Materials.Lubricant.getFluid(
+ Math.max(
+ 1,
+ Math.min(250, ((int) Math.max(aMaterial.getMass() * 10L, 1L)) * TICKS * 30 / 1280))))
+ .duration(((int) Math.max(aMaterial.getMass() * 10L, 1L)) * TICKS)
+ .eut(TierEU.RECIPE_LV)
+ .addTo(cutterRecipes);
+ }
+ }
+
+ ItemStack tStack1 = GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial, 1L);
+ ItemStack tStack2 = GT_OreDictUnificator.get(OrePrefixes.gem, aMaterial, 1L);
+ ItemStack tStack3 = GT_OreDictUnificator.get(OrePrefixes.dust, aMaterial, 1L);
+
+ GT_ModHandler.removeRecipeDelayed(GT_Utility.copyAmount(1, aStack));
+
+ if (tStack1 != null) GT_ModHandler
+ .removeRecipeDelayed(tStack1, tStack1, tStack1, tStack1, tStack1, tStack1, tStack1, tStack1, tStack1);
+ if (tStack2 != null) GT_ModHandler
+ .removeRecipeDelayed(tStack2, tStack2, tStack2, tStack2, tStack2, tStack2, tStack2, tStack2, tStack2);
+ if (tStack3 != null) {
+ GT_ModHandler
+ .removeRecipeDelayed(tStack3, tStack3, tStack3, tStack3, tStack3, tStack3, tStack3, tStack3, tStack3);
+ }
+
+ if (aMaterial.mStandardMoltenFluid != null) {
+ if (!(aMaterial == Materials.AnnealedCopper || aMaterial == Materials.WroughtIron)) {
+ if (aMaterial.getProcessingMaterialTierEU() < TierEU.IV) {
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(ItemList.Shape_Mold_Block.get(0L))
+ .itemOutputs(GT_OreDictUnificator.get(OrePrefixes.block, aMaterial, 1L))
+ .fluidInputs(aMaterial.getMolten(1296L))
+ .duration(14 * SECONDS + 8 * TICKS)
+ .eut(8)
+ .addTo(fluidSolidifierRecipes);
+ }
+ }
+ }
+
+ if (tStack1 != null) tStack1.stackSize = 9;
+ if (tStack2 != null) tStack2.stackSize = 9;
+ if (tStack3 != null) tStack3.stackSize = 9;
+
+ if (tStack2 != null) {
+ GT_Values.RA.stdBuilder()
+ .itemInputs(aStack)
+ .itemOutputs(tStack2)
+ .duration(5 * SECONDS)
+ .eut(24)
+ .addTo(hammerRecipes);
+ }
+
+ if (tStack2 != null && aMaterial != Materials.NetherQuartz) {
+ if (tStack3 != null)
+ GT_ModHandler.addShapelessCraftingRecipe(tStack3, new Object[] { OrePrefixes.block.get(aMaterial) });
+ GT_ModHandler.addShapelessCraftingRecipe(tStack2, new Object[] { OrePrefixes.block.get(aMaterial) });
+ if (tStack1 != null)
+ GT_ModHandler.addShapelessCraftingRecipe(tStack1, new Object[] { OrePrefixes.block.get(aMaterial) });
+ }
+
+ if (!OrePrefixes.block.isIgnored(aMaterial) && tStack1 != null) {
+ // 9 ingots -> 1 block
+ GT_Values.RA.stdBuilder()
+ .itemInputs(GT_OreDictUnificator.get(OrePrefixes.ingot, aMaterial, 9L))
+ .itemOutputs(GT_OreDictUnificator.get(OrePrefixes.block, aMaterial, 1L))
+ .duration(15 * SECONDS)
+ .eut(calculateRecipeEU(aMaterial, 2))
+ .addTo(compressorRecipes);
+ }
+
+ switch (aMaterial.mName) {
+ case "Mercury" -> System.err.println(
+ "'blockQuickSilver'?, In which Ice Desert can you actually place this as a solid Block? On Pluto Greg :)");
+ }
+ }
+}
diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingBolt.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingBolt.java
new file mode 100644
index 0000000000..0d28c417a8
--- /dev/null
+++ b/src/main/java/gregtech/loaders/oreprocessing/ProcessingBolt.java
@@ -0,0 +1,44 @@
+package gregtech.loaders.oreprocessing;
+
+import net.minecraft.item.ItemStack;
+
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.enums.SubTag;
+import gregtech.api.enums.TierEU;
+import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_Utility;
+import gregtech.common.GT_Proxy;
+
+public class ProcessingBolt implements gregtech.api.interfaces.IOreRecipeRegistrator {
+
+ public ProcessingBolt() {
+ OrePrefixes.bolt.add(this);
+ }
+
+ @Override
+ public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName,
+ ItemStack aStack) {
+ if (aMaterial.getProcessingMaterialTierEU() >= TierEU.IV) {
+ return;
+ }
+
+ if (!aMaterial.mUnificatable) {
+ return;
+ }
+
+ if ((aMaterial.mMaterialInto != aMaterial)) {
+ return;
+ }
+
+ if (aMaterial.contains(SubTag.NO_WORKING)) {
+ return;
+ }
+
+ GT_ModHandler.addCraftingRecipe(
+ GT_Utility.copyAmount(2, aStack),
+ GT_Proxy.tBits,
+ new Object[] { "s ", " X", 'X', OrePrefixes.stick.get(aMaterial) });
+
+ }
+}
diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingCell.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingCell.java
new file mode 100644
index 0000000000..5a6bdfcf13
--- /dev/null
+++ b/src/main/java/gregtech/loaders/oreprocessing/ProcessingCell.java
@@ -0,0 +1,441 @@
+package gregtech.loaders.oreprocessing;
+