add ultimate config

This commit is contained in:
maggi373 committed 2026-09-19 13:38:56 +02:00
1 parent 600bb02226
commit 3cad4a220e
11 files changed
+211 -7

No files matched your search

@@ -199,6 +199,15 @@ public class MekanismConfig
public static double armorSpawnRate;
}
public static class ultimate
{
public static boolean factoryEnabled = true;
public static boolean allowTierInstallerUpgrade = true;
public static double factoryUsageMultiplier = 1D;
public static int factoryEnergyStorageTicks = 400;
public static boolean enableFactoryRecipes = true;
}
public static class recipes
{
public static boolean enableOsmiumBlock = true;
@@ -12,6 +12,7 @@ import mekanism.api.Coord4D;
import mekanism.api.EnumColor;
import mekanism.api.IConfigCardAccess.ISpecialConfigData;
import mekanism.api.MekanismConfig.general;
import mekanism.api.MekanismConfig.ultimate;
import mekanism.api.MekanismConfig.usage;
import mekanism.api.Range4D;
import mekanism.api.gas.Gas;
@@ -175,6 +176,10 @@ public class TileEntityFactory extends TileEntityNoisyElectricBlock implements I
int targetMetadata = 5 + upgradeTier.ordinal();
if (upgradeTier == BaseTier.ULTIMATE) {
if (!ultimate.factoryEnabled || !ultimate.allowTierInstallerUpgrade) {
return false;
}
targetBlock = GameRegistry.findBlock("MekanismUltimate", "UltimateFactory");
targetMetadata = 0;
@@ -0,0 +1,82 @@
package mekanism.ultimate.client.gui;
import java.util.ArrayList;
import java.util.List;
import mekanism.common.util.LangUtils;
import mekanism.ultimate.common.MekanismUltimate;
import net.minecraft.client.gui.GuiScreen;
import net.minecraftforge.common.config.ConfigElement;
import cpw.mods.fml.client.config.DummyConfigElement.DummyCategoryElement;
import cpw.mods.fml.client.config.GuiConfig;
import cpw.mods.fml.client.config.GuiConfigEntries;
import cpw.mods.fml.client.config.GuiConfigEntries.CategoryEntry;
import cpw.mods.fml.client.config.IConfigElement;
public class GuiUltimateConfig extends GuiConfig
{
public GuiUltimateConfig(GuiScreen parent)
{
super(parent, getConfigElements(), MekanismUltimate.MODID, false, true, "Mekanism Community Edition: Ultimate");
}
private static List<IConfigElement> getConfigElements()
{
List<IConfigElement> list = new ArrayList<IConfigElement>();
list.add(new DummyCategoryElement(LangUtils.localize("mekanism.configgui.ctgy.ultimate.machines"), "mekanism.configgui.ctgy.ultimate.machines", MachinesEntry.class));
list.add(new DummyCategoryElement(LangUtils.localize("mekanism.configgui.ctgy.ultimate.usage"), "mekanism.configgui.ctgy.ultimate.usage", UsageEntry.class));
list.add(new DummyCategoryElement(LangUtils.localize("mekanism.configgui.ctgy.ultimate.recipes"), "mekanism.configgui.ctgy.ultimate.recipes", RecipesEntry.class));
return list;
}
private static GuiScreen buildChildScreen(GuiConfig owningScreen, IConfigElement configElement, String category)
{
return new GuiConfig(owningScreen,
new ConfigElement(MekanismUltimate.configuration.getCategory(category)).getChildElements(),
owningScreen.modID, category, false,
configElement.requiresMcRestart() || owningScreen.allRequireMcRestart,
GuiConfig.getAbridgedConfigPath(MekanismUltimate.configuration.toString()));
}
public static class MachinesEntry extends CategoryEntry
{
public MachinesEntry(GuiConfig owningScreen, GuiConfigEntries owningEntryList, IConfigElement prop)
{
super(owningScreen, owningEntryList, prop);
}
@Override
protected GuiScreen buildChildScreen()
{
return GuiUltimateConfig.buildChildScreen(owningScreen, configElement, "machines");
}
}
public static class UsageEntry extends CategoryEntry
{
public UsageEntry(GuiConfig owningScreen, GuiConfigEntries owningEntryList, IConfigElement prop)
{
super(owningScreen, owningEntryList, prop);
}
@Override
protected GuiScreen buildChildScreen()
{
return GuiUltimateConfig.buildChildScreen(owningScreen, configElement, "usage");
}
}
public static class RecipesEntry extends CategoryEntry
{
public RecipesEntry(GuiConfig owningScreen, GuiConfigEntries owningEntryList, IConfigElement prop)
{
super(owningScreen, owningEntryList, prop);
}
@Override
protected GuiScreen buildChildScreen()
{
return GuiUltimateConfig.buildChildScreen(owningScreen, configElement, "recipes");
}
}
}
@@ -0,0 +1,33 @@
package mekanism.ultimate.client.gui;
import java.util.Set;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import cpw.mods.fml.client.IModGuiFactory;
public class UltimateGuiFactory implements IModGuiFactory
{
@Override
public void initialize(Minecraft minecraftInstance)
{
}
@Override
public Class<? extends GuiScreen> mainConfigGuiClass()
{
return GuiUltimateConfig.class;
}
@Override
public Set<RuntimeOptionCategoryElement> runtimeGuiCategories()
{
return null;
}
@Override
public RuntimeOptionGuiHandler getHandlerFor(RuntimeOptionCategoryElement element)
{
return null;
}
}
@@ -1,8 +1,12 @@
package mekanism.ultimate.common;
import io.netty.buffer.ByteBuf;
import java.io.File;
import java.io.IOException;
import mekanism.api.MekanismConfig;
import mekanism.api.MekanismConfig.ultimate;
import mekanism.common.Mekanism;
import mekanism.common.Tier.BaseTier;
import mekanism.common.Tier.FactoryTier;
@@ -14,6 +18,7 @@ import mekanism.common.util.MekanismUtils;
import mekanism.ultimate.common.item.ItemBlockUltimateFactory;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.CraftingManager;
import net.minecraftforge.common.config.Configuration;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Instance;
@@ -23,7 +28,7 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
@Mod(modid = MekanismUltimate.MODID, name = "Mekanism Community Edition: Ultimate", version = "GRADLE_MODVERSION", dependencies = "required-after:Mekanism")
@Mod(modid = MekanismUltimate.MODID, name = "Mekanism Community Edition: Ultimate", version = "GRADLE_MODVERSION", dependencies = "required-after:Mekanism", guiFactory = "mekanism.ultimate.client.gui.UltimateGuiFactory")
public class MekanismUltimate implements IModule
{
public static final String MODID = "MekanismUltimate";
@@ -36,9 +41,13 @@ public class MekanismUltimate implements IModule
public static Version versionNumber = new Version(GRADLE_VERSIONMOD);
public static Configuration configuration;
@EventHandler
public void preInit(FMLPreInitializationEvent event)
{
configuration = new Configuration(new File(event.getModConfigurationDirectory(), "mekanism/MekanismUltimate.cfg"));
proxy.loadConfiguration();
GameRegistry.registerBlock(UltimateBlocks.UltimateFactory, ItemBlockUltimateFactory.class, "UltimateFactory");
}
@@ -55,7 +64,7 @@ public class MekanismUltimate implements IModule
private void addRecipes()
{
if (!MekanismConfig.recipes.enableFactories)
if (!MekanismConfig.recipes.enableFactories || !ultimate.factoryEnabled || !ultimate.enableFactoryRecipes)
{
return;
}
@@ -89,11 +98,21 @@ public class MekanismUltimate implements IModule
@Override
public void writeConfig(ByteBuf dataStream) throws IOException
{
dataStream.writeBoolean(ultimate.factoryEnabled);
dataStream.writeBoolean(ultimate.allowTierInstallerUpgrade);
dataStream.writeDouble(ultimate.factoryUsageMultiplier);
dataStream.writeInt(ultimate.factoryEnergyStorageTicks);
dataStream.writeBoolean(ultimate.enableFactoryRecipes);
}
@Override
public void readConfig(ByteBuf dataStream) throws IOException
{
ultimate.factoryEnabled = dataStream.readBoolean();
ultimate.allowTierInstallerUpgrade = dataStream.readBoolean();
ultimate.factoryUsageMultiplier = dataStream.readDouble();
ultimate.factoryEnergyStorageTicks = dataStream.readInt();
ultimate.enableFactoryRecipes = dataStream.readBoolean();
}
@Override
@@ -1,5 +1,6 @@
package mekanism.ultimate.common;
import mekanism.api.MekanismConfig.ultimate;
import mekanism.common.inventory.container.ContainerFactory;
import mekanism.ultimate.common.tile.TileEntityUltimateFactory;
import net.minecraft.entity.player.EntityPlayer;
@@ -10,6 +11,25 @@ import cpw.mods.fml.common.registry.GameRegistry;
public class UltimateCommonProxy implements IGuiHandler
{
public void loadConfiguration()
{
ultimate.factoryEnabled = MekanismUltimate.configuration.get("machines", "UltimateFactoryEnabled", true,
"Enable Ultimate Factories. Disabling this hides them from creative tabs and prevents crafting and tier-installer upgrades; existing placed factories remain usable.").getBoolean();
ultimate.allowTierInstallerUpgrade = MekanismUltimate.configuration.get("machines", "AllowTierInstallerUpgrade", true,
"Allow Ultimate Tier Installers to upgrade Elite Factories into Ultimate Factories.").getBoolean();
ultimate.factoryUsageMultiplier = MekanismUltimate.configuration.get("usage", "UltimateFactoryUsageMultiplier", 1D,
"Multiplier applied to Mekanism's FactoryUsage value for each process in an Ultimate Factory.", 0D, 1000D).getDouble();
ultimate.factoryEnergyStorageTicks = MekanismUltimate.configuration.get("usage", "UltimateFactoryEnergyStorageTicks", 400,
"Number of ticks of full nine-process base usage that an Ultimate Factory can store.", 1, Integer.MAX_VALUE).getInt();
ultimate.enableFactoryRecipes = MekanismUltimate.configuration.get("recipes", "EnableUltimateFactoryRecipes", true,
"Enable crafting recipes for all Ultimate Factory variants.").getBoolean();
if (MekanismUltimate.configuration.hasChanged())
{
MekanismUltimate.configuration.save();
}
}
public void registerTileEntities()
{
GameRegistry.registerTileEntity(TileEntityUltimateFactory.class, "MekanismUltimateUltimateFactory");
@@ -0,0 +1,22 @@
package mekanism.ultimate.common;
import mekanism.api.MekanismConfig.ultimate;
import mekanism.api.MekanismConfig.usage;
import mekanism.common.Tier.FactoryTier;
public final class UltimateConfig
{
private UltimateConfig()
{
}
public static double getFactoryUsage()
{
return usage.factoryUsage * ultimate.factoryUsageMultiplier;
}
public static double getFactoryMaxEnergy()
{
return getFactoryUsage() * FactoryTier.ULTIMATE.processes * ultimate.factoryEnergyStorageTicks;
}
}
@@ -3,6 +3,7 @@ package mekanism.ultimate.common.block;
import java.util.List;
import buildcraft.api.tools.IToolWrench;
import mekanism.api.MekanismConfig.ultimate;
import mekanism.client.render.MekanismRenderer;
import mekanism.client.render.MekanismRenderer.DefIcon;
import mekanism.common.Tier.BaseTier;
@@ -92,6 +93,11 @@ public class BlockUltimateFactory extends BlockMachine
@SideOnly(Side.CLIENT)
public void getSubBlocks(Item item, CreativeTabs tab, List list)
{
if (!ultimate.factoryEnabled)
{
return;
}
for (RecipeType type : RecipeType.values())
{
ItemStack stack = new ItemStack(item);
@@ -3,14 +3,13 @@ package mekanism.ultimate.common.item;
import java.util.List;
import mekanism.api.EnumColor;
import mekanism.api.MekanismConfig.usage;
import mekanism.client.MekanismKeyHandler;
import mekanism.common.Tier.BaseTier;
import mekanism.common.Tier.FactoryTier;
import mekanism.common.base.IFactory.RecipeType;
import mekanism.common.item.ItemBlockMachine;
import mekanism.common.util.LangUtils;
import mekanism.common.util.MekanismUtils;
import mekanism.ultimate.common.UltimateConfig;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
@@ -63,7 +62,7 @@ public class ItemBlockUltimateFactory extends ItemBlockMachine
@Override
public double getMaxEnergy(ItemStack stack)
{
return MekanismUtils.getMaxEnergy(stack, usage.factoryUsage * FactoryTier.ULTIMATE.processes * 400);
return MekanismUtils.getMaxEnergy(stack, UltimateConfig.getFactoryMaxEnergy());
}
@Override
@@ -1,7 +1,6 @@
package mekanism.ultimate.common.tile;
import mekanism.api.EnumColor;
import mekanism.api.MekanismConfig.usage;
import mekanism.api.transmitters.TransmissionType;
import mekanism.common.SideData;
import mekanism.common.Tier.FactoryTier;
@@ -11,12 +10,16 @@ import mekanism.common.tile.component.TileComponentConfig;
import mekanism.common.tile.component.TileComponentEjector;
import mekanism.common.tile.component.TileComponentUpgrade;
import mekanism.common.util.InventoryUtils;
import mekanism.ultimate.common.UltimateConfig;
public class TileEntityUltimateFactory extends TileEntityFactory
{
public TileEntityUltimateFactory()
{
super(FactoryTier.ULTIMATE, "Factory", usage.factoryUsage * FactoryTier.ULTIMATE.processes * 400);
super(FactoryTier.ULTIMATE, "Factory", UltimateConfig.getFactoryMaxEnergy());
BASE_ENERGY_PER_TICK = UltimateConfig.getFactoryUsage();
energyPerTick = BASE_ENERGY_PER_TICK;
int[] inputSlots = new int[FactoryTier.ULTIMATE.processes];
int[] outputSlots = new int[FactoryTier.ULTIMATE.processes];
@@ -1129,10 +1129,16 @@ item.SteelSword.name=Steel Sword
mekanism.configgui.ctgy.tools.general=General
mekanism.configgui.ctgy.tools.armor=Armor Balance
mekanism.configgui.ctgy.tools.tools=Tools Balance
mekanism.configgui.ctgy.ultimate.machines=Machines
mekanism.configgui.ctgy.ultimate.usage=Energy Usage
mekanism.configgui.ctgy.ultimate.recipes=Recipes
//Config Tooltips
mekanism.configgui.ctgy.tools.general.tooltip=Settings regarding MekanismTools' general configuration
mekanism.configgui.ctgy.tools.armor.tooltip=Settings regarding the protection values and balance of MekanismTools armor sets
mekanism.configgui.ctgy.tools.tools.tooltip=Settings regarding the efficiency values and balance of MekanismTools tool sets
mekanism.configgui.ctgy.ultimate.machines.tooltip=Settings for enabling Ultimate Factories and tier-installer upgrades
mekanism.configgui.ctgy.ultimate.usage.tooltip=Settings for Ultimate Factory energy usage and storage
mekanism.configgui.ctgy.ultimate.recipes.tooltip=Settings for Ultimate Factory crafting recipes
mekanism.gui.noWind=No wind