diff options
Diffstat (limited to 'src/main/java')
17 files changed, 658 insertions, 21 deletions
diff --git a/src/main/java/kubatech/api/enums/ItemList.java b/src/main/java/kubatech/api/enums/ItemList.java index 41a57f988f..2eb4a3d889 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 5bc38d189e..673e8c0c89 100644 --- a/src/main/java/kubatech/kubatech.java +++ b/src/main/java/kubatech/kubatech.java @@ -26,6 +26,8 @@ import java.io.IOException; 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 class kubatech { @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 class kubatech { 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 e6f8d5b8ed..89a760d5ef 100644 --- a/src/main/java/kubatech/loaders/BlockLoader.java +++ b/src/main/java/kubatech/loaders/BlockLoader.java @@ -25,10 +25,11 @@ import net.minecraft.item.ItemBlock; 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 0000000000..6ba505d57b --- /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 5c3ec6cc02..c9d2a769d8 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.Beeeeee; import static kubatech.api.enums.ItemList.BlackTea; import static kubatech.api.enums.ItemList.BlackTeaLeaf; import static kubatech.api.enums.ItemList.BruisedTeaLeaf; +import static kubatech.api.enums.ItemList.DEFCAwakenedSchematic; +import static kubatech.api.enums.ItemList.DEFCChaoticSchematic; +import static kubatech.api.enums.ItemList.DEFCDraconicSchematic; +import static kubatech.api.enums.ItemList.DEFCWyvernSchematic; import static kubatech.api.enums.ItemList.EarlGrayTea; import static kubatech.api.enums.ItemList.FermentedTeaLeaf; import static kubatech.api.enums.ItemList.GreenTea; @@ -59,6 +63,13 @@ import static kubatech.api.enums.ItemList.WhiteTeaLeaf; import static kubatech.api.enums.ItemList.YellowTea; import static kubatech.api.enums.ItemList.YellowTeaLeaf; +import java.util.List; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StatCollector; + import cpw.mods.fml.common.registry.GameRegistry; import kubatech.loaders.item.ItemProxy; import kubatech.loaders.item.KubaItems; @@ -118,6 +129,21 @@ public class ItemLoader { 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<String> tooltipList, + boolean showDebugInfo) { + tooltipList + .add(EnumChatFormatting.GOLD + StatCollector.translateToLocal("kubaitem.defc_schematic_t1.tip")); + } + })); + DEFCWyvernSchematic.set(kubaitems.registerProxyItem(new ItemProxy("defc_schematic_t2"))); + DEFCAwakenedSchematic.set(kubaitems.registerProxyItem(new ItemProxy("defc_schematic_t3"))); + DEFCChaoticSchematic.set(kubaitems.registerProxyItem(new ItemProxy("defc_schematic_t4"))); + } } diff --git a/src/main/java/kubatech/loaders/RecipeLoader.java b/src/main/java/kubatech/loaders/RecipeLoader.java index 8b52707e32..c9925e1f8a 100644 --- a/src/main/java/kubatech/loaders/RecipeLoader.java +++ b/src/main/java/kubatech/loaders/RecipeLoader.java @@ -33,6 +33,7 @@ import static gregtech.api.util.GT_RecipeConstants.UniversalChemical; 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 gregtech.api.util.GT_Utility; 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 class RecipeLoader { : 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 0000000000..ceb4055f8c --- /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 0000000000..7e140006cd --- /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 index 86f403a0c8..b11dcec244 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 index a7b2f79e88..9025fbb402 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 index ac722358e1..d86745ab26 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 index 6964ef5152..77485f2a30 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 index d06466094a..206da6de1f 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.item.ItemStack; 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 index 059c873ad4..273690e296 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.tileentity.TileEntity; 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 4e37175cd7..9c27959aa1 100644 --- a/src/main/java/kubatech/loaders/item/ItemProxy.java +++ b/src/main/java/kubatech/loaders/item/ItemProxy.java @@ -72,6 +72,10 @@ public class ItemProxy { 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 a2952117ea..1addb1a887 100644 --- a/src/main/java/kubatech/tileentity/TeaAcceptorTile.java +++ b/src/main/java/kubatech/tileentity/TeaAcceptorTile.java @@ -54,7 +54,7 @@ import kubatech.api.enums.ItemList; 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 0000000000..696413ee55 --- /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<GT_MetaTileEntity_DEFusionCrafter> { + + 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<Pair<Block, Integer>> fusionCasingTiers = Arrays + .asList(Pair.of(GregTech_API.sBlockCasings4, 6), Pair.of(GregTech_API.sBlockCasings4, 8)); + private static final List<Pair<Block, Integer>> 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<GT_MetaTileEntity_DEFusionCrafter> STRUCTURE_DEFINITION = StructureDefinition + .<GT_MetaTileEntity_DEFusionCrafter>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<GT_MetaTileEntity_DEFusionCrafter> 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; + } + +} |