From f0ee38df32f3ab994192c0832ffb8e98395ae305 Mon Sep 17 00:00:00 2001 From: Tombenpotter Date: Tue, 15 Jul 2014 15:00:03 +0200 Subject: [PATCH] Fixed the wand charging station texture, moved the baubles API to package it, and using the @API annotation for it. Added the Config GUIs existing in MinecraftForge for EMT! Awesome! --- .gitignore | 17 ++ Changelog.txt | 3 + build.gradle | 6 +- src/api/java/ic2/api/energy/EnergyNet.java | 2 +- src/api/java/ic2/api/energy/IEnergyNet.java | 2 +- .../ic2/api/energy/event/EnergyTileEvent.java | 2 +- .../api/energy/event/EnergyTileLoadEvent.java | 2 +- .../energy/event/EnergyTileUnloadEvent.java | 2 +- .../ic2/api/energy/tile/IEnergyAcceptor.java | 2 +- .../ic2/api/energy/tile/IEnergyConductor.java | 2 +- .../ic2/api/energy/tile/IEnergyEmitter.java | 2 +- .../java/ic2/api/energy/tile/IEnergySink.java | 2 +- .../ic2/api/energy/tile/IEnergySource.java | 2 +- .../java/ic2/api/energy/tile/IEnergyTile.java | 2 +- .../ic2/api/energy/tile/IMetaDelegate.java | 2 +- src/api/java/ic2/api/energy/usage.txt | 2 +- src/api/java/ic2/api/item/IC2Items.java | 2 +- .../java/ic2/api/network/NetworkHelper.java | 2 +- src/api/java/ic2/api/reactor/IC2Reactor.java | 2 +- .../java/baubles/api/BaubleType.java | 0 .../java/baubles/api/BaublesApi.java | 6 +- .../java/baubles/api/IBauble.java | 0 src/main/java/baubles/api/package-info.java | 3 + .../client/gui/EMTGuiConfig.java | 73 ++++++++ .../electricmagictools/common/Config.java | 161 +++++++++--------- .../common/EMTEventHandler.java | 7 + .../common/EMTGuiFactory.java | 30 ++++ .../common/ElectricMagicTools.java | 32 +--- .../common/blocks/BlockShield.java | 25 ++- .../common/recipes/EMTPostInitRecipes.java | 15 +- .../tile/TileEntityEtherealMacerator.java | 4 +- .../container/ContainerEtheralMacerator.java | 101 ++++------- .../ContainerIndustrialWandRecharge.java | 101 ++++------- .../textures/blocks/Thumbs.db | Bin 0 -> 11264 bytes .../blocks/essentiagenerator/Thumbs.db | Bin 0 -> 4608 bytes .../textures/blocks/machines/Thumbs.db | Bin 0 -> 33280 bytes .../textures/blocks/machines/wandcharger.png | Bin 1905 -> 2047 bytes .../blocks/machines/wandcharger_front.png | Bin 2047 -> 0 bytes .../textures/blocks/solars/Thumbs.db | Bin 0 -> 4608 bytes .../textures/guis/Thumbs.db | Bin 0 -> 5632 bytes .../textures/items/Thumbs.db | Bin 0 -> 4096 bytes .../textures/misc/Thumbs.db | Bin 0 -> 16896 bytes .../textures/models/Thumbs.db | Bin 0 -> 9728 bytes src/main/resources/mcmod.info | 20 +-- 44 files changed, 347 insertions(+), 289 deletions(-) create mode 100644 .gitignore rename src/{api => main}/java/baubles/api/BaubleType.java (100%) rename src/{api => main}/java/baubles/api/BaublesApi.java (100%) rename src/{api => main}/java/baubles/api/IBauble.java (100%) create mode 100644 src/main/java/baubles/api/package-info.java create mode 100644 src/main/java/electricMagicTools/tombenpotter/electricmagictools/client/gui/EMTGuiConfig.java create mode 100644 src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/EMTGuiFactory.java create mode 100644 src/main/resources/assets/electricmagictools/textures/blocks/Thumbs.db create mode 100644 src/main/resources/assets/electricmagictools/textures/blocks/essentiagenerator/Thumbs.db create mode 100644 src/main/resources/assets/electricmagictools/textures/blocks/machines/Thumbs.db delete mode 100644 src/main/resources/assets/electricmagictools/textures/blocks/machines/wandcharger_front.png create mode 100644 src/main/resources/assets/electricmagictools/textures/blocks/solars/Thumbs.db create mode 100644 src/main/resources/assets/electricmagictools/textures/guis/Thumbs.db create mode 100644 src/main/resources/assets/electricmagictools/textures/items/Thumbs.db create mode 100644 src/main/resources/assets/electricmagictools/textures/misc/Thumbs.db create mode 100644 src/main/resources/assets/electricmagictools/textures/models/Thumbs.db diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bbf75ff --- /dev/null +++ b/.gitignore @@ -0,0 +1,17 @@ +.gradle/ +build/ +eclipse/ +out/ +asm/* +*.psd +*.iml +*.ipr +*.iws +*.psd +/bin +*.psd +*.classpath +*.project +/bin +libs/* +MCFPost.txt \ No newline at end of file diff --git a/Changelog.txt b/Changelog.txt index e484a1d..89c13f6 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,6 +1,9 @@ Changelog of the mod : Electric Magic Tools, a Thaumcraft 4/Industrial-Craft 2 addon -------------------------------------------------------------------------------------------------------------------------------------------------------- +Version 1.2 : +Fixed the Shield Block being broken by the wither. + Version 1.1.1 : Fixed a bug with The One Ring where mobs attacked you when you removed it while in creative. New Thaumonomicon entries for a couple of things, thanks to Professor29. diff --git a/build.gradle b/build.gradle index af6ca82..86275eb 100644 --- a/build.gradle +++ b/build.gradle @@ -17,8 +17,8 @@ buildscript { apply plugin: 'forge' -version = "1.1.1" -group= "electricMagicTools.tombenpotter" // http://maven.apache.org/guides/mini/guide-naming-conventions.html +version = "1.2" +group= "" archivesBaseName = "ElectroMagicTools" minecraft { @@ -33,7 +33,7 @@ processResources { // replace stuff in mcmod.info, nothing else from(sourceSets.main.resources.srcDirs) { - include 'mcmod/info' + include 'mcmod.info' // replace version and mcversion expand 'version':project.version, 'mcversion':project.minecraft.version diff --git a/src/api/java/ic2/api/energy/EnergyNet.java b/src/api/java/ic2/api/energy/EnergyNet.java index 822bfc2..7560ec0 100644 --- a/src/api/java/ic2/api/energy/EnergyNet.java +++ b/src/api/java/ic2/api/energy/EnergyNet.java @@ -7,7 +7,7 @@ package ic2.api.energy; * The old EnergyNet methods missing in IEnergyNet have been migrated to events (load, unload) or * removed (tiles no longer emit energy actively, the energy net implementation requests it). * - * See ic2/api/energy/usage.txt for an overall description of the energy net api. + * See ic2/baubles.api/energy/usage.txt for an overall description of the energy net baubles.api. */ public final class EnergyNet { /** diff --git a/src/api/java/ic2/api/energy/IEnergyNet.java b/src/api/java/ic2/api/energy/IEnergyNet.java index 871b466..ec709e2 100644 --- a/src/api/java/ic2/api/energy/IEnergyNet.java +++ b/src/api/java/ic2/api/energy/IEnergyNet.java @@ -8,7 +8,7 @@ import net.minecraftforge.common.util.ForgeDirection; /** * Interface representing the methods provided by the global EnergyNet class. * - * See ic2/api/energy/usage.txt for an overall description of the energy net api. + * See ic2/baubles.api/energy/usage.txt for an overall description of the energy net baubles.api. */ public interface IEnergyNet { /** diff --git a/src/api/java/ic2/api/energy/event/EnergyTileEvent.java b/src/api/java/ic2/api/energy/event/EnergyTileEvent.java index 2182e49..03d6868 100644 --- a/src/api/java/ic2/api/energy/event/EnergyTileEvent.java +++ b/src/api/java/ic2/api/energy/event/EnergyTileEvent.java @@ -9,7 +9,7 @@ import ic2.api.energy.tile.IEnergyTile; /** * Base class for energy net events, don't use it directly. * - * See ic2/api/energy/usage.txt for an overall description of the energy net api. + * See ic2/baubles.api/energy/usage.txt for an overall description of the energy net baubles.api. */ public class EnergyTileEvent extends WorldEvent { public final IEnergyTile energyTile; diff --git a/src/api/java/ic2/api/energy/event/EnergyTileLoadEvent.java b/src/api/java/ic2/api/energy/event/EnergyTileLoadEvent.java index bf019ae..b3fcbb5 100644 --- a/src/api/java/ic2/api/energy/event/EnergyTileLoadEvent.java +++ b/src/api/java/ic2/api/energy/event/EnergyTileLoadEvent.java @@ -16,7 +16,7 @@ import ic2.api.energy.tile.IEnergyTile; * your own energy grid implementation if you need to. It's not required if you * always lookup energy paths on demand. * - * See ic2/api/energy/usage.txt for an overall description of the energy net api. + * See ic2/baubles.api/energy/usage.txt for an overall description of the energy net baubles.api. */ public class EnergyTileLoadEvent extends EnergyTileEvent { public EnergyTileLoadEvent(IEnergyTile energyTile1) { diff --git a/src/api/java/ic2/api/energy/event/EnergyTileUnloadEvent.java b/src/api/java/ic2/api/energy/event/EnergyTileUnloadEvent.java index 2b22ae3..4bcc3a4 100644 --- a/src/api/java/ic2/api/energy/event/EnergyTileUnloadEvent.java +++ b/src/api/java/ic2/api/energy/event/EnergyTileUnloadEvent.java @@ -17,7 +17,7 @@ import ic2.api.energy.tile.IEnergyTile; * your own energy grid implementation if you need to. It's not required if you * always lookup energy paths on demand. * - * See ic2/api/energy/usage.txt for an overall description of the energy net api. + * See ic2/baubles.api/energy/usage.txt for an overall description of the energy net baubles.api. */ public class EnergyTileUnloadEvent extends EnergyTileEvent { public EnergyTileUnloadEvent(IEnergyTile energyTile1) { diff --git a/src/api/java/ic2/api/energy/tile/IEnergyAcceptor.java b/src/api/java/ic2/api/energy/tile/IEnergyAcceptor.java index 1735ff5..d413a38 100644 --- a/src/api/java/ic2/api/energy/tile/IEnergyAcceptor.java +++ b/src/api/java/ic2/api/energy/tile/IEnergyAcceptor.java @@ -10,7 +10,7 @@ import net.minecraftforge.common.util.ForgeDirection; * @see IEnergySink * @see IEnergyConductor * - * See ic2/api/energy/usage.txt for an overall description of the energy net api. + * See ic2/baubles.api/energy/usage.txt for an overall description of the energy net baubles.api. */ public interface IEnergyAcceptor extends IEnergyTile { /** diff --git a/src/api/java/ic2/api/energy/tile/IEnergyConductor.java b/src/api/java/ic2/api/energy/tile/IEnergyConductor.java index 16965af..0a841f5 100644 --- a/src/api/java/ic2/api/energy/tile/IEnergyConductor.java +++ b/src/api/java/ic2/api/energy/tile/IEnergyConductor.java @@ -4,7 +4,7 @@ package ic2.api.energy.tile; * Tile entities which conduct energy pulses without buffering (mostly cables) have to implement this * interface. * - * See ic2/api/energy/usage.txt for an overall description of the energy net api. + * See ic2/baubles.api/energy/usage.txt for an overall description of the energy net baubles.api. */ public interface IEnergyConductor extends IEnergyAcceptor, IEnergyEmitter { /** diff --git a/src/api/java/ic2/api/energy/tile/IEnergyEmitter.java b/src/api/java/ic2/api/energy/tile/IEnergyEmitter.java index 013865e..69ea41f 100644 --- a/src/api/java/ic2/api/energy/tile/IEnergyEmitter.java +++ b/src/api/java/ic2/api/energy/tile/IEnergyEmitter.java @@ -10,7 +10,7 @@ import net.minecraftforge.common.util.ForgeDirection; * @see IEnergySource * @see IEnergyConductor * - * See ic2/api/energy/usage.txt for an overall description of the energy net api. + * See ic2/baubles.api/energy/usage.txt for an overall description of the energy net baubles.api. */ public interface IEnergyEmitter extends IEnergyTile { /** diff --git a/src/api/java/ic2/api/energy/tile/IEnergySink.java b/src/api/java/ic2/api/energy/tile/IEnergySink.java index fe30578..b1bce6c 100644 --- a/src/api/java/ic2/api/energy/tile/IEnergySink.java +++ b/src/api/java/ic2/api/energy/tile/IEnergySink.java @@ -5,7 +5,7 @@ import net.minecraftforge.common.util.ForgeDirection; /** * Allows a tile entity (mostly a machine) to receive energy. * - * See ic2/api/energy/usage.txt for an overall description of the energy net api. + * See ic2/baubles.api/energy/usage.txt for an overall description of the energy net baubles.api. */ public interface IEnergySink extends IEnergyAcceptor { /** diff --git a/src/api/java/ic2/api/energy/tile/IEnergySource.java b/src/api/java/ic2/api/energy/tile/IEnergySource.java index b864d45..a2ef97c 100644 --- a/src/api/java/ic2/api/energy/tile/IEnergySource.java +++ b/src/api/java/ic2/api/energy/tile/IEnergySource.java @@ -3,7 +3,7 @@ package ic2.api.energy.tile; /** * Allows a tile entity (mostly a generator) to emit energy. * - * See ic2/api/energy/usage.txt for an overall description of the energy net api. + * See ic2/baubles.api/energy/usage.txt for an overall description of the energy net baubles.api. */ public interface IEnergySource extends IEnergyEmitter { /** diff --git a/src/api/java/ic2/api/energy/tile/IEnergyTile.java b/src/api/java/ic2/api/energy/tile/IEnergyTile.java index 3938190..346f7e1 100644 --- a/src/api/java/ic2/api/energy/tile/IEnergyTile.java +++ b/src/api/java/ic2/api/energy/tile/IEnergyTile.java @@ -7,7 +7,7 @@ package ic2.api.energy.tile; * @see IEnergySource * @see IEnergyConductor * - * See ic2/api/energy/usage.txt for an overall description of the energy net api. + * See ic2/baubles.api/energy/usage.txt for an overall description of the energy net baubles.api. */ public interface IEnergyTile { // diff --git a/src/api/java/ic2/api/energy/tile/IMetaDelegate.java b/src/api/java/ic2/api/energy/tile/IMetaDelegate.java index 8f4e830..abc1666 100644 --- a/src/api/java/ic2/api/energy/tile/IMetaDelegate.java +++ b/src/api/java/ic2/api/energy/tile/IMetaDelegate.java @@ -20,7 +20,7 @@ import net.minecraft.tileentity.TileEntity; * IEnergyEmitter) and mandatory position (x, y, z, World) data. * If the connectivity data on the sub tile is missing, the meta delegate is queried instead. * - * See ic2/api/energy/usage.txt for an overall description of the energy net api. + * See ic2/baubles.api/energy/usage.txt for an overall description of the energy net baubles.api. */ public interface IMetaDelegate extends IEnergyTile { /** diff --git a/src/api/java/ic2/api/energy/usage.txt b/src/api/java/ic2/api/energy/usage.txt index 49bd995..8e57f4f 100644 --- a/src/api/java/ic2/api/energy/usage.txt +++ b/src/api/java/ic2/api/energy/usage.txt @@ -139,6 +139,6 @@ distribution rules or to use energy networks provided by other mods, you can reg tile events and use the interfaces to handle the energy distribution yourself. It's no longer required to use conversion blocks. -IC2's EnergyNet itself is built on top of the api events and interfaces, providing their default +IC2's EnergyNet itself is built on top of the baubles.api events and interfaces, providing their default use case. diff --git a/src/api/java/ic2/api/item/IC2Items.java b/src/api/java/ic2/api/item/IC2Items.java index 67d9f75..440cadf 100644 --- a/src/api/java/ic2/api/item/IC2Items.java +++ b/src/api/java/ic2/api/item/IC2Items.java @@ -588,7 +588,7 @@ public final class IC2Items { if (pkg != null) { String packageName = pkg.getName(); - return packageName.substring(0, packageName.length() - ".api.item".length()); + return packageName.substring(0, packageName.length() - ".baubles.api.item".length()); } return "ic2"; diff --git a/src/api/java/ic2/api/network/NetworkHelper.java b/src/api/java/ic2/api/network/NetworkHelper.java index 5f9138d..af38928 100644 --- a/src/api/java/ic2/api/network/NetworkHelper.java +++ b/src/api/java/ic2/api/network/NetworkHelper.java @@ -165,7 +165,7 @@ public final class NetworkHelper { if (pkg != null) { String packageName = pkg.getName(); - return packageName.substring(0, packageName.length() - ".api.network".length()); + return packageName.substring(0, packageName.length() - ".baubles.api.network".length()); } return "ic2"; diff --git a/src/api/java/ic2/api/reactor/IC2Reactor.java b/src/api/java/ic2/api/reactor/IC2Reactor.java index 512c4ff..78d5a9f 100644 --- a/src/api/java/ic2/api/reactor/IC2Reactor.java +++ b/src/api/java/ic2/api/reactor/IC2Reactor.java @@ -26,7 +26,7 @@ public class IC2Reactor { if (pkg != null) { String packageName = pkg.getName(); - return packageName.substring(0, packageName.length() - ".api.reactor".length()); + return packageName.substring(0, packageName.length() - ".baubles.api.reactor".length()); } return "ic2"; diff --git a/src/api/java/baubles/api/BaubleType.java b/src/main/java/baubles/api/BaubleType.java similarity index 100% rename from src/api/java/baubles/api/BaubleType.java rename to src/main/java/baubles/api/BaubleType.java diff --git a/src/api/java/baubles/api/BaublesApi.java b/src/main/java/baubles/api/BaublesApi.java similarity index 100% rename from src/api/java/baubles/api/BaublesApi.java rename to src/main/java/baubles/api/BaublesApi.java index ca94fcd..20d5c60 100644 --- a/src/api/java/baubles/api/BaublesApi.java +++ b/src/main/java/baubles/api/BaublesApi.java @@ -1,10 +1,10 @@ package baubles.api; -import java.lang.reflect.Method; - +import cpw.mods.fml.common.FMLLog; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; -import cpw.mods.fml.common.FMLLog; + +import java.lang.reflect.Method; diff --git a/src/api/java/baubles/api/IBauble.java b/src/main/java/baubles/api/IBauble.java similarity index 100% rename from src/api/java/baubles/api/IBauble.java rename to src/main/java/baubles/api/IBauble.java diff --git a/src/main/java/baubles/api/package-info.java b/src/main/java/baubles/api/package-info.java new file mode 100644 index 0000000..9fe5323 --- /dev/null +++ b/src/main/java/baubles/api/package-info.java @@ -0,0 +1,3 @@ +@API(apiVersion = "1.0.0.16", owner = "Baubles", provides = "Baubles|API") +package baubles.api; +import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/main/java/electricMagicTools/tombenpotter/electricmagictools/client/gui/EMTGuiConfig.java b/src/main/java/electricMagicTools/tombenpotter/electricmagictools/client/gui/EMTGuiConfig.java new file mode 100644 index 0000000..e6e9553 --- /dev/null +++ b/src/main/java/electricMagicTools/tombenpotter/electricmagictools/client/gui/EMTGuiConfig.java @@ -0,0 +1,73 @@ +package electricMagicTools.tombenpotter.electricmagictools.client.gui; + +import cpw.mods.fml.client.config.DummyConfigElement; +import cpw.mods.fml.client.config.GuiConfig; +import cpw.mods.fml.client.config.GuiConfigEntries; +import cpw.mods.fml.client.config.IConfigElement; +import electricMagicTools.tombenpotter.electricmagictools.common.Config; +import electricMagicTools.tombenpotter.electricmagictools.common.ElectricMagicTools; +import net.minecraft.client.gui.GuiScreen; +import net.minecraftforge.common.config.ConfigElement; +import net.minecraftforge.common.config.Configuration; + +import java.util.ArrayList; +import java.util.List; + +public class EMTGuiConfig extends GuiConfig { + public EMTGuiConfig(GuiScreen parentScreen) { + super(parentScreen, getConfigElements(), ElectricMagicTools.modid, false, false, GuiConfig.getAbridgedConfigPath(Config.config.toString())); + } + + private static List getConfigElements() { + List list = new ArrayList(); + list.add(new DummyConfigElement.DummyCategoryElement("General Config", "emt.config.general", GeneralEntry.class)); + list.add(new DummyConfigElement.DummyCategoryElement("Values Config", "emt.config.valuezs", ValuesEntry.class)); + list.add(new DummyConfigElement.DummyCategoryElement("Research Disabling Config", "emt.config.research.disable", ResearchEntry.class)); + return list; + } + + public static class GeneralEntry extends GuiConfigEntries.CategoryEntry { + public GeneralEntry(GuiConfig owningScreen, GuiConfigEntries owningEntryList, IConfigElement prop) { + super(owningScreen, owningEntryList, prop); + } + + @Override + protected GuiScreen buildChildScreen() { + return new GuiConfig(this.owningScreen, + (new ConfigElement(Config.config.getCategory(Configuration.CATEGORY_GENERAL))).getChildElements(), + this.owningScreen.modID, Configuration.CATEGORY_GENERAL, this.configElement.requiresWorldRestart() || this.owningScreen.allRequireWorldRestart, + this.configElement.requiresMcRestart() || this.owningScreen.allRequireMcRestart, + GuiConfig.getAbridgedConfigPath("emt/config/general")); + } + } + + public static class ValuesEntry extends GuiConfigEntries.CategoryEntry { + public ValuesEntry(GuiConfig owningScreen, GuiConfigEntries owningEntryList, IConfigElement prop) { + super(owningScreen, owningEntryList, prop); + } + + @Override + protected GuiScreen buildChildScreen() { + return new GuiConfig(this.owningScreen, + (new ConfigElement(Config.config.getCategory(Config.CATEGORY_VALUES))).getChildElements(), + this.owningScreen.modID, Configuration.CATEGORY_GENERAL, this.configElement.requiresWorldRestart() || this.owningScreen.allRequireWorldRestart, + this.configElement.requiresMcRestart() || this.owningScreen.allRequireMcRestart, + GuiConfig.getAbridgedConfigPath("emt/config/values")); + } + } + + public static class ResearchEntry extends GuiConfigEntries.CategoryEntry { + public ResearchEntry(GuiConfig owningScreen, GuiConfigEntries owningEntryList, IConfigElement prop) { + super(owningScreen, owningEntryList, prop); + } + + @Override + protected GuiScreen buildChildScreen() { + return new GuiConfig(this.owningScreen, + (new ConfigElement(Config.config.getCategory(Config.CATEGORY_RESEARCH))).getChildElements(), + this.owningScreen.modID, Configuration.CATEGORY_GENERAL, this.configElement.requiresWorldRestart() || this.owningScreen.allRequireWorldRestart, + this.configElement.requiresMcRestart() || this.owningScreen.allRequireMcRestart, + GuiConfig.getAbridgedConfigPath("emt/config/research")); + } + } +} diff --git a/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/Config.java b/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/Config.java index 9b163e9..e1e827c 100644 --- a/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/Config.java +++ b/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/Config.java @@ -11,7 +11,6 @@ ******************************************************************************/ package electricMagicTools.tombenpotter.electricmagictools.common; -import cpw.mods.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.common.config.Configuration; public class Config { @@ -95,97 +94,97 @@ public class Config { public static boolean nanoWingResearch; public static boolean quantumWingsResearch; - public static String CATEGORY_RESEARCH = "Research"; - public static String CATEGORY_VALUES = "Numeric Values"; + public static String CATEGORY_RESEARCH = "research"; + public static String CATEGORY_VALUES = "numeric values"; + public static Configuration config; - public static void create(FMLPreInitializationEvent event) { - Configuration config = new Configuration(event.getSuggestedConfigurationFile()); + public static void create() { config.addCustomCategoryComment(CATEGORY_VALUES, "The only way to change some numbers that my machines uses."); config.addCustomCategoryComment(CATEGORY_RESEARCH, "The only way to disable some researches. " + "Be careful, if you disable some researches, " + "all researches linked to it will be removed too. " + "Really, don't touch that unless you know exactly what you are doing."); config.load(); /** Random Booleans **/ - capesOn = config.get(Configuration.CATEGORY_GENERAL, "Enable showing capes", true, "This config option is to enable or disable capes for people who have them. " + "Seriously, you shouldn't touch that unless you have another cape and " + "it conflicts with it.").getBoolean(capesOn); - toolsInBore = config.get(Configuration.CATEGORY_GENERAL, "Making the tools worth begin used in the Arcane Bore.", false, "This will augment the durablilty of the tools, and will also decrease the EU cost to 1. " + "The tools should have the same number of uses than before.").getBoolean(toolsInBore); - nightVisionOff = config.get(Configuration.CATEGORY_GENERAL, "Disable totally the nightvision ability of the Nanosuit Googles of Revealing, " + "Quantum Googles of Revealing and of the Quantum Solar Helmet of Revealing", false, "This was added because of mods making you totally blind if using nightvision. For example, enable that when in the Deep Dark.").getBoolean(nightVisionOff); - enchanting = config.get(Configuration.CATEGORY_GENERAL, "Enable enchanting my tools and amors", false, "Warning: the enchantability is low.").getBoolean(enchanting); - smoke = config.get(Configuration.CATEGORY_GENERAL, "Disable the smoke effect for the Electric/Nano/Quantum Boots of the Traveller", false, "This effect only appears when the player isn't on the ground").getBoolean(smoke); - oneRingSpawn = config.get(Configuration.CATEGORY_GENERAL, "Disable the One Ring spawning in dungeon chests", false, "There is no other way to get this item.").getBoolean(oneRingSpawn); - chanceTaintedMjolnir = config.get(Configuration.CATEGORY_GENERAL, "Chance for the Tainted Mjolnir to spawn inside of dungeon chests", 25, "If you have a lot of mods adding dungeon loot, you should definetely increase this").getInt(); - chanceOneRing = config.get(Configuration.CATEGORY_GENERAL, "Chance for The One Ring to spawn inside of dungeon chests", 15, "If you have a lot of mods adding dungeon loot, you should definetely increase this").getInt(); - removeAmberAndCinnabarMacerating = config.get(Configuration.CATEGORY_GENERAL, "Remove Existing Amber and Cinnabar Macerating Recipes", true, "This is here because of conflicts between mods that add the same input and different outputs").getBoolean(removeAmberAndCinnabarMacerating); + capesOn = config.get(Configuration.CATEGORY_GENERAL, "Enable capes", true, "This config option is to enable or disable capes for people who have them. " + "Seriously, you shouldn't touch that unless you have another cape and " + "it conflicts with it.").getBoolean(capesOn); + toolsInBore = config.get(Configuration.CATEGORY_GENERAL, "Tools for Arcane Bore", false, "This will augment the durablilty of the tools, and will also decrease the EU cost to 1. " + "The tools should have the same number of uses than before.").getBoolean(toolsInBore); + nightVisionOff = config.get(Configuration.CATEGORY_GENERAL, "Disable nightvision helmets", false, "This was added because of mods making you totally blind if using nightvision. For example, enable that when in the Deep Dark.").getBoolean(nightVisionOff); + enchanting = config.get(Configuration.CATEGORY_GENERAL, "Enable enchanting tools", false, "Warning: the enchantability is low.").getBoolean(enchanting); + smoke = config.get(Configuration.CATEGORY_GENERAL, "Disable smoke effect for boots", false, "This effect only appears when the player isn't on the ground").getBoolean(smoke); + oneRingSpawn = config.get(Configuration.CATEGORY_GENERAL, "Disable One Ring in dungeon chests", false, "There is no other way to get this item.").getBoolean(oneRingSpawn); + chanceTaintedMjolnir = config.get(Configuration.CATEGORY_GENERAL, "Tainted Mjolnir spawning change", 25, "If you have a lot of mods adding dungeon loot, you should definetely increase this").getInt(); + chanceOneRing = config.get(Configuration.CATEGORY_GENERAL, "One Ring spawning chance", 15, "If you have a lot of mods adding dungeon loot, you should definetely increase this").getInt(); + removeAmberAndCinnabarMacerating = config.get(Configuration.CATEGORY_GENERAL, "Clear Amber/Cinnabar Macerating", true, "This is here because of conflicts between mods that add the same input and different outputs").getBoolean(removeAmberAndCinnabarMacerating); /** EU Yield/Consumption modifier **/ - potentiaGenOutput = config.get("Numeric Values", "Potentia Generator EU Output", 3500, "This is the number you have to modify if you want to make the Potentia Generator yield " + "more or less EU per unit of essentia.").getDouble(potentiaGenOutput); - arborGenOutput = config.get("Numeric Values", "Arbor Generator EU Output", 325, "This is the number you have to modify if you want to make the Arbor Generator yield " + "more or less EU per unit of essentia.").getDouble(arborGenOutput); - auramGenOutput = config.get("Numeric Values", "Auram Generator EU Output", 3200, "This is the number you have to modify if you want to make the Auram Generator yield " + "more or less EU per unit of essentia.").getDouble(auramGenOutput); - ignisGenOutput = config.get("Numeric Values", "Ignis Generator EU Output", 3200, "This is the number you have to modify if you want to make the Ignis Generator yield " + "more or less EU per unit of essentia.").getDouble(ignisGenOutput); - saxumGenOutput = config.get("Numeric Values", "Saxum Generator Output", 350, "This is the number you have to modify if you want to make the Saxum Generator yield " + "more or less EU per unit of essentia.").getDouble(saxumGenOutput); - wandChargerConsumption = config.get("Numeric Values", "Industrial Wand Charging Station EU Consumption", 50000, "This is the number you have to modify if you want to make the Industrial Wand Charging " + "Station use more or less EU to charge 1 unit of Vis on your wand.").getDouble(wandChargerConsumption); - compressedSolarOutput = config.get("Numeric Values", "Compressed Solar Panel EU Output", 10, "This is the number you have to modify if you want to make the Compressed Solar Panel yield " + "more or less EU per tick. Really, you shouldn't touch that, " + "since it's pretty balanced as it is.").getDouble(compressedSolarOutput); - doubleCompressedSolarOutput = config.get("Numeric Values", "Double Compressed Solar Panel EU Output", 100, "This is the number you have to modify if you want to make the Double Compressed Solar Panel " + "yield more or less EU per tick. Really, you shouldn't touch that, " + "since it's pretty balanced as it is.").getDouble(doubleCompressedSolarOutput); - tripleCompressedSolarOutput = config.get("Numeric Values", "Triple Compressed Solar Panel EU Output", 1000, "This is the number you have to modify if you want to make the Triple Compressed Solar Panel " + "yield more or less EU per tick. Really, you shouldn't touch that, " + "since it's pretty balanced as it is.").getDouble(tripleCompressedSolarOutput); - essentiaGeneratorsDelay = config.get("Numeric Values", "Essentia Generators draw rate", 120, "The number of ticks the Essentia Generators wait before using 2 Essentia. " + "If you want them to be slower, increase the number.").getInt(essentiaGeneratorsDelay); - nanoBootsSpeed = config.get("Numeric Values", "Speed of the Nano Boots of the Traveller", 0.25, "Watch out, that goes up REALLY quickly.").getDouble(nanoBootsSpeed); - quantumBootsSpeed = config.get("Numeric Values", "Speed of the Quantum Boots of the Traveller", 0.5, "Watch out, that goes up REALLY quickly.").getDouble(quantumBootsSpeed); - nanoBootsJump = config.get("Numeric Values", "Jump height for the Nano Boots of the Traveller", 0.6, "Watch out, that goes up REALLY quickly.").getDouble(nanoBootsJump); - quantumBootsJump = config.get("Numeric Values", "Jump height for the Quantum Boots of the Traveller", 0.9, "Watch out, that goes up REALLY quickly.").getDouble(nanoBootsJump); - etherealProcessorBaseSpeed = config.get("Numeric Values", "Base Time the Etheral Processor takes to process a single item in number of ticks.", 400, "Default is 400, the double of a regular furnace").getInt(); - etherealProcessorBonus = config.get("Numeric Values", "Ethereal Processor Bonus", 10, "This number is the chance of getting a Thaumium Ingot as a bonus when " + "processing an item in the machine. It is 1 out of the number you will enter. " + "The default is 1/10 chance.").getInt(); - chargeFocusProduction = config.get("Numeric Values", "Wand Focus: Charge production in EU/T", 64, "Default is 64").getInt(); - armorBaubleProduction = config.get("Numeric Values", "Armor Charging Ring produciton in EU/T", 32, "Default is 32").getInt(); - inventoryBaubleProdution = config.get("Numeric Values", "Inventory Charging Ring produciton in EU/T", 32, "Default is 32").getInt(); - wandChargeFocusCost = config.get("Numeric Values", "Wand Focus: Wand Charging Cost in EU/T", 40000, "Default is 40000").getInt(); + potentiaGenOutput = config.get(CATEGORY_VALUES, "Potentia Generator Output", 3500, "This is the number you have to modify if you want to make the Potentia Generator yield " + "more or less EU per unit of essentia.").getDouble(potentiaGenOutput); + arborGenOutput = config.get(CATEGORY_VALUES, "Arbor Generator Output", 325, "This is the number you have to modify if you want to make the Arbor Generator yield " + "more or less EU per unit of essentia.").getDouble(arborGenOutput); + auramGenOutput = config.get(CATEGORY_VALUES, "Auram Generator Output", 3200, "This is the number you have to modify if you want to make the Auram Generator yield " + "more or less EU per unit of essentia.").getDouble(auramGenOutput); + ignisGenOutput = config.get(CATEGORY_VALUES, "Ignis Generator Output", 3200, "This is the number you have to modify if you want to make the Ignis Generator yield " + "more or less EU per unit of essentia.").getDouble(ignisGenOutput); + saxumGenOutput = config.get(CATEGORY_VALUES, "Saxum Generator Output", 350, "This is the number you have to modify if you want to make the Saxum Generator yield " + "more or less EU per unit of essentia.").getDouble(saxumGenOutput); + wandChargerConsumption = config.get(CATEGORY_VALUES, "Wand Charging Station Consumption", 50000, "This is the number you have to modify if you want to make the Industrial Wand Charging " + "Station use more or less EU to charge 1 unit of Vis on your wand.").getDouble(wandChargerConsumption); + compressedSolarOutput = config.get(CATEGORY_VALUES, "Compressed Solar Panel Output", 10, "This is the number you have to modify if you want to make the Compressed Solar Panel yield " + "more or less EU per tick. Really, you shouldn't touch that, " + "since it's pretty balanced as it is.").getDouble(compressedSolarOutput); + doubleCompressedSolarOutput = config.get(CATEGORY_VALUES, "Double Compressed Solar Panel Output", 100, "This is the number you have to modify if you want to make the Double Compressed Solar Panel " + "yield more or less EU per tick. Really, you shouldn't touch that, " + "since it's pretty balanced as it is.").getDouble(doubleCompressedSolarOutput); + tripleCompressedSolarOutput = config.get(CATEGORY_VALUES, "Triple Compressed Solar Panel Output", 1000, "This is the number you have to modify if you want to make the Triple Compressed Solar Panel " + "yield more or less EU per tick. Really, you shouldn't touch that, " + "since it's pretty balanced as it is.").getDouble(tripleCompressedSolarOutput); + essentiaGeneratorsDelay = config.get(CATEGORY_VALUES, "Essentia Generators draw rate", 120, "The number of ticks the Essentia Generators wait before using 2 Essentia. " + "If you want them to be slower, increase the number.").getInt(essentiaGeneratorsDelay); + nanoBootsSpeed = config.get(CATEGORY_VALUES, "Nano Boots of the Traveller Speed", 0.25, "Watch out, that goes up REALLY quickly.").getDouble(nanoBootsSpeed); + quantumBootsSpeed = config.get(CATEGORY_VALUES, "Quantum Boots of the Traveller Speed", 0.5, "Watch out, that goes up REALLY quickly.").getDouble(quantumBootsSpeed); + nanoBootsJump = config.get(CATEGORY_VALUES, "Nano Boots of the Traveller jump", 0.6, "Watch out, that goes up REALLY quickly.").getDouble(nanoBootsJump); + quantumBootsJump = config.get(CATEGORY_VALUES, "Quantum Boots of the Traveller jump", 0.9, "Watch out, that goes up REALLY quickly.").getDouble(nanoBootsJump); + etherealProcessorBaseSpeed = config.get(CATEGORY_VALUES, "Etheral Processor speed", 400, "Default is 400, the double of a regular furnace").getInt(); + etherealProcessorBonus = config.get(CATEGORY_VALUES, "Ethereal Processor Bonus", 10, "This number is the chance of getting a Thaumium Ingot as a bonus when " + "processing an item in the machine. It is 1 out of the number you will enter. " + "The default is 1/10 chance.").getInt(); + chargeFocusProduction = config.get(CATEGORY_VALUES, "Wand Focus: Charge production", 64, "Default is 64").getInt(); + armorBaubleProduction = config.get(CATEGORY_VALUES, "Armor Charging Ring production", 32, "Default is 32").getInt(); + inventoryBaubleProdution = config.get(CATEGORY_VALUES, "Inventory Charging Ring production", 32, "Default is 32").getInt(); + wandChargeFocusCost = config.get(CATEGORY_VALUES, "Wand Focus: Wand Charging Cost", 40000, "Default is 40000").getInt(); /** Disable Researches **/ - thaumiumDrillResearch = config.get("Research", "Thaumium Drill", false).getBoolean(thaumiumDrillResearch); - thaumiumChainsawResearch = config.get("Research", "Thaumium Chainsaw", false).getBoolean(thaumiumChainsawResearch); - thaumiumDrillResearch = config.get("Research", "Thaumium Omnitool", false).getBoolean(thaumiumOmnitoolResearch); - rockbreakerDrillResearch = config.get("Research", "Drill of the Rockbreaker", false).getBoolean(rockbreakerDrillResearch); - streamChainsawResearch = config.get("Research", "Chainsaw of the Stream", false).getBoolean(streamChainsawResearch); - electricGooglesResearch = config.get("Research", "Electric Googles of Revealing", false).getBoolean(electricGooglesResearch); - nanoGooglesResearch = config.get("Research", "Nanosuit Googles of Revealing", false).getBoolean(nanoGooglesResearch); - quantumGooglesResearch = config.get("Research", "Quantum Googles of Revealing", false).getBoolean(quantumGooglesResearch); - ironOmnitoolResearch = config.get("Research", "Omnitool", false).getBoolean(ironOmnitoolResearch); - diamondOmnitoolResearch = config.get("Research", "Diamond Omnitool", false).getBoolean(diamondOmnitoolResearch); - explosionFocusResearch = config.get("Research", "Explosion Focus", false).getBoolean(explosionFocusResearch); - christmasFocusResearch = config.get("Research", "Kris-tmas Focus", false).getBoolean(christmasFocusResearch); - shieldFocusResearch = config.get("Research", "Shield Focus", false).getBoolean(shieldFocusResearch); - shieldBlockResearch = config.get("Research", "Shield Block", false).getBoolean(shieldBlockResearch); - potentiaGeneratorResearch = config.get("Research", "Potentia Generator", false).getBoolean(potentiaGeneratorResearch); - ignisGeneratorResearch = config.get("Research", "Ignis Generator", false).getBoolean(ignisGeneratorResearch); - auramGeneratorResearch = config.get("Research", "Auram Generator", false).getBoolean(auramGeneratorResearch); - arborGeneratorResearch = config.get("Research", "Arbor Generator", false).getBoolean(arborGeneratorResearch); - wandChargingSationResearch = config.get("Research", "Industrial Wand Charging Station", false).getBoolean(wandChargingSationResearch); - tinyUraniumResearch = config.get("Research", "Tiny Piles of Uranium", false).getBoolean(tinyUraniumResearch); - thorHammerResearch = config.get("Research", "Mjolnir", false).getBoolean(thorHammerResearch); - superchargedThorHammerResearch = config.get("Research", "Supercharged Mjolnir", false).getBoolean(superchargedThorHammerResearch); - compressedSolarsResearch = config.get("Research", "Compressed Solars", false).getBoolean(compressedSolarsResearch); - solarHelmetResearch = config.get("Research", "Solar Helmet of Revealing", false).getBoolean(solarHelmetResearch); - electricBootsResearch = config.get("Research", "Electric Boots of the Traveller", false).getBoolean(electricBootsResearch); - nanoBootsResearch = config.get("Research", "Nano Boots of the Traveller", false).getBoolean(nanoBootsResearch); - quantumBootsResearch = config.get("Research", "Quantum Boots of the Traveller", false).getBoolean(quantumBootsResearch); - electricScribingToolsResearch = config.get("Research", "Electric Scribing Tools", false).getBoolean(electricScribingToolsResearch); - etherealProcessorResearch = config.get("Research", "Ethereal Processor", false).getBoolean(etherealProcessorResearch); - waterSolarsResearch = config.get("Research", "Water Solar Panels", false).getBoolean(waterSolarsResearch); - darkSolarsResearch = config.get("Research", "Entropy Solar Panels", false).getBoolean(darkSolarsResearch); - orderSolarsResearch = config.get("Research", "Order Solar Panels", false).getBoolean(orderSolarsResearch); - fireSolarsResearch = config.get("Research", "Fire Solar Panels", false).getBoolean(fireSolarsResearch); - airSolarsResearch = config.get("Research", "Air Solar Panels", false).getBoolean(airSolarsResearch); - earthSolarsResearch = config.get("Research", "Earth Solar Panels", false).getBoolean(earthSolarsResearch); - saxumGenResearch = config.get("Research", "Saxum Generator", false).getBoolean(saxumGenResearch); - uuMInfusionResearch = config.get("Research", "UU-Mater Infusion", false).getBoolean(uuMInfusionResearch); - portableNodeResarch = config.get("Research", "Portable Node", false).getBoolean(portableNodeResarch); - electricHoeGrowthResearch = config.get("Research", "Electric Hoe of Growth", false).getBoolean(electricHoeGrowthResearch); - chargeFocusResearch = config.get("Research", "Wand Focus: Charging", false).getBoolean(chargeFocusResearch); - wandChargeFocusResearch = config.get("Research", "Wand Focus: Wand Charging", false).getBoolean(wandChargeFocusResearch); - inventoryChargingRing = config.get("Research", "Inventory Charging Ring", false).getBoolean(inventoryChargingRing); - armorChargingRing = config.get("Research", "Armor Charging Ring", false).getBoolean(armorChargingRing); - thaumiumWingResearch = config.get("Research", "Thaumium Reinforced Wings", false).getBoolean(thaumiumWingResearch); - nanoWingResearch = config.get("Research", "Nanosuit Wings", false).getBoolean(nanoWingResearch); - quantumWingsResearch = config.get("Research", "Quantum Wings", false).getBoolean(quantumWingsResearch); + thaumiumDrillResearch = config.get(CATEGORY_RESEARCH, "Thaumium Drill", false).getBoolean(thaumiumDrillResearch); + thaumiumChainsawResearch = config.get(CATEGORY_RESEARCH, "Thaumium Chainsaw", false).getBoolean(thaumiumChainsawResearch); + thaumiumDrillResearch = config.get(CATEGORY_RESEARCH, "Thaumium Omnitool", false).getBoolean(thaumiumOmnitoolResearch); + rockbreakerDrillResearch = config.get(CATEGORY_RESEARCH, "Drill of the Rockbreaker", false).getBoolean(rockbreakerDrillResearch); + streamChainsawResearch = config.get(CATEGORY_RESEARCH, "Chainsaw of the Stream", false).getBoolean(streamChainsawResearch); + electricGooglesResearch = config.get(CATEGORY_RESEARCH, "Electric Googles of Revealing", false).getBoolean(electricGooglesResearch); + nanoGooglesResearch = config.get(CATEGORY_RESEARCH, "Nanosuit Googles of Revealing", false).getBoolean(nanoGooglesResearch); + quantumGooglesResearch = config.get(CATEGORY_RESEARCH, "Quantum Googles of Revealing", false).getBoolean(quantumGooglesResearch); + ironOmnitoolResearch = config.get(CATEGORY_RESEARCH, "Omnitool", false).getBoolean(ironOmnitoolResearch); + diamondOmnitoolResearch = config.get(CATEGORY_RESEARCH, "Diamond Omnitool", false).getBoolean(diamondOmnitoolResearch); + explosionFocusResearch = config.get(CATEGORY_RESEARCH, "Explosion Focus", false).getBoolean(explosionFocusResearch); + christmasFocusResearch = config.get(CATEGORY_RESEARCH, "Kris-tmas Focus", false).getBoolean(christmasFocusResearch); + shieldFocusResearch = config.get(CATEGORY_RESEARCH, "Shield Focus", false).getBoolean(shieldFocusResearch); + shieldBlockResearch = config.get(CATEGORY_RESEARCH, "Shield Block", false).getBoolean(shieldBlockResearch); + potentiaGeneratorResearch = config.get(CATEGORY_RESEARCH, "Potentia Generator", false).getBoolean(potentiaGeneratorResearch); + ignisGeneratorResearch = config.get(CATEGORY_RESEARCH, "Ignis Generator", false).getBoolean(ignisGeneratorResearch); + auramGeneratorResearch = config.get(CATEGORY_RESEARCH, "Auram Generator", false).getBoolean(auramGeneratorResearch); + arborGeneratorResearch = config.get(CATEGORY_RESEARCH, "Arbor Generator", false).getBoolean(arborGeneratorResearch); + wandChargingSationResearch = config.get(CATEGORY_RESEARCH, "Industrial Wand Charging Station", false).getBoolean(wandChargingSationResearch); + tinyUraniumResearch = config.get(CATEGORY_RESEARCH, "Tiny Piles of Uranium", false).getBoolean(tinyUraniumResearch); + thorHammerResearch = config.get(CATEGORY_RESEARCH, "Mjolnir", false).getBoolean(thorHammerResearch); + superchargedThorHammerResearch = config.get(CATEGORY_RESEARCH, "Supercharged Mjolnir", false).getBoolean(superchargedThorHammerResearch); + compressedSolarsResearch = config.get(CATEGORY_RESEARCH, "Compressed Solars", false).getBoolean(compressedSolarsResearch); + solarHelmetResearch = config.get(CATEGORY_RESEARCH, "Solar Helmet of Revealing", false).getBoolean(solarHelmetResearch); + electricBootsResearch = config.get(CATEGORY_RESEARCH, "Electric Boots of the Traveller", false).getBoolean(electricBootsResearch); + nanoBootsResearch = config.get(CATEGORY_RESEARCH, "Nano Boots of the Traveller", false).getBoolean(nanoBootsResearch); + quantumBootsResearch = config.get(CATEGORY_RESEARCH, "Quantum Boots of the Traveller", false).getBoolean(quantumBootsResearch); + electricScribingToolsResearch = config.get(CATEGORY_RESEARCH, "Electric Scribing Tools", false).getBoolean(electricScribingToolsResearch); + etherealProcessorResearch = config.get(CATEGORY_RESEARCH, "Ethereal Processor", false).getBoolean(etherealProcessorResearch); + waterSolarsResearch = config.get(CATEGORY_RESEARCH, "Water Solar Panels", false).getBoolean(waterSolarsResearch); + darkSolarsResearch = config.get(CATEGORY_RESEARCH, "Entropy Solar Panels", false).getBoolean(darkSolarsResearch); + orderSolarsResearch = config.get(CATEGORY_RESEARCH, "Order Solar Panels", false).getBoolean(orderSolarsResearch); + fireSolarsResearch = config.get(CATEGORY_RESEARCH, "Fire Solar Panels", false).getBoolean(fireSolarsResearch); + airSolarsResearch = config.get(CATEGORY_RESEARCH, "Air Solar Panels", false).getBoolean(airSolarsResearch); + earthSolarsResearch = config.get(CATEGORY_RESEARCH, "Earth Solar Panels", false).getBoolean(earthSolarsResearch); + saxumGenResearch = config.get(CATEGORY_RESEARCH, "Saxum Generator", false).getBoolean(saxumGenResearch); + uuMInfusionResearch = config.get(CATEGORY_RESEARCH, "UU-Mater Infusion", false).getBoolean(uuMInfusionResearch); + portableNodeResarch = config.get(CATEGORY_RESEARCH, "Portable Node", false).getBoolean(portableNodeResarch); + electricHoeGrowthResearch = config.get(CATEGORY_RESEARCH, "Electric Hoe of Growth", false).getBoolean(electricHoeGrowthResearch); + chargeFocusResearch = config.get(CATEGORY_RESEARCH, "Wand Focus: Charging", false).getBoolean(chargeFocusResearch); + wandChargeFocusResearch = config.get(CATEGORY_RESEARCH, "Wand Focus: Wand Charging", false).getBoolean(wandChargeFocusResearch); + inventoryChargingRing = config.get(CATEGORY_RESEARCH, "Inventory Charging Ring", false).getBoolean(inventoryChargingRing); + armorChargingRing = config.get(CATEGORY_RESEARCH, "Armor Charging Ring", false).getBoolean(armorChargingRing); + thaumiumWingResearch = config.get(CATEGORY_RESEARCH, "Thaumium Reinforced Wings", false).getBoolean(thaumiumWingResearch); + nanoWingResearch = config.get(CATEGORY_RESEARCH, "Nanosuit Wings", false).getBoolean(nanoWingResearch); + quantumWingsResearch = config.get(CATEGORY_RESEARCH, "Quantum Wings", false).getBoolean(quantumWingsResearch); - config.save(); + config.save(); } } diff --git a/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/EMTEventHandler.java b/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/EMTEventHandler.java index c820a05..172487e 100644 --- a/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/EMTEventHandler.java +++ b/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/EMTEventHandler.java @@ -11,6 +11,7 @@ ******************************************************************************/ package electricMagicTools.tombenpotter.electricmagictools.common; +import cpw.mods.fml.client.event.ConfigChangedEvent; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.monster.EntityCreeper; @@ -35,4 +36,10 @@ public class EMTEventHandler { } } } + + @SubscribeEvent + public void onConfigChanged(ConfigChangedEvent.OnConfigChangedEvent eventArgs) { + if (eventArgs.modID.equals(ElectricMagicTools.modid)) + Config.create(); + } } diff --git a/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/EMTGuiFactory.java b/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/EMTGuiFactory.java new file mode 100644 index 0000000..e14ff4f --- /dev/null +++ b/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/EMTGuiFactory.java @@ -0,0 +1,30 @@ +package electricMagicTools.tombenpotter.electricmagictools.common; + +import cpw.mods.fml.client.IModGuiFactory; +import electricMagicTools.tombenpotter.electricmagictools.client.gui.EMTGuiConfig; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; + +import java.util.Set; + +public class EMTGuiFactory implements IModGuiFactory{ + @Override + public void initialize(Minecraft minecraftInstance) { + + } + + @Override + public Class mainConfigGuiClass() { + return EMTGuiConfig.class; + } + + @Override + public Set runtimeGuiCategories() { + return null; + } + + @Override + public RuntimeOptionGuiHandler getHandlerFor(RuntimeOptionCategoryElement element) { + return null; + } +} diff --git a/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/ElectricMagicTools.java b/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/ElectricMagicTools.java index 51bb5f8..cfaf699 100644 --- a/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/ElectricMagicTools.java +++ b/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/ElectricMagicTools.java @@ -26,8 +26,9 @@ import electricMagicTools.tombenpotter.electricmagictools.common.recipes.EMTInit import electricMagicTools.tombenpotter.electricmagictools.common.recipes.EMTPostInitRecipes; import electricMagicTools.tombenpotter.electricmagictools.common.recipes.UuMInfusionRecipes; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.config.Configuration; -@Mod(modid = ElectricMagicTools.modid, name = "Electro-MagicTools", version = "1.1.1", dependencies = "required-after:Thaumcraft ; required-after:IC2") +@Mod(modid = ElectricMagicTools.modid, name = "Electro-MagicTools", version = "1.2", guiFactory = "electricMagicTools.tombenpotter.electricmagictools.common.EMTGuiFactory",dependencies = "required-after:Thaumcraft ; required-after:IC2") public class ElectricMagicTools { @SidedProxy(clientSide = "electricMagicTools.tombenpotter.electricmagictools.client.ClientProxy", serverSide = "electricMagicTools.tombenpotter.electricmagictools.common.CommonProxy") @@ -42,15 +43,11 @@ public class ElectricMagicTools { public void preInit(FMLPreInitializationEvent event) { FMLLog.info("[EMT] Electro-Magic Tools : Starting planning the world domination"); - /** Creating the config file **/ FMLLog.info("[EMT] Electro-Magic Tools : Creating/Reading the config file"); - Config.create(event); - - /** Items Registry **/ + Config.config = new Configuration(event.getSuggestedConfigurationFile()); + Config.create(); FMLLog.info("[EMT] Electro-Magic Tools : Registering the mod items"); ItemRegistry.registerEMTItems(); - - /** Blocks registry **/ FMLLog.info("[EMT] Electro-Magic Tools : Registering the mod blocks"); BlockRegistry.registerEMTBlocks(); @@ -61,35 +58,21 @@ public class ElectricMagicTools { public void load(FMLInitializationEvent event) { FMLLog.info("[EMT] Electro-Magic Tools : Starting gathering allies"); - /** Loading the proxies **/ FMLLog.info("[EMT] Electro-Magic Tools : Loading the proxies"); proxy.load(); - /** Making mobs drop additional items **/ FMLLog.info("[EMT] Electro-Magic Tools : Making mobs drop additional items"); MinecraftForge.EVENT_BUS.register(new EMTEventHandler()); - - /** Tile entities registry **/ FMLLog.info("[EMT] Electro-Magic Tools : Registering Tile entities"); TileEntityRegistry.registerEMTTileEntites(); - - /** Generating loot in dungeon chests **/ FMLLog.info("[EMT] Electro-Magic Tools : Generating loot in dungeon chests"); DungeonChestGenerator.generateLoot(); - - /** Adding the recipes that go in Init **/ FMLLog.info("[EMT] Electro-Magic Tools : Adding the Init recipes"); EMTInitRecipes.add(); - - /** Entities Registry **/ FMLLog.info("[EMT] Electro-Magic Tools : Registering entities"); EMTEntityRegistry.registerEMTEntities(); - - /** GUI Handler Registry **/ FMLLog.info("[EMT] Electro-Magic Tools : Registering the GUI Handler"); NetworkRegistry.INSTANCE.registerGuiHandler(this, proxy); - - /** Adds Capes **/ if (event.getSide() == Side.CLIENT && Config.capesOn == true) { FMLLog.info("[EMT] Electro-Magic Tools : Adding capes"); MinecraftForge.EVENT_BUS.register(new CapeEventHandler()); @@ -102,19 +85,12 @@ public class ElectricMagicTools { public void postInit(FMLPostInitializationEvent event) { FMLLog.info("[EMT] Electro-Magic Tools : Starting the world takeover"); - /** Adding the recipes that go in PostInit **/ FMLLog.info("[EMT] Electro-Magic Tools : Adding PostInit recipes"); EMTPostInitRecipes.add(); - - /** Adding the UU-Matter Infusion recipes **/ FMLLog.info("[EMT] Electro-Magic Tools : Adding the UU-Matter Infusion recipes"); UuMInfusionRecipes.add(); - - /** Adding the EMT research tab to the Thaumonomicon **/ FMLLog.info("[EMT] Electro-Magic Tools : Adding the EMT research tab to the Thaumonomicon"); ThaumonomiconResearch.addResearchTab(); - - /** Adding the actual research to the game **/ FMLLog.info("[EMT] Electro-Magic Tools : Adding research to the game"); ThaumonomiconResearch.addResearch(); diff --git a/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/blocks/BlockShield.java b/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/blocks/BlockShield.java index fb6a228..12484d5 100644 --- a/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/blocks/BlockShield.java +++ b/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/blocks/BlockShield.java @@ -19,7 +19,9 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.Entity; +import net.minecraft.entity.EnumCreatureType; import net.minecraft.world.Explosion; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import java.util.Random; @@ -30,7 +32,7 @@ public class BlockShield extends Block { super(Material.rock); this.setCreativeTab(CreativeTab.tabTombenpotter); this.setHardness(1F); - this.setResistance(200000000F); + this.setResistance(10000000000000000000000000000000000000F); } @Override @@ -65,14 +67,25 @@ public class BlockShield extends Block { return false; } - public boolean canEntityDestroy(World world, int x, int y, int z, Entity entity) { + @Override + public boolean canBeReplacedByLeaves(IBlockAccess world, int x, int y, int z) + { return false; } + @Override + public boolean canEntityDestroy(IBlockAccess world, int x, int y, int z, Entity entity) + { + return false; + } + + @Override + public boolean canCreatureSpawn(EnumCreatureType type, IBlockAccess world, int x, int y, int z) + { + return false; + } + + @Override public void onBlockExploded(World world, int x, int y, int z, Explosion explosion) { } - - public boolean canDragonDestroy(World world, int x, int y, int z) { - return false; - } } diff --git a/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/recipes/EMTPostInitRecipes.java b/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/recipes/EMTPostInitRecipes.java index 2deea78..fe8ec8b 100644 --- a/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/recipes/EMTPostInitRecipes.java +++ b/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/recipes/EMTPostInitRecipes.java @@ -21,8 +21,6 @@ import ic2.api.item.IC2Items; import ic2.api.recipe.IRecipeInput; import ic2.api.recipe.RecipeInputItemStack; import ic2.api.recipe.Recipes; -import ic2.core.Ic2Items; -import ic2.core.util.StackUtil; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -232,14 +230,19 @@ public class EMTPostInitRecipes { NBTTagCompound waterAmount = new NBTTagCompound(); waterAmount.setInteger("amount", 1000); - Recipes.oreWashing.addRecipe(new RecipeInputItemStack(new ItemStack(ItemRegistry.itemEMTItems, 1, 1)), waterAmount, new ItemStack[]{new ItemStack(ItemRegistry.itemEMTItems, 1, 2), StackUtil.copyWithSize(Ic2Items.smallCopperDust, 2), Ic2Items.stoneDust}); - Recipes.oreWashing.addRecipe(new RecipeInputItemStack(new ItemStack(ItemRegistry.itemEMTItems, 1, 3)), waterAmount, new ItemStack[]{new ItemStack(ItemRegistry.itemEMTItems, 1, 4), StackUtil.copyWithSize(Ic2Items.smallTinDust, 2), Ic2Items.stoneDust}); + ItemStack smallCopperDust = IC2Items.getItem("smallCopperDust"); + smallCopperDust.stackSize = 2; + ItemStack smallTinDust = IC2Items.getItem("smallTinDust"); + smallCopperDust.stackSize = 2; + + Recipes.oreWashing.addRecipe(new RecipeInputItemStack(new ItemStack(ItemRegistry.itemEMTItems, 1, 1)), waterAmount, new ItemStack[]{new ItemStack(ItemRegistry.itemEMTItems, 1, 2), smallCopperDust, IC2Items.getItem("stoneDust")}); + Recipes.oreWashing.addRecipe(new RecipeInputItemStack(new ItemStack(ItemRegistry.itemEMTItems, 1, 3)), waterAmount, new ItemStack[]{new ItemStack(ItemRegistry.itemEMTItems, 1, 4), smallTinDust, IC2Items.getItem("stoneDust")}); NBTTagCompound heatAmount = new NBTTagCompound(); heatAmount.setInteger("minHeat", 1000); - Recipes.centrifuge.addRecipe(new RecipeInputItemStack(new ItemStack(ItemRegistry.itemEMTItems, 1, 2)), heatAmount, new ItemStack[]{Ic2Items.smallCopperDust, new ItemStack(ConfigItems.itemResource, 1, 6)}); - Recipes.centrifuge.addRecipe(new RecipeInputItemStack(new ItemStack(ItemRegistry.itemEMTItems, 1, 4)), heatAmount, new ItemStack[]{Ic2Items.smallTinDust, new ItemStack(ConfigItems.itemResource, 1, 3)}); + Recipes.centrifuge.addRecipe(new RecipeInputItemStack(new ItemStack(ItemRegistry.itemEMTItems, 1, 2)), heatAmount, new ItemStack[]{IC2Items.getItem("smallCopperDust"), new ItemStack(ConfigItems.itemResource, 1, 6)}); + Recipes.centrifuge.addRecipe(new RecipeInputItemStack(new ItemStack(ItemRegistry.itemEMTItems, 1, 4)), heatAmount, new ItemStack[]{IC2Items.getItem("smallTinDust"), new ItemStack(ConfigItems.itemResource, 1, 3)}); } public static InfusionRecipe thaumiumDrill; diff --git a/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/tile/TileEntityEtherealMacerator.java b/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/tile/TileEntityEtherealMacerator.java index c0e3173..b823e08 100644 --- a/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/tile/TileEntityEtherealMacerator.java +++ b/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/tile/TileEntityEtherealMacerator.java @@ -13,8 +13,8 @@ package electricMagicTools.tombenpotter.electricmagictools.common.tile; import electricMagicTools.tombenpotter.electricmagictools.common.BlockRegistry; import electricMagicTools.tombenpotter.electricmagictools.common.Config; +import ic2.api.item.IC2Items; import ic2.api.tile.IWrenchable; -import ic2.core.Ic2Items; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; @@ -245,7 +245,7 @@ public class TileEntityEtherealMacerator extends TileEntityEMT implements ISided || this.slots[0].getItem() == Items.beef || this.slots[0].getItem() == Items.chicken || this.slots[0].getItem() == Items.fish - || this.slots[0].getItem() == Ic2Items.hydratedCoalDust.getItem() + || this.slots[0].getItem() == IC2Items.getItem("coalDust").getItem() || (OreDictionary.getOreName(OreDictionary.getOreID(this.slots[0])).toLowerCase().contains("dust") || this.slots[0].getItem().getUnlocalizedName(this.slots[0]).toLowerCase().contains("armour") || this.slots[0].getItem().getUnlocalizedName(this.slots[0]).toLowerCase().contains("armor") || this.slots[0].getItem().getUnlocalizedName(this.slots[0]).toLowerCase().contains("helm") || this.slots[0].getItem().getUnlocalizedName(this.slots[0]).toLowerCase().contains("legging") || this.slots[0].getItem().getUnlocalizedName(this.slots[0]).toLowerCase().contains("boot") || this.slots[0].getItem().getUnlocalizedName(this.slots[0]).toLowerCase().contains("chestp") || this.slots[0].getItem().getUnlocalizedName(this.slots[0]).toLowerCase().contains("pick") || this.slots[0].getItem().getUnlocalizedName(this.slots[0]).toLowerCase().contains("shovel") || this.slots[0].getItem().getUnlocalizedName(this.slots[0]).toLowerCase().contains("axe") || this.slots[0].getItem().getUnlocalizedName(this.slots[0]).toLowerCase().contains("pick"))) { return true; diff --git a/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/tile/container/ContainerEtheralMacerator.java b/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/tile/container/ContainerEtheralMacerator.java index b9e407f..c05122b 100644 --- a/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/tile/container/ContainerEtheralMacerator.java +++ b/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/tile/container/ContainerEtheralMacerator.java @@ -12,19 +12,15 @@ package electricMagicTools.tombenpotter.electricmagictools.common.tile.container; import electricMagicTools.tombenpotter.electricmagictools.common.tile.TileEntityEtherealMacerator; -import ic2.core.IC2; -import ic2.core.slot.SlotInvSlot; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.tileentity.TileEntity; import thaumcraft.common.container.SlotOutput; -import java.util.List; -import java.util.ListIterator; - public class ContainerEtheralMacerator extends Container { TileEntityEtherealMacerator te; @@ -49,79 +45,50 @@ public class ContainerEtheralMacerator extends Container { return this.te.isUseableByPlayer(player); } - @SuppressWarnings("unchecked") @Override - public final ItemStack transferStackInSlot(EntityPlayer player, int sourceSlotIndex) { - Slot sourceSlot = (Slot) inventorySlots.get(sourceSlotIndex); + public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2) { + ItemStack itemstack = null; + Slot slot = (Slot) this.inventorySlots.get(par2); - if (sourceSlot != null && sourceSlot.getHasStack()) { - ItemStack sourceItemStack = sourceSlot.getStack(); - int oldSourceItemStackSize = sourceItemStack.stackSize; + if (slot != null && slot.getHasStack()) { + ItemStack itemstack1 = slot.getStack(); + itemstack = itemstack1.copy(); - if (sourceSlot.inventory == player.inventory) { // player inventory - // clicked - // 0: fill input existing stacks, 1: fill input empty stacks, 2: - // fill existing stacks, 3: fill empty stacks - for (int run = 0; run < 4 && sourceItemStack.stackSize > 0; run++) { - if (run < 2) { - for (Slot targetSlot : (List) inventorySlots) { - if (targetSlot instanceof SlotInvSlot && ((SlotInvSlot) targetSlot).invSlot.canInput() && targetSlot.isItemValid(sourceItemStack)) { - if (targetSlot.getStack() != null || run == 1) { - mergeItemStack(sourceItemStack, targetSlot.slotNumber, targetSlot.slotNumber + 1, false); - - if (sourceItemStack.stackSize == 0) - break; - } - } - } - } else { - for (Slot targetSlot : (List) inventorySlots) { - if (targetSlot.inventory != player.inventory && targetSlot.isItemValid(sourceItemStack)) { - if (targetSlot.getStack() != null || run == 3) { - mergeItemStack(sourceItemStack, targetSlot.slotNumber, targetSlot.slotNumber + 1, false); - - if (sourceItemStack.stackSize == 0) - break; - } - } - } - } + if (par2 == 1) { + if (!this.mergeItemStack(itemstack1, 2, 38, true)) { + return null; } - } else { // Shift-Click on a GUIslot of the container - for (int run = 0; run < 2 && sourceItemStack.stackSize > 0; run++) { - for (ListIterator it = ((List) inventorySlots).listIterator(inventorySlots.size()); it.hasPrevious(); ) { - Slot targetSlot = it.previous(); - if (targetSlot.inventory == player.inventory && targetSlot.isItemValid(sourceItemStack)) { - if (targetSlot.getStack() != null || run == 1) { - mergeItemStack(sourceItemStack, targetSlot.slotNumber, targetSlot.slotNumber + 1, false); - - if (sourceItemStack.stackSize == 0) - break; - } - } + slot.onSlotChange(itemstack1, itemstack); + } else if (par2 != 0) { + if (FurnaceRecipes.smelting().getSmeltingResult(itemstack1) != null) { + if (!this.mergeItemStack(itemstack1, 0, 1, false)) { + return null; } + } else if (par2 >= 2 && par2 < 29) { + if (!this.mergeItemStack(itemstack1, 29, 38, false)) { + return null; + } + } else if (par2 >= 29 && par2 < 38 && !this.mergeItemStack(itemstack1, 2, 29, false)) { + return null; } + } else if (!this.mergeItemStack(itemstack1, 3, 38, false)) { + return null; } - if (sourceItemStack.stackSize != oldSourceItemStackSize) { - if (sourceItemStack.stackSize == 0) { - sourceSlot.putStack(null); - } else { - sourceSlot.onPickupFromSlot(player, sourceItemStack); - } - - // vanilla doesn't fully re-sync after processing the slot click - // packet, - // causing a race condition of the client received an old state - // through packet delay after the slot click - // this forces a proper sync - if (IC2.platform.isSimulating()) { - detectAndSendChanges(); - } + if (itemstack1.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); } + + if (itemstack1.stackSize == itemstack.stackSize) { + return null; + } + + slot.onPickupFromSlot(par1EntityPlayer, itemstack1); } - return null; + return itemstack; } } diff --git a/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/tile/container/ContainerIndustrialWandRecharge.java b/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/tile/container/ContainerIndustrialWandRecharge.java index 23095f4..17af69d 100644 --- a/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/tile/container/ContainerIndustrialWandRecharge.java +++ b/src/main/java/electricMagicTools/tombenpotter/electricmagictools/common/tile/container/ContainerIndustrialWandRecharge.java @@ -12,16 +12,12 @@ package electricMagicTools.tombenpotter.electricmagictools.common.tile.container; import electricMagicTools.tombenpotter.electricmagictools.common.tile.TileEntityIndustrialWandRecharge; -import ic2.core.IC2; -import ic2.core.slot.SlotInvSlot; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; - -import java.util.List; -import java.util.ListIterator; +import net.minecraft.item.crafting.FurnaceRecipes; public class ContainerIndustrialWandRecharge extends Container { @@ -48,79 +44,50 @@ public class ContainerIndustrialWandRecharge extends Container { return charger.isUseableByPlayer(player); } - @SuppressWarnings("unchecked") @Override - public final ItemStack transferStackInSlot(EntityPlayer player, int sourceSlotIndex) { - Slot sourceSlot = (Slot) inventorySlots.get(sourceSlotIndex); + public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2) { + ItemStack itemstack = null; + Slot slot = (Slot) this.inventorySlots.get(par2); - if (sourceSlot != null && sourceSlot.getHasStack()) { - ItemStack sourceItemStack = sourceSlot.getStack(); - int oldSourceItemStackSize = sourceItemStack.stackSize; + if (slot != null && slot.getHasStack()) { + ItemStack itemstack1 = slot.getStack(); + itemstack = itemstack1.copy(); - if (sourceSlot.inventory == player.inventory) { // player inventory - // clicked - // 0: fill input existing stacks, 1: fill input empty stacks, 2: - // fill existing stacks, 3: fill empty stacks - for (int run = 0; run < 4 && sourceItemStack.stackSize > 0; run++) { - if (run < 2) { - for (Slot targetSlot : (List) inventorySlots) { - if (targetSlot instanceof SlotInvSlot && ((SlotInvSlot) targetSlot).invSlot.canInput() && targetSlot.isItemValid(sourceItemStack)) { - if (targetSlot.getStack() != null || run == 1) { - mergeItemStack(sourceItemStack, targetSlot.slotNumber, targetSlot.slotNumber + 1, false); - - if (sourceItemStack.stackSize == 0) - break; - } - } - } - } else { - for (Slot targetSlot : (List) inventorySlots) { - if (targetSlot.inventory != player.inventory && targetSlot.isItemValid(sourceItemStack)) { - if (targetSlot.getStack() != null || run == 3) { - mergeItemStack(sourceItemStack, targetSlot.slotNumber, targetSlot.slotNumber + 1, false); - - if (sourceItemStack.stackSize == 0) - break; - } - } - } - } + if (par2 == 1) { + if (!this.mergeItemStack(itemstack1, 2, 38, true)) { + return null; } - } else { // Shift-Click on a GUIslot of the container - for (int run = 0; run < 2 && sourceItemStack.stackSize > 0; run++) { - for (ListIterator it = ((List) inventorySlots).listIterator(inventorySlots.size()); it.hasPrevious(); ) { - Slot targetSlot = it.previous(); - if (targetSlot.inventory == player.inventory && targetSlot.isItemValid(sourceItemStack)) { - if (targetSlot.getStack() != null || run == 1) { - mergeItemStack(sourceItemStack, targetSlot.slotNumber, targetSlot.slotNumber + 1, false); - - if (sourceItemStack.stackSize == 0) - break; - } - } + slot.onSlotChange(itemstack1, itemstack); + } else if (par2 != 0) { + if (FurnaceRecipes.smelting().getSmeltingResult(itemstack1) != null) { + if (!this.mergeItemStack(itemstack1, 0, 1, false)) { + return null; } + } else if (par2 >= 2 && par2 < 29) { + if (!this.mergeItemStack(itemstack1, 29, 38, false)) { + return null; + } + } else if (par2 >= 29 && par2 < 38 && !this.mergeItemStack(itemstack1, 2, 29, false)) { + return null; } + } else if (!this.mergeItemStack(itemstack1, 2, 38, false)) { + return null; } - if (sourceItemStack.stackSize != oldSourceItemStackSize) { - if (sourceItemStack.stackSize == 0) { - sourceSlot.putStack(null); - } else { - sourceSlot.onPickupFromSlot(player, sourceItemStack); - } - - // vanilla doesn't fully re-sync after processing the slot click - // packet, - // causing a race condition of the client received an old state - // through packet delay after the slot click - // this forces a proper sync - if (IC2.platform.isSimulating()) { - detectAndSendChanges(); - } + if (itemstack1.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); } + + if (itemstack1.stackSize == itemstack.stackSize) { + return null; + } + + slot.onPickupFromSlot(par1EntityPlayer, itemstack1); } - return null; + return itemstack; } } diff --git a/src/main/resources/assets/electricmagictools/textures/blocks/Thumbs.db b/src/main/resources/assets/electricmagictools/textures/blocks/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..d64001ba5021f3a4789cf168b3b60635f515354b GIT binary patch literal 11264 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 T+aHb_Qe1T2g8?<^?_|FK@lPeg literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/electricmagictools/textures/blocks/machines/Thumbs.db b/src/main/resources/assets/electricmagictools/textures/blocks/machines/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..ccd84eb43bcfd143d3ce5030bd848b3893ad032b GIT binary patch literal 33280 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 delta 1036 zcmV+n1oQj<5AhDLUIHLOMlm@;G)6f^IYvS;F-0>$I73E4HAFW!H#svlH90ktegYgI zLPjw;LNrD=ML9-7F)>9mK{!K3LN!D;I5#;nHZ?glv$_HW0e}0}`N;qP1C~idK~#9! zyjERL6HyS|e(=%qQD_SUc_@-VeP{#|E%=2973Ik&zW5_e4ACGlB0h+bXho?Yf+0v_ zTWNs;Ed^Te>^;qNX^jSxI^3MS-0t0-GjnF{S_cESG)-%2Y6c$TPt&r8hq%~mHq0xm z6~Nuy9pKK6j(--5MZfd-SawxaRRMEHN1CRdfqSf0;Nrpp(5#i&tS+}3m(hE7fewd5 zeyFal1|BKD*4Ea5b#--X(Vv+3yqzA82a}DB4PY{v1V$neU?P#wc~|JX!)jOA8JIJB zdl-kx=DsXqG%2f5*3#1QBc8C>?4zTj!^6Ye>8 z;0KJN#dvZX;{*e~jjpA$X<&16v*d%!B*a39p3--`88}>7APc5(oOh zmknOMlFQ{72eFIY=YcCLD+O=ZbEpS)lGfH%y?>`>vwuw>_(^(rKfM;-1qSm=-(=}+ zaMt(~dQEI}I)RU$j*GI1e^OBqM=?nLA4F*^7X+}tpzEwh(%aV7ChdB2bF-nLL0CT; zdjfp;;J)+&w2(|DgNaj-)I|CEHt~qPe zmqA{+ijAg_{lu-lU#ShFzswWWk}=d^BEHT>`9B!^5?}!N@V7I3;9vp(0000Cm diff --git a/src/main/resources/assets/electricmagictools/textures/blocks/machines/wandcharger_front.png b/src/main/resources/assets/electricmagictools/textures/blocks/machines/wandcharger_front.png deleted file mode 100644 index 6293754e32ddf446e2a4a3cd5bb192aaed2ac8a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2047 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/electricmagictools/textures/guis/Thumbs.db b/src/main/resources/assets/electricmagictools/textures/guis/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..6b120b34870af26abf8b567157dca2de389e71ff GIT binary patch literal 5632 zcmeH~2~<_&?Fkku-CWo03hHZh^=VlF_N_U&7AaMxtoSKz;#B=P z55jFuZJb%W=~0@!k=3UO|2%Q@1;_7u)#>+$O!4J8Esjloiro~cipNMYCnYIK_sZk8 zwzh;3*@fJ^yu6^GB1e;+Ot!?an$g&9ZZRTxCKO%lUcIgbY1LGZscd6ig@-nVOOo9#Z2j(K^BO-*ElcQ80F4A?!Mhy6OiTt4Noxh zBw(vBlJ544M52!SHp7|ww#~-Nzm88%E`MAmW@TxB^E-kw{pY1rm{_2w%hkcEpEEKt zZu$MJ3NqHI3wwPVer?Mf=;$5lxUq$ZRomILGZ!4I@P7H^y5i@IRNw3y<$d0i;pnUJ z8+)og zhW6-u$pGsrfjz_Ie!h6W{PFL~|_6xVtxYuFT%31GUS9l~o=Fw&gRpfyVbd*UU@4o06A&O3Dz&mxWe`RV9IRe{w`|f6Z`Q z>!9+5CALLd>ycfnT9=6zuPndx@V>h^iILuKAf&(ee!{tA!$S?6epMvG9q9I~5^s%| z(y-ED^Le;72jlbtzcIr0l^rYA zOO;>nA32)uEV|v-<yCIqj=h)tQa+_ zh)7-5c{(Okg*!-5dTT5|d>y2B>M^~7!Ym|*R7gYFvpi@9+;trzI_t?1;YC0TL0QDuITf=aS_J8XVLFf^m@@TVUAdZyvo@3CtOd?&F=nm zU*gu{0CL0}!K7`JH0{*R(BQO z#sYusT~6;@@MiyfST!CievO3Y-n`1KS00Ak)M?y$Mo!=IIX|I=zh@@fZ7OjKZ^4`H z*`GN|vkoW8*O}&)#0O|Mfs2>iK@;4{`_)54rWPX27yaC*t~8URrl*Lb%?XkmBFlb0@KtND|rl=D-+s*3{Zixz(QWA|z+>!`u~ z2fFOt<6?uJEn_>kp9}J~Q8d>Cw>Qg5qKh}A_c^t--Rctv1TA;F2yA#7MGTlo%UW%U4?>>zv!7~#!HYV_e#I(?d=ssCZ?ySXB<3u zP^8TX6$|;tBoaw=LV0FxNWvVDd=fQpzsx(x&dX1qhn^R8#bhYrMh8P$k;VE%$kf5G?2!nV6q$0pMcoSB=eh9xTyyK z&l6N)q?l|X|KQhvw*pkwZ6LPsfZPKexbaA;uZdvh5&%!JfdR2XG!kaWW#y|=^%3e$ zB2}LWG+^le6;IL2u50k!s_Sy=#-O0+$`pwW=V2!0w!Ajp)YP=o@3Bb87tnOEZap>= zzO__8cyNlsq1F^^sj088m-g5r(|JZ z`(cWOOwjzCO^$HyT%?)&A1URx#05 zan`9awLZ_6suq;j+U*zc^w}?Zq>WC*z3_DY_&^I}S9fk_@FtT2Hf7`gkH&u@|LJl4 HKUeuLG;-W7 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/electricmagictools/textures/items/Thumbs.db b/src/main/resources/assets/electricmagictools/textures/items/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..0b285c0a18b6e7f98890469431595aebb92de230 GIT binary patch literal 4096 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/electricmagictools/textures/models/Thumbs.db b/src/main/resources/assets/electricmagictools/textures/models/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..3bac5e1ea4154fe81f0466cc6a5d60c603b8dee5 GIT binary patch literal 9728 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 M#Or^Tf6W5_0Sjao9{>OV literal 0 HcmV?d00001 diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index d4c690a..2fc7377 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -1,16 +1,16 @@ [ { - "modid": "ElectroMagicTools", - "name": "Electro-Magic Tools", - "description": "Have you ever thought about combining IC2 and TC4?", - "version": "${1.1.0}", - "mcversion": "${1.7.2}", - "url": "http://www.minecraftforum.net/topic/2196652-", + "modid": "Electro-MagicTools", + "name": "Electro-MagicTools", + "description": "Ever thought about combining magic and electricity?", + "version": "$version", + "mcversion": "$mcversion", + "url": "http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/1292998-", "updateUrl": "", - "authors": ["Tombenpotter"], - "credits": "All the guys who helped me in any way, shape or form, and beta testers I bug to try and break my stuff. And of course the IC2 team and Azanor", - "logoFile": "/assets/electricmagictools/textures/misc/emt.png", + "authorList": ["Tombenpotter"], + "credits": "Azanor, the IC2 guys, and the forge guys!", + "logoFile": "/assets/tombenpotter/textures/misc/emt.png", "screenshots": [], - "dependencies": ["Thaumcraft", "ic2"] + "dependencies": [] } ]