From e41a0889c5f498252691180b143c97b570b2fc6b Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Thu, 28 Nov 2024 12:01:03 -0600 Subject: Godforge hangover (#3396) Co-authored-by: GDCloud Co-authored-by: GDCloud <93287602+GDCloudstrike@users.noreply.github.com> Co-authored-by: Martin Robertz --- .../gregtech/api/gui/modularui/GTUITextures.java | 1 + .../java/gregtech/api/util/GTRecipeConstants.java | 6 + .../tectech/loader/recipe/BaseRecipeLoader.java | 1 + src/main/java/tectech/loader/recipe/Godforge.java | 220 +- .../recipe/GodforgeUpgradeCostFrontend.java | 74 + .../java/tectech/recipe/TecTechRecipeMaps.java | 12 + .../tectech/thing/block/RenderForgeOfGods.java | 4 +- .../tectech/thing/block/TileEntityForgeOfGods.java | 2 +- .../java/tectech/thing/gui/TecTechUITextures.java | 3 + .../godforge/ForgeOfGodsRingsStructureString.java | 5105 ------------------ .../multi/godforge/ForgeOfGodsStructureString.java | 5435 -------------------- .../multi/godforge/ForgeOfGodsUI.java | 549 -- .../multi/godforge/MTEBaseModule.java | 1 + .../multi/godforge/MTEExoticModule.java | 178 +- .../multi/godforge/MTEForgeOfGods.java | 2368 +++------ .../multi/godforge/MTEMoltenModule.java | 10 +- .../multi/godforge/MTEPlasmaModule.java | 10 +- .../multi/godforge/MTESmeltingModule.java | 12 +- .../multi/godforge/color/ForgeOfGodsStarColor.java | 29 +- .../structure/ForgeOfGodsRingsStructureString.java | 5105 ++++++++++++++++++ .../structure/ForgeOfGodsStructureString.java | 5435 ++++++++++++++++++++ .../multi/godforge/upgrade/ForgeOfGodsUpgrade.java | 475 ++ .../multi/godforge/upgrade/UpgradeStorage.java | 285 + .../multi/godforge/util/ForgeOfGodsUI.java | 908 ++++ .../multi/godforge/util/GodforgeMath.java | 298 ++ .../multi/godforge/util/MilestoneFormatter.java | 47 + .../multi/godforge/util/MilestoneIcon.java | 46 + .../multi/godforge/util/UpgradeColor.java | 72 + src/main/java/tectech/util/GodforgeMath.java | 296 -- 29 files changed, 13884 insertions(+), 13103 deletions(-) create mode 100644 src/main/java/tectech/recipe/GodforgeUpgradeCostFrontend.java delete mode 100644 src/main/java/tectech/thing/metaTileEntity/multi/godforge/ForgeOfGodsRingsStructureString.java delete mode 100644 src/main/java/tectech/thing/metaTileEntity/multi/godforge/ForgeOfGodsStructureString.java delete mode 100644 src/main/java/tectech/thing/metaTileEntity/multi/godforge/ForgeOfGodsUI.java create mode 100644 src/main/java/tectech/thing/metaTileEntity/multi/godforge/structure/ForgeOfGodsRingsStructureString.java create mode 100644 src/main/java/tectech/thing/metaTileEntity/multi/godforge/structure/ForgeOfGodsStructureString.java create mode 100644 src/main/java/tectech/thing/metaTileEntity/multi/godforge/upgrade/ForgeOfGodsUpgrade.java create mode 100644 src/main/java/tectech/thing/metaTileEntity/multi/godforge/upgrade/UpgradeStorage.java create mode 100644 src/main/java/tectech/thing/metaTileEntity/multi/godforge/util/ForgeOfGodsUI.java create mode 100644 src/main/java/tectech/thing/metaTileEntity/multi/godforge/util/GodforgeMath.java create mode 100644 src/main/java/tectech/thing/metaTileEntity/multi/godforge/util/MilestoneFormatter.java create mode 100644 src/main/java/tectech/thing/metaTileEntity/multi/godforge/util/MilestoneIcon.java create mode 100644 src/main/java/tectech/thing/metaTileEntity/multi/godforge/util/UpgradeColor.java delete mode 100644 src/main/java/tectech/util/GodforgeMath.java (limited to 'src/main/java') diff --git a/src/main/java/gregtech/api/gui/modularui/GTUITextures.java b/src/main/java/gregtech/api/gui/modularui/GTUITextures.java index 2e0fc114d9..499f043af1 100644 --- a/src/main/java/gregtech/api/gui/modularui/GTUITextures.java +++ b/src/main/java/gregtech/api/gui/modularui/GTUITextures.java @@ -537,6 +537,7 @@ public class GTUITextures { public static final UITexture PICTURE_SLOTS_HOLO_3BY3 = UITexture .fullImage(GregTech.ID, "gui/picture/slots_holo_3by3"); public static final UITexture PICTURE_ARROW_DOUBLE = UITexture.fullImage(GregTech.ID, "gui/picture/arrow_double"); + public static final UITexture PICTURE_ARROW_GRAY = UITexture.fullImage(GregTech.ID, "gui/picture/arrow_gray"); public static final UITexture PICTURE_SUPER_BUFFER = UITexture.fullImage(GregTech.ID, "gui/picture/super_buffer"); public static final UITexture PICTURE_SQUARE_LIGHT_GRAY = UITexture .fullImage(GregTech.ID, "gui/picture/square_light_gray"); diff --git a/src/main/java/gregtech/api/util/GTRecipeConstants.java b/src/main/java/gregtech/api/util/GTRecipeConstants.java index 883f1060ac..f0e4cacd65 100644 --- a/src/main/java/gregtech/api/util/GTRecipeConstants.java +++ b/src/main/java/gregtech/api/util/GTRecipeConstants.java @@ -129,6 +129,12 @@ public class GTRecipeConstants { public static final RecipeMetadataKey FOG_PLASMA_MULTISTEP = SimpleRecipeMetadataKey .create(Boolean.class, "fog_plasma_multistep"); + /** + * FOG Shortened upgrade name. + */ + public static final RecipeMetadataKey FOG_UPGRADE_NAME_SHORT = SimpleRecipeMetadataKey + .create(String.class, "fog_plasma_upgrade_name_short"); + /** * DEFC Casing tier. */ diff --git a/src/main/java/tectech/loader/recipe/BaseRecipeLoader.java b/src/main/java/tectech/loader/recipe/BaseRecipeLoader.java index 180e8514f4..445dd9c069 100644 --- a/src/main/java/tectech/loader/recipe/BaseRecipeLoader.java +++ b/src/main/java/tectech/loader/recipe/BaseRecipeLoader.java @@ -46,5 +46,6 @@ public class BaseRecipeLoader { } else { Godforge.runDevEnvironmentRecipes(); } + Godforge.addFakeUpgradeCostRecipes(); } } diff --git a/src/main/java/tectech/loader/recipe/Godforge.java b/src/main/java/tectech/loader/recipe/Godforge.java index 981f6b139a..51be5b9e7f 100644 --- a/src/main/java/tectech/loader/recipe/Godforge.java +++ b/src/main/java/tectech/loader/recipe/Godforge.java @@ -11,9 +11,10 @@ import static gregtech.api.util.GTRecipeConstants.COIL_HEAT; import static gregtech.api.util.GTRecipeConstants.FOG_EXOTIC_TIER; import static gregtech.api.util.GTRecipeConstants.FOG_PLASMA_MULTISTEP; import static gregtech.api.util.GTRecipeConstants.FOG_PLASMA_TIER; +import static gregtech.api.util.GTRecipeConstants.FOG_UPGRADE_NAME_SHORT; import static tectech.recipe.TecTechRecipeMaps.godforgeExoticMatterRecipes; import static tectech.recipe.TecTechRecipeMaps.godforgePlasmaRecipes; -import static tectech.util.GodforgeMath.getRandomIntInRange; +import static tectech.thing.metaTileEntity.multi.godforge.util.GodforgeMath.getRandomIntInRange; import java.util.ArrayList; import java.util.Arrays; @@ -26,6 +27,8 @@ import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.oredict.OreDictionary; +import org.apache.commons.lang3.ArrayUtils; + import goodgenerator.items.GGMaterial; import goodgenerator.util.ItemRefer; import gregtech.api.enums.GTValues; @@ -47,6 +50,7 @@ import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; import tectech.recipe.TecTechRecipeMaps; import tectech.thing.CustomItemList; +import tectech.thing.metaTileEntity.multi.godforge.upgrade.ForgeOfGodsUpgrade; public class Godforge implements Runnable { @@ -55,7 +59,6 @@ public class Godforge implements Runnable { public static final HashMap exoticModulePlasmaItemMap = new HashMap<>(); public static final HashMap exoticModulePlasmaFluidMap = new HashMap<>(); public static final HashMap exoticModuleMagmatterItemMap = new HashMap<>(); - public static final HashMap godforgeUpgradeMats = new HashMap<>(); public static final List quarkGluonFluidItemsForNEI = new ArrayList<>(); public static final List quarkGluonItemsForNEI = new ArrayList<>(); public static final List magmatterTimeFluidItemsForNEI = new ArrayList<>(); @@ -688,83 +691,154 @@ public class Godforge implements Runnable { // Godforge upgrade materials if (EternalSingularity.isModLoaded() && GalaxySpace.isModLoaded()) { - godforgeUpgradeMats.put( - 0, - new ItemStack[] { GTOreDictUnificator.get(OrePrefixes.frameGt, Materials.SuperconductorUIVBase, 64), - ItemList.SuperconductorComposite.get(32), - GGMaterial.metastableOganesson.get(OrePrefixes.gearGt, 16), - getModItem(EternalSingularity.ID, "eternal_singularity", 8L), ItemList.Robot_Arm_UIV.get(64L), - ItemList.Field_Generator_UEV.get(64L) }); - - godforgeUpgradeMats.put( - 5, - new ItemStack[] { GregtechItemList.Mega_AlloyBlastSmelter.get(16L), - ItemList.Casing_Coil_Hypogen.get(64L), - CustomItemList.Godforge_HarmonicPhononTransmissionConduit.get(32L), - getModItem(EternalSingularity.ID, "eternal_singularity", 16L), - ItemRefer.Field_Restriction_Coil_T3.get(48), ItemList.Robot_Arm_UIV.get(64L), - ItemList.Field_Generator_UEV.get(64L) }); - - godforgeUpgradeMats.put( - 7, - new ItemStack[] { CustomItemList.Godforge_StellarEnergySiphonCasing.get(8), - GregtechItemList.FusionComputer_UV3.get(8), GregtechItemList.Casing_Fusion_Internal2.get(64), - getModItem(GalaxySpace.ID, "item.DysonSwarmParts", 64, 3), MaterialsAlloy.QUANTUM.getPlateDense(48), - MaterialsElements.STANDALONE.RHUGNOR.getGear(32), - getModItem(EternalSingularity.ID, "eternal_singularity", 16L), ItemList.Robot_Arm_UIV.get(64L), - ItemList.Field_Generator_UEV.get(64L) }); - - godforgeUpgradeMats.put( - 11, - new ItemStack[] { CustomItemList.Godforge_StellarEnergySiphonCasing.get(16), - ItemRefer.Compact_Fusion_MK5.get(2), ItemRefer.Compact_Fusion_Coil_T4.get(64), - CustomItemList.Godforge_HarmonicPhononTransmissionConduit.get(16), - ItemList.Machine_Multi_TranscendentPlasmaMixer.get(4), - MaterialsElements.STANDALONE.RHUGNOR.getGear(64), - GTOreDictUnificator.get(OrePrefixes.gearGt, Materials.Ichorium, 64), - getModItem(EternalSingularity.ID, "eternal_singularity", 32L), ItemList.Robot_Arm_UIV.get(64L), - ItemList.Field_Generator_UEV.get(64L) }); - - godforgeUpgradeMats.put( - 26, - new ItemStack[] { GTOreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.SpaceTime, 64), - GTOreDictUnificator.get(OrePrefixes.frameGt, Materials.SuperconductorUMVBase, 64), - MaterialsElements.STANDALONE.HYPOGEN.getFrameBox(64), - MaterialsElements.STANDALONE.DRAGON_METAL.getFrameBox(64), - CustomItemList.EOH_Reinforced_Spatial_Casing.get(64), - CustomItemList.EOH_Infinite_Energy_Casing.get(8), ItemList.ZPM6.get(2), - ItemList.Field_Generator_UMV.get(32) }); - - godforgeUpgradeMats.put( - 29, - new ItemStack[] { GTOreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.WhiteDwarfMatter, 64), - GTOreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.BlackDwarfMatter, 64), - GTOreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.Eternity, 16), - GTOreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.Universium, 2), - CustomItemList.EOH_Infinite_Energy_Casing.get(64), - CustomItemList.StabilisationFieldGeneratorTier5.get(16), ItemList.ZPM6.get(6), - ItemList.Field_Generator_UMV.get(64) }); - - godforgeUpgradeMats.put( - 30, - new ItemStack[] { CustomItemList.Machine_Multi_QuarkGluonPlasmaModule.get(32), - CustomItemList.Godforge_StellarEnergySiphonCasing.get(64), - CustomItemList.StabilisationFieldGeneratorTier6.get(48), - ItemList.Transdimensional_Alignment_Matrix.get(8), ItemList.ZPM6.get(16), - ItemList.Robot_Arm_UMV.get(64), ItemList.Conveyor_Module_UMV.get(64) }); + ForgeOfGodsUpgrade.START.addExtraCost( + GTOreDictUnificator.get(OrePrefixes.frameGt, Materials.SuperconductorUIVBase, 64), + ItemList.SuperconductorComposite.get(32), + GGMaterial.metastableOganesson.get(OrePrefixes.gearGt, 16), + getModItem(EternalSingularity.ID, "eternal_singularity", 8L), + ItemList.Robot_Arm_UIV.get(64L), + ItemList.Field_Generator_UEV.get(64L)); + + ForgeOfGodsUpgrade.FDIM.addExtraCost( + GregtechItemList.Mega_AlloyBlastSmelter.get(16L), + ItemList.Casing_Coil_Hypogen.get(64L), + CustomItemList.Godforge_HarmonicPhononTransmissionConduit.get(32L), + getModItem(EternalSingularity.ID, "eternal_singularity", 16L), + ItemRefer.Field_Restriction_Coil_T3.get(48), + ItemList.Robot_Arm_UIV.get(64L), + ItemList.Field_Generator_UEV.get(64L)); + + ForgeOfGodsUpgrade.GPCI.addExtraCost( + CustomItemList.Godforge_StellarEnergySiphonCasing.get(8), + GregtechItemList.FusionComputer_UV3.get(8), + GregtechItemList.Casing_Fusion_Internal2.get(64), + getModItem(GalaxySpace.ID, "item.DysonSwarmParts", 64, 3), + MaterialsAlloy.QUANTUM.getPlateDense(48), + MaterialsElements.STANDALONE.RHUGNOR.getGear(32), + getModItem(EternalSingularity.ID, "eternal_singularity", 16L), + ItemList.Robot_Arm_UIV.get(64L), + ItemList.Field_Generator_UEV.get(64L)); + + ForgeOfGodsUpgrade.QGPIU.addExtraCost( + CustomItemList.Godforge_StellarEnergySiphonCasing.get(16), + ItemRefer.Compact_Fusion_MK5.get(2), + ItemRefer.Compact_Fusion_Coil_T4.get(64), + CustomItemList.Godforge_HarmonicPhononTransmissionConduit.get(16), + ItemList.Machine_Multi_TranscendentPlasmaMixer.get(4), + MaterialsElements.STANDALONE.RHUGNOR.getGear(64), + GTOreDictUnificator.get(OrePrefixes.gearGt, Materials.Ichorium, 64), + getModItem(EternalSingularity.ID, "eternal_singularity", 32L), + ItemList.Robot_Arm_UIV.get(64L), + ItemList.Field_Generator_UEV.get(64L)); + + ForgeOfGodsUpgrade.CD.addExtraCost( + GTOreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.SpaceTime, 64), + GTOreDictUnificator.get(OrePrefixes.frameGt, Materials.SuperconductorUMVBase, 64), + MaterialsElements.STANDALONE.HYPOGEN.getFrameBox(64), + MaterialsElements.STANDALONE.DRAGON_METAL.getFrameBox(64), + CustomItemList.EOH_Reinforced_Spatial_Casing.get(64), + CustomItemList.EOH_Infinite_Energy_Casing.get(8), + ItemList.ZPM6.get(2), + ItemList.Field_Generator_UMV.get(32)); + + ForgeOfGodsUpgrade.EE.addExtraCost( + GTOreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.WhiteDwarfMatter, 64), + GTOreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.BlackDwarfMatter, 64), + GTOreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.Eternity, 16), + GTOreDictUnificator.get(OrePrefixes.frameGt, MaterialsUEVplus.Universium, 2), + CustomItemList.EOH_Infinite_Energy_Casing.get(64), + CustomItemList.StabilisationFieldGeneratorTier5.get(16), + ItemList.ZPM6.get(6), + ItemList.Field_Generator_UMV.get(64)); + + ForgeOfGodsUpgrade.END.addExtraCost( + CustomItemList.Machine_Multi_QuarkGluonPlasmaModule.get(32), + CustomItemList.Godforge_StellarEnergySiphonCasing.get(64), + CustomItemList.StabilisationFieldGeneratorTier6.get(48), + ItemList.Transdimensional_Alignment_Matrix.get(8), + ItemList.ZPM6.get(16), + ItemList.Robot_Arm_UMV.get(64), + ItemList.Conveyor_Module_UMV.get(64)); } } public static void runDevEnvironmentRecipes() { // put something in here to not crash the game in dev environment when opening the manual insertion window - godforgeUpgradeMats.put(0, new ItemStack[] { new ItemStack(Blocks.cobblestone, 4) }); - godforgeUpgradeMats.put(5, new ItemStack[] { new ItemStack(Blocks.cobblestone, 8) }); - godforgeUpgradeMats.put(7, new ItemStack[] { new ItemStack(Blocks.cobblestone, 12) }); - godforgeUpgradeMats.put(11, new ItemStack[] { new ItemStack(Blocks.cobblestone, 16) }); - godforgeUpgradeMats.put(26, new ItemStack[] { new ItemStack(Blocks.cobblestone, 32) }); - godforgeUpgradeMats.put(29, new ItemStack[] { new ItemStack(Blocks.cobblestone, 48) }); - godforgeUpgradeMats.put(30, new ItemStack[] { new ItemStack(Blocks.cobblestone, 64) }); + ForgeOfGodsUpgrade.START.addExtraCost( + new ItemStack(Blocks.cobblestone, 4), + new ItemStack(Blocks.dirt, 12), + new ItemStack(Blocks.diamond_block, 8), + new ItemStack(Blocks.gold_block, 32)); + ForgeOfGodsUpgrade.FDIM.addExtraCost(new ItemStack(Blocks.cobblestone, 8)); + ForgeOfGodsUpgrade.GPCI.addExtraCost(new ItemStack(Blocks.cobblestone, 12)); + ForgeOfGodsUpgrade.QGPIU.addExtraCost(new ItemStack(Blocks.cobblestone, 16)); + ForgeOfGodsUpgrade.CD.addExtraCost(new ItemStack(Blocks.cobblestone, 32)); + ForgeOfGodsUpgrade.EE.addExtraCost(new ItemStack(Blocks.cobblestone, 48)); + ForgeOfGodsUpgrade.END.addExtraCost(new ItemStack(Blocks.cobblestone, 64)); + } + + public static void addFakeUpgradeCostRecipes() { + GTValues.RA.stdBuilder() + .itemInputs(ArrayUtils.addAll(ForgeOfGodsUpgrade.START.getExtraCost())) + .itemOutputs( + CustomItemList.Godforge_GravitonFlowModulatorTier1.get(1), + CustomItemList.Machine_Multi_SmeltingModule.get(1)) + .duration(1) + .eut(1) + .metadata(FOG_UPGRADE_NAME_SHORT, ForgeOfGodsUpgrade.START.getShortNameText()) + .fake() + .addTo(TecTechRecipeMaps.godforgeFakeUpgradeCostRecipes); + GTValues.RA.stdBuilder() + .itemInputs(ArrayUtils.addAll(ForgeOfGodsUpgrade.FDIM.getExtraCost())) + .itemOutputs(CustomItemList.Machine_Multi_MoltenModule.get(1)) + .duration(1) + .eut(1) + .metadata(FOG_UPGRADE_NAME_SHORT, ForgeOfGodsUpgrade.FDIM.getShortNameText()) + .fake() + .addTo(TecTechRecipeMaps.godforgeFakeUpgradeCostRecipes); + GTValues.RA.stdBuilder() + .itemInputs(ArrayUtils.addAll(ForgeOfGodsUpgrade.GPCI.getExtraCost())) + .itemOutputs(CustomItemList.Machine_Multi_PlasmaModule.get(1)) + .duration(1) + .eut(1) + .metadata(FOG_UPGRADE_NAME_SHORT, ForgeOfGodsUpgrade.GPCI.getShortNameText()) + .fake() + .addTo(TecTechRecipeMaps.godforgeFakeUpgradeCostRecipes); + GTValues.RA.stdBuilder() + .itemInputs(ArrayUtils.addAll(ForgeOfGodsUpgrade.QGPIU.getExtraCost())) + .itemOutputs(CustomItemList.Machine_Multi_QuarkGluonPlasmaModule.get(1)) + .fluidOutputs(MaterialsUEVplus.QuarkGluonPlasma.getFluid(1000)) + .duration(1) + .eut(1) + .metadata(FOG_UPGRADE_NAME_SHORT, ForgeOfGodsUpgrade.QGPIU.getShortNameText()) + .fake() + .addTo(TecTechRecipeMaps.godforgeFakeUpgradeCostRecipes); + GTValues.RA.stdBuilder() + .itemInputs(ArrayUtils.addAll(ForgeOfGodsUpgrade.CD.getExtraCost())) + .itemOutputs(CustomItemList.Godforge_GravitonFlowModulatorTier2.get(1)) + .duration(1) + .eut(1) + .metadata(FOG_UPGRADE_NAME_SHORT, ForgeOfGodsUpgrade.CD.getShortNameText()) + .fake() + .addTo(TecTechRecipeMaps.godforgeFakeUpgradeCostRecipes); + GTValues.RA.stdBuilder() + .itemInputs(ArrayUtils.addAll(ForgeOfGodsUpgrade.EE.getExtraCost())) + .itemOutputs(CustomItemList.Godforge_GravitonFlowModulatorTier3.get(1)) + .duration(1) + .eut(1) + .metadata(FOG_UPGRADE_NAME_SHORT, ForgeOfGodsUpgrade.EE.getShortNameText()) + .fake() + .addTo(TecTechRecipeMaps.godforgeFakeUpgradeCostRecipes); + GTValues.RA.stdBuilder() + .itemInputs(ArrayUtils.addAll(ForgeOfGodsUpgrade.END.getExtraCost())) + .itemOutputs(MaterialsUEVplus.GravitonShard.getGems(1)) + .fluidOutputs(MaterialsUEVplus.MagMatter.getMolten(576), Materials.Neutronium.getPlasma(1000)) + .duration(1) + .eut(1) + .metadata(FOG_UPGRADE_NAME_SHORT, ForgeOfGodsUpgrade.END.getShortNameText()) + .fake() + .addTo(TecTechRecipeMaps.godforgeFakeUpgradeCostRecipes); } public static void initMoltenModuleRecipes() { diff --git a/src/main/java/tectech/recipe/GodforgeUpgradeCostFrontend.java b/src/main/java/tectech/recipe/GodforgeUpgradeCostFrontend.java new file mode 100644 index 0000000000..aa81856171 --- /dev/null +++ b/src/main/java/tectech/recipe/GodforgeUpgradeCostFrontend.java @@ -0,0 +1,74 @@ +package tectech.recipe; + +import static gregtech.api.util.GTRecipeConstants.FOG_UPGRADE_NAME_SHORT; + +import java.util.List; + +import javax.annotation.ParametersAreNonnullByDefault; + +import net.minecraft.client.Minecraft; +import net.minecraft.util.EnumChatFormatting; + +import com.gtnewhorizons.modularui.api.math.Pos2d; +import com.gtnewhorizons.modularui.api.screen.ModularWindow; +import com.gtnewhorizons.modularui.common.widget.DrawableWidget; + +import gregtech.api.recipe.BasicUIPropertiesBuilder; +import gregtech.api.recipe.NEIRecipePropertiesBuilder; +import gregtech.api.recipe.RecipeMapFrontend; +import gregtech.api.util.MethodsReturnNonnullByDefault; +import gregtech.common.gui.modularui.UIHelper; +import gregtech.nei.RecipeDisplayInfo; +import tectech.thing.gui.TecTechUITextures; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +public class GodforgeUpgradeCostFrontend extends RecipeMapFrontend { + + public GodforgeUpgradeCostFrontend(BasicUIPropertiesBuilder uiPropertiesBuilder, + NEIRecipePropertiesBuilder neiPropertiesBuilder) { + super(uiPropertiesBuilder, neiPropertiesBuilder); + } + + @Override + public void addGregTechLogo(ModularWindow.Builder builder, Pos2d windowOffset) { + builder.widget( + new DrawableWidget().setDrawable(TecTechUITextures.PICTURE_GODFORGE_LOGO) + .setSize(18, 18) + .setPos(new Pos2d(151, 63).add(windowOffset))); + } + + @Override + public List getItemInputPositions(int itemInputCount) { + return UIHelper.getGridPositions(itemInputCount, 8, 17, 4); + } + + @Override + public List getItemOutputPositions(int itemOutputCount) { + return UIHelper.getGridPositions(itemOutputCount, 116, 26, 1); + } + + @Override + public List getFluidOutputPositions(int fluidOutputCount) { + return UIHelper.getGridPositions(fluidOutputCount, 134, 26, 1); + } + + @Override + protected void drawDurationInfo(RecipeDisplayInfo recipeInfo) {} + + @Override + protected void drawEnergyInfo(RecipeDisplayInfo recipeInfo) {} + + @Override + protected void drawSpecialInfo(RecipeDisplayInfo recipeInfo) { + String upgradeName = recipeInfo.recipe.getMetadataOrDefault(FOG_UPGRADE_NAME_SHORT, ""); + int width = Minecraft.getMinecraft().fontRenderer.getStringWidth(upgradeName); + if (width % 2 == 1) width -= 1; + int xOffset = 18 - width / 2 - 1; + recipeInfo.drawText(" ", 83, -76); + recipeInfo.drawText( + EnumChatFormatting.BLUE.toString() + EnumChatFormatting.UNDERLINE + EnumChatFormatting.BOLD + upgradeName, + 110 + xOffset, + 0); + } +} diff --git a/src/main/java/tectech/recipe/TecTechRecipeMaps.java b/src/main/java/tectech/recipe/TecTechRecipeMaps.java index d4908df5b7..de98a2c274 100644 --- a/src/main/java/tectech/recipe/TecTechRecipeMaps.java +++ b/src/main/java/tectech/recipe/TecTechRecipeMaps.java @@ -85,4 +85,16 @@ public class TecTechRecipeMaps { .logoPos(151, 63) .build(); + public static final RecipeMap godforgeFakeUpgradeCostRecipes = RecipeMapBuilder + .of("gt.recipe.upgrade_costs") + .maxIO(12, 2, 0, 2) + .addSpecialTexture(83, 38, 30, 13, GTUITextures.PICTURE_ARROW_GRAY) + .dontUseProgressBar() + .neiTransferRect(83, 38, 30, 13) + .frontend(GodforgeUpgradeCostFrontend::new) + .neiHandlerInfo( + builder -> builder.setDisplayStack(CustomItemList.Machine_Multi_ForgeOfGods.get(1)) + .setHeight(100)) + .build(); + } diff --git a/src/main/java/tectech/thing/block/RenderForgeOfGods.java b/src/main/java/tectech/thing/block/RenderForgeOfGods.java index 9091434490..af67c97d44 100644 --- a/src/main/java/tectech/thing/block/RenderForgeOfGods.java +++ b/src/main/java/tectech/thing/block/RenderForgeOfGods.java @@ -28,8 +28,8 @@ import com.gtnewhorizon.gtnhlib.client.renderer.shader.ShaderProgram; import com.gtnewhorizon.gtnhlib.client.renderer.vbo.VertexBuffer; import tectech.Reference; -import tectech.thing.metaTileEntity.multi.godforge.ForgeOfGodsRingsStructureString; -import tectech.thing.metaTileEntity.multi.godforge.ForgeOfGodsStructureString; +import tectech.thing.metaTileEntity.multi.godforge.structure.ForgeOfGodsRingsStructureString; +import tectech.thing.metaTileEntity.multi.godforge.structure.ForgeOfGodsStructureString; import tectech.util.StructureVBO; import tectech.util.TextureUpdateRequester; diff --git a/src/main/java/tectech/thing/block/TileEntityForgeOfGods.java b/src/main/java/tectech/thing/block/TileEntityForgeOfGods.java index a8a8992a63..0e18b08667 100644 --- a/src/main/java/tectech/thing/block/TileEntityForgeOfGods.java +++ b/src/main/java/tectech/thing/block/TileEntityForgeOfGods.java @@ -200,7 +200,7 @@ public class TileEntityForgeOfGods extends TileEntity { cycleStep = 0; } else { // update interp values to the next set, reset cycleStep then interpolate - cycleStep = -255; + cycleStep -= 255; cycleStarColors(); interpolateColors(); } diff --git a/src/main/java/tectech/thing/gui/TecTechUITextures.java b/src/main/java/tectech/thing/gui/TecTechUITextures.java index 89fb7c5b11..f8e6bbe59b 100644 --- a/src/main/java/tectech/thing/gui/TecTechUITextures.java +++ b/src/main/java/tectech/thing/gui/TecTechUITextures.java @@ -123,6 +123,8 @@ public class TecTechUITextures { .fullImage(MODID, "gui/overlay_button/furnace_mode_on"); public static final UITexture OVERLAY_BUTTON_FURNACE_MODE_OFF = UITexture .fullImage(MODID, "gui/overlay_button/furnace_mode_off"); + public static final UITexture OVERLAY_BUTTON_STATISTICS = UITexture + .fullImage(MODID, "gui/overlay_button/statistics"); public static final UITexture OVERLAY_CYCLIC_BLUE = UITexture.fullImage(MODID, "gui/overlay_button/cyclic_blue"); public static final UITexture OVERLAY_EJECTION_LOCKED = UITexture .fullImage(MODID, "gui/overlay_button/eject_disabled"); @@ -226,6 +228,7 @@ public class TecTechUITextures { .fullImage(MODID, "gui/picture/connector_red_opaque"); public static final UITexture SLOT_OUTLINE_GREEN = UITexture.fullImage(MODID, "gui/picture/green_selector"); public static final UITexture UNSELECTED_OPTION = UITexture.fullImage(MODID, "gui/picture/unselected_option"); + public static final UITexture GREEN_CHECKMARK_11x9 = UITexture.fullImage(MODID, "gui/picture/green_checkmark"); public static final UITexture PICTURE_GODFORGE_MILESTONE_CHARGE = UITexture .fullImage(MODID, "gui/picture/milestone_charge"); public static final UITexture PICTURE_GODFORGE_MILESTONE_CONVERSION = UITexture diff --git a/src/main/java/tectech/thing/metaTileEntity/multi/godforge/ForgeOfGodsRingsStructureString.java b/src/main/java/tectech/thing/metaTileEntity/multi/godforge/ForgeOfGodsRingsStructureString.java deleted file mode 100644 index fcff5c7026..0000000000 --- a/src/main/java/tectech/thing/metaTileEntity/multi/godforge/ForgeOfGodsRingsStructureString.java +++ /dev/null @@ -1,5105 +0,0 @@ -package tectech.thing.metaTileEntity.multi.godforge; - -import static tectech.util.TTUtility.replaceLetters; - -public abstract class ForgeOfGodsRingsStructureString { - - public static final String[][] SECOND_RING = { { - - " BBBBBBB ", - " BBCCCCCCCBB ", - " BBCC CCBB ", - " BBEC CEBB ", - " BEEC CEEB ", - " EEC CEE ", - " EC CE ", - " EC CCCCC CE ", - " C C C C ", - " C C C C ", - " C C C C ", - " C C C C ", - " C C C C ", - " C C C C ", - " C C C C ", - " EC CCCCC CE ", - " EC CE ", - " EEC CEE ", - " BEEC CEEB ", - " BBEC CEBB ", - " BBCC CCBB ", - " BBCCCCCCCBB ", - " BBBBBBB " }, - { " BBBBBBB ", - " BBCCCCCCCBB ", - " BBCC D CCBB ", - " BBEC D CEBB ", - " BBBEEC DD CEEBBB ", - " EEEEC D CEEEE ", - " EEEC DD CEEE ", - " EEEC CCCCC CEEE ", - " EEC CHHHHHC CEE ", - " EEC CHHHHHHHC CEE ", - " EEC CHHHHHHHC CEE ", - " EEC CHHHHHHHC CEE ", - " EEC CHHHHHHHC CEE ", - " EEC CHHHHHHHC CEE ", - " EEC CHHHHHC CEE ", - " EEEC CCCCC CEEE ", - " EEEC DD CEEE ", - " EEEEC D CEEEE ", - " BBBEEC DD CEEBBB ", - " BBEC D CEBB ", - " BBCC D CCBB ", - " BBCCCCCCCBB ", - " BBBBBBB " }, - { " BBBBBBB ", - " BBCCCCCCCBB ", - " BBCC CCBB ", - " BBEC CEBB ", - " BBBEEC CEEBBB ", - " BBBBEEEEC CEEEEBBBB ", - " EEEEEEEC CEEEEEEE ", - " EEEEEEEC CCCCC CEEEEEEE ", - " EEEEEEC C C CEEEEEE ", - " EEEEEEC C C CEEEEEE ", - " EEEEEEC C C CEEEEEE ", - " EEEEEEC C C CEEEEEE ", - " EEEEEEC C C CEEEEEE ", - " EEEEEEC C C CEEEEEE ", - " EEEEEEC C C CEEEEEE ", - " EEEEEEEC CCCCC CEEEEEEE ", - " EEEEEEEC CEEEEEEE ", - " BBBBEEEEC CEEEEBBBB ", - " BBBEEC CEEBBB ", - " BBEC CEBB ", - " BBCC CCBB ", - " BBCCCCCCCBB ", - " BBBBBBB " }, - { " ", - " ", - " ", - " ", - " BBB BBB ", - " BBBBEEE EEEBBBB ", - " BBBEEEEEEE EEEEEEEBBB ", - " EEEEEEEEEE EEEEEEEEEE ", - " EEEEEEEEEE EEEEEEEEEE ", - " EEEEEEEKKK KKKEEEEEEE ", - " EEEEEEEKKK KKKEEEEEEE ", - " EEEEEEEKKK KKKEEEEEEE ", - " EEEEEEEKKK KKKEEEEEEE ", - " EEEEEEEKKK KKKEEEEEEE ", - " EEEEEEEEEE EEEEEEEEEE ", - " EEEEEEEEEE EEEEEEEEEE ", - " BBBEEEEEEE EEEEEEEBBB ", - " BBBBEEE EEEBBBB ", - " BBB BBB ", - " ", - " ", - " ", - " " }, - { " ", - " ", - " ", - " ", - " ", - " BBBB BBBB ", - " BBBBBEEEE EEEEBBBBB ", - " EEEEEEEEE EEEEEEEEE ", - " EEEEEEEEE EEEEEEEEE ", - " EEEEEKKKK KKKKEEEEE ", - " EEEEEKKKK KKKKEEEEE ", - " EEEEEKKKK KKKKEEEEE ", - " EEEEEKKKK KKKKEEEEE ", - " EEEEEKKKK KKKKEEEEE ", - " EEEEEEEEE EEEEEEEEE ", - " EEEEEEEEE EEEEEEEEE ", - " BBBBBEEEE EEEEBBBBB ", - " BBBB BBBB ", - " ", - " ", - " ", - " ", - " " }, - { " ", - " ", - " ", - " ", - " ", - " ", - " BBBBB BBBBB ", - " BBBEEEEE EEEEEBBB ", - " EEEEEEEE EEEEEEEE ", - " EEEEEEEE EEEEEEEE ", - " EEEEEEKK KKEEEEEE ", - " EEEEEEKK KKEEEEEE ", - " EEEEEEKK KKEEEEEE ", - " EEEEEEEE EEEEEEEE ", - " EEEEEEEE EEEEEEEE ", - " BBBEEEEE EEEEEBBB ", - " BBBBB BBBBB ", - " ", - " ", - " ", - " ", - " ", - " " }, - { " ", - " ", - " ", - " ", - " ", - " ", - " BBB BBB ", - " BBBBBEEE EEEBBBBB ", - " EEEEEEEE EEEEEEEE ", - " EEEEEEEE EEEEEEEE ", - " EEEEEKKK KKKEEEEE ", - " EEEEEKKK KKKEEEEE ", - " EEEEEKKK KKKEEEEE ", - " EEEEEEEE EEEEEEEE ", - " EEEEEEEE EEEEEEEE ", - " BBBBBEEE EEEBBBBB ", - " BBB BBB ", - " ", - " ", - " ", - " ", - " ", - " " }, - { " ", - " ", - " ", - " ", - " ", - " ", - " ", - " BBBBBB BBBBBB ", - " EEEEEE EEEEEE ", - " EEEEEE EEEEEE ", - " EEEEEE EEEEEE ", - " EEEEKK KKEEEE ", - " EEEEEE EEEEEE ", - " EEEEEE EEEEEE ", - " EEEEEE EEEEEE ", - " BBBBBB BBBBBB ", - " ", - " ", - " ", - " ", - " ", - " ", - " " }, - { " ", - " ", - " ", - " ", - " ", - " ", - " ", - " BBBB BBBB ", - " BBEEEE EEEEBB ", - " EEEEEE EEEEEE ", - " EEEEEE EEEEEE ", - " EEEEKK KKEEEE ", - " EEEEEE EEEEEE ", - " EEEEEE EEEEEE ", - " BBEEEE EEEEBB ", - " BBBB BBBB ", - " ", - " ", - " ", - " ", - " ", - " ", - " " }, - { " ", - " ", - " ", - " ", - " ", - " ", - " ", - " BB BB ", - " BBBBEE EEBBBB ", - " EEEEEE EEEEEE ", - " EEEEEE EEEEEE ", - " EEEEKK KKEEEE ", - " EEEEEE EEEEEE ", - " EEEEEE EEEEEE ", - " BBBBEE EEBBBB ", - " BB BB ", - " ", - " ", - " ", - " ", - " ", - " ", - " " }, - { " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " BBBBB BBBBB ", - " EEEEE EEEEE ", - " EEEEE EEEEE ", - " EEEEK KEEEE ", - " EEEEE EEEEE ", - " EEEEE EEEEE ", - " BBBBB BBBBB ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " }, - { " ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " BBBBB BBBBB ", - " EEEEE EEEEE ", - " EEEEE EEEEE ", - " EEEKK KKEEE ", - " EEEEE EEEEE ", - " EEEEE EEEEE ", - " BBBBB BBBBB ", - " ", - " ", - " ", - " ", - " ", - " ", - " ", - " " }, - { "