From 4908d5967c3dfeff5616c65144e701859b9e30a2 Mon Sep 17 00:00:00 2001 From: boubou19 Date: Tue, 27 Aug 2024 20:50:30 +0200 Subject: Config/gregtech.cfg (#2939) * first pass on config migration * second pass on config migration * removing bad configs * rename config classes and register them * move debug options to its own debug category * migrate pollution * finish migrating general config * removing useless config * finish GregTech.cfg port to GTNHLib * don't accidentally force panic mode in dev env * typo * defaults are now handled by the confg handler * remove dead config * force config save after defaults are being written * stop messing with the GregTech.cfg externally * removing comments * new underground fluid builder and porting default underground fluids to code * move config handlers of gregtech.cfg in their own package * process MachineStats.cfg * yeeted MaterialProperties.cfg * remove unused compat in GTNH * process OverpoweredStuff.cfg * process Other.cfg * ungregify some config variables * remove unused variables * fix Ids.cfg not being populated * delete duplicate printing of MTE IDs in GT5U clients * bump hodgepodge version to get mod phase timers * process Client.cfg * fix bad category naming * registering all the config handlers in gui * bump GTNHLib version * actually only registering client configs * use proper double arrays now * move GT ore mixes to patternbuilders * dead code * fix multifiles config not being handled properly * import class from NHCore * removing reflection * use enums for registration * yeet config for Asteroid dimensions * remove unused since 2015 enum entry * todo * rework oremix enums * imported dimension data in enums * convert old dirty predicate into proper one * hook gagreg onto the OreMixes enum * finally nuke worldgen.ore.mix config category! * hook gagreg small ores onto the SmallOres enum * imported dim values in enum * fix dirty work around in vm predicate * yeet unused classes * hook GT stones to GTStones enum * yeet all the remaining booleans in the worldgen category * port endasteroids category * port general category * deprecated * yeet unused bw compat * finish worldgen config migration * hardcode config into code * remove not generated config entry * remove Unification.cfg * fix build * migrate oreveins away from config * migrate small ores away from config * delete config parser * forgotten * fix EoH recipe crash in dev * fix GT NEI Ore Plugin config and csv paths * shade opencsv * rewrite csv generator * spotless apply --- src/main/java/gregtech/GT_Mod.java | 77 +- src/main/java/gregtech/api/GregTech_API.java | 23 +- .../java/gregtech/api/enums/ConfigCategories.java | 1 + src/main/java/gregtech/api/enums/Dimensions.java | 33 + src/main/java/gregtech/api/enums/GTStones.java | 398 ++++ .../gregtech/api/enums/ManualOreDictTweaks.java | 70 + src/main/java/gregtech/api/enums/Materials.java | 258 +-- src/main/java/gregtech/api/enums/Mods.java | 12 - src/main/java/gregtech/api/enums/OreMixes.java | 982 ++++++++ src/main/java/gregtech/api/enums/SmallOres.java | 555 +++++ .../gregtech/api/enums/UndergroundFluidNames.java | 43 + .../interfaces/metatileentity/IMetaTileEntity.java | 3 +- .../api/metatileentity/MetaPipeEntity.java | 3 +- .../api/metatileentity/MetaTileEntity.java | 3 +- .../implementations/GT_MetaPipeEntity_Cable.java | 10 - .../implementations/GT_MetaPipeEntity_Fluid.java | 5 +- .../GT_MetaTileEntity_MultiBlockBase.java | 21 +- .../GT_MetaTileEntity_Transformer.java | 3 +- .../gregtech/api/objects/GT_UO_DimensionList.java | 580 ++++- .../api/recipe/maps/LargeBoilerFuelBackend.java | 10 +- .../gregtech/api/util/GT_ClientPreference.java | 14 +- src/main/java/gregtech/api/util/GT_Config.java | 4 +- src/main/java/gregtech/api/world/GT_Worldgen.java | 74 +- .../java/gregtech/api/world/GT_Worldgen_Ore.java | 34 - .../api/world/GT_Worldgen_Ore_SingleBlock.java | 52 - .../GT_Worldgen_Ore_SingleBlock_UnderLava.java | 54 - .../java/gregtech/client/GT_GUI_ClientConfig.java | 66 +- src/main/java/gregtech/client/GT_GuiFactory.java | 20 +- src/main/java/gregtech/common/GT_Client.java | 23 +- src/main/java/gregtech/common/GT_Proxy.java | 237 +- .../gregtech/common/GT_Worldgen_GT_Ore_Layer.java | 71 +- .../common/GT_Worldgen_GT_Ore_SmallPieces.java | 64 +- .../java/gregtech/common/GT_Worldgen_Stone.java | 38 +- .../java/gregtech/common/GT_Worldgenerator.java | 34 +- src/main/java/gregtech/common/OreMixBuilder.java | 86 + src/main/java/gregtech/common/SmallOreBuilder.java | 60 + src/main/java/gregtech/common/StoneBuilder.java | 66 + .../config/client/ConfigColorModulation.java | 25 + .../common/config/client/ConfigInterface.java | 29 + .../common/config/client/ConfigPreference.java | 21 + .../common/config/client/ConfigRender.java | 46 + .../gregtech/common/config/client/ConfigWaila.java | 21 + .../common/config/gregtech/ConfigDebug.java | 79 + .../common/config/gregtech/ConfigFeatures.java | 34 + .../common/config/gregtech/ConfigGeneral.java | 254 +++ .../common/config/gregtech/ConfigHarvestLevel.java | 28 + .../common/config/gregtech/ConfigMachines.java | 147 ++ .../config/gregtech/ConfigOreDropBehavior.java | 24 + .../common/config/gregtech/ConfigPollution.java | 129 ++ .../machinestats/ConfigBronzeSolarBoiler.java | 32 + .../common/config/machinestats/ConfigMachines.java | 34 + .../config/machinestats/ConfigMassFabricator.java | 33 + .../ConfigMicrowaveEnergyTransmitter.java | 28 + .../machinestats/ConfigSteelSolarBoiler.java | 32 + .../config/machinestats/ConfigTeleporter.java | 28 + .../common/config/opstuff/ConfigGeneral.java | 48 + .../common/config/other/ConfigGeneral.java | 24 + .../common/config/worldgen/ConfigEndAsteroids.java | 33 + .../common/config/worldgen/ConfigGeneral.java | 48 + .../common/items/GT_MetaGenerated_Item_01.java | 4 +- .../common/items/GT_MetaGenerated_Tool_01.java | 66 +- .../items/behaviors/Behaviour_Spray_Color.java | 10 +- .../boilers/GT_MetaTileEntity_Boiler_Solar.java | 117 +- .../GT_MetaTileEntity_Boiler_Solar_Steel.java | 26 +- .../GT_MetaTileEntity_DieselGenerator.java | 7 +- .../generators/GT_MetaTileEntity_GasTurbine.java | 9 - .../GT_MetaTileEntity_MagicEnergyConverter.java | 7 +- .../GT_MetaTileEntity_MagicalEnergyAbsorber.java | 46 +- .../GT_MetaTileEntity_NaquadahReactor.java | 13 +- .../GT_MetaTileEntity_PlasmaGenerator.java | 15 +- .../generators/GT_MetaTileEntity_SteamTurbine.java | 13 +- .../basic/GT_MetaTileEntity_Massfabricator.java | 16 +- ..._MetaTileEntity_MicrowaveEnergyTransmitter.java | 15 +- .../basic/GT_MetaTileEntity_Teleporter.java | 13 +- .../multi/GT_MetaTileEntity_Cleanroom.java | 1 + .../load/GT_Loader_MetaTileEntities_Recipes.java | 17 +- .../gregtech/loaders/misc/GT_Achievements.java | 13 +- .../loaders/oreprocessing/ProcessingOre.java | 12 +- .../loaders/oreprocessing/ProcessingRawOre.java | 11 +- .../gregtech/loaders/postload/GT_PostLoad.java | 9 +- .../loaders/postload/GT_Worldgenloader.java | 2383 +------------------- .../postload/recipes/DistilleryRecipes.java | 11 - .../preload/GT_Loader_Item_Block_And_Fluid.java | 75 +- .../java/gregtech/loaders/preload/GT_PreLoad.java | 722 ++---- 84 files changed, 4705 insertions(+), 4190 deletions(-) create mode 100644 src/main/java/gregtech/api/enums/Dimensions.java create mode 100644 src/main/java/gregtech/api/enums/GTStones.java create mode 100644 src/main/java/gregtech/api/enums/ManualOreDictTweaks.java create mode 100644 src/main/java/gregtech/api/enums/OreMixes.java create mode 100644 src/main/java/gregtech/api/enums/SmallOres.java create mode 100644 src/main/java/gregtech/api/enums/UndergroundFluidNames.java delete mode 100644 src/main/java/gregtech/api/world/GT_Worldgen_Ore.java delete mode 100644 src/main/java/gregtech/api/world/GT_Worldgen_Ore_SingleBlock.java delete mode 100644 src/main/java/gregtech/api/world/GT_Worldgen_Ore_SingleBlock_UnderLava.java create mode 100644 src/main/java/gregtech/common/OreMixBuilder.java create mode 100644 src/main/java/gregtech/common/SmallOreBuilder.java create mode 100644 src/main/java/gregtech/common/StoneBuilder.java create mode 100644 src/main/java/gregtech/common/config/client/ConfigColorModulation.java create mode 100644 src/main/java/gregtech/common/config/client/ConfigInterface.java create mode 100644 src/main/java/gregtech/common/config/client/ConfigPreference.java create mode 100644 src/main/java/gregtech/common/config/client/ConfigRender.java create mode 100644 src/main/java/gregtech/common/config/client/ConfigWaila.java create mode 100644 src/main/java/gregtech/common/config/gregtech/ConfigDebug.java create mode 100644 src/main/java/gregtech/common/config/gregtech/ConfigFeatures.java create mode 100644 src/main/java/gregtech/common/config/gregtech/ConfigGeneral.java create mode 100644 src/main/java/gregtech/common/config/gregtech/ConfigHarvestLevel.java create mode 100644 src/main/java/gregtech/common/config/gregtech/ConfigMachines.java create mode 100644 src/main/java/gregtech/common/config/gregtech/ConfigOreDropBehavior.java create mode 100644 src/main/java/gregtech/common/config/gregtech/ConfigPollution.java create mode 100644 src/main/java/gregtech/common/config/machinestats/ConfigBronzeSolarBoiler.java create mode 100644 src/main/java/gregtech/common/config/machinestats/ConfigMachines.java create mode 100644 src/main/java/gregtech/common/config/machinestats/ConfigMassFabricator.java create mode 100644 src/main/java/gregtech/common/config/machinestats/ConfigMicrowaveEnergyTransmitter.java create mode 100644 src/main/java/gregtech/common/config/machinestats/ConfigSteelSolarBoiler.java create mode 100644 src/main/java/gregtech/common/config/machinestats/ConfigTeleporter.java create mode 100644 src/main/java/gregtech/common/config/opstuff/ConfigGeneral.java create mode 100644 src/main/java/gregtech/common/config/other/ConfigGeneral.java create mode 100644 src/main/java/gregtech/common/config/worldgen/ConfigEndAsteroids.java create mode 100644 src/main/java/gregtech/common/config/worldgen/ConfigGeneral.java (limited to 'src/main/java/gregtech') diff --git a/src/main/java/gregtech/GT_Mod.java b/src/main/java/gregtech/GT_Mod.java index 837c2c5d04..4f1297bd81 100644 --- a/src/main/java/gregtech/GT_Mod.java +++ b/src/main/java/gregtech/GT_Mod.java @@ -25,7 +25,6 @@ import net.minecraft.item.crafting.IRecipe; import net.minecraft.util.WeightedRandomChestContent; import net.minecraft.world.World; import net.minecraftforge.common.ChestGenHooks; -import net.minecraftforge.common.config.Configuration; import net.minecraftforge.oredict.OreDictionary; import org.apache.logging.log4j.LogManager; @@ -33,8 +32,11 @@ import org.apache.logging.log4j.Logger; import com.google.common.base.Stopwatch; import com.google.common.collect.SetMultimap; +import com.gtnewhorizon.gtnhlib.config.ConfigException; +import com.gtnewhorizon.gtnhlib.config.ConfigurationManager; import appeng.api.AEApi; +import bloodasp.galacticgreg.SpaceDimRegisterer; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.SidedProxy; @@ -80,6 +82,24 @@ import gregtech.common.GT_DummyWorld; import gregtech.common.GT_Network; import gregtech.common.GT_Proxy; import gregtech.common.GT_RecipeAdder; +import gregtech.common.config.client.ConfigColorModulation; +import gregtech.common.config.client.ConfigInterface; +import gregtech.common.config.client.ConfigPreference; +import gregtech.common.config.client.ConfigRender; +import gregtech.common.config.client.ConfigWaila; +import gregtech.common.config.gregtech.ConfigDebug; +import gregtech.common.config.gregtech.ConfigFeatures; +import gregtech.common.config.gregtech.ConfigGeneral; +import gregtech.common.config.gregtech.ConfigHarvestLevel; +import gregtech.common.config.gregtech.ConfigMachines; +import gregtech.common.config.gregtech.ConfigOreDropBehavior; +import gregtech.common.config.gregtech.ConfigPollution; +import gregtech.common.config.machinestats.ConfigBronzeSolarBoiler; +import gregtech.common.config.machinestats.ConfigMassFabricator; +import gregtech.common.config.machinestats.ConfigMicrowaveEnergyTransmitter; +import gregtech.common.config.machinestats.ConfigSteelSolarBoiler; +import gregtech.common.config.machinestats.ConfigTeleporter; +import gregtech.common.config.worldgen.ConfigEndAsteroids; import gregtech.common.covers.GT_Cover_FacadeAE; import gregtech.common.misc.GT_Command; import gregtech.common.misc.spaceprojects.commands.SPM_Command; @@ -168,6 +188,47 @@ import ic2.api.recipe.RecipeOutput; + " after:gendustry;") public class GT_Mod implements IGT_Mod { + static { + try { + // Client + ConfigurationManager.registerConfig(ConfigColorModulation.class); + ConfigurationManager.registerConfig(ConfigInterface.class); + ConfigurationManager.registerConfig(ConfigPreference.class); + ConfigurationManager.registerConfig(ConfigRender.class); + ConfigurationManager.registerConfig(ConfigWaila.class); + + // GregTech.cfg + ConfigurationManager.registerConfig(ConfigDebug.class); + ConfigurationManager.registerConfig(ConfigFeatures.class); + ConfigurationManager.registerConfig(ConfigGeneral.class); + ConfigurationManager.registerConfig(ConfigHarvestLevel.class); + ConfigurationManager.registerConfig(ConfigMachines.class); + ConfigurationManager.registerConfig(ConfigOreDropBehavior.class); + ConfigurationManager.registerConfig(ConfigPollution.class); + + // MachineStats.cfg + ConfigurationManager.registerConfig(ConfigBronzeSolarBoiler.class); + ConfigurationManager.registerConfig(gregtech.common.config.machinestats.ConfigMachines.class); + ConfigurationManager.registerConfig(ConfigMassFabricator.class); + ConfigurationManager.registerConfig(ConfigMicrowaveEnergyTransmitter.class); + ConfigurationManager.registerConfig(ConfigSteelSolarBoiler.class); + ConfigurationManager.registerConfig(ConfigTeleporter.class); + + // OverPoweredStuff + ConfigurationManager.registerConfig(gregtech.common.config.opstuff.ConfigGeneral.class); + + // Other + ConfigurationManager.registerConfig(gregtech.common.config.other.ConfigGeneral.class); + + // WorldGeneration + ConfigurationManager.registerConfig(ConfigEndAsteroids.class); + ConfigurationManager.registerConfig(gregtech.common.config.worldgen.ConfigGeneral.class); + + } catch (ConfigException e) { + throw new RuntimeException(e); + } + } + public static final int NBT_VERSION = calculateTotalGTVersion(VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH); @Mod.Instance(Mods.Names.GREG_TECH) @@ -182,6 +243,7 @@ public class GT_Mod implements IGT_Mod { public static int MAX_IC2 = 2147483647; public static GT_Achievements achievements; + @Deprecated public static final String aTextGeneral = "general"; public static final String aTextIC2 = "ic2_"; public static final Logger GT_FML_LOGGER = LogManager.getLogger("GregTech GTNH"); @@ -232,17 +294,16 @@ public class GT_Mod implements IGT_Mod { } } - Configuration tMainConfig = GT_PreLoad.getConfiguration(aEvent.getModConfigurationDirectory()); + GT_PreLoad.getConfiguration(aEvent.getModConfigurationDirectory()); GT_PreLoad.createLogFiles( aEvent.getModConfigurationDirectory() - .getParentFile(), - tMainConfig); + .getParentFile()); gregtechproxy.onPreLoad(); GT_Log.out.println("GT_Mod: Setting Configs"); - GT_PreLoad.loadConfig(tMainConfig); + GT_PreLoad.loadConfig(); new Enchantment_Hazmat(); new Enchantment_EnderDamage(); @@ -250,9 +311,6 @@ public class GT_Mod implements IGT_Mod { Materials.init(); - GT_Log.out.println("GT_Mod: Saving Main Config"); - tMainConfig.save(); - GT_PreLoad.initLocalization( aEvent.getModConfigurationDirectory() .getParentFile()); @@ -353,6 +411,9 @@ public class GT_Mod implements IGT_Mod { LHECoolantRegistry.registerBaseCoolants(); + GT_FML_LOGGER.debug("Registering SpaceDimensions"); + SpaceDimRegisterer.register(); + GregTech_API.sLoadFinished = true; GT_Log.out.println("GT_Mod: Load-Phase finished!"); GT_Log.ore.println("GT_Mod: Load-Phase finished!"); diff --git a/src/main/java/gregtech/api/GregTech_API.java b/src/main/java/gregtech/api/GregTech_API.java index 92e0ef36dd..51bf250659 100644 --- a/src/main/java/gregtech/api/GregTech_API.java +++ b/src/main/java/gregtech/api/GregTech_API.java @@ -35,10 +35,8 @@ import com.google.common.collect.Multimap; import com.google.common.collect.Multimaps; import com.google.common.collect.SetMultimap; -import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import gregtech.GT_Mod; import gregtech.api.enums.GT_Values; import gregtech.api.enums.Materials; import gregtech.api.enums.SoundResource; @@ -231,8 +229,7 @@ public class GregTech_API { /** * The Configuration Objects */ - public static GT_Config sMachineFile = null, sWorldgenFile = null, sMaterialProperties = null, sUnification = null, - sSpecialFile = null, sClientDataFile, sOPStuff = null; + public static GT_Config NEIClientFIle; public static int TICKS_FOR_LAG_AVERAGING = 25, MILLISECOND_THRESHOLD_UNTIL_LAG_WARNING = 100; /** @@ -258,11 +255,10 @@ public class GregTech_API { * Getting assigned by the Config */ public static boolean sTimber = true, sDrinksAlwaysDrinkable = false, sMultiThreadedSounds = false, - sDoShowAllItemsInCreative = false, sColoredGUI = true, sMachineMetalGUI = false, sConstantEnergy = true, - sMachineExplosions = true, sMachineFlammable = true, sMachineNonWrenchExplosions = true, - sMachineRainExplosions = true, sMachineThunderExplosions = true, sMachineFireExplosions = true, - sMachineWireFire = true, mOutputRF = false, mInputRF = false, meIOLoaded = false, mRFExplosions = false, - mServerStarted = false; + sDoShowAllItemsInCreative = false, sColoredGUI = true, sMachineMetalGUI = false, sMachineExplosions = true, + sMachineFlammable = true, sMachineNonWrenchExplosions = true, sMachineRainExplosions = true, + sMachineThunderExplosions = true, sMachineFireExplosions = true, sMachineWireFire = true, mOutputRF = false, + mInputRF = false, mRFExplosions = false, mServerStarted = false; public static int mEUtoRF = 360, mRFtoEU = 20; @@ -775,14 +771,7 @@ public class GregTech_API { } public static Comparator getConfigurationCircuitsComparator() { - return Comparator.comparingInt((ItemStack is) -> { - // By default, the Programmed Circuit should be the earliest configuration circuit to which the - // player is exposed - if (GT_Mod.gregtechproxy.mCircuitsOrder.isEmpty()) - return is.getItem() instanceof GT_IntegratedCircuit_Item ? 0 : 1; - return GT_Mod.gregtechproxy.mCircuitsOrder - .getOrDefault(String.valueOf(GameRegistry.findUniqueIdentifierFor(is.getItem())), Integer.MAX_VALUE); - }) + return Comparator.comparingInt((ItemStack is) -> is.getItem() instanceof GT_IntegratedCircuit_Item ? 0 : 1) .thenComparing(ItemStack::getUnlocalizedName) .thenComparing(ItemStack::getItemDamage); } diff --git a/src/main/java/gregtech/api/enums/ConfigCategories.java b/src/main/java/gregtech/api/enums/ConfigCategories.java index 83deec4f58..0e70e54651 100644 --- a/src/main/java/gregtech/api/enums/ConfigCategories.java +++ b/src/main/java/gregtech/api/enums/ConfigCategories.java @@ -1,5 +1,6 @@ package gregtech.api.enums; +@Deprecated public enum ConfigCategories { news, diff --git a/src/main/java/gregtech/api/enums/Dimensions.java b/src/main/java/gregtech/api/enums/Dimensions.java new file mode 100644 index 0000000000..21dee59977 --- /dev/null +++ b/src/main/java/gregtech/api/enums/Dimensions.java @@ -0,0 +1,33 @@ +package gregtech.api.enums; + +public enum Dimensions { + + Overworld("0"), + Moon("Moon"), + Mercury("Mercury"), + Venus("Venus"), + Mars("Mars"), + Io("Io"), + Europa("Europa"), + Callisto("Callisto"), + Titan("Titan"), + Miranda("Miranda"), + Oberon("oberon"), + Triton("Triton"), + Proteus("Proteus"), + Pluto("Pluto"), + Makemake("Makemake"), + AlphaCentauriBb("aCentauriBb"), + BarnardaC("BarnardaC"), + BarnardaE("BarnardaE"), + BarnardaF("BarnardaF"), + TCetiE("TCetiE"), + Ross128b("Ross128b"), + Ross128ba("Ross128ba"),; + + public final String id; + + private Dimensions(String id) { + this.id = id; + } +} diff --git a/src/main/java/gregtech/api/enums/GTStones.java b/src/main/java/gregtech/api/enums/GTStones.java new file mode 100644 index 0000000000..82d7cb90ce --- /dev/null +++ b/src/main/java/gregtech/api/enums/GTStones.java @@ -0,0 +1,398 @@ +package gregtech.api.enums; + +import gregtech.api.GregTech_API; +import gregtech.common.GT_Worldgen_Stone; +import gregtech.common.StoneBuilder; + +public enum GTStones { + + NetherBlackgraniteTiny(new StoneBuilder().name("nether.stone.blackgranite.tiny") + .disabledByDefault() + .block(GregTech_API.sBlockGranites) + .blockMeta(0) + .dimension(-1) + .size(50) + .probability(45) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + NetherBlackgraniteSmall(new StoneBuilder().name("nether.stone.blackgranite.small") + .disabledByDefault() + .block(GregTech_API.sBlockGranites) + .blockMeta(0) + .dimension(-1) + .size(100) + .probability(60) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + NetherBlackgraniteMedium(new StoneBuilder().name("nether.stone.blackgranite.medium") + .disabledByDefault() + .block(GregTech_API.sBlockGranites) + .blockMeta(0) + .dimension(-1) + .size(200) + .probability(80) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + NetherBlackgraniteLarge(new StoneBuilder().name("nether.stone.blackgranite.large") + .disabledByDefault() + .block(GregTech_API.sBlockGranites) + .blockMeta(0) + .dimension(-1) + .size(300) + .probability(70) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + NetherBlackgraniteHuge(new StoneBuilder().name("nether.stone.blackgranite.huge") + .disabledByDefault() + .block(GregTech_API.sBlockGranites) + .blockMeta(0) + .dimension(-1) + .size(400) + .probability(150) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + NetherRedgraniteTiny(new StoneBuilder().name("nether.stone.redgranite.tiny") + .disabledByDefault() + .block(GregTech_API.sBlockGranites) + .blockMeta(8) + .dimension(-1) + .size(50) + .probability(45) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + NetherRedgraniteSmall(new StoneBuilder().name("nether.stone.redgranite.small") + .disabledByDefault() + .block(GregTech_API.sBlockGranites) + .blockMeta(8) + .dimension(-1) + .size(100) + .probability(60) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + NetherRedgraniteMedium(new StoneBuilder().name("nether.stone.redgranite.medium") + .disabledByDefault() + .block(GregTech_API.sBlockGranites) + .blockMeta(8) + .dimension(-1) + .size(200) + .probability(80) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + NetherRedgraniteLarge(new StoneBuilder().name("nether.stone.redgranite.large") + .disabledByDefault() + .block(GregTech_API.sBlockGranites) + .blockMeta(8) + .dimension(-1) + .size(300) + .probability(70) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + NetherRedgraniteHuge(new StoneBuilder().name("nether.stone.redgranite.huge") + .disabledByDefault() + .block(GregTech_API.sBlockGranites) + .blockMeta(8) + .dimension(-1) + .size(400) + .probability(150) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + NetherMarbleTiny(new StoneBuilder().name("nether.stone.marble.tiny") + .disabledByDefault() + .block(GregTech_API.sBlockStones) + .blockMeta(0) + .dimension(-1) + .size(50) + .probability(45) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + NetherMarbleSmall(new StoneBuilder().name("nether.stone.marble.small") + .disabledByDefault() + .block(GregTech_API.sBlockStones) + .blockMeta(0) + .dimension(-1) + .size(100) + .probability(60) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + NetherMarbleMedium(new StoneBuilder().name("nether.stone.marble.medium") + .disabledByDefault() + .block(GregTech_API.sBlockStones) + .blockMeta(0) + .dimension(-1) + .size(200) + .probability(80) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + NetherMarbleLarge(new StoneBuilder().name("nether.stone.marble.large") + .disabledByDefault() + .block(GregTech_API.sBlockStones) + .blockMeta(0) + .dimension(-1) + .size(300) + .probability(70) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + NetherMarbleHuge(new StoneBuilder().name("nether.stone.marble.huge") + .disabledByDefault() + .block(GregTech_API.sBlockStones) + .blockMeta(0) + .dimension(-1) + .size(400) + .probability(150) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + NetherBasaltTiny(new StoneBuilder().name("nether.stone.basalt.tiny") + .disabledByDefault() + .block(GregTech_API.sBlockStones) + .blockMeta(8) + .dimension(-1) + .size(50) + .probability(45) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + NetherBasaltSmall(new StoneBuilder().name("nether.stone.basalt.small") + .disabledByDefault() + .block(GregTech_API.sBlockStones) + .blockMeta(8) + .dimension(-1) + .size(100) + .probability(60) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + NetherBasaltMedium(new StoneBuilder().name("nether.stone.basalt.medium") + .disabledByDefault() + .block(GregTech_API.sBlockStones) + .blockMeta(8) + .dimension(-1) + .size(200) + .probability(80) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + NetherBasaltLarge(new StoneBuilder().name("nether.stone.basalt.large") + .disabledByDefault() + .block(GregTech_API.sBlockStones) + .blockMeta(8) + .dimension(-1) + .size(300) + .probability(70) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + NetherBasaltHuge(new StoneBuilder().name("nether.stone.basalt.huge") + .disabledByDefault() + .block(GregTech_API.sBlockStones) + .blockMeta(8) + .dimension(-1) + .size(400) + .probability(150) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + OverworldBlackgraniteTiny(new StoneBuilder().name("overworld.stone.blackgranite.tiny") + .block(GregTech_API.sBlockGranites) + .blockMeta(0) + .dimension(0) + .size(75) + .probability(5) + .heightRange(0, 180) + .generationInVoidEnabled(false)), + + OverworldBlackgraniteSmall(new StoneBuilder().name("overworld.stone.blackgranite.small") + .block(GregTech_API.sBlockGranites) + .blockMeta(0) + .dimension(0) + .size(100) + .probability(10) + .heightRange(0, 180) + .generationInVoidEnabled(false)), + + OverworldBlackgraniteMedium(new StoneBuilder().name("overworld.stone.blackgranite.medium") + .block(GregTech_API.sBlockGranites) + .blockMeta(0) + .dimension(0) + .size(200) + .probability(10) + .heightRange(0, 180) + .generationInVoidEnabled(false)), + + OverworldBlackgraniteLarge(new StoneBuilder().name("overworld.stone.blackgranite.large") + .block(GregTech_API.sBlockGranites) + .blockMeta(0) + .dimension(0) + .size(300) + .probability(70) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + OverworldBlackgraniteHuge(new StoneBuilder().name("overworld.stone.blackgranite.huge") + .block(GregTech_API.sBlockGranites) + .blockMeta(0) + .dimension(0) + .size(400) + .probability(150) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + OverworldRedgraniteTiny(new StoneBuilder().name("overworld.stone.redgranite.tiny") + .block(GregTech_API.sBlockGranites) + .blockMeta(8) + .dimension(0) + .size(75) + .probability(5) + .heightRange(0, 180) + .generationInVoidEnabled(false)), + + OverworldRedgraniteSmall(new StoneBuilder().name("overworld.stone.redgranite.small") + .block(GregTech_API.sBlockGranites) + .blockMeta(8) + .dimension(0) + .size(100) + .probability(10) + .heightRange(0, 180) + .generationInVoidEnabled(false)), + + OverworldRedgraniteMedium(new StoneBuilder().name("overworld.stone.redgranite.medium") + .block(GregTech_API.sBlockGranites) + .blockMeta(8) + .dimension(0) + .size(200) + .probability(10) + .heightRange(0, 180) + .generationInVoidEnabled(false)), + + OverworldRedgraniteLarge(new StoneBuilder().name("overworld.stone.redgranite.large") + .block(GregTech_API.sBlockGranites) + .blockMeta(8) + .dimension(0) + .size(300) + .probability(70) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + OverworldRedgraniteHuge(new StoneBuilder().name("overworld.stone.redgranite.huge") + .block(GregTech_API.sBlockGranites) + .blockMeta(8) + .dimension(0) + .size(400) + .probability(150) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + OverworldMarbleTiny(new StoneBuilder().name("overworld.stone.marble.tiny") + .block(GregTech_API.sBlockStones) + .blockMeta(0) + .dimension(0) + .size(75) + .probability(5) + .heightRange(0, 180) + .generationInVoidEnabled(false)), + + OverworldMarbleSmall(new StoneBuilder().name("overworld.stone.marble.small") + .block(GregTech_API.sBlockStones) + .blockMeta(0) + .dimension(0) + .size(100) + .probability(10) + .heightRange(0, 180) + .generationInVoidEnabled(false)), + + OverworldMarbleMedium(new StoneBuilder().name("overworld.stone.marble.medium") + .block(GregTech_API.sBlockStones) + .blockMeta(0) + .dimension(0) + .size(200) + .probability(10) + .heightRange(0, 180) + .generationInVoidEnabled(false)), + + OverworldMarbleLarge(new StoneBuilder().name("overworld.stone.marble.large") + .block(GregTech_API.sBlockStones) + .blockMeta(0) + .dimension(0) + .size(300) + .probability(70) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + OverworldMarbleHuge(new StoneBuilder().name("overworld.stone.marble.huge") + .block(GregTech_API.sBlockStones) + .blockMeta(0) + .dimension(0) + .size(400) + .probability(150) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + OverworldBasaltTiny(new StoneBuilder().name("overworld.stone.basalt.tiny") + .block(GregTech_API.sBlockStones) + .blockMeta(8) + .dimension(0) + .size(75) + .probability(5) + .heightRange(0, 180) + .generationInVoidEnabled(false)), + + OverworldBasaltSmall(new StoneBuilder().name("overworld.stone.basalt.small") + .block(GregTech_API.sBlockStones) + .blockMeta(8) + .dimension(0) + .size(100) + .probability(10) + .heightRange(0, 180) + .generationInVoidEnabled(false)), + + OverworldBasaltMedium(new StoneBuilder().name("overworld.stone.basalt.medium") + .block(GregTech_API.sBlockStones) + .blockMeta(8) + .dimension(0) + .size(200) + .probability(10) + .heightRange(0, 180) + .generationInVoidEnabled(false)), + + OverworldBasaltLarge(new StoneBuilder().name("overworld.stone.basalt.large") + .block(GregTech_API.sBlockStones) + .blockMeta(8) + .dimension(0) + .size(300) + .probability(70) + .heightRange(0, 120) + .generationInVoidEnabled(false)), + + OverworldBasaltHuge(new StoneBuilder().name("overworld.stone.basalt.huge") + .block(GregTech_API.sBlockStones) + .blockMeta(8) + .dimension(0) + .size(400) + .probability(150) + .heightRange(0, 120) + .generationInVoidEnabled(false)),; + + public final StoneBuilder stone; + + private GTStones(StoneBuilder stone) { + this.stone = stone; + } + + public GT_Worldgen_Stone addGTStone() { + return new GT_Worldgen_Stone(this.stone); + } + +} diff --git a/src/main/java/gregtech/api/enums/ManualOreDictTweaks.java b/src/main/java/gregtech/api/enums/ManualOreDictTweaks.java new file mode 100644 index 0000000000..2392fcb591 --- /dev/null +++ b/src/main/java/gregtech/api/enums/ManualOreDictTweaks.java @@ -0,0 +1,70 @@ +package gregtech.api.enums; + +import static gregtech.api.enums.Mods.Avaritia; +import static gregtech.api.enums.Mods.Botania; +import static gregtech.api.enums.Mods.DraconicEvolution; +import static gregtech.api.enums.Mods.EnderIO; +import static gregtech.api.enums.Mods.GregTech; +import static gregtech.api.enums.Mods.HardcoreEnderExpansion; +import static gregtech.api.enums.Mods.ProjectRedCore; +import static gregtech.api.enums.Mods.RandomThings; +import static gregtech.api.enums.Mods.Thaumcraft; +import static gregtech.api.enums.Mods.Translocator; + +import java.util.HashMap; +import java.util.Map; + +public class ManualOreDictTweaks { + + private static final Map> oredictLookupTable = new HashMap<>(); + + private static final String[] gregtech = new String[] { "dustAlumina', 'dustNikolite" }; + private static final String[] enderio = new String[] { "ingotDarkSteel" }; + private static final String[] draconicevolution = new String[] { "dustDraconium" }; + private static final String[] thaumcraft = new String[] { + "ingotThaumium', 'ingotVoid', 'nuggetThaumium', 'nuggetVoid" }; + private static final String[] projred_core = new String[] { "dustElectrotine" }; + private static final String[] translocator = new String[] { "nuggetDiamond" }; + private static final String[] hardcoreenderexpansion = new String[] { "ingotHeeEndium" }; + private static final String[] avaritia = new String[] { "ingotCosmicNeutronium', 'ingotInfinity" }; + private static final String[] randomthings = new String[] { "stickObsidian" }; + private static final String[] botania = new String[] { + "ingotElvenElementium', 'ingotManasteel', 'ingotTerrasteel', 'nuggetElvenElementium', 'nuggetManasteel', 'nuggetTerrasteel" }; + + private static final String[] modNames = { GregTech.ID, EnderIO.ID, DraconicEvolution.ID, Thaumcraft.ID, + ProjectRedCore.ID, Translocator.ID, HardcoreEnderExpansion.ID, Avaritia.ID, RandomThings.ID, Botania.ID }; + private static final String[][] array = new String[][] { gregtech, enderio, draconicevolution, thaumcraft, + projred_core, translocator, hardcoreenderexpansion, avaritia, randomthings, botania }; + + static { + initTweakedValues(); + } + + private static void initTweakedValues() { + for (int i = 0; i < array.length; i++) { + HashMap modTableLookup = new HashMap<>(); + String name = modNames[i]; + for (String oredict : array[i]) { + modTableLookup.put(oredict, true); + } + oredictLookupTable.put(name, modTableLookup); + } + } + + public static boolean shouldOredictBeOverwritten(String modID, String oredict) { + Map modLookupTable = oredictLookupTable.get(modID); + if (modLookupTable == null) { + modLookupTable = new HashMap<>(); + modLookupTable.put(oredict, false); + oredictLookupTable.put(modID, modLookupTable); + return false; + } + Boolean result = modLookupTable.get(oredict); + if (result == null) { + modLookupTable.put(oredict, false); + result = false; + } + return result; + } + +} diff --git a/src/main/java/gregtech/api/enums/Materials.java b/src/main/java/gregtech/api/enums/Materials.java index 16553e2d42..e5f9991236 100644 --- a/src/main/java/gregtech/api/enums/Materials.java +++ b/src/main/java/gregtech/api/enums/Materials.java @@ -13,7 +13,6 @@ import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -34,6 +33,7 @@ import gregtech.api.interfaces.ISubTagContainer; import gregtech.api.objects.MaterialStack; import gregtech.api.util.GT_OreDictUnificator; import gregtech.api.util.GT_Utility; +import gregtech.common.config.gregtech.ConfigHarvestLevel; import gregtech.common.render.items.CosmicNeutroniumRenderer; import gregtech.common.render.items.GT_GeneratedMaterial_Renderer; import gregtech.common.render.items.GaiaSpiritRenderer; @@ -2574,59 +2574,7 @@ public class Materials implements IColorModulationContainer, ISubTagContainer { } } - private static void addFuelValues(Materials aMaterial, String aConfigPath) { - aMaterial.mFuelPower = GregTech_API.sMaterialProperties.get(aConfigPath, "FuelPower", aMaterial.mFuelPower); - aMaterial.mFuelType = GregTech_API.sMaterialProperties.get(aConfigPath, "FuelType", aMaterial.mFuelType); - } - - private static void addTemperatureValues(Materials aMaterial, String aConfigPath) { - aMaterial.mMeltingPoint = GregTech_API.sMaterialProperties - .get(aConfigPath, "MeltingPoint", aMaterial.mMeltingPoint); - aMaterial.mBlastFurnaceRequired = GregTech_API.sMaterialProperties - .get(aConfigPath, "BlastFurnaceRequired", aMaterial.mBlastFurnaceRequired); - aMaterial.mBlastFurnaceTemp = (short) GregTech_API.sMaterialProperties - .get(aConfigPath, "BlastFurnaceTemp", aMaterial.mBlastFurnaceTemp); - aMaterial.mGasTemp = GregTech_API.sMaterialProperties.get(aConfigPath, "GasTemp", aMaterial.mGasTemp); - aMaterial.setHeatDamage( - (float) GregTech_API.sMaterialProperties.get(aConfigPath, "HeatDamage", aMaterial.mHeatDamage)); - } - - private static void addDensityValues(Materials aMaterial, String aConfigPath) { - aMaterial.mDensityMultiplier = GregTech_API.sMaterialProperties - .get(aConfigPath, "DensityMultiplier", aMaterial.mDensityMultiplier); - aMaterial.mDensityDivider = GregTech_API.sMaterialProperties - .get(aConfigPath, "DensityDivider", aMaterial.mDensityDivider); - aMaterial.mDensity = (long) GregTech_API.sMaterialProperties.get( - aConfigPath, - "Density", - ((double) M * aMaterial.mDensityMultiplier) - / (aMaterial.mDensityDivider != 0 ? aMaterial.mDensityDivider : 1)); - } - - private static void addColorValues(Materials aMaterial, String aConfigPath) { - aMaterial.mTransparent = GregTech_API.sMaterialProperties - .get(aConfigPath, "Transparent", aMaterial.mTransparent); - String aColor = GregTech_API.sMaterialProperties - .get(aConfigPath, "DyeColor", aMaterial.mColor == Dyes._NULL ? "None" : aMaterial.mColor.toString()); - aMaterial.mColor = aColor.equals("None") ? Dyes._NULL : Dyes.get(aColor); - String[] aRGBA = GregTech_API.sMaterialProperties.get( - aConfigPath, - "MatRGBA", - aMaterial.mRGBa[0] + "," + aMaterial.mRGBa[1] + "," + aMaterial.mRGBa[2] + "," + aMaterial.mRGBa[3] + ",") - .split(","); - aMaterial.mRGBa[0] = Short.parseShort(aRGBA[0]); - aMaterial.mRGBa[1] = Short.parseShort(aRGBA[1]); - aMaterial.mRGBa[2] = Short.parseShort(aRGBA[2]); - aMaterial.mRGBa[3] = Short.parseShort(aRGBA[3]); - } - - private static void addToolValues(Materials aMaterial, String aConfigPath) { - aMaterial.mDurability = GregTech_API.sMaterialProperties - .get(aConfigPath, "ToolDurability", aMaterial.mDurability); - aMaterial.mToolSpeed = (float) GregTech_API.sMaterialProperties - .get(aConfigPath, "ToolSpeed", aMaterial.mToolSpeed); - aMaterial.mToolQuality = (byte) GregTech_API.sMaterialProperties - .get(aConfigPath, "ToolQuality", aMaterial.mToolQuality); + private static void addToolValues(Materials aMaterial) { // Moved from GT_Proxy? (Not sure) aMaterial.mHandleMaterial = (aMaterial == Desh ? aMaterial.mHandleMaterial : aMaterial == Diamond || aMaterial == Thaumium ? Wood @@ -2653,79 +2601,26 @@ public class Materials implements IColorModulationContainer, ISubTagContainer { } } - private static void addEnchantmentValues(Materials aMaterial, String aConfigPath) { - aMaterial.mEnchantmentToolsLevel = (byte) GregTech_API.sMaterialProperties - .get(aConfigPath, "EnchantmentLevel", aMaterial.mEnchantmentToolsLevel); - String aEnchantmentName = GregTech_API.sMaterialProperties.get( - aConfigPath, - "Enchantment", - aMaterial.mEnchantmentTools != null ? aMaterial.mEnchantmentTools.getName() : ""); + private static void addEnchantmentValues(Materials aMaterial) { + String aEnchantmentName = aMaterial.mEnchantmentTools != null ? aMaterial.mEnchantmentTools.getName() : ""; if (aMaterial.mEnchantmentTools != null && !aEnchantmentName.equals(aMaterial.mEnchantmentTools.getName())) IntStream.range(0, Enchantment.enchantmentsList.length) .filter(i -> aEnchantmentName.equals(Enchantment.enchantmentsList[i].getName())) .forEach(i -> aMaterial.mEnchantmentTools = Enchantment.enchantmentsList[i]); } - private static void addProcessingIntoValues(Materials aMaterial, String aConfigPath) { - aMaterial.mSmeltInto = MATERIALS_MAP - .get(GregTech_API.sMaterialProperties.get(aConfigPath, "MaterialSmeltInto", aMaterial.mSmeltInto.mName)); - aMaterial.mMacerateInto = MATERIALS_MAP.get( - GregTech_API.sMaterialProperties.get(aConfigPath, "MaterialMacerateInto", aMaterial.mMacerateInto.mName)); - aMaterial.mArcSmeltInto = MATERIALS_MAP.get( - GregTech_API.sMaterialProperties.get(aConfigPath, "MaterialArcSmeltInto", aMaterial.mArcSmeltInto.mName)); - aMaterial.mDirectSmelting = MATERIALS_MAP.get( - GregTech_API.sMaterialProperties - .get(aConfigPath, "MaterialDirectSmeltInto", aMaterial.mDirectSmelting.mName)); - aMaterial.mAutoGenerateBlastFurnaceRecipes = GregTech_API.sMaterialProperties - .get(aConfigPath, "AutoGenerateBlastFurnaceRecipes", aMaterial.mAutoGenerateBlastFurnaceRecipes); - } - - private static void addMultiplierValues(Materials aMaterial, String aConfigPath) { - aMaterial.mOreValue = GregTech_API.sMaterialProperties.get(aConfigPath, "OreValue", aMaterial.mOreValue); - aMaterial.setOreMultiplier( - GregTech_API.sMaterialProperties.get(aConfigPath, "OreMultiplier", aMaterial.mOreMultiplier)); - aMaterial.setSmeltingMultiplier( - GregTech_API.sMaterialProperties.get(aConfigPath, "OreSmeltingMultiplier", aMaterial.mSmeltingMultiplier)); - aMaterial.setByProductMultiplier( - GregTech_API.sMaterialProperties - .get(aConfigPath, "OreByProductMultiplier", aMaterial.mByProductMultiplier)); - } - - private static void addHasGasFluid(Materials aMaterial, String aConfigPath) { - - if (!aMaterial.mIconSet.is_custom) { - aMaterial.mHasPlasma = GregTech_API.sMaterialProperties.get(aConfigPath, "AddPlasma", aMaterial.mHasPlasma); - if (aMaterial.mHasPlasma) { - GT_Mod.gregtechproxy.addAutogeneratedPlasmaFluid(aMaterial); - } - aMaterial.mHasGas = GregTech_API.sMaterialProperties.get(aConfigPath, "AddGas", aMaterial.mHasGas); - if (aMaterial.mHasGas) { - GT_FluidFactory - .of(aMaterial.mName.toLowerCase(), aMaterial.mDefaultLocalName, aMaterial, GAS, aMaterial.mGasTemp); - } + private static void addHasGasFluid(Materials aMaterial) { + if (aMaterial.mIconSet.is_custom) { + return; } - } - private static void addInternalStuff(Materials aMaterial, String aConfigPath) { - aMaterial.mMetaItemSubID = GregTech_API.sMaterialProperties - .get(aConfigPath, "MaterialID", aMaterial.mCustomOre ? -1 : aMaterial.mMetaItemSubID); - aMaterial.mTypes = GregTech_API.sMaterialProperties.get( - aConfigPath, - "MaterialTypes", - aMaterial.mCustomOre ? 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 : aMaterial.mTypes); - aMaterial.mUnificatable = GregTech_API.sMaterialProperties - .get(aConfigPath, "Unificatable", aMaterial.mUnificatable); - aMaterial.mHasParentMod = GregTech_API.sMaterialProperties - .get(aConfigPath, "HasParentMod", aMaterial.mHasParentMod); - } - - private static void addLocalisation(Materials aMaterial, String aConfigPath) { - aMaterial.mDefaultLocalName = GregTech_API.sMaterialProperties.get( - aConfigPath, - "MaterialName", - aMaterial.mCustomOre ? "CustomOre" + aMaterial.mCustomID : aMaterial.mDefaultLocalName); - aMaterial.mChemicalFormula = GregTech_API.sMaterialProperties - .get(aConfigPath, "ChemicalFormula", aMaterial.mChemicalFormula); + if (aMaterial.mHasPlasma) { + GT_Mod.gregtechproxy.addAutogeneratedPlasmaFluid(aMaterial); + } + if (aMaterial.mHasGas) { + GT_FluidFactory + .of(aMaterial.mName.toLowerCase(), aMaterial.mDefaultLocalName, aMaterial, GAS, aMaterial.mGasTemp); + } } private static String getConfigPath(Materials aMaterial) { @@ -2733,135 +2628,32 @@ public class Materials implements IColorModulationContainer, ISubTagContainer { return "materials." + aMaterial.mConfigSection + "." + cOre; } - private static void addHarvestLevelNerfs(Materials aMaterial, String aConfigPath) { + private static void addHarvestLevelNerfs(Materials aMaterial) { /* Moved the harvest level changes from GT_Mod to have fewer things iterating over MATERIALS_ARRAY */ if (GT_Mod.gregtechproxy.mChangeHarvestLevels && aMaterial.mToolQuality > 0 && aMaterial.mMetaItemSubID < GT_Mod.gregtechproxy.mHarvestLevel.length && aMaterial.mMetaItemSubID >= 0) { - GT_Mod.gregtechproxy.mHarvestLevel[aMaterial.mMetaItemSubID] = GregTech_API.sMaterialProperties - .get(aConfigPath, "HarvestLevel", aMaterial.mToolQuality); + GT_Mod.gregtechproxy.mHarvestLevel[aMaterial.mMetaItemSubID] = aMaterial.mToolQuality; } } private static void addHarvestLevels() { - GT_Mod.gregtechproxy.mChangeHarvestLevels = GregTech_API.sMaterialProperties - .get("harvestlevel", "ActivateHarvestLevelChange", false); - GT_Mod.gregtechproxy.mMaxHarvestLevel = Math - .min(15, GregTech_API.sMaterialProperties.get("harvestlevel", "MaxHarvestLevel", 7)); - GT_Mod.gregtechproxy.mGraniteHavestLevel = GregTech_API.sMaterialProperties - .get("harvestlevel", "GraniteHarvestLevel", 3); + GT_Mod.gregtechproxy.mChangeHarvestLevels = ConfigHarvestLevel.activateHarvestLevelChange; + GT_Mod.gregtechproxy.mMaxHarvestLevel = Math.min(15, ConfigHarvestLevel.maxHarvestLevel); + GT_Mod.gregtechproxy.mGraniteHavestLevel = ConfigHarvestLevel.graniteHarvestLevel; } public static void initMaterialProperties() { addHarvestLevels(); for (Materials aMaterial : MATERIALS_MAP.values()) { - if (aMaterial != null && aMaterial != Materials._NULL && aMaterial != Materials.Empty) { - - String aConfigPath = getConfigPath(aMaterial); - - addFuelValues(aMaterial, aConfigPath); - addTemperatureValues(aMaterial, aConfigPath); - addDensityValues(aMaterial, aConfigPath); - addColorValues(aMaterial, aConfigPath); - addToolValues(aMaterial, aConfigPath); - addEnchantmentValues(aMaterial, aConfigPath); - addProcessingIntoValues(aMaterial, aConfigPath); - addMultiplierValues(aMaterial, aConfigPath); - addHasGasFluid(aMaterial, aConfigPath); - addInternalStuff(aMaterial, aConfigPath); - addLocalisation(aMaterial, aConfigPath); - SubTagCalculation(aMaterial, aConfigPath); - OreByProductsCalculation(aMaterial, aConfigPath); - OreReRegistrationsCalculation(aMaterial, aConfigPath); - aspectCalculation(aMaterial, aConfigPath); - addHarvestLevelNerfs(aMaterial, aConfigPath); - } - } - } - - private static void aspectCalculation(Materials aMaterial, String aConfigPath) { - - String aDefaultAspectString = aMaterial.mAspects.stream() - .map(aAspectStack -> aAspectStack.mAspect.toString()) - .collect(Collectors.joining(",", ",", "")); - String aDefaultAspectAmountString = aMaterial.mAspects.stream() - .map(aAspectStack -> String.valueOf(aAspectStack.mAmount)) - .collect(Collectors.joining(",", ",", "")); - - String aConfigAspectString = GregTech_API.sMaterialProperties - .get(aConfigPath, "ListTCAspects", aDefaultAspectString); - String aConfigAspectAmountString = GregTech_API.sMaterialProperties - .get(aConfigPath, "ListTCAspectAmounts", aDefaultAspectAmountString); - - if (!aConfigAspectString.equals(aDefaultAspectString) - || !aConfigAspectAmountString.equals(aDefaultAspectAmountString)) { - aMaterial.mAspects.clear(); - if (aConfigAspectString.length() > 0) { - String[] aAspects = aConfigAspectString.split(","); - String[] aAspectAmounts = aConfigAspectAmountString.split(","); - for (int i = 0; i < aAspects.length; i++) { - String aAspectString = aAspects[i]; - long aAspectAmount = Long.parseLong(aAspectAmounts[i]); - TC_AspectStack aAspectStack = new TC_AspectStack(TC_Aspects.valueOf(aAspectString), aAspectAmount); - aMaterial.mAspects.add(aAspectStack); - } - } - } - } - - private static void OreReRegistrationsCalculation(Materials aMaterial, String aConfigPath) { - String aDefaultMatReRegString = aMaterial.mOreReRegistrations.stream() - .map(aTag -> aTag.mName) - .collect(Collectors.joining(",", ",", "")); - String aConfigMatMatReRegString = GregTech_API.sMaterialProperties - .get(aConfigPath, "ListMaterialReRegistrations", aDefaultMatReRegString); - if (!aConfigMatMatReRegString.equals(aDefaultMatReRegString)) { - aMaterial.mOreReRegistrations.clear(); - if (aConfigMatMatReRegString.length() > 0) { - Arrays.stream(aConfigMatMatReRegString.split(",")) - .map(MATERIALS_MAP::get) - .filter(Objects::nonNull) - .forEach(aMat -> aMaterial.mOreReRegistrations.add(aMat)); - } - } - } - - private static void OreByProductsCalculation(Materials aMaterial, String aConfigPath) { - String aDefaultMatByProString = aMaterial.mOreByProducts.stream() - .map(aTag -> aTag.mName) - .collect(Collectors.joining(",", ",", "")); - String aConfigMatByProString = GregTech_API.sMaterialProperties - .get(aConfigPath, "ListMaterialByProducts", aDefaultMatByProString); - if (!aConfigMatByProString.equals(aDefaultMatByProString)) { - aMaterial.mOreByProducts.clear(); - if (aConfigMatByProString.length() > 0) { - Arrays.stream(aConfigMatByProString.split(",")) - .map(MATERIALS_MAP::get) - .filter(Objects::nonNull) - .forEach(aMat -> aMaterial.mOreByProducts.add(aMat)); + if (aMaterial == null || aMaterial == Materials._NULL || aMaterial == Materials.Empty) { + continue; } - } - } - /** - * Converts the pre-defined list of SubTags from a material into a list of SubTag names for setting/getting to/from - * the config. It is then converted to a String[] and finally to a singular String for insertion into the config If - * the config string is different from the default, we then want to clear the Materials SubTags and insert new ones - * from the config string. - */ - private static void SubTagCalculation(Materials aMaterial, String aConfigPath) { - String aDefaultTagString = aMaterial.mSubTags.stream() - .map(aTag -> aTag.mName) - .collect(Collectors.joining(",", ",", "")); - String aConfigTagString = GregTech_API.sMaterialProperties.get(aConfigPath, "ListSubTags", aDefaultTagString); - if (!aConfigTagString.equals(aDefaultTagString)) { - aMaterial.mSubTags.clear(); - if (aConfigTagString.length() > 0) { - Arrays.stream(aConfigTagString.split(",")) - .map(SubTag.sSubTags::get) - .filter(Objects::nonNull) - .forEach(aTag -> aMaterial.mSubTags.add(aTag)); - } + addToolValues(aMaterial); + addEnchantmentValues(aMaterial); + addHasGasFluid(aMaterial); + addHarvestLevelNerfs(aMaterial); } } diff --git a/src/main/java/gregtech/api/enums/Mods.java b/src/main/java/gregtech/api/enums/Mods.java index 28ed17d299..856817d972 100644 --- a/src/main/java/gregtech/api/enums/Mods.java +++ b/src/main/java/gregtech/api/enums/Mods.java @@ -179,14 +179,8 @@ public enum Mods { ZTones(Names.Z_TONES), // Do we keep compat of those? - ArsMagica2(Names.ARS_MAGICA2), - GanysSurface(Names.GANYS_SURFACE), - IndustrialCraft2Classic(Names.INDUSTRIAL_CRAFT2_CLASSIC), - MagicalCrops(Names.MAGICAL_CROPS), Metallurgy(Names.METALLURGY), RotaryCraft(Names.ROTARY_CRAFT), - ThermalExpansion(Names.THERMAL_EXPANSION), - ThermalFondation(Names.THERMAL_FONDATION), UndergroundBiomes(Names.UNDERGROUND_BIOMES), ; @@ -364,14 +358,8 @@ public enum Mods { public static final String Z_TONES = "Ztones"; // Do we keep compat of those mods? - public static final String ARS_MAGICA2 = "arsmagica2"; - public static final String GANYS_SURFACE = "ganyssurface"; - public static final String INDUSTRIAL_CRAFT2_CLASSIC = "IC2-Classic-Spmod"; - public static final String MAGICAL_CROPS = "magicalcrops"; public static final String METALLURGY = "Metallurgy"; public static final String ROTARY_CRAFT = "RotaryCraft"; - public static final String THERMAL_EXPANSION = "ThermalExpansion"; - public static final String THERMAL_FONDATION = "ThermalFoundation"; public static final String UNDERGROUND_BIOMES = "UndergroundBiomes"; } diff --git a/src/main/java/gregtech/api/enums/OreMixes.java b/src/main/java/gregtech/api/enums/OreMixes.java new file mode 100644 index 0000000000..c5c306baab --- /dev/null +++ b/src/main/java/gregtech/api/enums/OreMixes.java @@ -0,0 +1,982 @@ +package gregtech.api.enums; + +import static bloodasp.galacticgreg.api.enums.DimensionDef.*; +import static gregtech.common.OreMixBuilder.NETHER; +import static gregtech.common.OreMixBuilder.OW; +import static gregtech.common.OreMixBuilder.THE_END; +import static gregtech.common.OreMixBuilder.TWILIGHT_FOREST; + +import bloodasp.galacticgreg.GT_Worldgen_GT_Ore_Layer_Space; +import bloodasp.galacticgreg.api.enums.DimensionDef; +import gregtech.common.GT_Worldgen_GT_Ore_Layer; +import gregtech.common.OreMixBuilder; + +public enum OreMixes { + + // spotless : off + Naquadah(new OreMixBuilder().name("ore.mix.naquadah") + .heightRange(10, 90) + .weight(30) + .density(4) + .size(32) + .enableInDim( + EndAsteroids, + Maahes, + Asteroids, + BarnardE, + BarnardF, + Haumea, + KuiperBelt, + Mercury, + Oberon, + Pluto, + Titan, + VegaB, + Venus) + .primary(Materials.Naquadah) + .secondary(Materials.Naquadah) + .inBetween(Materials.Naquadah) + .sporadic(Materials.NaquadahEnriched)), + + LigniteCoal(new OreMixBuilder().name("ore.mix.lignite") + .heightRange(80, 210) + .weight(160) + .density(7) + .size(32) + .enableInDim(OW) + .enableInDim(BarnardC) + .primary(Materials.Lignite) + .secondary(Materials.Lignite) + .inBetween(Materials.Lignite) + .sporadic(Materials.Coal)), + + Coal(new OreMixBuilder().name("ore.mix.coal") + .heightRange(30, 80) + .weight(80) + .density(5) + .size(32) + .enableInDim(OW, TWILIGHT_FOREST) + .primary(Materials.Coal) + .secondary(Materials.Coal) + .inBetween(Materials.Coal) + .sporadic(Materials.Lignite)), + + Magnetite(new OreMixBuilder().name("ore.mix.magnetite") + .heightRange(60, 180) + .weight(160) + .density(2) + .size(32) + .enableInDim(OW, TWILIGHT_FOREST) + .enableInDim(Seth, BarnardE, Ceres, Deimos, Io, MakeMake, TcetiE) + .primary(Materials.Magnetite) + .secondary(Materials.Magnetite) + .inBetween(Materials.Iron) + .sporadic(Materials.VanadiumMagnetite)), + + Gold(new OreMixBuilder().name("ore.mix.gold") + .heightRange(30, 60) + .weight(160) + .density(2) + .size(32) + .enableInDim(OW, THE_END, TWILIGHT_FOREST) + .enableInDim(EndAsteroids, Seth, Asteroids, Mars, BarnardF, Callisto, Phobos, Pluto, TcetiE, Triton, VegaB) + .primary(Materials.Magnetite) + .secondary(Materials.Magnetite) + .inBetween(Materials.VanadiumMagnetite) + .sporadic(Materials.Gold)), + + Iron(new OreMixBuilder().name("ore.mix.iron") + .heightRange(10, 40) + .weight(120) + .density(3) + .size(24) + .enableInDim(OW, NETHER, TWILIGHT_FOREST) + .enableInDim(Mars, Callisto, Ceres, Ganymede, Mercury, Oberon, Pluto) + .primary(Materials.BrownLimonite) + .secondary(Materials.YellowLimonite) + .inBetween(Materials.BandedIron) + .sporadic(Materials.Malachite)), + + Cassiterite(new OreMixBuilder().name("ore.mix.cassiterite") + .heightRange(60, 220) + .weight(50) + .density(4) + .size(24) + .enableInDim(EndAsteroids, MehenBelt, Seth, Moon, Io, Miranda, TcetiE, Venus) + .enableInDim(OW, THE_END, TWILIGHT_FOREST) + .primary(Materials.Tin) + .secondary(Materials.Tin) + .inBetween(Materials.Cassiterite) + .sporadic(Materials.Tin)), + + Tetrahedrite(new OreMixBuilder().name("ore.mix.tetrahedrite") + .heightRange(80, 120) + .weight(70) + .density(3) + .size(24) + .enableInDim(NETHER, THE_END) + .enableInDim(EndAsteroids, Asteroids, Mars, CentauriAlpha, Deimos, Ganymede, KuiperBelt, Miranda, VegaB, Venus) + .primary(Materials.Tetrahedrite) + .secondary(Materials.Tetrahedrite) + .inBetween(Materials.Copper) + .sporadic(Materials.Stibnite)), + + NetherQuartz(new OreMixBuilder().name("ore.mix.netherquartz") + .heightRange(40, 80) + .weight(80) + .density(4) + .size(24) + .enableInDim(NETHER) + .enableInDim(Neper, CentauriAlpha) + .primary(Materials.NetherQuartz) + .secondary(Materials.NetherQuartz) + .inBetween(Materials.NetherQuartz) + .sporadic(Materials.Quartzite)), + + Sulfur(new OreMixBuilder().name("ore.mix.sulfur") + .heightRange(5, 20) + .weight(100) + .density(4) + .size(24) + .enableInDim(NETHER) + .enableInDim(Anubis, Mars, CentauriAlpha, Deimos, Io, Phobos, Venus) + .primary(Materials.Sulfur) + .secondary(Materials.Sulfur) + .inBetween(Materials.Pyrite) + .sporadic(Materials.Sphalerite)), + + Copper(new OreMixBuilder().name("ore.mix.copper") + .heightRange(5, 60) + .weight(80) + .density(3) + .size(24) + .enableInDim(EndAsteroids, Moon, BarnardE, BarnardF, Callisto, Ceres, Enceladus, Proteus) + .enableInDim(OW, NETHER, THE_END) + .primary(Materials.Chalcopyrite) + .secondary(Materials.Iron) + .inBetween(Materials.Pyrite) + .sporadic(Materials.Copper)), + + Bauxite(new OreMixBuilder().name("ore.mix.bauxite") + .heightRange(10, 80) + .weight(80) + .density(3) + .size(24) + .enableInDim( + Seth, + Moon, + Asteroids, + Ganymede, + Haumea, + KuiperBelt, + MakeMake, + Mercury, + Phobos, + Pluto, + Proteus, + TcetiE, + Titan) + .primary(Materials.Bauxite) + .secondary(Materials.Ilmenite) + .inBetween(Materials.Aluminium) + .sporadic(Materials.Ilmenite)), + + Salts(new OreMixBuilder().name("ore.mix.salts") + .heightRange(50, 70) + .weight(50) + .density(2) + .size(24) + .enableInDim(OW, TWILIGHT_FOREST) + .enableInDim(Mars, BarnardC, TcetiE) + .primary(Materials.RockSalt) + .secondary(Materials.Salt) + .inBetween(Materials.Lepidolite) + .sporadic(Materials.Spodumene)), + + Redstone(new OreMixBuilder().name("ore.mix.redstone") + .heightRange(5, 40) + .weight(60) + .density(2) + .size(24) + .enableInDim(OW, NETHER) + .enableInDim(Mars, BarnardF, CentauriAlpha, Ganymede, Mercury, Miranda, VegaB, Venus) + .primary(Materials.Redstone) + .secondary(Materials.Redstone) + .inBetween(Materials.Ruby) + .sporadic(Materials.Cinnabar)), + + Soapstone(new OreMixBuilder().name("ore.mix.soapstone") + .heightRange(20, 50