diff options
| author | Giovanni Harting <539@idlegandalf.com> | 2016-07-25 15:22:42 +0200 |
|---|---|---|
| committer | Giovanni Harting <539@idlegandalf.com> | 2016-07-25 15:23:49 +0200 |
| commit | bb9bc335ff2c70cc2f9b017949713461aaa9ebff (patch) | |
| tree | de1998390655a8767b9408c1dc91fac2f8dfbabe /src/main/java/com/sosnitzka | |
| parent | 93d45ceaeb5f813063a58022a9d56955be06fa47 (diff) | |
first attempt ti implement a config file, does not function atm
Diffstat (limited to 'src/main/java/com/sosnitzka')
| -rw-r--r-- | src/main/java/com/sosnitzka/taiga/TAIGA.java | 14 | ||||
| -rw-r--r-- | src/main/java/com/sosnitzka/taiga/TAIGAConfiguration.java | 104 | ||||
| -rw-r--r-- | src/main/java/com/sosnitzka/taiga/TAIGAGuiFactory.java | 82 | ||||
| -rw-r--r-- | src/main/java/com/sosnitzka/taiga/proxy/ClientProxy.java | 8 | ||||
| -rw-r--r-- | src/main/java/com/sosnitzka/taiga/proxy/CommonProxy.java (renamed from src/main/java/com/sosnitzka/taiga/proxy/ServerProxy.java) | 7 |
5 files changed, 206 insertions, 9 deletions
diff --git a/src/main/java/com/sosnitzka/taiga/TAIGA.java b/src/main/java/com/sosnitzka/taiga/TAIGA.java index f2447c5..4cf9976 100644 --- a/src/main/java/com/sosnitzka/taiga/TAIGA.java +++ b/src/main/java/com/sosnitzka/taiga/TAIGA.java @@ -1,7 +1,7 @@ package com.sosnitzka.taiga; import com.google.common.collect.Lists; -import com.sosnitzka.taiga.proxy.ServerProxy; +import com.sosnitzka.taiga.proxy.CommonProxy; import com.sosnitzka.taiga.recipes.Crafting; import com.sosnitzka.taiga.recipes.Smelting; import com.sosnitzka.taiga.util.FuelHandler; @@ -31,19 +31,22 @@ import static com.sosnitzka.taiga.Fluids.*; import static com.sosnitzka.taiga.MaterialTraits.*; import static slimeknights.tconstruct.library.utils.HarvestLevels.*; -@Mod(modid = TAIGA.MODID, version = TAIGA.VERSION, dependencies = "required-after:tconstruct@[1.10-2.3.3,);" + "required-after:mantle@[1.10-0.10.3,)") +@Mod(modid = TAIGA.MODID, version = TAIGA.VERSION, guiFactory = TAIGA.GUIFACTORY, dependencies = "required-after:tconstruct@[1.10-2.3.3,);" + "required-after:mantle@[1.10-0.10.3,)") public class TAIGA { public static final String MODID = "taiga"; public static final String VERSION = "${version}"; + public static final String GUIFACTORY = "com.sosnitzka.taiga.TAIGAGuiFactory"; - @SidedProxy(clientSide = "com.sosnitzka.taiga.proxy.ClientProxy", serverSide = "com.sosnitzka.taiga.proxy.ServerProxy") - public static ServerProxy proxy; + @SidedProxy(clientSide = "com.sosnitzka.taiga.proxy.ClientProxy", serverSide = "com.sosnitzka.taiga.proxy.CommonProxy") + public static CommonProxy proxy; private List<MaterialIntegration> integrateList = Lists.newArrayList(); // List of materials needed to be integrated @EventHandler public void preInit(FMLPreInitializationEvent e) { + proxy.initConfig(); + Items.register(); // Registers items and its oreDict Blocks.register(); // Registers blocks and its items form a long with its oreDict Fluids.register(); // Registers all fluids and its buckets @@ -70,8 +73,6 @@ public class TAIGA { for (MaterialIntegration m : integrateList) { m.integrateRecipes(); } - - } @EventHandler @@ -93,7 +94,6 @@ public class TAIGA { * @param craft Can craft parts in part builder * @param cast Can craft parts by casting with fluid (smeltery) */ - private void registerTinkerMaterial(String oreSuffix, Material material, Fluid fluid, int headDura, float headSpeed, float headAttack, float handleMod, int handleDura, int extra, int headLevel, boolean craft, boolean cast) { TinkerRegistry.addMaterialStats(material, new HeadMaterialStats(headDura, headSpeed, headAttack, headLevel)); TinkerRegistry.addMaterialStats(material, new HandleMaterialStats(handleMod, handleDura)); diff --git a/src/main/java/com/sosnitzka/taiga/TAIGAConfiguration.java b/src/main/java/com/sosnitzka/taiga/TAIGAConfiguration.java new file mode 100644 index 0000000..0ec15a0 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/TAIGAConfiguration.java @@ -0,0 +1,104 @@ +package com.sosnitzka.taiga; + +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.config.Configuration; +import net.minecraftforge.common.config.Property; +import net.minecraftforge.fml.client.event.ConfigChangedEvent; +import net.minecraftforge.fml.common.Loader; +import net.minecraftforge.fml.common.eventhandler.EventPriority; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +public class TAIGAConfiguration { + public static final String CATEGORY_NAME_GENERAL = "category_general"; + public static final String CATEGORY_NAME_ORE = "category_ore"; + public static int oreResistenceFactor; + public static boolean slagIronGen; + private static Configuration config = null; + + public static void preInit() { + File configFile = new File(Loader.instance().getConfigDir(), "TAIGA.cfg"); + config = new Configuration(configFile); + + syncFromFile(); + } + + public static void clientPreInit() { + MinecraftForge.EVENT_BUS.register(new ConfigEventHandler()); + } + + public static Configuration getConfig() { + return config; + } + + public static void syncFromFile() { + syncConfig(true, true); + } + + public static void syncFromGUI() { + syncConfig(false, true); + } + + public static void syncFromFields() { + syncConfig(false, false); + } + + private static void syncConfig(boolean loadConfigFromFile, boolean readFieldsFromConfig) { + if (loadConfigFromFile) { + config.load(); + } + + final int RESMUT_MIN_VALUE = 0; + final int RESMUT_MAX_VALUE = 9999; + final int RESMUT_DEFAULT_VALUE = 1; + Property resMultiplier = config.get(CATEGORY_NAME_ORE, "res_multiplier", RESMUT_DEFAULT_VALUE, + "Resistance multiplier", RESMUT_MIN_VALUE, RESMUT_MAX_VALUE); + resMultiplier.setLanguageKey("gui.taiga_configuration.res_multiplier"); + + final boolean SLAGIRONGEN_DEFAULT_VALUE = true; + Property slagIronSwitch = config.get(CATEGORY_NAME_GENERAL, "switch_slagiron", SLAGIRONGEN_DEFAULT_VALUE); + slagIronSwitch.setComment("Switch slagiron on/off"); + slagIronSwitch.setLanguageKey("gui.taiga_configuration.gen_slagiron"); + + List<String> propOrderGeneral = new ArrayList<String>(); + propOrderGeneral.add(slagIronSwitch.getName()); + config.setCategoryPropertyOrder(CATEGORY_NAME_GENERAL, propOrderGeneral); + + List<String> propOrderOre = new ArrayList<String>(); + propOrderOre.add(resMultiplier.getName()); + config.setCategoryPropertyOrder(CATEGORY_NAME_ORE, propOrderOre); + + + if (readFieldsFromConfig) { + //If getInt cannot get an integer value from the config file value of myInteger (e.g. corrupted file) + // it will set it to the default value passed to the function + oreResistenceFactor = resMultiplier.getInt(RESMUT_DEFAULT_VALUE); + if (oreResistenceFactor > RESMUT_MAX_VALUE || oreResistenceFactor < RESMUT_MIN_VALUE) { + oreResistenceFactor = RESMUT_DEFAULT_VALUE; + } + + slagIronGen = slagIronSwitch.getBoolean(SLAGIRONGEN_DEFAULT_VALUE); + } + + resMultiplier.set(oreResistenceFactor); + slagIronSwitch.set(slagIronGen); + + if (config.hasChanged()) { + config.save(); + } + } + + public static class ConfigEventHandler { + @SubscribeEvent(priority = EventPriority.NORMAL) + public void onEvent(ConfigChangedEvent.OnConfigChangedEvent event) { + if (TAIGA.MODID.equals(event.getModID()) && !event.isWorldRunning()) { + if (event.getConfigID().equals(CATEGORY_NAME_GENERAL) || event.getConfigID().equals(CATEGORY_NAME_ORE)) { + syncFromGUI(); + } + } + } + } +}
\ No newline at end of file diff --git a/src/main/java/com/sosnitzka/taiga/TAIGAGuiFactory.java b/src/main/java/com/sosnitzka/taiga/TAIGAGuiFactory.java new file mode 100644 index 0000000..d0a135a --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/TAIGAGuiFactory.java @@ -0,0 +1,82 @@ +package com.sosnitzka.taiga; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.resources.I18n; +import net.minecraftforge.common.config.ConfigElement; +import net.minecraftforge.common.config.Configuration; +import net.minecraftforge.fml.client.IModGuiFactory; +import net.minecraftforge.fml.client.config.DummyConfigElement; +import net.minecraftforge.fml.client.config.GuiConfig; +import net.minecraftforge.fml.client.config.GuiConfigEntries; +import net.minecraftforge.fml.client.config.IConfigElement; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +public class TAIGAGuiFactory implements IModGuiFactory { + @Override + public void initialize(Minecraft minecraftInstance) { + } + + @Override + public Class<? extends GuiScreen> mainConfigGuiClass() { + return TAIGAConfigGui.class; + } + + @Override + public Set<RuntimeOptionCategoryElement> runtimeGuiCategories() { + return null; + } + + @Override + public RuntimeOptionGuiHandler getHandlerFor(RuntimeOptionCategoryElement element) { + return null; + } + + public static class TAIGAConfigGui extends GuiConfig { + public TAIGAConfigGui(GuiScreen parentScreen) { + super(parentScreen, getConfigElements(), TAIGA.MODID, false, false, I18n.format("gui.taiga_configuration.mainTitle")); + } + + private static List<IConfigElement> getConfigElements() { + List<IConfigElement> list = new ArrayList<IConfigElement>(); + list.add(new DummyConfigElement.DummyCategoryElement("mainCfg", "gui.taiga_configuration.ctgy.general", CategoryEntryGeneral.class)); + list.add(new DummyConfigElement.DummyCategoryElement("oreCfg", "gui.taiga_configuration.ctgy.ore", CategoryEntryOre.class)); + return list; + } + + public static class CategoryEntryGeneral extends GuiConfigEntries.CategoryEntry { + public CategoryEntryGeneral(GuiConfig owningScreen, GuiConfigEntries owningEntryList, IConfigElement prop) { + super(owningScreen, owningEntryList, prop); + } + + @Override + protected GuiScreen buildChildScreen() { + Configuration configuration = TAIGAConfiguration.getConfig(); + ConfigElement cat_general = new ConfigElement(configuration.getCategory(TAIGAConfiguration.CATEGORY_NAME_GENERAL)); + List<IConfigElement> propertiesOnThisScreen = cat_general.getChildElements(); + String windowTitle = configuration.toString(); + + return new GuiConfig(this.owningScreen, propertiesOnThisScreen, this.owningScreen.modID, TAIGAConfiguration.CATEGORY_NAME_GENERAL, this.configElement.requiresWorldRestart() || this.owningScreen.allRequireWorldRestart, this.configElement.requiresMcRestart() || this.owningScreen.allRequireMcRestart, windowTitle); + } + } + + public static class CategoryEntryOre extends GuiConfigEntries.CategoryEntry { + public CategoryEntryOre(GuiConfig owningScreen, GuiConfigEntries owningEntryList, IConfigElement prop) { + super(owningScreen, owningEntryList, prop); + } + + @Override + protected GuiScreen buildChildScreen() { + Configuration configuration = TAIGAConfiguration.getConfig(); + ConfigElement cat_general = new ConfigElement(configuration.getCategory(TAIGAConfiguration.CATEGORY_NAME_ORE)); + List<IConfigElement> propertiesOnThisScreen = cat_general.getChildElements(); + String windowTitle = configuration.toString(); + + return new GuiConfig(this.owningScreen, propertiesOnThisScreen, this.owningScreen.modID, TAIGAConfiguration.CATEGORY_NAME_ORE, this.configElement.requiresWorldRestart() || this.owningScreen.allRequireWorldRestart, this.configElement.requiresMcRestart() || this.owningScreen.allRequireMcRestart, windowTitle); + } + } + } +}
\ No newline at end of file diff --git a/src/main/java/com/sosnitzka/taiga/proxy/ClientProxy.java b/src/main/java/com/sosnitzka/taiga/proxy/ClientProxy.java index 9a245cb..13a65d8 100644 --- a/src/main/java/com/sosnitzka/taiga/proxy/ClientProxy.java +++ b/src/main/java/com/sosnitzka/taiga/proxy/ClientProxy.java @@ -3,6 +3,7 @@ package com.sosnitzka.taiga.proxy; import com.sosnitzka.taiga.Blocks; import com.sosnitzka.taiga.Items; import com.sosnitzka.taiga.TAIGA; +import com.sosnitzka.taiga.TAIGAConfiguration; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; @@ -24,7 +25,7 @@ import java.lang.reflect.Field; import static com.sosnitzka.taiga.MaterialTraits.*; -public class ClientProxy extends ServerProxy { +public class ClientProxy extends CommonProxy { private static void registerBlockModel(Block block) { registerItemModel(Item.getItemFromBlock(block)); @@ -112,6 +113,11 @@ public class ClientProxy extends ServerProxy { } } + @Override + public void initConfig() { + TAIGAConfiguration.clientPreInit(); + } + public static class FluidStateMapper extends StateMapperBase implements ItemMeshDefinition { public final Fluid fluid; diff --git a/src/main/java/com/sosnitzka/taiga/proxy/ServerProxy.java b/src/main/java/com/sosnitzka/taiga/proxy/CommonProxy.java index b9f9e70..c3b2e64 100644 --- a/src/main/java/com/sosnitzka/taiga/proxy/ServerProxy.java +++ b/src/main/java/com/sosnitzka/taiga/proxy/CommonProxy.java @@ -1,9 +1,10 @@ package com.sosnitzka.taiga.proxy; +import com.sosnitzka.taiga.TAIGAConfiguration; import net.minecraftforge.fluids.Fluid; import slimeknights.tconstruct.library.materials.Material; -public class ServerProxy { +public class CommonProxy { public void registerModels() { @@ -15,4 +16,8 @@ public class ServerProxy { public void registerFluidModels(Fluid fluid) { } + + public void initConfig() { + TAIGAConfiguration.preInit(); + } } |
