From 85fb60d7655422b07ea6b07e0ece6c51b5a3790b Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Sat, 28 Oct 2023 12:29:23 +0200 Subject: [PATCH 01/14] Start working on moving DEFC from EMT --- dependencies.gradle | 2 +- .../java/kubatech/api/enums/ItemList.java | 15 +- src/main/java/kubatech/kubatech.java | 17 +- .../java/kubatech/loaders/BlockLoader.java | 10 +- .../java/kubatech/loaders/DEFCRecipes.java | 205 ++++++++++++++ .../java/kubatech/loaders/ItemLoader.java | 28 +- .../java/kubatech/loaders/RecipeLoader.java | 12 + .../loaders/block/defc/DEFCCasingBlock.java | 62 ++++ .../block/defc/DEFCCasingItemBlock.java | 36 +++ .../block/{ => kubablock}/BlockProxy.java | 4 +- .../IProxyTileEntityProvider.java | 2 +- .../block/{ => kubablock}/KubaBlock.java | 2 +- .../block/{ => kubablock}/KubaItemBlock.java | 2 +- .../{ => kubablock}/blocks/TeaAcceptor.java | 6 +- .../{ => kubablock}/blocks/TeaStorage.java | 6 +- .../java/kubatech/loaders/item/ItemProxy.java | 4 + .../kubatech/tileentity/TeaAcceptorTile.java | 2 +- .../GT_MetaTileEntity_DEFusionCrafter.java | 266 ++++++++++++++++++ .../resources/assets/kubatech/lang/en_US.lang | 8 + .../textures/blocks/casing/defc_0.png | Bin 0 -> 512 bytes .../textures/blocks/casing/defc_1.png | Bin 0 -> 372 bytes .../textures/blocks/casing/defc_2.png | Bin 0 -> 647 bytes .../textures/blocks/casing/defc_3.png | Bin 0 -> 469 bytes .../textures/blocks/casing/defc_4.png | Bin 0 -> 694 bytes .../textures/blocks/casing/defc_5.png | Bin 0 -> 473 bytes .../textures/gui/slot/fusion_crafter.png | Bin 0 -> 2885 bytes .../textures/items/defc_schematic_t1.png | Bin 0 -> 2414 bytes .../textures/items/defc_schematic_t2.png | Bin 0 -> 2657 bytes .../textures/items/defc_schematic_t3.png | Bin 0 -> 2316 bytes .../textures/items/defc_schematic_t4.png | Bin 0 -> 1961 bytes 30 files changed, 667 insertions(+), 22 deletions(-) create mode 100644 src/main/java/kubatech/loaders/DEFCRecipes.java create mode 100644 src/main/java/kubatech/loaders/block/defc/DEFCCasingBlock.java create mode 100644 src/main/java/kubatech/loaders/block/defc/DEFCCasingItemBlock.java rename src/main/java/kubatech/loaders/block/{ => kubablock}/BlockProxy.java (96%) rename src/main/java/kubatech/loaders/block/{ => kubablock}/IProxyTileEntityProvider.java (95%) rename src/main/java/kubatech/loaders/block/{ => kubablock}/KubaBlock.java (99%) rename src/main/java/kubatech/loaders/block/{ => kubablock}/KubaItemBlock.java (98%) rename src/main/java/kubatech/loaders/block/{ => kubablock}/blocks/TeaAcceptor.java (92%) rename src/main/java/kubatech/loaders/block/{ => kubablock}/blocks/TeaStorage.java (92%) create mode 100644 src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_DEFusionCrafter.java create mode 100644 src/main/resources/assets/kubatech/textures/blocks/casing/defc_0.png create mode 100644 src/main/resources/assets/kubatech/textures/blocks/casing/defc_1.png create mode 100644 src/main/resources/assets/kubatech/textures/blocks/casing/defc_2.png create mode 100644 src/main/resources/assets/kubatech/textures/blocks/casing/defc_3.png create mode 100644 src/main/resources/assets/kubatech/textures/blocks/casing/defc_4.png create mode 100644 src/main/resources/assets/kubatech/textures/blocks/casing/defc_5.png create mode 100644 src/main/resources/assets/kubatech/textures/gui/slot/fusion_crafter.png create mode 100644 src/main/resources/assets/kubatech/textures/items/defc_schematic_t1.png create mode 100644 src/main/resources/assets/kubatech/textures/items/defc_schematic_t2.png create mode 100644 src/main/resources/assets/kubatech/textures/items/defc_schematic_t3.png create mode 100644 src/main/resources/assets/kubatech/textures/items/defc_schematic_t4.png diff --git a/dependencies.gradle b/dependencies.gradle index 67119556..801ea891 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -93,7 +93,7 @@ dependencies { //api("com.github.GTNewHorizons:SpecialMobs:3.4.3:dev") //api("com.github.GTNewHorizons:twilightforest:2.5.0:dev") //api("com.github.GTNewHorizons:EnderZoo:1.0.23:dev") - //runtimeOnly("com.github.GTNewHorizons:Draconic-Evolution:1.1.19-GTNH:dev") + runtimeOnly("com.github.GTNewHorizons:Draconic-Evolution:1.1.19-GTNH:dev") //runtimeOnly("thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev") //runtimeOnly("com.github.GTNewHorizons:BloodMagic:1.4.3:dev") //api("curse.maven:witchery-69673:2234410") diff --git a/src/main/java/kubatech/api/enums/ItemList.java b/src/main/java/kubatech/api/enums/ItemList.java index 41a57f98..2eb4a3d8 100644 --- a/src/main/java/kubatech/api/enums/ItemList.java +++ b/src/main/java/kubatech/api/enums/ItemList.java @@ -20,6 +20,7 @@ public enum ItemList implements IItemContainer { ExtremeExterminationChamber, ExtremeIndustrialApiary, ExtremeIndustrialGreenhouse, + DraconicEvolutionFusionCrafter, LegendaryBlackTea, LegendaryButterflyTea, LegendaryEarlGrayTea, @@ -59,7 +60,19 @@ public enum ItemList implements IItemContainer { TeaAcceptorResearchNote, TeaAcceptor, TeaStorage, - Beeeeee; + Beeeeee, + DEFCCasingBase, + DEFCCasingT1, + DEFCCasingT2, + DEFCCasingT3, + DEFCCasingT4, + DEFCCasingT5, + DEFCDraconicSchematic, + DEFCWyvernSchematic, + DEFCAwakenedSchematic, + DEFCChaoticSchematic, + + ; private ItemStack mStack; private boolean mHasNotBeenSet = true; diff --git a/src/main/java/kubatech/kubatech.java b/src/main/java/kubatech/kubatech.java index 5bc38d18..673e8c0c 100644 --- a/src/main/java/kubatech/kubatech.java +++ b/src/main/java/kubatech/kubatech.java @@ -26,6 +26,8 @@ import java.util.Collection; import java.util.List; +import cpw.mods.fml.common.event.FMLMissingMappingsEvent; +import cpw.mods.fml.common.event.FMLModIdMappingEvent; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -101,9 +103,13 @@ public String getTranslatedTabLabel() { @Override public void displayAllReleventItems(List p_78018_1_) { super.displayAllReleventItems(p_78018_1_); - p_78018_1_.add(ItemList.ExtremeExterminationChamber.get(1)); - p_78018_1_.add(ItemList.ExtremeIndustrialApiary.get(1)); - p_78018_1_.add(ItemList.ExtremeIndustrialGreenhouse.get(1)); + if (ItemList.ExtremeExterminationChamber.hasBeenSet()) + p_78018_1_.add(ItemList.ExtremeExterminationChamber.get(1)); + if (ItemList.ExtremeIndustrialApiary.hasBeenSet()) p_78018_1_.add(ItemList.ExtremeIndustrialApiary.get(1)); + if (ItemList.ExtremeIndustrialGreenhouse.hasBeenSet()) + p_78018_1_.add(ItemList.ExtremeIndustrialGreenhouse.get(1)); + if (ItemList.DraconicEvolutionFusionCrafter.hasBeenSet()) + p_78018_1_.add(ItemList.DraconicEvolutionFusionCrafter.get(1)); } }; @@ -176,6 +182,11 @@ public void loadComplete(FMLLoadCompleteEvent event) { proxy.loadComplete(event); } + @Mod.EventHandler + public void mapping(FMLMissingMappingsEvent){ + + } + public static void debug(String message) { LOG.debug(message); } diff --git a/src/main/java/kubatech/loaders/BlockLoader.java b/src/main/java/kubatech/loaders/BlockLoader.java index e6f8d5b8..89a760d5 100644 --- a/src/main/java/kubatech/loaders/BlockLoader.java +++ b/src/main/java/kubatech/loaders/BlockLoader.java @@ -25,10 +25,11 @@ import cpw.mods.fml.common.registry.GameRegistry; import kubatech.api.enums.ItemList; -import kubatech.loaders.block.KubaBlock; -import kubatech.loaders.block.KubaItemBlock; -import kubatech.loaders.block.blocks.TeaAcceptor; -import kubatech.loaders.block.blocks.TeaStorage; +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; @@ -36,6 +37,7 @@ 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"); diff --git a/src/main/java/kubatech/loaders/DEFCRecipes.java b/src/main/java/kubatech/loaders/DEFCRecipes.java new file mode 100644 index 00000000..6ba505d5 --- /dev/null +++ b/src/main/java/kubatech/loaders/DEFCRecipes.java @@ -0,0 +1,205 @@ +package kubatech.loaders; + +import static gregtech.api.enums.GT_Values.E; +import static gregtech.api.enums.Mods.GregTech; + +import java.util.HashSet; + +import net.minecraft.init.Blocks; +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 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.util.GT_ModHandler; +import gregtech.api.util.GT_OreDictUnificator; +import gregtech.api.util.GT_Recipe; +import kubatech.Tags; +import kubatech.api.LoaderReference; + +public class DEFCRecipes { + + public static final GT_Recipe.GT_Recipe_Map sFusionCraftingRecipes = new GT_Recipe.GT_Recipe_Map( + new HashSet<>(16), + "emt.recipe.fusioncrafting", + "Draconic Evolution Fusion Crafter", + null, + GregTech.getResourcePath("textures/gui/basicmachines", "FusionCrafter"), + 9, + 1, + 1, + 0, + 1, + "Tier Casing: ", + 1, + E, + false, + true).setSlotOverlay(false, false, UITexture.fullImage(Tags.MODID, "gui/slot/fusion_crafter")); + + public static void addFusionCraftingRecipe(ItemStack[] inputs, FluidStack[] fluidinputs, ItemStack[] outputs, + FluidStack[] fluidoutputs, int aDuration, int aEUt, int aTier) { + sFusionCraftingRecipes + .addRecipe(true, inputs, outputs, null, fluidinputs, fluidoutputs, aDuration, aEUt, aTier); + } + + public static void addFusionCraftingRecipeNonOptimized(ItemStack[] inputs, FluidStack[] fluidinputs, + ItemStack[] outputs, FluidStack[] fluidoutputs, int aDuration, int aEUt, int aTier) { + sFusionCraftingRecipes + .addRecipe(false, inputs, outputs, null, fluidinputs, fluidoutputs, aDuration, aEUt, aTier); + } + + public static void addFusionCraftingRecipe(ItemStack[] inputs, ItemStack output, int aDuration, int aEUt, + int aTier) { + addFusionCraftingRecipe(inputs, null, new ItemStack[] { output }, null, aDuration, aEUt, aTier); + } + + // Use this if you don't want your recipes quantity to be splitted + public static void addFusionCraftingRecipeNonOptimized(ItemStack[] inputs, FluidStack fluidinput, ItemStack output, + FluidStack fluidoutput, int aDuration, int aEUt, int aTier) { + addFusionCraftingRecipeNonOptimized( + inputs, + new FluidStack[] { fluidinput }, + new ItemStack[] { output }, + new FluidStack[] { fluidoutput }, + aDuration, + aEUt, + aTier); + } + + public static void addRecipes() { + + // 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(sFusionCraftingRecipes); + + /* + * addFusionCraftingRecipeNonOptimized( + * new ItemStack[] { 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) }, + * Materials.Sunnarium.getMolten(1440), + * GT_ModHandler.getModItem("DraconicEvolution", "draconicCore", 1, 0), + * GT_Values.NF, + * 400, + * 500000, + * 1); + */ + addFusionCraftingRecipeNonOptimized( + new ItemStack[] { 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), }, + Materials.Neutronium.getMolten(1440), + GT_ModHandler.getModItem("DraconicEvolution", "wyvernCore", 1, 0), + GT_Values.NF, + 800, + 2_000_000, + 2); + if (Loader.isModLoaded("supersolarpanel")) { + addFusionCraftingRecipeNonOptimized( + new ItemStack[] { 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) }, + Materials.Infinity.getMolten(1440), + GT_ModHandler.getModItem("DraconicEvolution", "awakenedCore", 1, 0), + GT_Values.NF, + 1600, + 8_000_000, + 3); + } else { + addFusionCraftingRecipeNonOptimized( + new ItemStack[] { 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) }, + Materials.Infinity.getMolten(1440), + GT_ModHandler.getModItem("DraconicEvolution", "awakenedCore", 1, 0), + GT_Values.NF, + 1600, + 8_000_000, + 3); + } + + addFusionCraftingRecipeNonOptimized( + new ItemStack[] { 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) }, + MaterialsUEVplus.SpaceTime.getMolten(1440), + GT_ModHandler.getModItem("DraconicEvolution", "chaoticCore", 1, 0), + GT_Values.NF, + 3200, + 24_000_000, + 4); + + // ENERGY CORES + + addFusionCraftingRecipe( + new ItemStack[] { 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) }, + GT_ModHandler.getModItem("DraconicEvolution", "draconiumEnergyCore", 1, 0), + 1000, + 500_000, + 2); + + addFusionCraftingRecipe( + new ItemStack[] { 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) }, + GT_ModHandler.getModItem("DraconicEvolution", "draconiumEnergyCore", 1, 1), + 2000, + 2_000_000, + 3); + + // Dragon Blood + if (LoaderReference.GTPlusPlus) { + + addFusionCraftingRecipeNonOptimized( + new ItemStack[] { new ItemStack(Blocks.dragon_egg, 0), + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.DraconiumAwakened, 64) }, + Materials.Radon.getPlasma(144), + null, + new FluidStack(FluidRegistry.getFluid("molten.dragonblood"), 288), + 4200, + 1_966_080, + 3); + + addFusionCraftingRecipeNonOptimized( + new ItemStack[] { GT_ModHandler.getModItem("witchery", "infinityegg", 0), + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.DraconiumAwakened, 64) }, + Materials.Radon.getPlasma(72), + null, + new FluidStack(FluidRegistry.getFluid("molten.dragonblood"), 432), + 3600, + 1_966_080, + 3); + } + } +} diff --git a/src/main/java/kubatech/loaders/ItemLoader.java b/src/main/java/kubatech/loaders/ItemLoader.java index 5c3ec6cc..c9d2a769 100644 --- a/src/main/java/kubatech/loaders/ItemLoader.java +++ b/src/main/java/kubatech/loaders/ItemLoader.java @@ -24,6 +24,10 @@ 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; @@ -59,6 +63,13 @@ 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; @@ -118,6 +129,21 @@ public static void registerItems() { TeaAcceptorResearchNote .set(kubaitems.registerProxyItem(new ItemProxy("tea_acceptor_research_note", "research_note"))); - Beeeeee.set(kubaitems.registerProxyItem(new ItemProxy("beeeeee", "beeeeee"))); + 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 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/RecipeLoader.java b/src/main/java/kubatech/loaders/RecipeLoader.java index 8b52707e..c9925e1f 100644 --- a/src/main/java/kubatech/loaders/RecipeLoader.java +++ b/src/main/java/kubatech/loaders/RecipeLoader.java @@ -33,6 +33,7 @@ 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.DraconicEvolutionFusionCrafter; import static kubatech.api.enums.ItemList.EarlGrayTea; import static kubatech.api.enums.ItemList.ExtremeExterminationChamber; import static kubatech.api.enums.ItemList.ExtremeIndustrialApiary; @@ -79,6 +80,7 @@ import gtPlusPlus.core.lib.CORE; import kubatech.api.LoaderReference; import kubatech.api.enums.ItemList; +import kubatech.tileentity.gregtech.multiblock.GT_MetaTileEntity_DEFusionCrafter; import kubatech.tileentity.gregtech.multiblock.GT_MetaTileEntity_ExtremeExterminationChamber; import kubatech.tileentity.gregtech.multiblock.GT_MetaTileEntity_ExtremeIndustrialGreenhouse; import kubatech.tileentity.gregtech.multiblock.GT_MetaTileEntity_MegaIndustrialApiary; @@ -148,6 +150,16 @@ public static void addRecipes() { : gregtech.api.enums.ItemList.Robot_Arm_IV, 'Z', OrePrefixes.circuit.get(Materials.Ultimate) }); } + if (registerMTEUsingID( + 5_001, + DraconicEvolutionFusionCrafter, + GT_MetaTileEntity_DEFusionCrafter.class, + "multimachine.defusioncrafter", + "Draconic Evolution Fusion Crafter", + LoaderReference.DraconicEvolution)) { + // Controller recipe added in TecTech + DEFCRecipes.addRecipes(); + } RegisterTeaLine(); if (MTEID > MTEIDMax + 1) throw new RuntimeException("MTE ID's"); } diff --git a/src/main/java/kubatech/loaders/block/defc/DEFCCasingBlock.java b/src/main/java/kubatech/loaders/block/defc/DEFCCasingBlock.java new file mode 100644 index 00000000..ceb4055f --- /dev/null +++ b/src/main/java/kubatech/loaders/block/defc/DEFCCasingBlock.java @@ -0,0 +1,62 @@ +package kubatech.loaders.block.defc; + +import static kubatech.kubatech.KT; + +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gregtech.api.enums.Textures; +import gregtech.api.render.TextureFactory; +import gregtech.api.util.GT_LanguageManager; +import gregtech.common.blocks.GT_Block_Casings_Abstract; +import kubatech.Tags; +import kubatech.api.enums.ItemList; + +public class DEFCCasingBlock extends GT_Block_Casings_Abstract { + + @SideOnly(Side.CLIENT) + private IIcon[] texture; + + public DEFCCasingBlock() { + super(DEFCCasingItemBlock.class, "defc.casing", Material.anvil); + this.setHardness(15.0F); + this.setResistance(30.0F); + this.setCreativeTab(KT); + + GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".0.name", "Naquadah Alloy Fusion Casing"); + GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".1.name", "Bloody Ichorium Fusion Casing"); + GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".2.name", "Draconium Fusion Casing"); + GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".3.name", "Wyvern Fusion Casing"); + GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".4.name", "Awakened Draconium Fusion Casing"); + GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".5.name", "Chaotic Fusion Casing"); + + ItemList.DEFCCasingBase.set(new ItemStack(this, 1, 0)); + ItemList.DEFCCasingT1.set(new ItemStack(this, 1, 1)); + ItemList.DEFCCasingT2.set(new ItemStack(this, 1, 2)); + ItemList.DEFCCasingT3.set(new ItemStack(this, 1, 3)); + ItemList.DEFCCasingT4.set(new ItemStack(this, 1, 4)); + ItemList.DEFCCasingT5.set(new ItemStack(this, 1, 5)); + + // Taking one texture slot :P + Textures.BlockIcons.setCasingTexture((byte) 1, (byte) (15 + 48), TextureFactory.of(this, 0)); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return texture[meta]; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister aIconRegister) { + texture = new IIcon[6]; + for (int i = 0; i < texture.length; i++) { + texture[i] = aIconRegister.registerIcon(Tags.MODID + ":casing/defc_" + i); + } + } +} diff --git a/src/main/java/kubatech/loaders/block/defc/DEFCCasingItemBlock.java b/src/main/java/kubatech/loaders/block/defc/DEFCCasingItemBlock.java new file mode 100644 index 00000000..7e140006 --- /dev/null +++ b/src/main/java/kubatech/loaders/block/defc/DEFCCasingItemBlock.java @@ -0,0 +1,36 @@ +package kubatech.loaders.block.defc; + +import static kubatech.kubatech.KT; + +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; + +import gregtech.common.blocks.GT_Item_Casings_Abstract; + +public class DEFCCasingItemBlock extends GT_Item_Casings_Abstract { + + public DEFCCasingItemBlock(Block block) { + super(block); + this.setMaxDamage(0); + this.setHasSubtypes(true); + this.setCreativeTab(KT); + } + + @Override + @SuppressWarnings("unchecked") + public void addInformation(ItemStack aStack, EntityPlayer aPlayer, List aList, boolean aF3_H) { + if (getDamage(aStack) > 0) + aList.add(StatCollector.translateToLocalFormatted("defc.casing.tip", getDamage(aStack))); + super.addInformation(aStack, aPlayer, aList, aF3_H); + } + + @Override + public IIcon getIconFromDamage(int p_77617_1_) { + return this.field_150939_a.getIcon(0, p_77617_1_); + } +} diff --git a/src/main/java/kubatech/loaders/block/BlockProxy.java b/src/main/java/kubatech/loaders/block/kubablock/BlockProxy.java similarity index 96% rename from src/main/java/kubatech/loaders/block/BlockProxy.java rename to src/main/java/kubatech/loaders/block/kubablock/BlockProxy.java index 86f403a0..b11dcec2 100644 --- a/src/main/java/kubatech/loaders/block/BlockProxy.java +++ b/src/main/java/kubatech/loaders/block/kubablock/BlockProxy.java @@ -18,9 +18,9 @@ * spotless:on */ -package kubatech.loaders.block; +package kubatech.loaders.block.kubablock; -import static kubatech.loaders.block.KubaBlock.defaultTileEntityUI; +import static kubatech.loaders.block.kubablock.KubaBlock.defaultTileEntityUI; import java.util.List; diff --git a/src/main/java/kubatech/loaders/block/IProxyTileEntityProvider.java b/src/main/java/kubatech/loaders/block/kubablock/IProxyTileEntityProvider.java similarity index 95% rename from src/main/java/kubatech/loaders/block/IProxyTileEntityProvider.java rename to src/main/java/kubatech/loaders/block/kubablock/IProxyTileEntityProvider.java index a7b2f79e..9025fbb4 100644 --- a/src/main/java/kubatech/loaders/block/IProxyTileEntityProvider.java +++ b/src/main/java/kubatech/loaders/block/kubablock/IProxyTileEntityProvider.java @@ -18,7 +18,7 @@ * spotless:on */ -package kubatech.loaders.block; +package kubatech.loaders.block.kubablock; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; diff --git a/src/main/java/kubatech/loaders/block/KubaBlock.java b/src/main/java/kubatech/loaders/block/kubablock/KubaBlock.java similarity index 99% rename from src/main/java/kubatech/loaders/block/KubaBlock.java rename to src/main/java/kubatech/loaders/block/kubablock/KubaBlock.java index ac722358..d86745ab 100644 --- a/src/main/java/kubatech/loaders/block/KubaBlock.java +++ b/src/main/java/kubatech/loaders/block/kubablock/KubaBlock.java @@ -18,7 +18,7 @@ * spotless:on */ -package kubatech.loaders.block; +package kubatech.loaders.block.kubablock; import static kubatech.kubatech.KT; diff --git a/src/main/java/kubatech/loaders/block/KubaItemBlock.java b/src/main/java/kubatech/loaders/block/kubablock/KubaItemBlock.java similarity index 98% rename from src/main/java/kubatech/loaders/block/KubaItemBlock.java rename to src/main/java/kubatech/loaders/block/kubablock/KubaItemBlock.java index 6964ef51..77485f2a 100644 --- a/src/main/java/kubatech/loaders/block/KubaItemBlock.java +++ b/src/main/java/kubatech/loaders/block/kubablock/KubaItemBlock.java @@ -18,7 +18,7 @@ * spotless:on */ -package kubatech.loaders.block; +package kubatech.loaders.block.kubablock; import java.util.List; diff --git a/src/main/java/kubatech/loaders/block/blocks/TeaAcceptor.java b/src/main/java/kubatech/loaders/block/kubablock/blocks/TeaAcceptor.java similarity index 92% rename from src/main/java/kubatech/loaders/block/blocks/TeaAcceptor.java rename to src/main/java/kubatech/loaders/block/kubablock/blocks/TeaAcceptor.java index d0646609..206da6de 100644 --- a/src/main/java/kubatech/loaders/block/blocks/TeaAcceptor.java +++ b/src/main/java/kubatech/loaders/block/kubablock/blocks/TeaAcceptor.java @@ -18,7 +18,7 @@ * spotless:on */ -package kubatech.loaders.block.blocks; +package kubatech.loaders.block.kubablock.blocks; import java.util.List; @@ -29,8 +29,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -import kubatech.loaders.block.BlockProxy; -import kubatech.loaders.block.IProxyTileEntityProvider; +import kubatech.loaders.block.kubablock.BlockProxy; +import kubatech.loaders.block.kubablock.IProxyTileEntityProvider; import kubatech.tileentity.TeaAcceptorTile; public class TeaAcceptor extends BlockProxy implements IProxyTileEntityProvider { diff --git a/src/main/java/kubatech/loaders/block/blocks/TeaStorage.java b/src/main/java/kubatech/loaders/block/kubablock/blocks/TeaStorage.java similarity index 92% rename from src/main/java/kubatech/loaders/block/blocks/TeaStorage.java rename to src/main/java/kubatech/loaders/block/kubablock/blocks/TeaStorage.java index 059c873a..273690e2 100644 --- a/src/main/java/kubatech/loaders/block/blocks/TeaStorage.java +++ b/src/main/java/kubatech/loaders/block/kubablock/blocks/TeaStorage.java @@ -18,7 +18,7 @@ * spotless:on */ -package kubatech.loaders.block.blocks; +package kubatech.loaders.block.kubablock.blocks; import static kubatech.api.Variables.numberFormat; @@ -32,8 +32,8 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; -import kubatech.loaders.block.BlockProxy; -import kubatech.loaders.block.IProxyTileEntityProvider; +import kubatech.loaders.block.kubablock.BlockProxy; +import kubatech.loaders.block.kubablock.IProxyTileEntityProvider; import kubatech.tileentity.TeaStorageTile; public class TeaStorage extends BlockProxy implements IProxyTileEntityProvider { diff --git a/src/main/java/kubatech/loaders/item/ItemProxy.java b/src/main/java/kubatech/loaders/item/ItemProxy.java index 4e37175c..9c27959a 100644 --- a/src/main/java/kubatech/loaders/item/ItemProxy.java +++ b/src/main/java/kubatech/loaders/item/ItemProxy.java @@ -72,6 +72,10 @@ public ItemProxy(String unlocalizedName, String texture) { texturepath = Tags.MODID + ":" + texture; } + public ItemProxy(String unlocalizedNameAndTexture) { + this(unlocalizedNameAndTexture, unlocalizedNameAndTexture); + } + public void ItemInit(int index) {} public String getUnlocalizedName() { diff --git a/src/main/java/kubatech/tileentity/TeaAcceptorTile.java b/src/main/java/kubatech/tileentity/TeaAcceptorTile.java index a2952117..1addb1a8 100644 --- a/src/main/java/kubatech/tileentity/TeaAcceptorTile.java +++ b/src/main/java/kubatech/tileentity/TeaAcceptorTile.java @@ -54,7 +54,7 @@ import kubatech.api.tea.TeaNetwork; import kubatech.api.utils.StringUtils; import kubatech.loaders.ItemLoader; -import kubatech.loaders.block.KubaBlock; +import kubatech.loaders.block.kubablock.KubaBlock; public class TeaAcceptorTile extends TileEntity implements IInventory, ITileWithModularUI, KubaBlock.IModularUIProvider { diff --git a/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_DEFusionCrafter.java b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_DEFusionCrafter.java new file mode 100644 index 00000000..696413ee --- /dev/null +++ b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_DEFusionCrafter.java @@ -0,0 +1,266 @@ +package kubatech.tileentity.gregtech.multiblock; + +import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock; +import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlocksTiered; +import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofChain; +import static com.gtnewhorizon.structurelib.structure.StructureUtility.onElementPass; +import static com.gtnewhorizon.structurelib.structure.StructureUtility.transpose; +import static gregtech.api.enums.Textures.BlockIcons.MACHINE_CASING_MAGIC; +import static gregtech.api.enums.Textures.BlockIcons.MACHINE_CASING_MAGIC_ACTIVE; +import static gregtech.api.enums.Textures.BlockIcons.MACHINE_CASING_MAGIC_ACTIVE_GLOW; +import static gregtech.api.enums.Textures.BlockIcons.MACHINE_CASING_MAGIC_GLOW; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_TELEPORTER; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_TELEPORTER_ACTIVE; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_TELEPORTER_ACTIVE_GLOW; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_TELEPORTER_GLOW; +import static gregtech.api.util.GT_StructureUtility.ofHatchAdder; +import static kubatech.api.Variables.StructureHologram; +import static kubatech.api.Variables.buildAuthorList; + +import java.util.Arrays; +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.item.ItemStack; +import net.minecraftforge.common.util.ForgeDirection; + +import org.apache.commons.lang3.tuple.Pair; +import org.jetbrains.annotations.NotNull; + +import com.gtnewhorizon.structurelib.structure.IStructureDefinition; +import com.gtnewhorizon.structurelib.structure.StructureDefinition; + +import gregtech.api.GregTech_API; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.logic.ProcessingLogic; +import gregtech.api.recipe.check.CheckRecipeResult; +import gregtech.api.recipe.check.CheckRecipeResultRegistry; +import gregtech.api.render.TextureFactory; +import gregtech.api.util.GT_Multiblock_Tooltip_Builder; +import gregtech.api.util.GT_OverclockCalculator; +import gregtech.api.util.GT_ParallelHelper; +import gregtech.api.util.GT_Recipe; +import kubatech.Tags; +import kubatech.api.implementations.KubaTechGTMultiBlockBase; +import kubatech.loaders.BlockLoader; +import kubatech.loaders.DEFCRecipes; + +public class GT_MetaTileEntity_DEFusionCrafter extends KubaTechGTMultiBlockBase { + + private static final int CASING_INDEX = (1 << 7) + (15 + 48); + private int mTierCasing = 0; + private int mFusionTierCasing = 0; + private int mCasing = 0; + + @SuppressWarnings("unused") + public GT_MetaTileEntity_DEFusionCrafter(int aID, String aName, String aNameRegional) { + super(aID, aName, aNameRegional); + } + + public GT_MetaTileEntity_DEFusionCrafter(String aName) { + super(aName); + } + + @Override + public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { + return new GT_MetaTileEntity_DEFusionCrafter(mName); + } + + private static final String STRUCTURE_PIECE_MAIN = "main"; + private static final List> fusionCasingTiers = Arrays + .asList(Pair.of(GregTech_API.sBlockCasings4, 6), Pair.of(GregTech_API.sBlockCasings4, 8)); + private static final List> coreTiers = Arrays.asList( + Pair.of(BlockLoader.defcCasingBlock, 1), + Pair.of(BlockLoader.defcCasingBlock, 2), + Pair.of(BlockLoader.defcCasingBlock, 3), + Pair.of(BlockLoader.defcCasingBlock, 4), + Pair.of(BlockLoader.defcCasingBlock, 5)); + private static final IStructureDefinition STRUCTURE_DEFINITION = StructureDefinition + .builder() + .addShape( + STRUCTURE_PIECE_MAIN, + transpose( + new String[][] { // spotless:off + { "nnnnn", "nnnnn", "nnnnn", "nnnnn", "nnnnn" }, + { " ", " F ", " FfF ", " F ", " " }, + { " ", " F ", " FfF ", " F ", " " }, + { "RRRRR", "R F R", "RFfFR", "R F R", "RRRRR" }, + { " ", " F ", " FfF ", " F ", " " }, + { " ", " F ", " FfF ", " F ", " " }, + { "RRRRR", "R F R", "RFfFR", "R F R", "RRRRR" }, + { " ", " F ", " FfF ", " F ", " " }, + { " ", " F ", " FfF ", " F ", " " }, + { "NN~NN", "NNNNN", "NNNNN", "NNNNN", "NNNNN" } + })) // spotless:on + .addElement( + 'N', + ofChain( + onElementPass(e -> e.mCasing++, ofBlock(BlockLoader.defcCasingBlock, 0)), + ofHatchAdder(GT_MetaTileEntity_DEFusionCrafter::addEnergyInputToMachineList, CASING_INDEX, 1), + ofHatchAdder(GT_MetaTileEntity_DEFusionCrafter::addInputToMachineList, CASING_INDEX, 1), + ofHatchAdder(GT_MetaTileEntity_DEFusionCrafter::addOutputToMachineList, CASING_INDEX, 1), + ofHatchAdder(GT_MetaTileEntity_DEFusionCrafter::addMaintenanceToMachineList, CASING_INDEX, 1))) + .addElement('n', onElementPass(e -> e.mCasing++, ofBlock(BlockLoader.defcCasingBlock, 0))) + .addElement('f', ofBlock(GregTech_API.sBlockCasings4, 7)) + .addElement('F', ofBlocksTiered((Block b, int m) -> { + if (b != GregTech_API.sBlockCasings4 || (m != 6 && m != 8)) return -2; + return m == 6 ? 1 : 2; + }, fusionCasingTiers, -1, (e, i) -> e.mFusionTierCasing = i, e -> e.mFusionTierCasing)) + .addElement('R', ofBlocksTiered((Block b, int m) -> { + if (b != BlockLoader.defcCasingBlock || m < 1 || m > 5) return -2; + return m; + }, coreTiers, -1, (e, i) -> e.mTierCasing = i, e -> e.mTierCasing)) + .build(); + + @Override + public IStructureDefinition getStructureDefinition() { + return STRUCTURE_DEFINITION; + } + + public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) { + mCasing = 0; + mTierCasing = -1; + mFusionTierCasing = -1; + if (!checkPiece(STRUCTURE_PIECE_MAIN, 2, 9, 0)) return false; + if (mCasing < 19) return false; + if (mTierCasing == -2 || mFusionTierCasing == -2) return false; + if (mTierCasing > 3 && mFusionTierCasing < 2) return false; + return mMaintenanceHatches.size() == 1; + } + + @Override + protected GT_Multiblock_Tooltip_Builder createTooltip() { + GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder(); + tt.addMachineType("Fusion Crafter") + .addInfo("Controller Block for the Draconic Evolution Fusion Crafter") + .addInfo(buildAuthorList("kuba6000", "Prometheus0000")) + .addInfo("Machine can be overclocked by using casings above the recipe tier:") + .addInfo("Recipe time is divided by number of tiers above the recipe") + .addInfo("Normal EU OC still applies !") + .addInfo(StructureHologram) + .addSeparator() + .beginStructureBlock(5, 10, 5, false) + .addController("Front bottom center") + .addCasingInfoMin("Naquadah Alloy Fusion Casing", 19, false) + .addOtherStructurePart("Fusion Coil Block", "Center pillar") + .addOtherStructurePart("Fusion Machine Casing", "Touching Fusion Coil Block at every side") + .addOtherStructurePart("Tiered Fusion Casing", "Rings (5x5 hollow) at layer 4 and 7") + .addStructureInfo("Bloody Ichorium for tier 1, Draconium for tier 2, etc") + .addStructureInfo("To use tier 3 + you have to use fusion casing MK II") + .addInputBus("Any bottom casing", 1) + .addInputHatch("Any bottom casing", 1) + .addOutputBus("Any bottom casing", 1) + .addOutputHatch("Any bottom casing", 1) + .addEnergyHatch("Any bottom casing", 1) + .addMaintenanceHatch("Any bottom casing", 1) + .toolTipFinisher(Tags.MODNAME); + return tt; + } + + public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, ForgeDirection side, ForgeDirection facing, + int colorIndex, boolean aActive, boolean aRedstone) { + if (side == facing) { + if (aActive) return new ITexture[] { TextureFactory.of(MACHINE_CASING_MAGIC), TextureFactory.builder() + .addIcon(OVERLAY_TELEPORTER_ACTIVE) + .extFacing() + .build(), + TextureFactory.builder() + .addIcon(OVERLAY_TELEPORTER_ACTIVE_GLOW) + .extFacing() + .glow() + .build() }; + return new ITexture[] { TextureFactory.of(MACHINE_CASING_MAGIC), TextureFactory.builder() + .addIcon(OVERLAY_TELEPORTER) + .extFacing() + .build(), + TextureFactory.builder() + .addIcon(OVERLAY_TELEPORTER_GLOW) + .extFacing() + .glow() + .build() }; + } + if (aActive) return new ITexture[] { TextureFactory.of(MACHINE_CASING_MAGIC), TextureFactory.builder() + .addIcon(MACHINE_CASING_MAGIC_ACTIVE) + .extFacing() + .build(), + TextureFactory.builder() + .addIcon(MACHINE_CASING_MAGIC_ACTIVE_GLOW) + .extFacing() + .glow() + .build() }; + return new ITexture[] { TextureFactory.of(MACHINE_CASING_MAGIC), TextureFactory.builder() + .addIcon(MACHINE_CASING_MAGIC) + .extFacing() + .build(), + TextureFactory.builder() + .addIcon(MACHINE_CASING_MAGIC_GLOW) + .extFacing() + .glow() + .build() }; + } + + @Override + public boolean isCorrectMachinePart(ItemStack aStack) { + return true; + } + + @Override + public GT_Recipe.GT_Recipe_Map getRecipeMap() { + return DEFCRecipes.sFusionCraftingRecipes; + } + + @Override + protected ProcessingLogic createProcessingLogic() { + return new ProcessingLogic() { + + @NotNull + @Override + protected CheckRecipeResult validateRecipe(@NotNull GT_Recipe recipe) { + return recipe.mSpecialValue <= mTierCasing ? CheckRecipeResultRegistry.SUCCESSFUL + : CheckRecipeResultRegistry.NO_RECIPE; + } + + @Override + protected double calculateDuration(@NotNull GT_Recipe recipe, @NotNull GT_ParallelHelper helper, + @NotNull GT_OverclockCalculator calculator) { + return Math.max( + 1d, + super.calculateDuration(recipe, helper, calculator) / ((mTierCasing - recipe.mSpecialValue) + 1)); + } + }; + } + + public int getMaxEfficiency(ItemStack aStack) { + return 10000; + } + + public int getPollutionPerTick(ItemStack aStack) { + return 0; + } + + public int getDamageToComponent(ItemStack aStack) { + return 0; + } + + public boolean explodesOnComponentBreak(ItemStack aStack) { + return false; + } + + @Override + public void construct(ItemStack itemStack, boolean b) { + buildPiece(STRUCTURE_PIECE_MAIN, itemStack, b, 2, 9, 0); + } + + @Override + public boolean supportsVoidProtection() { + return true; + } + + @Override + public boolean supportsInputSeparation() { + return true; + } + +} diff --git a/src/main/resources/assets/kubatech/lang/en_US.lang b/src/main/resources/assets/kubatech/lang/en_US.lang index 3d39bb8e..6b01ca66 100644 --- a/src/main/resources/assets/kubatech/lang/en_US.lang +++ b/src/main/resources/assets/kubatech/lang/en_US.lang @@ -27,9 +27,17 @@ kubatech.command.tea.usage= get/set/add () kubablock.tea_acceptor.name=§4§lTea Acceptor kubablock.tea_storage.name=§4§lTea Storage Extender +#DEFC Casings +defc.casing.tip=Draconic Evolution Fusion Crafter Casing, Tier %d + #Items kubaitem.fromcollection=This item is from kubaitem.notyours=It looks like that item is not yours +kubaitem.defc_schematic_t1.name=Draconic Core Schematic +kubaitem.defc_schematic_t1.tip=This Schematic can be found in Pluto Dungeons +kubaitem.defc_schematic_t2.name=Wyvern Core Schematic +kubaitem.defc_schematic_t3.name=Awakened Core Schematic +kubaitem.defc_schematic_t4.name=Chaotic Core Schematic #Tea kubaitem.tea.black_tea.name=Black Tea diff --git a/src/main/resources/assets/kubatech/textures/blocks/casing/defc_0.png b/src/main/resources/assets/kubatech/textures/blocks/casing/defc_0.png new file mode 100644 index 0000000000000000000000000000000000000000..06e2f526c494092a1e4c085e6f55d1f5a7f46560 GIT binary patch literal 512 zcmV+b0{{JqP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn z4jTXf02y>eSaefwW^{L9a%BK_cXuvnZfkR6VQ^(GZ*pgw?mQX*00Cf0L_t(IPn}ai zj>0eubXwRCu(zI;mmvPYq3UmW0B=BQe?U)7((HKLq^%Y%8)WR*G+93G>$J~NWgb6=_CbM^Sb+DiwYaCsDzbwpoOMs3Q*&$fH_#MD}lwfg1cU? z>3+Z4+x&Aj?=~N%@P&7M{yB@gTrMB~&hKnrpXC?-EM-XyFH4dD0000-RWJ{MzoVsI^e4VL|S-{lWVC7$sA)y?>_c z5Yzq3>N0;`4R^?|{H#;|ivIF+7^TI9u?6zA&0hZh@1HNX!&p_0fBp66;pYESRq8sq zjQ3QYe)04mUx<0N?BnC{`{VyN++48oo4f~8D6?lwSmTw0xij`GF8TkAdwJi#9Th+I z^;Xvv7%1d4SO{kD%dKwUQE0eT@X|;-z%N)prTw&)i2Z_AHoesi41#MS<~GXgNC-7h z@9Zpi{N2!?!2jOA?gAl!2j2}Z$W2h%F}c8!`DS=R>k@T4p~>dV%nYh4udkO;T{<5a OQVgE1elF{r5}E+H+l<5j literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/kubatech/textures/blocks/casing/defc_2.png b/src/main/resources/assets/kubatech/textures/blocks/casing/defc_2.png new file mode 100644 index 0000000000000000000000000000000000000000..18948e711d12ed9a36f0f224062947d981ce6f76 GIT binary patch literal 647 zcmV;20(kw2P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0vt(1K~y+TrITH2 zQ$Y}h-`!2*fUROR5JK;Y>0jFl>a6Fqqb}WN+7RK;Genf~*R3D;jkz&Hv zF99(Hy#7#30kdbYH+iT2&Q>(oS%+q8L2bjq2q6Z75?8ObrCtZS%N{vt*O9K4b}3zv3XBd@lDYw ztVD8=ucm0R(!Gh`4Mt4+Nq+;6sl{N(^bJ;*Zz0CAKWxD?l9H0un%N(9n7k}7-)N%O zzJ@EERWzE57!3yskr45fW{Z>n2G!2yT7u9&`hBKa)-S*iN?Qz;z6Onj%e?v3AMI{r zaO9)0;Vx$h&-yKJtMWYsrF-4q2l=_(--{OHA9t-F4%gYNuw zT)J=r^?Fxr4|nfqSz5BB`U4Pc)Cm)(UXxEnx@h2AF*j8?ue8@-oLArAj})Mjm{m{W z@a>@*ejnx2wTt4y{`@`4d83ZK_peGo)n#;}MwvJns-%A$nLvTXpnoIP#H@TcLN)XF h{OwZ-5aPcH@EtA77l;aN(zXBq002ovPDHLkV1hlwB&7fV literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/kubatech/textures/blocks/casing/defc_3.png b/src/main/resources/assets/kubatech/textures/blocks/casing/defc_3.png new file mode 100644 index 0000000000000000000000000000000000000000..7aa78f8f3cc9435557de0a0b8938178188d56136 GIT binary patch literal 469 zcmV;`0V@89P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0cuG^K~y+Tby7=C z12GJ>Gt-Vl56~`Kq)LcOz!ea;K%9mJ7vU&uMyf=+V2@a|L#FxgUOX+WfG5l2abD~f zCpx=-mJ}rIX*n{6A1viWUo2aov%4qvQLAI7uIW`Ji8zs%rBXSC_pgqHRYKpUxa#+B z`?vv5U_y2uHc0k<<-3-toXdtv)Kzt}9FHzX)f^q1vOM~X>p7C+W(flMDMCtgsOKsL zBT)~^g9?#Q^@FlOg&l&!in@%#j)l8^-R;_L+iv~Z$OH;dQDO&>(Aso=_3KHqm|R@Z zn#FMs34m?D;W(D!C3-F#asE4;0Ud0JXQKZ^>5zEPGQ{#}%IAQSUycJEN*B)CvZi~x zYiXY6u{;R8o+63L2VZb{=ph9R1dP=pyqW(&u^^Be;5bh7!u|6V9JCqiX?VW^!Oo!5 z+s9^fJ*@wR3SIzou!+j&`-@I*9@r$~5>bO6)In^X0q-}II7m+4NbLgZN=^C(00000 LNkvXXu0mjfB3sD! literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/kubatech/textures/blocks/casing/defc_4.png b/src/main/resources/assets/kubatech/textures/blocks/casing/defc_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c6701066538677a1525748176fa5fd6bda2ef318 GIT binary patch literal 694 zcmV;n0!jUeP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0!v9mK~y+TWm8LU z5>XWX?j4>|V4$HG8#kJ$aZ$T*Q|v;czu9PHp@}PvyQQ3?eZaEDkTlHnx5~~1? znMEnhI&9v+d^AIGdkghO89U7is*MT;y$N32t1^{U-ymnNFo=QOLY9y+0fQxhg7p*} zZE<7}$uyQ$S>E5R(PB~tI_HG3WRcM59g%5HNYOih|*1L-lirElhzJ@ScN7mNymRYsoQJ}sqPEr6> zl9t|VSgTsWL0D#uvaShhPo))xc(&7E87uXT=dl8q_CEZSTX;^8>#KY-m)AaYqyJa= zVH5apM(gWG@GMc6)^JIscfAexrKQKkrGOpd5=Z%lZ chDqdse~B++U^x)tb^rhX07*qoM6N<$g6xJfmjD0& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/kubatech/textures/blocks/casing/defc_5.png b/src/main/resources/assets/kubatech/textures/blocks/casing/defc_5.png new file mode 100644 index 0000000000000000000000000000000000000000..c8c8eb0ccb2e3b20c6f657c4e7f3feecbb769c6a GIT binary patch literal 473 zcmV;~0Ve*5P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0d7e|K~y+Tm64&2 z!cY)Jx1~TpAV?bUAV83SuByXQiH08mg>6s-fhDPH2zSh!WOrC zlfKN%yLaB5sa31htbd_iuRk7-j~vhE^E=1+e70?SG#V*=)dz!tg9fVWy3z|#6d~wz zI#6G@Uawpk0q1_dhg3uy$K`UlTCJ8!CC~HHG&KU$oG?zO(^rn^bP8#`UMpR#RuHh1 z(S9S_=5DcAFxBC3I3AC^UM~zoiijboZ}vh_uv{*E-^Yot+wCYiPJzb9PBbM>#2XHW z{eEBZX0xeODoosHG>ibMz|$hp3!6i+4-&ThARzu%4E z)epP#`TVnh@pw#;$02A2GYvWW=598damqKnx7#f#z1{>Q088u}9u@iKx6m6l@tc5O zNY1|`7TAe==dCixMRwO}wJw(n2{Niev)QCKQ>vGW1emni?RMVuZ?LQ%)b<%ZiZvNh P00000NkvXXu0mjfEbz(q literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/kubatech/textures/gui/slot/fusion_crafter.png b/src/main/resources/assets/kubatech/textures/gui/slot/fusion_crafter.png new file mode 100644 index 0000000000000000000000000000000000000000..e08a173166f751467a8d422f8b331bd1ddf74fde GIT binary patch literal 2885 zcmV-L3%c})P)uJ@VVD_UC<6{NG_fI~0ue<-1QkJoA_k0xBC#Thg@9ne9*`iQ#9$Or zQF$}6R&?d%y_c8YA7_1QpS|}zXYYO1x&V;8{kgn!SPFnNo`4_X6{c}T{8k*B#$jdxfFg<9uYy1K45IaYvHg`_dOZM)Sy63ve6hvv z1)yUy0P^?0*fb9UASvow`@mQCp^4`uNg&9uGcn1|&Nk+9SjOUl{-OWr@Hh0;_l(8q z{wNRKos+;6rV8ldy0Owz(}jF`W(JeRp&R{qi2rfmU!TJ;gp(Kmm5I1s5m_f-n#TRsj}B0%?E`vOzxB2#P=n*a3EfYETOrKoe*ICqM@{4K9Go;5xVgZi5G4 z1dM~{UdP6d+Yd3o?MrAqM0Kc|iV92owdyL5UC#5<>aVCa44|hpM4E zs0sQWIt5*Tu0n&*J!lk~f_{hI!w5`*sjxDv4V%CW*ah~3!{C*0BD@;TgA3v9a1~q+ zAA{TB3-ERLHar49hi4Ih5D^-ph8Q6X#0?2VqLBoIkE}zAkxHZUgRb+f=nat zP#6>iMMoK->`~sRLq)(kHo*Vn{;LcG6+edD1=7D>9j^O?D{Qg|tCDK{ym)H7&wDr6*;uGTJg8GHjVbnL{!cWyUB7MT6o-VNo_w8Yq`2<5Ub)hw4L3rj}5@qxMs0 zWMyP6Wy582WNT#4$d1qunl{acmP#w5ouJ*Jy_Zv#bCKi7ZIf$}8d zZdVy&)LYdbX%I9R8VMQ|8r>Q*nyQ)sn)#Z|n)kKvS`4iu ztvy=3T65Yu+7a4Yv^%sXb>ww?bn(=Yu(!=O6^iuTp>)p_Y^{w=i z^lS773}6Fm1Fpe-gF!>Ip{*g$u-szvGhed;vo5pW&GpS$<~8QGEXWp~7V9lKEnZq0SaK{6Sl+dwSOr*Z zvFf(^Xl-N7w{EeXveC4Ov)N}e%%C!Y7^RFWwrE>d+x51mZQt2h+X?JW*!^a2WS?Sx z)P8cQ&Qi|OhNWW;>JChYI)@QQx?`Nj^#uJBl~d&PK+RZLOLos~K(b5>qmrMN0})tOkySZ3_W zICNY@+|jrX%s^&6b2i>5eqa0y%Z;^%^_=a@u3%4b9605ii3Ep)@`TAmhs0fpQ%O!q zl}XcFH*PieWwLj2ZSq`7V9Mc?h17`D)-+sNT-qs~3@?S(ldh7UlRlVXkWrK|vf6I- z?$tAVKYn8-l({mqQ$Q8{O!WzMg`0(=S&msXS#Pt$vrpzo=kRj+a`kh!z=6$;c zwT88(J6|n-WB%w`m$h~4pmp)YIh_ z3ETV2tjiAU!0h1dxU-n=E9e!)6|Z;4?!H=SSy{V>ut&IOq{_dl zbFb#!9eY1iCsp6Bajj|Hr?hX|zPbJE{X++w546-O*Ot`2Kgd0Jx6Z4syT zu9enWavU5N9)I?I-1m1*_?_rJ$vD~agVqoG+9++s?NEDe`%Fht$4F;X=in*dQ{7$m zU2Q)a|9JSc+Uc4zvS-T963!N$T{xF_ZuWe}`RNOZ7sk3{yB}PPym+f8xTpV;-=!;; zJuhGEb?H5K#o@~7t9DmUU1MD9xNd#Dz0azz?I)|B+WM{g+Xrk0I&awC=o(x)cy`EX z=)z6+o0o6-+`4{y+3mqQ%kSJBju{@g%f35#FZJHb`&swrA8dGtepviS>QUumrN{L@ z>;2q1Vm)$Z)P1z?N$8UYW2~{~zhwUMVZ87u`Dx{Z>O|9|`Q+&->FRy-Sjp7DHs zy69KwU-!MxeeuI@&cF4|M9z%AfP?@5 z`Tzg`fam}Kbua(`>RI+y?e7jT@qQ9J+u0E$UOK~y-)wbM}w1R)3p;D2QA6yh~H zO1J1-(XpI|A&A*Z!CfJcu#YmlQc8$M&KaMPM52@e!jHm)L_|eIL(mLZ7c9>$n>`;qApoA~ j_hO-;bw{lgsv2H58&G&XK}QoK00000NkvXXu0mjfmfwVy literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/kubatech/textures/items/defc_schematic_t1.png b/src/main/resources/assets/kubatech/textures/items/defc_schematic_t1.png new file mode 100644 index 0000000000000000000000000000000000000000..8012beec8906c30b4b153846437112f7520842bb GIT binary patch literal 2414 zcmV-!36b`RP)7XQ9|<*^B(rj;9}W18cF;>yscP)k$|Uo&^LPC|pZnguzvZ0o`JV4N_sY5rj}-7b z4*Bosn_VkK0Ovp30GUh%hrB%1&_>4@b&dU^OGkq znoMYSyJ2^2&g5y`tgC=^hu z)o5>TM_5cI+M6EXd|?V28yi933rxB=|l z^C<^M_QWAEK!|CCnMj4V$$FR!cQs z4Nvc)$$X#ZZd5gL`q&r%2>>1L-J=`o8ZBt3zKAamq@d=mfS;b2;oHrD#DY@P*v=zi zZD)9Sd*Y*nTgXq{09VsvXta9t>hTgsN+O&)KL)!uMWXi6MP#mzLQ4E3G(Nq8xVgdD zp7;@RcV~(Ip97%sBl_c$@|Ze>Ov(R5-6x-3=e!Zf$e1{ZQb(JU1vqczR@R2qYK2=6 z@YkGdtchESV>!uqxswh90t0X$V=E5s%|LEWHjGB21VGXNi6?Y^8VkAK z2f^OJ;HeRjo&=W@NA~4HuF;^Wr4?|yVR5>k)M(h2h(OW+9oq5ne5ppgJ6quIWn}8t zW?W@qQi`Ht;+P4W)s9UGJ=rPE7w%lcO-rZK@|=Iiju6ypZa|)%CPa)Ig~=m>xRUI4 zyXgP92B`FWJPpX)7|V+W!?OlL?Q`>zp`eyZl~9nmg|$H~)#Y-t)0EZGXm4v{4Vjyo zd9KA`;b5q_y*+#=)+&j?Zm%vu7(YKAF9ymO1XT$cZ*8$)Q$ioiT(*{h`un|tRXd6} zRm2d{9TU40MsF{K4So%AQ+?4dzyp_#j>Lqae`FR04<01?f8GhnInhPv$q@~ihd;*5 zSj_jyi#IaBJ1sewyIKYUC`L==M=2y7rKKeCe!3@HWcSWfJK9UDad>$kr=#T3H@t^_ zBnHSpRQyRc($st(7VD45{!0}0r>tN`R_$1etM|9Fqn(=&s4?n_F<^-``<~<(rDqJqRfDyxoa^6V? z;&%pt`rjcFKgmk>t;4k&x1mxhAjs9|+p8O^nV6}ltbrRc7}N^1J6-70vm2KhrQljc z6_jc%lx`dP_Ueu%ixs{m5B&Y?R}h>oj13*f`k-o}AgKiDK6K7z#_&{d+ORG#4B^htD1RVhcu%3dWZNLJ;`f;C4B&Z*MMQ zW0%3nDez+ek_N6^yo`SR`f?gbIH9kP$ApQK@lNz?L`2Ty&E%ZwKjiiC5(DHQDCj+m z8M6SpPMt=^@e+)mxEva_8WY0aV8FYw)8Xyo!#1+Aw!_0{;Cud|6wr0|)-|E>&UNAT z&F_T3z~20P@n7ExXG$*#)er6n0|&e+RNcEN40>&#@Sw6nxOe+MLYIKyLeG~&gj3gA zg)`T!!i4YwzE;GWg--r`gsb0N;C;h`hOzBC72gXZM+|3sqF*Tm6g5Tj{_F+F+kXf( zPn}qjbcU6kxM(zYI-{`(u!jXHQXl~!L4|~dVQ)bRViHTZlxU7hQl$unj9xH;fUnP^i9!eMv7ZndJ_;eg6$$K zRI9ahH*svoV)%I(_)AA@R$mkz;wZ>qdHGR{92tQtbP@20GBG2DGg$R-j)$O{wRnu5*SQqjT7gxG}(alE*Yosk1_Zn0P)ce$XH%itXlfa2pP zppz>wI&>WChCtCpDRsMCFnV~PuC9&&5>N`17#{oX2F9QyVbKCzRO7`(M=&XT8jFRT z(;(sSH>1OWu3b8_vT2_78}xb%8#aXZP;SYNR;y)4w1>b@1Eam2(L gFLlD-+Og>Gzjg(rgq=<}+<5FeBYSp&3)(Rp5Lh`n}mv`TCm(Dqlo1y+Q_x<<&|M}1P&Uem#{{IOx zM=Z8&+lC}bpq9(!Aj>jnOcX_!rpZ0c(L2crf&k01`sZoPFpPdVlBIbXr=A+EA)VAa z>*-tO*$c`Y0U9IYr1WAXjx6;g>pYGz`gR&Q;mA=>`W(abPI{@a6b)>6V>t_Dvsq?< zCLPo?f3b4E-w)AB;rk!r2!%?Jh<8JCdtsP>u4mwOYal(e#^>|(vr6pJxT>mnsJ@9o zh$KWF5aOH0-GvEb=QA=#0U^y~GPw4t1sH#21A~mkVupG@RT#g&AUJTQ; zpsFr5GHB313@90bt=kWvEL09r6fkH&IoolVCEKDy1q~9AfL4HsH49LG-Q)aC zTgUSZBypaq!hn^yPZ~FIOZnzdKY-L^KkBOHwgJ`VYQ2@hs}DPonOo z$#{Ns7kYYP7!bOISzrLr)U4h0q;6&LJn}Mf#yc zbGFEm#g9S|L@1Kn5A42Qt^|bqUY^x(2SiC^`qSww1Ha?82RVd^L;`8uKzH~oiU$I> z&bf!pnd&+q0n=g%hK)>J(F<`?DCRDBons>eids6O_fzKa<_k+Yo#x$Pm?=(NQ8qzi;qwXBL4{6&0iVx> zo^wf@IDQ<-l!ZZ|5gdC*w@6+Q8e*bl$9mXyzILYu#ZeUW^7zt4t6*ESRSh)ETFBck zt7kC%*~=jcfFMfPe`p(AE*FYR3b+uJmJWbnDWIdEbf6D~MJ1Rt;YQ4!+rU7{F}CX% zCm_K>4_bD-$X@&XKBiq1M6~Q$3rUtaH(q|Zh1oJK6SQB+`0uwqja)8YdLz*=1Bu1+ zOw?XA3HRLjFef0{`r9X8Kyu}oCYvH9pi>3Q29`qe*zjwmsI8re?BHGm{Tf`S6|`^I zh$S^Eaco@-eTgJy{B{`X8|J~b6ewZcb zRFA@zZJVK>fStVHeEwvj5Kt{xy6|_r$ft%defn}p!wnP_c$qemN%kf%W6cQ6xaH^Y zt04s31-R#q$2n9Uj|VE3>(7Iy_ z+S+zP1l=nvP+CcXf3pu2dGScZ@22FNl`k}Lc&`7d{>M>PF zrBWPkx@-_T!$%F~{GdE>?hll(bWs^QZX|m{9@SN>;o{W!*-~h3H$Fc08Me1=$Kdio zSbX=r7+qZj+p^$tNt~$604=0#`025u7+X7mJtHGCXUt{>2ms9!8?U_9iL7qJM1qeI z8l&}7%2z`YB<$Y2jRDWQauJT4`VEFv4#!=K7Qv(WP+eUOMHP^w{1SZZ2#0};5ewC0 z$8k@YJb&Kp*t@q2{(uMZcmkU0K{^-5oLlCzft`D{LY8FA9R3369kgN?V|hHY)l@c8Ll2L34{ zD;n@z<-;3q?M1xDL}TMT{Hb#%Y}n}9vk}j)X<}uSWh0oamJeTJAmtV1h(uyY>XH7W z^Lc}ahWl8K0g(4joBgv!wC&l9ptlsMk8H#fVP=J>7TysM@TpL$^Zyy>3w?)PY+ zjlyf(C@c;j77rtqIFHDuK?v^)=-Sr~0^8BG3rD|t3ga(-2I4ng;_c5L<*Ir1%xS2K zg1%H1mL(wQSCBPiPGn-4fY8G^z{crBv@`}_*;%~3>m=`rh1163%$e_?dIgk~4n{}U z*Npn+@t5)Tq_ENR>9=cm=M)9YkhP;wJ$?iOLG&ecXqt*2&Lt2C`eE29c;#Z)TK*zT zwq;5>LXt@nS_>t`Wtj1zj(vBXKZ4tM=-6Y;xcV| zJ$AM?Lzdj|YDJI)9etT@6a+#@rlN=^!;p&IEKfSgo=l6WdA(ljd$|)+>!#q<{au*7 zr4kSdhG*d_kNDHYgXk5swkq%;lfoKK%XC;veqfd{4?uZa{{@D|trF z(7WdHBa@;FPmYt*G?RR7qXI^a5>c2n@?P7agFGNWw3sHTr$*j6%JbpiVg7O0AQ`8T ztiuS6IrozO8v6HZ8+-Z4nuKOVc-5N$u2|8egab*kybHfZdB1z>vindaWESvu?>kE984Zo1VMy^G>{M!N?Q1mWu@gJ%ea-C7&P;XhX2(JO4p-Wp zJLlYc|Nnc=J?EZLrk1HLUt&|gL~IGIR|yo}7)Di9tWpV0uZR^z!F63J7td-7hr_6j z!TF0>lF2&qnMrDbA<8zGW|2T3AlDHy!l4kuXNU1AL1s72!m=#v`C#!po^9<{xUNF?qUE%KLikqcD8Nn?R(Q zB?CR&yKg{}5W5fmZ4Zj-qNyq;PMn?@yW(Lw{<*F4zT#m|E?iq}9syy#)Vw)do;2jb z4;>qzrDZ^ZADUXr&;yUL_sJ2CEPf3^;<^J%xOe|Sgq4J!7c5MnY8vB{|0VRsDNg-i zL}Hw}|1pn*kQvV(WGXXS#h*C?B0Nf##fSIYBbB=5MJVwfc6$@vT(#8eo2DiE@2{l06cFI%a|6szHIp?iQH?k; z&)cR*KGjgGJ}XF2EE8;_pz;zsEHP(~M zpXF?vM5y;BD=sdXU|frQUIWVLT8w<5fT|`?fcj(&mnKaD z!K61;sTL&W_D|()C^RCwiPpM%54x`K_nr+E!Il5J59}Zu@ne0x*OQAmOOFkcNW}SU z=p7=ldZyEPlF1mCE?y>4=f|h%*iISS-$ry(n0fKAQ+pEQJ5qcbg;`Md1j+^ z%b*nSh$#m{yj^<^__37X`Ymp=u6uTNh&(h72Xc zH02F9tEttiWJG~-^5hWh9rIufRe5~ZYA#<+ORH!#Wo#pY=7*wbN(+d?H~!GI zaoy&H)C=~HaS<-RTVUx9*m-+P;aVW6rWET3~hZM2S1Fv24%|ID}V{}!2C zj$J!<^Xt8vICuUGm#3$wOEh3vMRe6i`n#3#tqMH-g9=vdO|bn5Saj+zp-_Zaq@MNb z?~uw@`d+}NM$x}|jePg0h+3^!&hpcqH`uaei&VxU5prf0%Q9(hOcAe5ucvIEGIT(wcG+fVSfxGJ3UNV%d1|svJdTJX_8v@x7#gi`T6CI|NI+lR}S zFUvE}P!1e8Aooq1HVF_qPft%55V^UzNKQ^hW@e_`ySuv)jYdVEz8&%emg^Wovchgh^|ksLP}C@3f}h}AIfJ9g|44(Qs-l`ADXbQ&*=e9oLX;+&DHbGPd$ z&BzP#ff5hi0ARhnUN2U!UM)&=K<6bTCFttvGQP%*8;4uBZpj{Xc&%T*UQ*8zFhX7f z0|Rm<9Er%C079V<9zTAJSS$wCpBn}MBN#n;v?vXA-q6s1($Z2%KhsPQO-)UxtgIB{ z1W$$&Krk4TEKHs}+3fLQ;>3xP6>@`JLlF}44==Kw>^yShh-}9HIehrAdEK>Zmw8q; z@87>))~;N+A~t$@dW?<|Q5}yQIZ}wo8NNLBg&+&RRw4Tn3=`fH2o{vZyNmzV20&YU?TQF39p5|Eg) zX3aACTeohNE+PP(g1SipQW#`!Z||UPGXU6zOi?@tH85NWbdUG7Yu5_1Ilh_V{{DXW z{eDrQP3;Jhl<&$NDmb(q$N`;FOcTkbStu$h!l_fIux8B~+`oTc+H%H>8KOfYjF4w( zm`?c4mhSBA6vlHDx3{;;C?*&MAYDKM^5AgD;hLHnK|U0OECS+u=FFMcy?eLRlX`~^ z9g^B}`Y{kqxt4;YV`<2d_>7n?;KQ|R*9Ngy9WoOvkIL!Or%_c^HE5dY9_K|`TAE=w zqoqSSCJ25LNJIt5bA|(Ko%jz6htZZTTg-=O*|KHkJHT~LKNV(yEleBy+A&%!2Zs*R z&jH02<%p(j6$3yQxVd4&2Jq8LBQ&sa<3`<<5zI7`Y$R-1S()q+1S6#*Mopm}os$>j z0nczvOG6!*$1DM(CweL~f&~i}$TJUIym(OzvW*xezhq1=bw+V^>SptIOwRrJjv1tI%30XUS{CKGs2}LIav!u2cGTeIq#>J0wrNy$cvSgoZ zr*jIUB;f4qY_XfZ?Yy1rw$M=al0-jk+BA#5pa_5gQe2Fl53Q}OL@nvzm@PQghEOnw znB_onQXa6Km|N3^m%qG? zuAOhl9znFUw3u0KeiKfeIu(q1@%QZrM>}8-1abZI0^tC;z`An4ym{gd;PT*7X{Hd0 zSz-oQ*Qu32T2;Mm*)g<~Wy^YV`72MO-wC`>`I}u=I!WC>&8oE(dhdwf12kJs%+_kj{?!h{Ld56g4W8*}2+oj#0k z*(e?dyS25|Zf9mOOYQ|xfM6`Zhq!lX%7 z;n61CtA0xib#!#tp2Q@q$o9gG7{0mFkC5$<4p64E-xHF2W+17-`gcdkBZ;bFGQc{L z(V?Vt-823A_}~h0P6jh8wf;W1!T~rez-a;RPfG#+N00y<4ip`0g*(!R{QP`5clYjH zAzks0U2uC6DU~6#DFblK4_T$>8 zlMxC8;PHAT6Kto1WFI1-AR5c^Bw`L6raLn;QzFf%sI}os$JwRcr`ZgJWH!*z++(fq zB{*^JgQwlGaN$A$X#OwYAYytSJa~Y2etiPVmyQd|Q>E`oChjpqumAKAqY_;R215vk z0-(cKupiykORSqWZ`#ZPMeEEnZ+`a|qEQZ*-+{bxP%EcgBaqh={4F9@nF00000NkvXXu0mjfS)s8u literal 0 HcmV?d00001 From 60a38d3ee3cbc9f9dac918a3c565ddf0279b5a8f Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Sat, 28 Oct 2023 18:47:38 +0200 Subject: [PATCH 02/14] Handle missing blocks --- src/main/java/kubatech/kubatech.java | 14 +++++++--- .../loaders/block/defc/DEFCCasingBlock.java | 28 +++++++++---------- .../block/defc/DEFCCasingItemBlock.java | 4 +-- .../GT_MetaTileEntity_DEFusionCrafter.java | 16 +++++------ 4 files changed, 34 insertions(+), 28 deletions(-) diff --git a/src/main/java/kubatech/kubatech.java b/src/main/java/kubatech/kubatech.java index 673e8c0c..90d93b8f 100644 --- a/src/main/java/kubatech/kubatech.java +++ b/src/main/java/kubatech/kubatech.java @@ -26,8 +26,6 @@ import java.util.Collection; import java.util.List; -import cpw.mods.fml.common.event.FMLMissingMappingsEvent; -import cpw.mods.fml.common.event.FMLModIdMappingEvent; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -40,6 +38,7 @@ import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLLoadCompleteEvent; +import cpw.mods.fml.common.event.FMLMissingMappingsEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.event.FMLServerAboutToStartEvent; @@ -48,9 +47,11 @@ import cpw.mods.fml.common.event.FMLServerStoppedEvent; import cpw.mods.fml.common.event.FMLServerStoppingEvent; import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; +import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import kubatech.api.enums.ItemList; import kubatech.api.helpers.ReflectionHelper; +import kubatech.loaders.BlockLoader; import kubatech.network.CustomTileEntityPacket; import kubatech.network.LoadConfigPacket; @@ -183,8 +184,13 @@ public void loadComplete(FMLLoadCompleteEvent event) { } @Mod.EventHandler - public void mapping(FMLMissingMappingsEvent){ - + public void missingMappings(FMLMissingMappingsEvent event) { + for (FMLMissingMappingsEvent.MissingMapping missingMapping : event.getAll()) { + if (missingMapping.name.equals("EMT:EMT_GTBLOCK_CASEING")) { + if (missingMapping.type == GameRegistry.Type.BLOCK) missingMapping.remap(BlockLoader.defcCasingBlock); + else missingMapping.remap(Item.getItemFromBlock(BlockLoader.defcCasingBlock)); + } + } } public static void debug(String message) { diff --git a/src/main/java/kubatech/loaders/block/defc/DEFCCasingBlock.java b/src/main/java/kubatech/loaders/block/defc/DEFCCasingBlock.java index ceb4055f..a4113227 100644 --- a/src/main/java/kubatech/loaders/block/defc/DEFCCasingBlock.java +++ b/src/main/java/kubatech/loaders/block/defc/DEFCCasingBlock.java @@ -27,19 +27,19 @@ public DEFCCasingBlock() { this.setResistance(30.0F); this.setCreativeTab(KT); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".0.name", "Naquadah Alloy Fusion Casing"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".1.name", "Bloody Ichorium Fusion Casing"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".2.name", "Draconium Fusion Casing"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".3.name", "Wyvern Fusion Casing"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".4.name", "Awakened Draconium Fusion Casing"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".5.name", "Chaotic Fusion Casing"); - - ItemList.DEFCCasingBase.set(new ItemStack(this, 1, 0)); - ItemList.DEFCCasingT1.set(new ItemStack(this, 1, 1)); - ItemList.DEFCCasingT2.set(new ItemStack(this, 1, 2)); - ItemList.DEFCCasingT3.set(new ItemStack(this, 1, 3)); - ItemList.DEFCCasingT4.set(new ItemStack(this, 1, 4)); - ItemList.DEFCCasingT5.set(new ItemStack(this, 1, 5)); + GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".7.name", "Naquadah Alloy Fusion Casing"); + GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".8.name", "Bloody Ichorium Fusion Casing"); + GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".9.name", "Draconium Fusion Casing"); + GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".10.name", "Wyvern Fusion Casing"); + GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".11.name", "Awakened Draconium Fusion Casing"); + GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".12.name", "Chaotic Fusion Casing"); + + ItemList.DEFCCasingBase.set(new ItemStack(this, 1, 7)); + ItemList.DEFCCasingT1.set(new ItemStack(this, 1, 8)); + ItemList.DEFCCasingT2.set(new ItemStack(this, 1, 9)); + ItemList.DEFCCasingT3.set(new ItemStack(this, 1, 10)); + ItemList.DEFCCasingT4.set(new ItemStack(this, 1, 11)); + ItemList.DEFCCasingT5.set(new ItemStack(this, 1, 12)); // Taking one texture slot :P Textures.BlockIcons.setCasingTexture((byte) 1, (byte) (15 + 48), TextureFactory.of(this, 0)); @@ -48,7 +48,7 @@ public DEFCCasingBlock() { @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { - return texture[meta]; + return texture[meta - 7]; } @Override diff --git a/src/main/java/kubatech/loaders/block/defc/DEFCCasingItemBlock.java b/src/main/java/kubatech/loaders/block/defc/DEFCCasingItemBlock.java index 7e140006..669e3a6d 100644 --- a/src/main/java/kubatech/loaders/block/defc/DEFCCasingItemBlock.java +++ b/src/main/java/kubatech/loaders/block/defc/DEFCCasingItemBlock.java @@ -24,8 +24,8 @@ public DEFCCasingItemBlock(Block block) { @Override @SuppressWarnings("unchecked") public void addInformation(ItemStack aStack, EntityPlayer aPlayer, List aList, boolean aF3_H) { - if (getDamage(aStack) > 0) - aList.add(StatCollector.translateToLocalFormatted("defc.casing.tip", getDamage(aStack))); + if (getDamage(aStack) > 7) + aList.add(StatCollector.translateToLocalFormatted("defc.casing.tip", getDamage(aStack) - 7)); super.addInformation(aStack, aPlayer, aList, aF3_H); } diff --git a/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_DEFusionCrafter.java b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_DEFusionCrafter.java index 696413ee..3f6eea85 100644 --- a/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_DEFusionCrafter.java +++ b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_DEFusionCrafter.java @@ -72,11 +72,11 @@ public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { private static final List> fusionCasingTiers = Arrays .asList(Pair.of(GregTech_API.sBlockCasings4, 6), Pair.of(GregTech_API.sBlockCasings4, 8)); private static final List> coreTiers = Arrays.asList( - Pair.of(BlockLoader.defcCasingBlock, 1), - Pair.of(BlockLoader.defcCasingBlock, 2), - Pair.of(BlockLoader.defcCasingBlock, 3), - Pair.of(BlockLoader.defcCasingBlock, 4), - Pair.of(BlockLoader.defcCasingBlock, 5)); + Pair.of(BlockLoader.defcCasingBlock, 8), + Pair.of(BlockLoader.defcCasingBlock, 9), + Pair.of(BlockLoader.defcCasingBlock, 10), + Pair.of(BlockLoader.defcCasingBlock, 11), + Pair.of(BlockLoader.defcCasingBlock, 12)); private static final IStructureDefinition STRUCTURE_DEFINITION = StructureDefinition .builder() .addShape( @@ -97,19 +97,19 @@ public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { .addElement( 'N', ofChain( - onElementPass(e -> e.mCasing++, ofBlock(BlockLoader.defcCasingBlock, 0)), + onElementPass(e -> e.mCasing++, ofBlock(BlockLoader.defcCasingBlock, 7)), ofHatchAdder(GT_MetaTileEntity_DEFusionCrafter::addEnergyInputToMachineList, CASING_INDEX, 1), ofHatchAdder(GT_MetaTileEntity_DEFusionCrafter::addInputToMachineList, CASING_INDEX, 1), ofHatchAdder(GT_MetaTileEntity_DEFusionCrafter::addOutputToMachineList, CASING_INDEX, 1), ofHatchAdder(GT_MetaTileEntity_DEFusionCrafter::addMaintenanceToMachineList, CASING_INDEX, 1))) - .addElement('n', onElementPass(e -> e.mCasing++, ofBlock(BlockLoader.defcCasingBlock, 0))) + .addElement('n', onElementPass(e -> e.mCasing++, ofBlock(BlockLoader.defcCasingBlock, 7))) .addElement('f', ofBlock(GregTech_API.sBlockCasings4, 7)) .addElement('F', ofBlocksTiered((Block b, int m) -> { if (b != GregTech_API.sBlockCasings4 || (m != 6 && m != 8)) return -2; return m == 6 ? 1 : 2; }, fusionCasingTiers, -1, (e, i) -> e.mFusionTierCasing = i, e -> e.mFusionTierCasing)) .addElement('R', ofBlocksTiered((Block b, int m) -> { - if (b != BlockLoader.defcCasingBlock || m < 1 || m > 5) return -2; + if (b != BlockLoader.defcCasingBlock || m < 8 || m > 12) return -2; return m; }, coreTiers, -1, (e, i) -> e.mTierCasing = i, e -> e.mTierCasing)) .build(); From 765de2e727bd59c0c29e09a1620afe3ef6c35560 Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Sun, 29 Oct 2023 12:19:42 +0100 Subject: [PATCH 03/14] dont crash --- src/main/java/kubatech/loaders/block/defc/DEFCCasingBlock.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/kubatech/loaders/block/defc/DEFCCasingBlock.java b/src/main/java/kubatech/loaders/block/defc/DEFCCasingBlock.java index a4113227..07da74b3 100644 --- a/src/main/java/kubatech/loaders/block/defc/DEFCCasingBlock.java +++ b/src/main/java/kubatech/loaders/block/defc/DEFCCasingBlock.java @@ -48,6 +48,7 @@ public DEFCCasingBlock() { @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { + if(meta < 7 || meta > 12) return texture[0]; return texture[meta - 7]; } From a7161433d9cfaa725f154e9a5f34f1338f5bbcb4 Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Sun, 29 Oct 2023 12:28:33 +0100 Subject: [PATCH 04/14] RA2 --- .../java/kubatech/loaders/DEFCRecipes.java | 166 +++++++++--------- .../loaders/block/defc/DEFCCasingBlock.java | 2 +- 2 files changed, 84 insertions(+), 84 deletions(-) diff --git a/src/main/java/kubatech/loaders/DEFCRecipes.java b/src/main/java/kubatech/loaders/DEFCRecipes.java index 6ba505d5..a98c1100 100644 --- a/src/main/java/kubatech/loaders/DEFCRecipes.java +++ b/src/main/java/kubatech/loaders/DEFCRecipes.java @@ -90,116 +90,116 @@ public static void addRecipes() { .specialValue(1) .addTo(sFusionCraftingRecipes); - /* - * addFusionCraftingRecipeNonOptimized( - * new ItemStack[] { 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) }, - * Materials.Sunnarium.getMolten(1440), - * GT_ModHandler.getModItem("DraconicEvolution", "draconicCore", 1, 0), - * GT_Values.NF, - * 400, - * 500000, - * 1); - */ - addFusionCraftingRecipeNonOptimized( - new ItemStack[] { GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Draconium, 8), + 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), }, - Materials.Neutronium.getMolten(1440), - GT_ModHandler.getModItem("DraconicEvolution", "wyvernCore", 1, 0), - GT_Values.NF, - 800, - 2_000_000, - 2); + 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(sFusionCraftingRecipes); + if (Loader.isModLoaded("supersolarpanel")) { - addFusionCraftingRecipeNonOptimized( - new ItemStack[] { GT_OreDictUnificator.get(OrePrefixes.plate, Materials.DraconiumAwakened, 12), + 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) }, - Materials.Infinity.getMolten(1440), - GT_ModHandler.getModItem("DraconicEvolution", "awakenedCore", 1, 0), - GT_Values.NF, - 1600, - 8_000_000, - 3); + 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(sFusionCraftingRecipes); } else { - addFusionCraftingRecipeNonOptimized( - new ItemStack[] { GT_OreDictUnificator.get(OrePrefixes.plate, Materials.DraconiumAwakened, 12), + 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) }, - Materials.Infinity.getMolten(1440), - GT_ModHandler.getModItem("DraconicEvolution", "awakenedCore", 1, 0), - GT_Values.NF, - 1600, - 8_000_000, - 3); + 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(sFusionCraftingRecipes); } - addFusionCraftingRecipeNonOptimized( - new ItemStack[] { GT_OreDictUnificator.get(OrePrefixes.plate, Materials.DraconiumAwakened, 16), + 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) }, - MaterialsUEVplus.SpaceTime.getMolten(1440), - GT_ModHandler.getModItem("DraconicEvolution", "chaoticCore", 1, 0), - GT_Values.NF, - 3200, - 24_000_000, - 4); + 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(sFusionCraftingRecipes); // ENERGY CORES - addFusionCraftingRecipe( - new ItemStack[] { GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Draconium, 8), + 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) }, - GT_ModHandler.getModItem("DraconicEvolution", "draconiumEnergyCore", 1, 0), - 1000, - 500_000, - 2); - - addFusionCraftingRecipe( - new ItemStack[] { GT_OreDictUnificator.get(OrePrefixes.plate, Materials.DraconiumAwakened, 8), + kubatech.api.enums.ItemList.DEFCWyvernSchematic.get(0L)) + .itemOutputs(GT_ModHandler.getModItem("DraconicEvolution", "draconiumEnergyCore", 1, 0)) + .eut(500_000) + .duration(1000) + .specialValue(2) + .addTo(sFusionCraftingRecipes); + + 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) }, - GT_ModHandler.getModItem("DraconicEvolution", "draconiumEnergyCore", 1, 1), - 2000, - 2_000_000, - 3); + kubatech.api.enums.ItemList.DEFCAwakenedSchematic.get(0L)) + .itemOutputs(GT_ModHandler.getModItem("DraconicEvolution", "draconiumEnergyCore", 1, 1)) + .eut(2_000_000) + .duration(2000) + .specialValue(3) + .addTo(sFusionCraftingRecipes); // Dragon Blood if (LoaderReference.GTPlusPlus) { - addFusionCraftingRecipeNonOptimized( - new ItemStack[] { new ItemStack(Blocks.dragon_egg, 0), - GT_OreDictUnificator.get(OrePrefixes.dust, Materials.DraconiumAwakened, 64) }, - Materials.Radon.getPlasma(144), - null, - new FluidStack(FluidRegistry.getFluid("molten.dragonblood"), 288), - 4200, - 1_966_080, - 3); - - addFusionCraftingRecipeNonOptimized( - new ItemStack[] { GT_ModHandler.getModItem("witchery", "infinityegg", 0), - GT_OreDictUnificator.get(OrePrefixes.dust, Materials.DraconiumAwakened, 64) }, - Materials.Radon.getPlasma(72), - null, - new FluidStack(FluidRegistry.getFluid("molten.dragonblood"), 432), - 3600, - 1_966_080, - 3); + GT_Values.RA.stdBuilder() + .itemInputs( + new ItemStack(Blocks.dragon_egg, 0), + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.DraconiumAwakened, 64)) + .fluidInputs(Materials.Radon.getPlasma(144)) + .fluidOutputs(new FluidStack(FluidRegistry.getFluid("molten.dragonblood"), 288)) + .eut(1_966_080) + .duration(4200) + .specialValue(3) + .addTo(sFusionCraftingRecipes); + + GT_Values.RA.stdBuilder() + .itemInputs( + GT_ModHandler.getModItem("witchery", "infinityegg", 0), + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.DraconiumAwakened, 64)) + .fluidInputs(Materials.Radon.getPlasma(72)) + .fluidOutputs(new FluidStack(FluidRegistry.getFluid("molten.dragonblood"), 432)) + .eut(1_966_080) + .duration(3600) + .specialValue(3) + .addTo(sFusionCraftingRecipes); } } } diff --git a/src/main/java/kubatech/loaders/block/defc/DEFCCasingBlock.java b/src/main/java/kubatech/loaders/block/defc/DEFCCasingBlock.java index 07da74b3..5a6b95ac 100644 --- a/src/main/java/kubatech/loaders/block/defc/DEFCCasingBlock.java +++ b/src/main/java/kubatech/loaders/block/defc/DEFCCasingBlock.java @@ -48,7 +48,7 @@ public DEFCCasingBlock() { @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { - if(meta < 7 || meta > 12) return texture[0]; + if (meta < 7 || meta > 12) return texture[0]; return texture[meta - 7]; } From e04319b3f6453939f721dba01fcfbff0434f5bb5 Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Sun, 29 Oct 2023 12:33:59 +0100 Subject: [PATCH 05/14] NEI handler --- .../java/kubatech/loaders/DEFCRecipes.java | 2 +- src/main/java/kubatech/nei/IMCForNEI.java | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/java/kubatech/loaders/DEFCRecipes.java b/src/main/java/kubatech/loaders/DEFCRecipes.java index a98c1100..a76c3f42 100644 --- a/src/main/java/kubatech/loaders/DEFCRecipes.java +++ b/src/main/java/kubatech/loaders/DEFCRecipes.java @@ -28,7 +28,7 @@ public class DEFCRecipes { public static final GT_Recipe.GT_Recipe_Map sFusionCraftingRecipes = new GT_Recipe.GT_Recipe_Map( new HashSet<>(16), - "emt.recipe.fusioncrafting", + "kubatech.defusioncrafter", "Draconic Evolution Fusion Crafter", null, GregTech.getResourcePath("textures/gui/basicmachines", "FusionCrafter"), diff --git a/src/main/java/kubatech/nei/IMCForNEI.java b/src/main/java/kubatech/nei/IMCForNEI.java index 2d593879..b7c75884 100644 --- a/src/main/java/kubatech/nei/IMCForNEI.java +++ b/src/main/java/kubatech/nei/IMCForNEI.java @@ -23,12 +23,31 @@ import net.minecraft.nbt.NBTTagCompound; import cpw.mods.fml.common.event.FMLInterModComms; +import kubatech.Tags; import kubatech.api.LoaderReference; public class IMCForNEI { public static void IMCSender() { if (LoaderReference.EnderIO) sendCatalyst("mobsinfo.mobhandler", "gregtech:gt.blockmachines:14201"); + if (LoaderReference.DraconicEvolution) { + sendGTStyledHandler("kubatech.defusioncrafter", "gregtech:gt.blockmachines:5001"); + sendCatalyst("kubatech.defusioncrafter", "gregtech:gt.blockmachines:5001"); + } + } + + private static void sendGTStyledHandler(String aName, String aBlock) { + NBTTagCompound aNBT = new NBTTagCompound(); + aNBT.setString("handler", aName); + aNBT.setString("modName", Tags.MODNAME); + aNBT.setString("modId", Tags.MODID); + aNBT.setBoolean("modRequired", true); + aNBT.setString("itemName", aBlock); + aNBT.setInteger("handlerHeight", 135); + aNBT.setInteger("handlerWidth", 166); + aNBT.setInteger("maxRecipesPerPage", 2); + aNBT.setInteger("yShift", 6); + FMLInterModComms.sendMessage("NotEnoughItems", "registerHandlerInfo", aNBT); } private static void sendCatalyst(String aName, String aStack, int aPriority) { From 021a2644d3be93a0cc0e19263bd9c1ece52a1879 Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Sun, 29 Oct 2023 14:50:17 +0100 Subject: [PATCH 06/14] Update dependencies.gradle --- dependencies.gradle | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index 801ea891..a6c55482 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -35,17 +35,17 @@ */ dependencies { - api('com.github.GTNewHorizons:GT5-Unofficial:5.09.44.36:dev') + api('com.github.GTNewHorizons:GT5-Unofficial:5.09.44.71:dev') api("com.github.GTNewHorizons:EnderCore:0.2.18:dev") - api("com.github.GTNewHorizons:EnderIO:2.5.2:dev") + api("com.github.GTNewHorizons:EnderIO:2.5.3:dev") api("com.github.GTNewHorizons:ForestryMC:4.6.14:dev") - api("com.github.GTNewHorizons:ModularUI:1.1.20:dev") - api("com.github.GTNewHorizons:Mobs-Info:0.1.8-GTNH:dev") + api("com.github.GTNewHorizons:ModularUI:1.1.22:dev") + api("com.github.GTNewHorizons:Mobs-Info:0.1.10-GTNH:dev") devOnlyNonPublishable("com.github.GTNewHorizons:Infernal-Mobs:1.7.9-GTNH:dev") //compileOnly("curse.maven:extrautilities-225561:2264384") { // transitive = false //} - compileOnly("com.github.GTNewHorizons:GTplusplus:1.10.17:dev") + compileOnly("com.github.GTNewHorizons:GTplusplus:1.10.24:dev") { transitive = false } @@ -61,15 +61,15 @@ dependencies { { transitive = false } - compileOnly("com.github.GTNewHorizons:bartworks:0.8.8:dev") + compileOnly("com.github.GTNewHorizons:bartworks:0.8.9:dev") { transitive = false } - compileOnly("com.github.GTNewHorizons:NewHorizonsCoreMod:2.2.18:dev") + compileOnly("com.github.GTNewHorizons:NewHorizonsCoreMod:2.2.32:dev") { transitive = false } - compileOnly("com.github.GTNewHorizons:BetterLoadingScreen:1.5.0-GTNH:dev") + compileOnly("com.github.GTNewHorizons:BetterLoadingScreen:1.5.2-GTNH:dev") { transitive = false } @@ -83,17 +83,17 @@ dependencies { */ // For testing - //runtimeOnly("com.github.GTNewHorizons:BetterLoadingScreen:1.5.0-GTNH:dev") - //runtimeOnly("com.github.GTNewHorizons:GTplusplus:1.10.17:dev") + //runtimeOnly("com.github.GTNewHorizons:BetterLoadingScreen:1.5.2-GTNH:dev") + //runtimeOnly("com.github.GTNewHorizons:GTplusplus:1.10.24:dev") //runtimeOnly("com.github.GTNewHorizons:harvestcraft:1.1.1-GTNH:dev") - //runtimeOnly("com.github.GTNewHorizons:NewHorizonsCoreMod:2.2.18:dev") - //runtimeOnly("com.github.GTNewHorizons:OpenBlocks:1.7.0-GTNH:dev") - //runtimeOnly("com.github.GTNewHorizons:bartworks:0.8.8:dev") + //runtimeOnly("com.github.GTNewHorizons:NewHorizonsCoreMod:2.2.32:dev") + //runtimeOnly("com.github.GTNewHorizons:OpenBlocks:1.7.1-GTNH:dev") + //runtimeOnly("com.github.GTNewHorizons:bartworks:0.8.9:dev") //runtimeOnly("com.github.GTNewHorizons:CraftTweaker:3.2.13:dev") //api("com.github.GTNewHorizons:SpecialMobs:3.4.3:dev") - //api("com.github.GTNewHorizons:twilightforest:2.5.0:dev") + //api("com.github.GTNewHorizons:twilightforest:2.5.1:dev") //api("com.github.GTNewHorizons:EnderZoo:1.0.23:dev") - runtimeOnly("com.github.GTNewHorizons:Draconic-Evolution:1.1.19-GTNH:dev") + runtimeOnly("com.github.GTNewHorizons:Draconic-Evolution:1.2.0-GTNH:dev") //runtimeOnly("thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev") //runtimeOnly("com.github.GTNewHorizons:BloodMagic:1.4.3:dev") //api("curse.maven:witchery-69673:2234410") From 8698c184705193eb4ca8e160ef42643a82053acc Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Sun, 29 Oct 2023 14:50:50 +0100 Subject: [PATCH 07/14] Add casing recipes and alternative dragonblood --- .../java/kubatech/loaders/DEFCRecipes.java | 92 +++++++++++++------ 1 file changed, 64 insertions(+), 28 deletions(-) diff --git a/src/main/java/kubatech/loaders/DEFCRecipes.java b/src/main/java/kubatech/loaders/DEFCRecipes.java index a76c3f42..fd8001be 100644 --- a/src/main/java/kubatech/loaders/DEFCRecipes.java +++ b/src/main/java/kubatech/loaders/DEFCRecipes.java @@ -43,38 +43,74 @@ public class DEFCRecipes { false, true).setSlotOverlay(false, false, UITexture.fullImage(Tags.MODID, "gui/slot/fusion_crafter")); - public static void addFusionCraftingRecipe(ItemStack[] inputs, FluidStack[] fluidinputs, ItemStack[] outputs, - FluidStack[] fluidoutputs, int aDuration, int aEUt, int aTier) { - sFusionCraftingRecipes - .addRecipe(true, inputs, outputs, null, fluidinputs, fluidoutputs, aDuration, aEUt, aTier); - } - - public static void addFusionCraftingRecipeNonOptimized(ItemStack[] inputs, FluidStack[] fluidinputs, - ItemStack[] outputs, FluidStack[] fluidoutputs, int aDuration, int aEUt, int aTier) { - sFusionCraftingRecipes - .addRecipe(false, inputs, outputs, null, fluidinputs, fluidoutputs, aDuration, aEUt, aTier); - } + public static void addRecipes() { - public static void addFusionCraftingRecipe(ItemStack[] inputs, ItemStack output, int aDuration, int aEUt, - int aTier) { - addFusionCraftingRecipe(inputs, null, new ItemStack[] { output }, null, aDuration, aEUt, aTier); - } + // Dragonblood recipe for magics haters + if (LoaderReference.GTPlusPlus) { + GT_Values.RA.addMixerRecipe( + new ItemStack[] { new ItemStack(Blocks.dragon_egg, 1), + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.DraconiumAwakened, 64L), + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.DraconiumAwakened, 64L) }, + new FluidStack[] { Materials.Radon.getPlasma(144) }, + new ItemStack[] { GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Ash, 8L) }, + new FluidStack[] { new FluidStack(FluidRegistry.getFluid("molten.dragonblood"), 288) }, + 14000, + 1966080); + } - // Use this if you don't want your recipes quantity to be splitted - public static void addFusionCraftingRecipeNonOptimized(ItemStack[] inputs, FluidStack fluidinput, ItemStack output, - FluidStack fluidoutput, int aDuration, int aEUt, int aTier) { - addFusionCraftingRecipeNonOptimized( - inputs, - new FluidStack[] { fluidinput }, - new ItemStack[] { output }, - new FluidStack[] { fluidoutput }, - aDuration, - aEUt, - aTier); + // Casings + + GT_Values.RA.addAssemblerRecipe( + new ItemStack[] { GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.NaquadahAlloy, 6L), + GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.NaquadahAlloy, 6L) }, + Materials.Void.getMolten(1152L), + kubatech.api.enums.ItemList.DEFCCasingBase.get(1), + 24000, + 491520); + GT_Values.RA.addAssemblerRecipe( + new ItemStack[] { GT_ModHandler.getModItem("dreamcraft", "tile.BloodyIchorium", 1, 0), + GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.Osmiridium, 6L) }, + Materials.Void.getMolten(1152L), + kubatech.api.enums.ItemList.DEFCCasingT1.get(1), + 24000, + 491520); + GT_Values.RA.addAssemblerRecipe( + new ItemStack[] { kubatech.api.enums.ItemList.DEFCCasingT1.get(1), + GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.Draconium, 6L), + GT_ModHandler.getModItem("DraconicEvolution", "draconicCore", 1, 0) }, + Materials.Void.getMolten(2304L), + kubatech.api.enums.ItemList.DEFCCasingT2.get(1), + 24000, + 491520); // uv + GT_Values.RA.addAssemblerRecipe( + new ItemStack[] { kubatech.api.enums.ItemList.DEFCCasingT2.get(1), + GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.CosmicNeutronium, 6L), + GT_ModHandler.getModItem("DraconicEvolution", "wyvernCore", 2, 0) }, + Materials.Void.getMolten(4608L), + kubatech.api.enums.ItemList.DEFCCasingT3.get(1), + 12000, + 1996080); // uhv, you need uhv to get the thing anyway? + GT_Values.RA.addAssemblerRecipe( + new ItemStack[] { kubatech.api.enums.ItemList.DEFCCasingT3.get(1), + GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.DraconiumAwakened, 6L), + GT_ModHandler.getModItem("DraconicEvolution", "awakenedCore", 3, 0) }, + Materials.Void.getMolten(9216L), + kubatech.api.enums.ItemList.DEFCCasingT4.get(1), + 12000, + 7864320); // uev + GT_Values.RA.addAssemblerRecipe( + new ItemStack[] { kubatech.api.enums.ItemList.DEFCCasingT4.get(1), + GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.Infinity, 6L), + GT_ModHandler.getModItem("DraconicEvolution", "chaoticCore", 4, 0) }, + Materials.Void.getMolten(18432L), + kubatech.api.enums.ItemList.DEFCCasingT5.get(1), + 12000, + 31457280); // uiv, use the multi + + fusionRecipes(); } - public static void addRecipes() { - + private static void fusionRecipes(){ // CORES GT_Values.RA.stdBuilder() From 7ee9d35bfa328ed74eb0bcd28c85f3ee609d2ce1 Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Sun, 29 Oct 2023 14:58:00 +0100 Subject: [PATCH 08/14] RA2 --- .../java/kubatech/loaders/DEFCRecipes.java | 118 ++++++++++-------- 1 file changed, 67 insertions(+), 51 deletions(-) diff --git a/src/main/java/kubatech/loaders/DEFCRecipes.java b/src/main/java/kubatech/loaders/DEFCRecipes.java index fd8001be..4389ec38 100644 --- a/src/main/java/kubatech/loaders/DEFCRecipes.java +++ b/src/main/java/kubatech/loaders/DEFCRecipes.java @@ -2,6 +2,8 @@ import static gregtech.api.enums.GT_Values.E; import static gregtech.api.enums.Mods.GregTech; +import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sAssemblerRecipes; +import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sMixerRecipes; import java.util.HashSet; @@ -47,70 +49,84 @@ public static void addRecipes() { // Dragonblood recipe for magics haters if (LoaderReference.GTPlusPlus) { - GT_Values.RA.addMixerRecipe( - new ItemStack[] { new ItemStack(Blocks.dragon_egg, 1), + 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) }, - new FluidStack[] { Materials.Radon.getPlasma(144) }, - new ItemStack[] { GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Ash, 8L) }, - new FluidStack[] { new FluidStack(FluidRegistry.getFluid("molten.dragonblood"), 288) }, - 14000, - 1966080); + 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(sMixerRecipes); } // Casings - GT_Values.RA.addAssemblerRecipe( - new ItemStack[] { GT_OreDictUnificator.get(OrePrefixes.frameGt, Materials.NaquadahAlloy, 6L), - GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.NaquadahAlloy, 6L) }, - Materials.Void.getMolten(1152L), - kubatech.api.enums.ItemList.DEFCCasingBase.get(1), - 24000, - 491520); - GT_Values.RA.addAssemblerRecipe( - new ItemStack[] { GT_ModHandler.getModItem("dreamcraft", "tile.BloodyIchorium", 1, 0), - GT_OreDictUnificator.get(OrePrefixes.plateDense, Materials.Osmiridium, 6L) }, - Materials.Void.getMolten(1152L), - kubatech.api.enums.ItemList.DEFCCasingT1.get(1), - 24000, - 491520); - GT_Values.RA.addAssemblerRecipe( - new ItemStack[] { kubatech.api.enums.ItemList.DEFCCasingT1.get(1), + 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(sAssemblerRecipes); + 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(sAssemblerRecipes); + 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) }, - Materials.Void.getMolten(2304L), - kubatech.api.enums.ItemList.DEFCCasingT2.get(1), - 24000, - 491520); // uv - GT_Values.RA.addAssemblerRecipe( - new ItemStack[] { kubatech.api.enums.ItemList.DEFCCasingT2.get(1), + 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(sAssemblerRecipes); + 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) }, - Materials.Void.getMolten(4608L), - kubatech.api.enums.ItemList.DEFCCasingT3.get(1), - 12000, - 1996080); // uhv, you need uhv to get the thing anyway? - GT_Values.RA.addAssemblerRecipe( - new ItemStack[] { kubatech.api.enums.ItemList.DEFCCasingT3.get(1), + 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(sAssemblerRecipes); + 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) }, - Materials.Void.getMolten(9216L), - kubatech.api.enums.ItemList.DEFCCasingT4.get(1), - 12000, - 7864320); // uev - GT_Values.RA.addAssemblerRecipe( - new ItemStack[] { kubatech.api.enums.ItemList.DEFCCasingT4.get(1), + 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(sAssemblerRecipes); + 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) }, - Materials.Void.getMolten(18432L), - kubatech.api.enums.ItemList.DEFCCasingT5.get(1), - 12000, - 31457280); // uiv, use the multi + 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(sAssemblerRecipes); fusionRecipes(); } - private static void fusionRecipes(){ + private static void fusionRecipes() { // CORES GT_Values.RA.stdBuilder() From 136a51457a47e9dc5dee23c08debb1001e3280a1 Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Sun, 29 Oct 2023 16:34:47 +0100 Subject: [PATCH 09/14] Fix overclock --- .../gregtech/multiblock/GT_MetaTileEntity_DEFusionCrafter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_DEFusionCrafter.java b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_DEFusionCrafter.java index 3f6eea85..32e1de04 100644 --- a/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_DEFusionCrafter.java +++ b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_DEFusionCrafter.java @@ -110,7 +110,7 @@ public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { }, fusionCasingTiers, -1, (e, i) -> e.mFusionTierCasing = i, e -> e.mFusionTierCasing)) .addElement('R', ofBlocksTiered((Block b, int m) -> { if (b != BlockLoader.defcCasingBlock || m < 8 || m > 12) return -2; - return m; + return m - 7; }, coreTiers, -1, (e, i) -> e.mTierCasing = i, e -> e.mTierCasing)) .build(); From d6148bad98716e6bb91018c6c30f78d50704990b Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Sun, 29 Oct 2023 16:35:03 +0100 Subject: [PATCH 10/14] Move lang entriers --- src/main/resources/assets/kubatech/lang/de_DE.lang | 2 ++ src/main/resources/assets/kubatech/lang/zh_CN.lang | 5 +++++ 2 files changed, 7 insertions(+) create mode 100644 src/main/resources/assets/kubatech/lang/de_DE.lang diff --git a/src/main/resources/assets/kubatech/lang/de_DE.lang b/src/main/resources/assets/kubatech/lang/de_DE.lang new file mode 100644 index 00000000..f9fd353c --- /dev/null +++ b/src/main/resources/assets/kubatech/lang/de_DE.lang @@ -0,0 +1,2 @@ + +kubaitem.defc_schematic_t1.tip=Diesen Bauplan kann man in Pluto Dungeons finden diff --git a/src/main/resources/assets/kubatech/lang/zh_CN.lang b/src/main/resources/assets/kubatech/lang/zh_CN.lang index 34c2446d..62e4c909 100644 --- a/src/main/resources/assets/kubatech/lang/zh_CN.lang +++ b/src/main/resources/assets/kubatech/lang/zh_CN.lang @@ -14,6 +14,11 @@ kubatech.command.config.usage=<选项> #Items kubaitem.fromcollection=此物品来自 kubaitem.notyours=那东西好像不是你的 +kubaitem.defc_schematic_t1.name=龙芯图纸 +kubaitem.defc_schematic_t1.tip=可在冥王星地牢找到相关图纸 +kubaitem.defc_schematic_t2.name=双足飞龙核心图纸 +kubaitem.defc_schematic_t3.name=觉醒核心图纸 +kubaitem.defc_schematic_t4.name=混沌核心图纸 #Tea kubaitem.tea.black_tea.name=红茶 From 51e89ee6e37e8b3a59e2e28701045538d3fb6101 Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Sun, 29 Oct 2023 16:35:25 +0100 Subject: [PATCH 11/14] Add conversion recipes --- .../java/kubatech/api/LoaderReference.java | 1 + .../java/kubatech/loaders/DEFCRecipes.java | 60 ++++++++++++++++--- 2 files changed, 54 insertions(+), 7 deletions(-) diff --git a/src/main/java/kubatech/api/LoaderReference.java b/src/main/java/kubatech/api/LoaderReference.java index 7bbb1db1..57a7077d 100644 --- a/src/main/java/kubatech/api/LoaderReference.java +++ b/src/main/java/kubatech/api/LoaderReference.java @@ -19,4 +19,5 @@ public class LoaderReference { public static final boolean Avaritia = Loader.isModLoaded("Avaritia"); public static final boolean ProjRedIllumination = Loader.isModLoaded("ProjRed|Illumination"); public static final boolean RandomThings = Loader.isModLoaded("RandomThings"); + public static final boolean ElectroMagicTools = Loader.isModLoaded("EMT"); } diff --git a/src/main/java/kubatech/loaders/DEFCRecipes.java b/src/main/java/kubatech/loaders/DEFCRecipes.java index 4389ec38..cdcf04c0 100644 --- a/src/main/java/kubatech/loaders/DEFCRecipes.java +++ b/src/main/java/kubatech/loaders/DEFCRecipes.java @@ -5,9 +5,11 @@ import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sAssemblerRecipes; import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sMixerRecipes; +import java.util.Arrays; import java.util.HashSet; 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; @@ -15,6 +17,7 @@ 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; @@ -124,6 +127,42 @@ public static void addRecipes() { .addTo(sAssemblerRecipes); 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; + sFusionCraftingRecipes.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() { @@ -140,7 +179,8 @@ private static void fusionRecipes() { .eut(500_000) .duration(400) .specialValue(1) - .addTo(sFusionCraftingRecipes); + .addTo(sFusionCraftingRecipes) + .forEach(DEFCRecipes::addOldHiddenRecipe); GT_Values.RA.stdBuilder() .itemInputs( @@ -154,7 +194,8 @@ private static void fusionRecipes() { .eut(2_000_000) .duration(800) .specialValue(2) - .addTo(sFusionCraftingRecipes); + .addTo(sFusionCraftingRecipes) + .forEach(DEFCRecipes::addOldHiddenRecipe); if (Loader.isModLoaded("supersolarpanel")) { GT_Values.RA.stdBuilder() @@ -169,7 +210,8 @@ private static void fusionRecipes() { .eut(8_000_000) .duration(1600) .specialValue(3) - .addTo(sFusionCraftingRecipes); + .addTo(sFusionCraftingRecipes) + .forEach(DEFCRecipes::addOldHiddenRecipe); } else { GT_Values.RA.stdBuilder() .itemInputs( @@ -183,7 +225,8 @@ private static void fusionRecipes() { .eut(8_000_000) .duration(1600) .specialValue(3) - .addTo(sFusionCraftingRecipes); + .addTo(sFusionCraftingRecipes) + .forEach(DEFCRecipes::addOldHiddenRecipe); } GT_Values.RA.stdBuilder() @@ -198,7 +241,8 @@ private static void fusionRecipes() { .eut(24_000_000) .duration(3200) .specialValue(4) - .addTo(sFusionCraftingRecipes); + .addTo(sFusionCraftingRecipes) + .forEach(DEFCRecipes::addOldHiddenRecipe); // ENERGY CORES @@ -213,7 +257,8 @@ private static void fusionRecipes() { .eut(500_000) .duration(1000) .specialValue(2) - .addTo(sFusionCraftingRecipes); + .addTo(sFusionCraftingRecipes) + .forEach(DEFCRecipes::addOldHiddenRecipe); GT_Values.RA.stdBuilder() .itemInputs( @@ -226,7 +271,8 @@ private static void fusionRecipes() { .eut(2_000_000) .duration(2000) .specialValue(3) - .addTo(sFusionCraftingRecipes); + .addTo(sFusionCraftingRecipes) + .forEach(DEFCRecipes::addOldHiddenRecipe); // Dragon Blood if (LoaderReference.GTPlusPlus) { From 32f1a8f02416f16e9935c47562252a2cf047aaa1 Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Sun, 29 Oct 2023 16:39:59 +0100 Subject: [PATCH 12/14] Add noOptimize --- src/main/java/kubatech/loaders/DEFCRecipes.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/kubatech/loaders/DEFCRecipes.java b/src/main/java/kubatech/loaders/DEFCRecipes.java index cdcf04c0..65085bec 100644 --- a/src/main/java/kubatech/loaders/DEFCRecipes.java +++ b/src/main/java/kubatech/loaders/DEFCRecipes.java @@ -286,6 +286,7 @@ private static void fusionRecipes() { .eut(1_966_080) .duration(4200) .specialValue(3) + .noOptimize() .addTo(sFusionCraftingRecipes); GT_Values.RA.stdBuilder() @@ -297,6 +298,7 @@ private static void fusionRecipes() { .eut(1_966_080) .duration(3600) .specialValue(3) + .noOptimize() .addTo(sFusionCraftingRecipes); } } From 8fc3c1ca1dace09f06c04159e48844f047a30f58 Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Sun, 29 Oct 2023 16:41:10 +0100 Subject: [PATCH 13/14] Update build.gradle --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index b74b980f..e59189c8 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,4 @@ -//version: 1696952014 +//version: 1697697256 /* DO NOT CHANGE THIS FILE! Also, you may replace this file at any time if there is an update available. @@ -798,7 +798,7 @@ dependencies { java17Dependencies("com.github.GTNewHorizons:lwjgl3ify:${lwjgl3ifyVersion}") } if (modId != 'hodgepodge') { - java17Dependencies('com.github.GTNewHorizons:Hodgepodge:2.3.7') + java17Dependencies('com.github.GTNewHorizons:Hodgepodge:2.3.17') } java17PatchDependencies("com.github.GTNewHorizons:lwjgl3ify:${lwjgl3ifyVersion}:forgePatches") {transitive = false} From 58072ece0e0718ce5ade74dac105de06bb9a7390 Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Sun, 29 Oct 2023 16:49:04 +0100 Subject: [PATCH 14/14] Add survival place --- .../GT_MetaTileEntity_DEFusionCrafter.java | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_DEFusionCrafter.java b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_DEFusionCrafter.java index 32e1de04..0aca357c 100644 --- a/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_DEFusionCrafter.java +++ b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_DEFusionCrafter.java @@ -2,9 +2,14 @@ import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock; import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlocksTiered; -import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofChain; import static com.gtnewhorizon.structurelib.structure.StructureUtility.onElementPass; import static com.gtnewhorizon.structurelib.structure.StructureUtility.transpose; +import static gregtech.api.enums.GT_HatchElement.Energy; +import static gregtech.api.enums.GT_HatchElement.InputBus; +import static gregtech.api.enums.GT_HatchElement.InputHatch; +import static gregtech.api.enums.GT_HatchElement.Maintenance; +import static gregtech.api.enums.GT_HatchElement.OutputBus; +import static gregtech.api.enums.GT_HatchElement.OutputHatch; import static gregtech.api.enums.Textures.BlockIcons.MACHINE_CASING_MAGIC; import static gregtech.api.enums.Textures.BlockIcons.MACHINE_CASING_MAGIC_ACTIVE; import static gregtech.api.enums.Textures.BlockIcons.MACHINE_CASING_MAGIC_ACTIVE_GLOW; @@ -13,7 +18,7 @@ import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_TELEPORTER_ACTIVE; import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_TELEPORTER_ACTIVE_GLOW; import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_TELEPORTER_GLOW; -import static gregtech.api.util.GT_StructureUtility.ofHatchAdder; +import static gregtech.api.util.GT_StructureUtility.buildHatchAdder; import static kubatech.api.Variables.StructureHologram; import static kubatech.api.Variables.buildAuthorList; @@ -27,7 +32,9 @@ import org.apache.commons.lang3.tuple.Pair; import org.jetbrains.annotations.NotNull; +import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable; import com.gtnewhorizon.structurelib.structure.IStructureDefinition; +import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; import com.gtnewhorizon.structurelib.structure.StructureDefinition; import gregtech.api.GregTech_API; @@ -47,7 +54,8 @@ import kubatech.loaders.BlockLoader; import kubatech.loaders.DEFCRecipes; -public class GT_MetaTileEntity_DEFusionCrafter extends KubaTechGTMultiBlockBase { +public class GT_MetaTileEntity_DEFusionCrafter extends KubaTechGTMultiBlockBase + implements ISurvivalConstructable { private static final int CASING_INDEX = (1 << 7) + (15 + 48); private int mTierCasing = 0; @@ -96,12 +104,11 @@ public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { })) // spotless:on .addElement( 'N', - ofChain( - onElementPass(e -> e.mCasing++, ofBlock(BlockLoader.defcCasingBlock, 7)), - ofHatchAdder(GT_MetaTileEntity_DEFusionCrafter::addEnergyInputToMachineList, CASING_INDEX, 1), - ofHatchAdder(GT_MetaTileEntity_DEFusionCrafter::addInputToMachineList, CASING_INDEX, 1), - ofHatchAdder(GT_MetaTileEntity_DEFusionCrafter::addOutputToMachineList, CASING_INDEX, 1), - ofHatchAdder(GT_MetaTileEntity_DEFusionCrafter::addMaintenanceToMachineList, CASING_INDEX, 1))) + buildHatchAdder(GT_MetaTileEntity_DEFusionCrafter.class) + .atLeast(InputBus, InputHatch, OutputBus, OutputHatch, Energy, Maintenance) + .casingIndex(CASING_INDEX) + .dot(1) + .buildAndChain(onElementPass(e -> e.mCasing++, ofBlock(BlockLoader.defcCasingBlock, 7)))) .addElement('n', onElementPass(e -> e.mCasing++, ofBlock(BlockLoader.defcCasingBlock, 7))) .addElement('f', ofBlock(GregTech_API.sBlockCasings4, 7)) .addElement('F', ofBlocksTiered((Block b, int m) -> { @@ -253,6 +260,11 @@ public void construct(ItemStack itemStack, boolean b) { buildPiece(STRUCTURE_PIECE_MAIN, itemStack, b, 2, 9, 0); } + @Override + public int survivalConstruct(ItemStack stackSize, int elementBudget, ISurvivalBuildEnvironment env) { + return survivialBuildPiece(STRUCTURE_PIECE_MAIN, stackSize, 2, 9, 0, elementBudget, env, true, true); + } + @Override public boolean supportsVoidProtection() { return true;