aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kubatech/loaders
diff options
context:
space:
mode:
authorRaven Szewczyk <git@eigenraven.me>2024-05-25 14:42:41 +0100
committerRaven Szewczyk <git@eigenraven.me>2024-05-25 14:42:41 +0100
commit8aa595f083b5c3e43246119fca5f4263f81e851b (patch)
tree157d2b528e4b4ea0321022ebfee398f559a9e121 /src/main/java/kubatech/loaders
parent14a97a5a177399cd8df7f246856c08fcda441afd (diff)
downloadGT5-Unofficial-8aa595f083b5c3e43246119fca5f4263f81e851b.tar.gz
GT5-Unofficial-8aa595f083b5c3e43246119fca5f4263f81e851b.tar.bz2
GT5-Unofficial-8aa595f083b5c3e43246119fca5f4263f81e851b.zip
Migrate kubatech source code
Diffstat (limited to 'src/main/java/kubatech/loaders')
-rw-r--r--src/main/java/kubatech/loaders/BlockLoader.java51
-rw-r--r--src/main/java/kubatech/loaders/DEFCRecipes.java329
-rw-r--r--src/main/java/kubatech/loaders/ItemLoader.java149
-rw-r--r--src/main/java/kubatech/loaders/MTLoader.java44
-rw-r--r--src/main/java/kubatech/loaders/MobHandlerLoader.java306
-rw-r--r--src/main/java/kubatech/loaders/RecipeLoader.java363
-rw-r--r--src/main/java/kubatech/loaders/TCLoader.java151
-rw-r--r--src/main/java/kubatech/loaders/block/defc/DEFCCasingBlock.java63
-rw-r--r--src/main/java/kubatech/loaders/block/defc/DEFCCasingItemBlock.java36
-rw-r--r--src/main/java/kubatech/loaders/block/kubablock/BlockProxy.java111
-rw-r--r--src/main/java/kubatech/loaders/block/kubablock/IProxyTileEntityProvider.java29
-rw-r--r--src/main/java/kubatech/loaders/block/kubablock/KubaBlock.java198
-rw-r--r--src/main/java/kubatech/loaders/block/kubablock/KubaItemBlock.java73
-rw-r--r--src/main/java/kubatech/loaders/block/kubablock/blocks/TeaAcceptor.java64
-rw-r--r--src/main/java/kubatech/loaders/block/kubablock/blocks/TeaStorage.java66
-rw-r--r--src/main/java/kubatech/loaders/item/IItemProxyGUI.java31
-rw-r--r--src/main/java/kubatech/loaders/item/ItemProxy.java122
-rw-r--r--src/main/java/kubatech/loaders/item/KubaItems.java144
-rw-r--r--src/main/java/kubatech/loaders/item/items/Tea.java72
-rw-r--r--src/main/java/kubatech/loaders/item/items/TeaCollection.java209
-rw-r--r--src/main/java/kubatech/loaders/item/items/TeaIngredient.java41
-rw-r--r--src/main/java/kubatech/loaders/item/items/TeaUltimate.java216
22 files changed, 2868 insertions, 0 deletions
diff --git a/src/main/java/kubatech/loaders/BlockLoader.java b/src/main/java/kubatech/loaders/BlockLoader.java
new file mode 100644
index 0000000000..fcb077ff15
--- /dev/null
+++ b/src/main/java/kubatech/loaders/BlockLoader.java
@@ -0,0 +1,51 @@
+/*
+ * spotless:off
+ * KubaTech - Gregtech Addon
+ * Copyright (C) 2022 - 2024 kuba6000
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library. If not, see <https://www.gnu.org/licenses/>.
+ * spotless:on
+ */
+
+package kubatech.loaders;
+
+import net.minecraft.block.material.Material;
+import net.minecraft.item.ItemBlock;
+
+import cpw.mods.fml.common.registry.GameRegistry;
+import kubatech.api.enums.ItemList;
+import kubatech.loaders.block.defc.DEFCCasingBlock;
+import kubatech.loaders.block.kubablock.KubaBlock;
+import kubatech.loaders.block.kubablock.KubaItemBlock;
+import kubatech.loaders.block.kubablock.blocks.TeaAcceptor;
+import kubatech.loaders.block.kubablock.blocks.TeaStorage;
+import kubatech.tileentity.TeaAcceptorTile;
+import kubatech.tileentity.TeaStorageTile;
+
+public class BlockLoader {
+
+ public static final KubaBlock kubaBlock = new KubaBlock(Material.anvil);
+ public static final ItemBlock kubaItemBlock = new KubaItemBlock(kubaBlock);
+ public static final DEFCCasingBlock defcCasingBlock = new DEFCCasingBlock();
+
+ public static void registerBlocks() {
+ GameRegistry.registerTileEntity(TeaAcceptorTile.class, "KT_TeaAcceptor");
+ GameRegistry.registerTileEntity(TeaStorageTile.class, "KT_TeaStorage");
+ GameRegistry.registerBlock(kubaBlock, null, "kubablocks");
+ GameRegistry.registerItem(kubaItemBlock, "kubablocks");
+
+ ItemList.TeaAcceptor.set(kubaBlock.registerProxyBlock(new TeaAcceptor()));
+ ItemList.TeaStorage.set(kubaBlock.registerProxyBlock(new TeaStorage()));
+ }
+}
diff --git a/src/main/java/kubatech/loaders/DEFCRecipes.java b/src/main/java/kubatech/loaders/DEFCRecipes.java
new file mode 100644
index 0000000000..f7805ec84f
--- /dev/null
+++ b/src/main/java/kubatech/loaders/DEFCRecipes.java
@@ -0,0 +1,329 @@
+package kubatech.loaders;
+
+import static gregtech.api.recipe.RecipeMaps.assemblerRecipes;
+import static gregtech.api.recipe.RecipeMaps.mixerRecipes;
+
+import java.util.Arrays;
+
+import net.minecraft.init.Blocks;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fluids.FluidRegistry;
+import net.minecraftforge.fluids.FluidStack;
+
+import com.gtnewhorizons.modularui.api.drawable.UITexture;
+
+import cpw.mods.fml.common.Loader;
+import cpw.mods.fml.common.registry.GameRegistry;
+import gregtech.api.enums.GT_Values;
+import gregtech.api.enums.ItemList;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.MaterialsUEVplus;
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.recipe.RecipeMap;
+import gregtech.api.recipe.RecipeMapBackend;
+import gregtech.api.recipe.RecipeMapBuilder;
+import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.api.util.GT_Recipe;
+import gregtech.api.util.GT_Utility;
+import gregtech.nei.formatter.SimpleSpecialValueFormatter;
+import gtPlusPlus.xmod.forestry.bees.handler.GTPP_CombType;
+import kubatech.Tags;
+import kubatech.api.LoaderReference;
+
+public class DEFCRecipes {
+
+ public static final RecipeMap<RecipeMapBackend> fusionCraftingRecipes = RecipeMapBuilder
+ .of("kubatech.defusioncrafter")
+ .maxIO(9, 1, 1, 1)
+ .minInputs(1, 0)
+ .neiSpecialInfoFormatter(new SimpleSpecialValueFormatter("kubatech.defusioncrafter.tier"))
+ .slotOverlays(
+ (index, isFluid, isOutput,
+ isSpecial) -> !isFluid && !isOutput ? UITexture.fullImage(Tags.MODID, "gui/slot/fusion_crafter") : null)
+ .build();
+
+ public static void addRecipes() {
+
+ // Dragonblood recipe for magics haters
+ if (LoaderReference.GTPlusPlus) {
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ new ItemStack(Blocks.dragon_egg, 1),
+ GT_OreDictUnificator.get(OrePrefixes.dust, Materials.DraconiumAwakened, 64L),
+ GT_OreDictUnificator.get(OrePrefixes.dust, Materials.DraconiumAwakened, 64L))
+ .fluidInputs(Materials.Radon.getPlasma(144))
+ .itemOutputs(GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Ash, 8L))
+ .fluidOutputs(new FluidStack(FluidRegistry.getFluid("molten.dragonblood"), 288))
+ .eut(1_966_080)
+ .duration(14_000)
+ .addTo(mixerRecipes);
+ }
+
+ // Casings
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.NaquadahAlloy, 6L),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.NaquadahAlloy, 6L))
+ .fluidInputs(Materials.Void.getMolten(1152L))
+ .itemOutputs(kubatech.api.enums.ItemList.DEFCCasingBase.get(1))
+ .eut(491_520)
+ .duration(24000)
+ .addTo(assemblerRecipes);
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_ModHandler.getModItem("dreamcraft", "tile.BloodyIchorium", 1, 0),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.Osmiridium, 6L))
+ .fluidInputs(Materials.Void.getMolten(1152L))
+ .itemOutputs(kubatech.api.enums.ItemList.DEFCCasingT1.get(1))
+ .eut(491_520)
+ .duration(24000)
+ .addTo(assemblerRecipes);
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ kubatech.api.enums.ItemList.DEFCCasingT1.get(1),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.Draconium, 6L),
+ GT_ModHandler.getModItem("DraconicEvolution", "draconicCore", 1, 0))
+ .fluidInputs(Materials.Void.getMolten(2304L))
+ .itemOutputs(kubatech.api.enums.ItemList.DEFCCasingT2.get(1))
+ .eut(491_520)
+ .duration(24000)
+ .addTo(assemblerRecipes);
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ kubatech.api.enums.ItemList.DEFCCasingT2.get(1),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.CosmicNeutronium, 6L),
+ GT_ModHandler.getModItem("DraconicEvolution", "wyvernCore", 2, 0))
+ .fluidInputs(Materials.Void.getMolten(4608L))
+ .itemOutputs(kubatech.api.enums.ItemList.DEFCCasingT3.get(1))
+ .eut(1_996_080)
+ .duration(12000)
+ .addTo(assemblerRecipes);
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ kubatech.api.enums.ItemList.DEFCCasingT3.get(1),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.DraconiumAwakened, 6L),
+ GT_ModHandler.getModItem("DraconicEvolution", "awakenedCore", 3, 0))
+ .fluidInputs(Materials.Void.getMolten(9216L))
+ .itemOutputs(kubatech.api.enums.ItemList.DEFCCasingT4.get(1))
+ .eut(7_864_320)
+ .duration(12000)
+ .addTo(assemblerRecipes);
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ kubatech.api.enums.ItemList.DEFCCasingT4.get(1),
+ GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.Infinity, 6L),
+ GT_ModHandler.getModItem("DraconicEvolution", "chaoticCore", 4, 0))
+ .fluidInputs(Materials.Void.getMolten(18432L))
+ .itemOutputs(kubatech.api.enums.ItemList.DEFCCasingT5.get(1))
+ .eut(31_457_280)
+ .duration(12000)
+ .addTo(assemblerRecipes);
+
+ fusionRecipes();
+ conversionRecipes();
+ }
+
+ private static final Item EMTItems = GameRegistry.findItem("EMT", "EMTItems");
+
+ private static void addOldHiddenRecipe(GT_Recipe recipe) {
+ if (!LoaderReference.ElectroMagicTools) return;
+ recipe = recipe.copy();
+ recipe.mInputs = Arrays.stream(recipe.mInputs)
+ .map(i -> {
+ if (i != null && i.getItem() == ItemLoader.kubaitems) {
+ return new ItemStack(
+ EMTItems,
+ 0,
+ 16 + (i.getItemDamage() - kubatech.api.enums.ItemList.DEFCDraconicSchematic.get(1)
+ .getItemDamage()));
+ } else return i;
+ })
+ .toArray(ItemStack[]::new);
+ recipe.mHidden = true;
+ fusionCraftingRecipes.add(recipe);
+ }
+
+ private static void conversionRecipes() {
+ if (!LoaderReference.ElectroMagicTools) return;
+ GameRegistry.addShapelessRecipe(
+ kubatech.api.enums.ItemList.DEFCDraconicSchematic.get(1),
+ new ItemStack(EMTItems, 1, 16));
+ GameRegistry
+ .addShapelessRecipe(kubatech.api.enums.ItemList.DEFCWyvernSchematic.get(1), new ItemStack(EMTItems, 1, 17));
+ GameRegistry.addShapelessRecipe(
+ kubatech.api.enums.ItemList.DEFCAwakenedSchematic.get(1),
+ new ItemStack(EMTItems, 1, 18));
+ GameRegistry.addShapelessRecipe(
+ kubatech.api.enums.ItemList.DEFCChaoticSchematic.get(1),
+ new ItemStack(EMTItems, 1, 19));
+ }
+
+ private static void fusionRecipes() {
+ // CORES
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Osmiridium, 4),
+ GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Ichorium, 1),
+ ItemList.QuantumEye.get(1L),
+ kubatech.api.enums.ItemList.DEFCDraconicSchematic.get(0L))
+ .fluidInputs(Materials.Sunnarium.getMolten(1440))
+ .itemOutputs(GT_ModHandler.getModItem("DraconicEvolution", "draconicCore", 1, 0))
+ .eut(500_000)
+ .duration(400)
+ .specialValue(1)
+ .addTo(fusionCraftingRecipes)
+ .forEach(DEFCRecipes::addOldHiddenRecipe);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Draconium, 8),
+ GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Neutronium, 4),
+ GT_ModHandler.getModItem("DraconicEvolution", "draconicCore", 4, 0),
+ ItemList.QuantumStar.get(1L),
+ kubatech.api.enums.ItemList.DEFCWyvernSchematic.get(0L))
+ .fluidInputs(Materials.Neutronium.getMolten(1440))
+ .itemOutputs(GT_ModHandler.getModItem("DraconicEvolution", "wyvernCore", 1, 0))
+ .eut(2_000_000)
+ .duration(800)
+ .specialValue(2)
+ .addTo(fusionCraftingRecipes)
+ .forEach(DEFCRecipes::addOldHiddenRecipe);
+
+ if (Loader.isModLoaded("supersolarpanel")) {
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_OreDictUnificator.get(OrePrefixes.plate, Materials.DraconiumAwakened, 12),
+ GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Draconium, 4),
+ GT_ModHandler.getModItem("DraconicEvolution", "wyvernCore", 4, 0),
+ GT_ModHandler.getModItem("supersolarpanel", "enderquantumcomponent", 1, 0),
+ kubatech.api.enums.ItemList.DEFCAwakenedSchematic.get(0L))
+ .fluidInputs(Materials.Infinity.getMolten(1440))
+ .itemOutputs(GT_ModHandler.getModItem("DraconicEvolution", "awakenedCore", 1, 0))
+ .eut(8_000_000)
+ .duration(1600)
+ .specialValue(3)
+ .addTo(fusionCraftingRecipes)
+ .forEach(DEFCRecipes::addOldHiddenRecipe);
+ } else {
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_OreDictUnificator.get(OrePrefixes.plate, Materials.DraconiumAwakened, 12),
+ GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Draconium, 4),
+ GT_ModHandler.getModItem("DraconicEvolution", "wyvernCore", 4, 0),
+ GT_ModHandler.getModItem("dreamcraft", "item.ManyullynCrystal", 1, 0),
+ kubatech.api.enums.ItemList.DEFCAwakenedSchematic.get(0L))
+ .fluidInputs(Materials.Infinity.getMolten(1440))
+ .itemOutputs(GT_ModHandler.getModItem("DraconicEvolution", "awakenedCore", 1, 0))
+ .eut(8_000_000)
+ .duration(1600)
+ .specialValue(3)
+ .addTo(fusionCraftingRecipes)
+ .forEach(DEFCRecipes::addOldHiddenRecipe);
+ }
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_OreDictUnificator.get(OrePrefixes.plate, Materials.DraconiumAwakened, 16),
+ GT_OreDictUnificator.get(OrePrefixes.plate, Materials.BlackPlutonium, 4),
+ GT_ModHandler.getModItem("DraconicEvolution", "awakenedCore", 4, 0),
+ GT_ModHandler.getModItem("DraconicEvolution", "chaosFragment", 2, 2),
+ kubatech.api.enums.ItemList.DEFCChaoticSchematic.get(0L))
+ .fluidInputs(MaterialsUEVplus.SpaceTime.getMolten(1440))
+ .itemOutputs(GT_ModHandler.getModItem("DraconicEvolution", "chaoticCore", 1, 0))
+ .eut(24_000_000)
+ .duration(3200)
+ .specialValue(4)
+ .addTo(fusionCraftingRecipes)
+ .forEach(DEFCRecipes::addOldHiddenRecipe);
+
+ // ENERGY CORES
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Draconium, 8),
+ GT_OreDictUnificator.get(OrePrefixes.plate, Materials.StellarAlloy, 4),
+ GT_ModHandler.getModItem("AdvancedSolarPanel", "asp_crafting_items", 4, 1),
+ GT_ModHandler.getModItem("DraconicEvolution", "draconicCore", 1, 0),
+ kubatech.api.enums.ItemList.DEFCWyvernSchematic.get(0L))
+ .itemOutputs(GT_ModHandler.getModItem("DraconicEvolution", "draconiumEnergyCore", 1, 0))
+ .eut(500_000)
+ .duration(1000)
+ .specialValue(2)
+ .addTo(fusionCraftingRecipes)
+ .forEach(DEFCRecipes::addOldHiddenRecipe);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_OreDictUnificator.get(OrePrefixes.plate, Materials.DraconiumAwakened, 8),
+ GT_ModHandler.getModItem("DraconicEvolution", "draconiumEnergyCore", 4, 0),
+ GT_ModHandler.getModItem("AdvancedSolarPanel", "asp_crafting_items", 4, 4),
+ GT_ModHandler.getModItem("DraconicEvolution", "wyvernCore", 1, 0),
+ kubatech.api.enums.ItemList.DEFCAwakenedSchematic.get(0L))
+ .itemOutputs(GT_ModHandler.getModItem("DraconicEvolution", "draconiumEnergyCore", 1, 1))
+ .eut(2_000_000)
+ .duration(2000)
+ .specialValue(3)
+ .addTo(fusionCraftingRecipes)
+ .forEach(DEFCRecipes::addOldHiddenRecipe);
+
+ // Dragon Blood
+ if (LoaderReference.GTPlusPlus) {
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ new ItemStack(Blocks.dragon_egg, 0),
+ GT_OreDictUnificator.get(OrePrefixes.dust, Materials.DraconiumAwakened, 64),
+ GT_Utility.getIntegratedCircuit(1))
+ .fluidInputs(Materials.Radon.getPlasma(144))
+ .fluidOutputs(new FluidStack(FluidRegistry.getFluid("molten.dragonblood"), 288))
+ .eut(1_966_080)
+ .duration(4200)
+ .specialValue(3)
+ .noOptimize()
+ .addTo(fusionCraftingRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_ModHandler.getModItem("witchery", "infinityegg", 0),
+ GT_OreDictUnificator.get(OrePrefixes.dust, Materials.DraconiumAwakened, 64),
+ GT_Utility.getIntegratedCircuit(1))
+ .fluidInputs(Materials.Radon.getPlasma(72))
+ .fluidOutputs(new FluidStack(FluidRegistry.getFluid("molten.dragonblood"), 432))
+ .eut(1_966_080)
+ .duration(3600)
+ .specialValue(3)
+ .noOptimize()
+ .addTo(fusionCraftingRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ new ItemStack(Blocks.dragon_egg, 0),
+ GT_OreDictUnificator.get(OrePrefixes.dust, Materials.DraconiumAwakened, 64),
+ GTPP_CombType.DRAGONBLOOD.getStackForType(1))
+ .fluidInputs(Materials.Radon.getPlasma(216))
+ .fluidOutputs(new FluidStack(FluidRegistry.getFluid("molten.dragonblood"), 432))
+ .eut(1_966_080)
+ .duration(2800)
+ .specialValue(3)
+ .noOptimize()
+ .addTo(fusionCraftingRecipes);
+
+ GT_Values.RA.stdBuilder()
+ .itemInputs(
+ GT_ModHandler.getModItem("witchery", "infinityegg", 0),
+ GT_OreDictUnificator.get(OrePrefixes.dust, Materials.DraconiumAwakened, 64),
+ GTPP_CombType.DRAGONBLOOD.getStackForType(1))
+ .fluidInputs(Materials.Radon.getPlasma(108))
+ .fluidOutputs(new FluidStack(FluidRegistry.getFluid("molten.dragonblood"), 648))
+ .eut(1_966_080)
+ .duration(2400)
+ .specialValue(3)
+ .noOptimize()
+ .addTo(fusionCraftingRecipes);
+ }
+ }
+}
diff --git a/src/main/java/kubatech/loaders/ItemLoader.java b/src/main/java/kubatech/loaders/ItemLoader.java
new file mode 100644
index 0000000000..d8218ea873
--- /dev/null
+++ b/src/main/java/kubatech/loaders/ItemLoader.java
@@ -0,0 +1,149 @@
+/*
+ * spotless:off
+ * KubaTech - Gregtech Addon
+ * Copyright (C) 2022 - 2024 kuba6000
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library. If not, see <https://www.gnu.org/licenses/>.
+ * spotless:on
+ */
+
+package kubatech.loaders;
+
+import static kubatech.api.enums.ItemList.Beeeeee;
+import static kubatech.api.enums.ItemList.BlackTea;
+import static kubatech.api.enums.ItemList.BlackTeaLeaf;
+import static kubatech.api.enums.ItemList.BruisedTeaLeaf;
+import static kubatech.api.enums.ItemList.DEFCAwakenedSchematic;
+import static kubatech.api.enums.ItemList.DEFCChaoticSchematic;
+import static kubatech.api.enums.ItemList.DEFCDraconicSchematic;
+import static kubatech.api.enums.ItemList.DEFCWyvernSchematic;
+import static kubatech.api.enums.ItemList.EarlGrayTea;
+import static kubatech.api.enums.ItemList.FermentedTeaLeaf;
+import static kubatech.api.enums.ItemList.GreenTea;
+import static kubatech.api.enums.ItemList.GreenTeaLeaf;
+import static kubatech.api.enums.ItemList.LegendaryBlackTea;
+import static kubatech.api.enums.ItemList.LegendaryButterflyTea;
+import static kubatech.api.enums.ItemList.LegendaryEarlGrayTea;
+import static kubatech.api.enums.ItemList.LegendaryGreenTea;
+import static kubatech.api.enums.ItemList.LegendaryLemonTea;
+import static kubatech.api.enums.ItemList.LegendaryMilkTea;
+import static kubatech.api.enums.ItemList.LegendaryOolongTea;
+import static kubatech.api.enums.ItemList.LegendaryPeppermintTea;
+import static kubatech.api.enums.ItemList.LegendaryPuerhTea;
+import static kubatech.api.enums.ItemList.LegendaryRedTea;
+import static kubatech.api.enums.ItemList.LegendaryUltimateTea;
+import static kubatech.api.enums.ItemList.LegendaryWhiteTea;
+import static kubatech.api.enums.ItemList.LegendaryYellowTea;
+import static kubatech.api.enums.ItemList.LemonTea;
+import static kubatech.api.enums.ItemList.MilkTea;
+import static kubatech.api.enums.ItemList.OolongTea;
+import static kubatech.api.enums.ItemList.OolongTeaLeaf;
+import static kubatech.api.enums.ItemList.OxidizedTeaLeaf;
+import static kubatech.api.enums.ItemList.PartiallyOxidizedTeaLeaf;
+import static kubatech.api.enums.ItemList.PeppermintTea;
+import static kubatech.api.enums.ItemList.PuerhTea;
+import static kubatech.api.enums.ItemList.PuerhTeaLeaf;
+import static kubatech.api.enums.ItemList.RolledTeaLeaf;
+import static kubatech.api.enums.ItemList.SteamedTeaLeaf;
+import static kubatech.api.enums.ItemList.TeaAcceptorResearchNote;
+import static kubatech.api.enums.ItemList.TeaLeafDehydrated;
+import static kubatech.api.enums.ItemList.WhiteTea;
+import static kubatech.api.enums.ItemList.WhiteTeaLeaf;
+import static kubatech.api.enums.ItemList.YellowTea;
+import static kubatech.api.enums.ItemList.YellowTeaLeaf;
+
+import java.util.List;
+
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StatCollector;
+
+import cpw.mods.fml.common.registry.GameRegistry;
+import kubatech.loaders.item.ItemProxy;
+import kubatech.loaders.item.KubaItems;
+import kubatech.loaders.item.items.Tea;
+import kubatech.loaders.item.items.TeaCollection;
+import kubatech.loaders.item.items.TeaIngredient;
+import kubatech.loaders.item.items.TeaUltimate;
+
+public class ItemLoader {
+
+ public static final KubaItems kubaitems = new KubaItems();
+
+ public static void registerItems() {
+ GameRegistry.registerItem(kubaitems, "kubaitems");
+
+ // DON'T EVER CHANGE ORDER IN HERE, ADD NEW ITEMS ON BOTTOM
+
+ LegendaryBlackTea.set(kubaitems.registerProxyItem(new TeaCollection("black_tea")));
+ LegendaryButterflyTea.set(kubaitems.registerProxyItem(new TeaCollection("butterfly_tea")));
+ LegendaryEarlGrayTea.set(kubaitems.registerProxyItem(new TeaCollection("earl_gray_tea")));
+ LegendaryGreenTea.set(kubaitems.registerProxyItem(new TeaCollection("green_tea")));
+ LegendaryLemonTea.set(kubaitems.registerProxyItem(new TeaCollection("lemon_tea")));
+ LegendaryMilkTea.set(kubaitems.registerProxyItem(new TeaCollection("milk_tea")));
+ LegendaryOolongTea.set(kubaitems.registerProxyItem(new TeaCollection("oolong_tea")));
+ LegendaryPeppermintTea.set(kubaitems.registerProxyItem(new TeaCollection("peppermint_tea")));
+ LegendaryPuerhTea.set(kubaitems.registerProxyItem(new TeaCollection("pu-erh_tea")));
+ LegendaryRedTea.set(kubaitems.registerProxyItem(new TeaCollection("red_tea")));
+ LegendaryWhiteTea.set(kubaitems.registerProxyItem(new TeaCollection("white_tea")));
+ LegendaryYellowTea.set(kubaitems.registerProxyItem(new TeaCollection("yellow_tea")));
+ LegendaryUltimateTea.set(kubaitems.registerProxyItem(new TeaUltimate()));
+
+ BlackTea.set(kubaitems.registerProxyItem(new Tea("black_tea", 4, 0.3f)));
+ EarlGrayTea.set(kubaitems.registerProxyItem(new Tea("earl_gray_tea", 4, 0.3f)));
+ GreenTea.set(kubaitems.registerProxyItem(new Tea("green_tea", 4, 0.3f)));
+ LemonTea.set(kubaitems.registerProxyItem(new Tea("lemon_tea", 4, 0.3f)));
+ MilkTea.set(kubaitems.registerProxyItem(new Tea("milk_tea", 4, 0.3f)));
+ OolongTea.set(kubaitems.registerProxyItem(new Tea("oolong_tea", 4, 0.3f)));
+ PeppermintTea.set(kubaitems.registerProxyItem(new Tea("peppermint_tea", 4, 0.3f)));
+ PuerhTea.set(kubaitems.registerProxyItem(new Tea("pu-erh_tea", 4, 0.3f)));
+ WhiteTea.set(kubaitems.registerProxyItem(new Tea("white_tea", 4, 0.3f)));
+ YellowTea.set(kubaitems.registerProxyItem(new Tea("yellow_tea", 4, 0.3f)));
+
+ BlackTeaLeaf.set(kubaitems.registerProxyItem(new TeaIngredient("black_tea_leaf")));
+ GreenTeaLeaf.set(kubaitems.registerProxyItem(new TeaIngredient("green_tea_leaf")));
+ OolongTeaLeaf.set(kubaitems.registerProxyItem(new TeaIngredient("oolong_tea_leaf")));
+ PuerhTeaLeaf.set(kubaitems.registerProxyItem(new TeaIngredient("pu-erh_tea_leaf")));
+ WhiteTeaLeaf.set(kubaitems.registerProxyItem(new TeaIngredient("white_tea_leaf")));
+ YellowTeaLeaf.set(kubaitems.registerProxyItem(new TeaIngredient("yellow_tea_leaf")));
+
+ TeaLeafDehydrated.set(kubaitems.registerProxyItem(new TeaIngredient("tea_leaf_dehydrated")));
+ SteamedTeaLeaf.set(kubaitems.registerProxyItem(new TeaIngredient("steamed_tea_leaf")));
+ RolledTeaLeaf.set(kubaitems.registerProxyItem(new TeaIngredient("rolled_tea_leaf")));
+ OxidizedTeaLeaf.set(kubaitems.registerProxyItem(new TeaIngredient("oxidized_tea_leaf")));
+ FermentedTeaLeaf.set(kubaitems.registerProxyItem(new TeaIngredient("fermented_tea_leaf")));
+ BruisedTeaLeaf.set(kubaitems.registerProxyItem(new TeaIngredient("bruised_tea_leaf")));
+ PartiallyOxidizedTeaLeaf.set(kubaitems.registerProxyItem(new TeaIngredient("partially_oxidized_tea_leaf")));
+
+ TeaAcceptorResearchNote
+ .set(kubaitems.registerProxyItem(new ItemProxy("tea_acceptor_research_note", "research_note")));
+ Beeeeee.set(kubaitems.registerProxyItem(new ItemProxy("beeeeee")));
+
+ // DEFC stuff
+ DEFCDraconicSchematic.set(kubaitems.registerProxyItem(new ItemProxy("defc_schematic_t1") {
+
+ @Override
+ public void addInformation(ItemStack stack, EntityPlayer entity, List<String> tooltipList,
+ boolean showDebugInfo) {
+ tooltipList
+ .add(EnumChatFormatting.GOLD + StatCollector.translateToLocal("kubaitem.defc_schematic_t1.tip"));
+ }
+ }));
+ DEFCWyvernSchematic.set(kubaitems.registerProxyItem(new ItemProxy("defc_schematic_t2")));
+ DEFCAwakenedSchematic.set(kubaitems.registerProxyItem(new ItemProxy("defc_schematic_t3")));
+ DEFCChaoticSchematic.set(kubaitems.registerProxyItem(new ItemProxy("defc_schematic_t4")));
+
+ }
+}
diff --git a/src/main/java/kubatech/loaders/MTLoader.java b/src/main/java/kubatech/loaders/MTLoader.java
new file mode 100644
index 0000000000..dbc5bb43fe
--- /dev/null
+++ b/src/main/java/kubatech/loaders/MTLoader.java
@@ -0,0 +1,44 @@
+/*
+ * spotless:off
+ * KubaTech - Gregtech Addon
+ * Copyright (C) 2022 - 2024 kuba6000
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library. If not, see <https://www.gnu.org/licenses/>.
+ * spotless:on
+ */
+
+package kubatech.loaders;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import kubatech.Tags;
+import minetweaker.MineTweakerImplementationAPI;
+
+public class MTLoader {
+
+ private static final Logger LOG = LogManager.getLogger(Tags.MODID + "[MT Loader]");
+ public static MTLoader instance = null;
+
+ public static void init() {
+ if (instance == null) {
+ instance = new MTLoader();
+ MineTweakerImplementationAPI.onPostReload(instance::MTOnPostReload);
+ }
+ }
+
+ public void MTOnPostReload(MineTweakerImplementationAPI.ReloadEvent reloadEvent) {
+ LOG.info("MT Recipes Loaded!");
+ }
+}
diff --git a/src/main/java/kubatech/loaders/MobHandlerLoader.java b/src/main/java/kubatech/loaders/MobHandlerLoader.java
new file mode 100644
index 0000000000..e7e4ff1736
--- /dev/null
+++ b/src/main/java/kubatech/loaders/MobHandlerLoader.java
@@ -0,0 +1,306 @@
+/*
+ * spotless:off
+ * KubaTech - Gregtech Addon
+ * Copyright (C) 2022 - 2024 kuba6000
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library. If not, see <https://www.gnu.org/licenses/>.
+ * spotless:on
+ */
+
+package kubatech.loaders;
+
+import static kubatech.tileentity.gregtech.multiblock.GT_MetaTileEntity_ExtremeEntityCrusher.DIAMOND_SPIKES_DAMAGE;
+import static kubatech.tileentity.gregtech.multiblock.GT_MetaTileEntity_ExtremeEntityCrusher.MOB_SPAWN_INTERVAL;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+
+import net.minecraft.enchantment.EnchantmentHelper;
+import net.minecraft.entity.EntityList;
+import net.minecraft.entity.EntityLiving;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.JsonToNBT;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.StatCollector;
+import net.minecraftforge.common.MinecraftForge;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import com.dreammaster.main.MainRegistry;
+import com.dreammaster.modcustomdrops.CustomDrops;
+import com.kuba6000.mobsinfo.api.IChanceModifier;
+import com.kuba6000.mobsinfo.api.MobDrop;
+import com.kuba6000.mobsinfo.api.MobOverride;
+import com.kuba6000.mobsinfo.api.MobRecipe;
+import com.kuba6000.mobsinfo.api.event.MobNEIRegistrationEvent;
+import com.kuba6000.mobsinfo.api.event.PostMobRegistrationEvent;
+import com.kuba6000.mobsinfo.api.event.PostMobsOverridesLoadEvent;
+import com.kuba6000.mobsinfo.api.event.PreMobsRegistrationEvent;
+
+import atomicstryker.infernalmobs.common.InfernalMobsCore;
+import cpw.mods.fml.common.eventhandler.SubscribeEvent;
+import cpw.mods.fml.common.registry.GameRegistry;
+import gregtech.api.util.GT_Utility;
+import kubatech.Tags;
+import kubatech.api.LoaderReference;
+import kubatech.api.helpers.ReflectionHelper;
+import kubatech.config.Config;
+import kubatech.tileentity.gregtech.multiblock.GT_MetaTileEntity_ExtremeEntityCrusher;
+
+public class MobHandlerLoader {
+
+ private static final Logger LOG = LogManager.getLogger(Tags.MODID + "[Mob Handler Loader]");
+
+ private static MobHandlerLoader instance = null;
+
+ public static void init() {
+ instance = new