summaryrefslogtreecommitdiff
path: root/src/main/java/darkknight/jewelrycraft/thirdparty/ThirdPartyManager.java
diff options
context:
space:
mode:
authorOnyxDarkKnight <sor1n.iliutza16@gmail.com>2015-05-07 13:34:21 +0100
committerOnyxDarkKnight <sor1n.iliutza16@gmail.com>2015-05-07 13:34:21 +0100
commitc5e04f2c8e0c5393d9a5ef63a87ae4f0094af301 (patch)
tree170a49181f336842c82cf6e12f63f7e4b8e2cad1 /src/main/java/darkknight/jewelrycraft/thirdparty/ThirdPartyManager.java
parent208b1f1e0d5faf601b53818b04f6699b2e6cb6bc (diff)
- Added EE3 EMC values, thank you to MineMarteen for providing the ThirdPartyManager code :)
- Working on making it possible to translate every part of the mod - Created an interface modders can use to make an item wearable in the jewelry inventory and have special effects
Diffstat (limited to 'src/main/java/darkknight/jewelrycraft/thirdparty/ThirdPartyManager.java')
-rw-r--r--src/main/java/darkknight/jewelrycraft/thirdparty/ThirdPartyManager.java144
1 files changed, 144 insertions, 0 deletions
diff --git a/src/main/java/darkknight/jewelrycraft/thirdparty/ThirdPartyManager.java b/src/main/java/darkknight/jewelrycraft/thirdparty/ThirdPartyManager.java
new file mode 100644
index 0000000..5bc45b6
--- /dev/null
+++ b/src/main/java/darkknight/jewelrycraft/thirdparty/ThirdPartyManager.java
@@ -0,0 +1,144 @@
+package darkknight.jewelrycraft.thirdparty;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import net.minecraft.block.Block;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.world.World;
+import cpw.mods.fml.common.Loader;
+import cpw.mods.fml.common.Optional;
+import cpw.mods.fml.common.network.IGuiHandler;
+import darkknight.jewelrycraft.JewelrycraftMod;
+import darkknight.jewelrycraft.config.ConfigHandler;
+
+/**
+ * @author MineMarteen from Pneumaticraft
+ */
+public class ThirdPartyManager implements IGuiHandler{
+
+ private static ThirdPartyManager INSTANCE = new ThirdPartyManager();
+ private final List<IThirdParty> thirdPartyMods = new ArrayList<IThirdParty>();
+
+ public static ThirdPartyManager instance(){
+ return INSTANCE;
+ }
+
+ public void index(){
+ Map<String, Class<? extends IThirdParty>> thirdPartyClasses = new HashMap<String, Class<? extends IThirdParty>>();
+ thirdPartyClasses.put(ModIds.EE3, EE3.class);
+
+ List<String> enabledThirdParty = new ArrayList<String>();
+ ConfigHandler.config.addCustomCategoryComment("third_party_enabling", "With these options you can disable third party content by mod. Useful if something in the mod changes and causes crashes.");
+ for(String modid : thirdPartyClasses.keySet()) {
+ if(ConfigHandler.config.get("Third_Party_Enabling", modid, true).getBoolean()) {
+ enabledThirdParty.add(modid);
+ }
+ }
+ ConfigHandler.config.save();
+
+ for(Map.Entry<String, Class<? extends IThirdParty>> entry : thirdPartyClasses.entrySet()) {
+ if(enabledThirdParty.contains(entry.getKey()) && Loader.isModLoaded(entry.getKey())) {
+ try {
+ thirdPartyMods.add(entry.getValue().newInstance());
+ } catch(Exception e) {
+ JewelrycraftMod.logger.log(Level.SEVERE, "Failed to instantiate third party handler!");
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+ public void onItemRegistry(Item item){
+ for(IThirdParty thirdParty : thirdPartyMods) {
+ if(thirdParty instanceof IRegistryListener) ((IRegistryListener)thirdParty).onItemRegistry(item);
+ }
+ }
+
+ public void onBlockRegistry(Block block){
+ for(IThirdParty thirdParty : thirdPartyMods) {
+ if(thirdParty instanceof IRegistryListener) ((IRegistryListener)thirdParty).onBlockRegistry(block);
+ }
+ }
+
+ public void preInit(){
+ for(IThirdParty thirdParty : thirdPartyMods) {
+ try {
+ thirdParty.preInit();
+ } catch(Throwable e) {
+ JewelrycraftMod.logger.log(Level.SEVERE, "Jewelrycraft wasn't able to load third party content from the third party class " + thirdParty.getClass() + " in the PreInit phase!");
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public void init(){
+ for(IThirdParty thirdParty : thirdPartyMods) {
+ try {
+ thirdParty.init();
+ } catch(Throwable e) {
+ JewelrycraftMod.logger.log(Level.SEVERE, "Jewelrycraft wasn't able to load third party content from the third party class " + thirdParty.getClass() + " in the Init phase!");
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public void postInit(){
+ for(IThirdParty thirdParty : thirdPartyMods) {
+ try {
+ thirdParty.postInit();
+ } catch(Throwable e) {
+ JewelrycraftMod.logger.log(Level.SEVERE, "Jewelrycraft wasn't able to load third party content from the third party class " + thirdParty.getClass() + " in the PostInit phase!");
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public void clientSide(){
+ for(IThirdParty thirdParty : thirdPartyMods) {
+ try {
+ thirdParty.clientSide();
+ } catch(Throwable e) {
+ JewelrycraftMod.logger.log(Level.SEVERE, "Jewelrycraft wasn't able to load third party content from the third party class " + thirdParty.getClass() + " client side!");
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public void clientInit(){
+ for(IThirdParty thirdParty : thirdPartyMods) {
+ try {
+ thirdParty.clientInit();
+ } catch(Throwable e) {
+ JewelrycraftMod.logger.log(Level.SEVERE, "Jewelrycraft wasn't able to load third party content from the third party class " + thirdParty.getClass() + " client side on the init!");
+ e.printStackTrace();
+ }
+ }
+ }
+
+ @Override
+ public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z){
+ for(IThirdParty thirdParty : thirdPartyMods) {
+ if(thirdParty instanceof IGuiHandler) {
+ Object obj = ((IGuiHandler)thirdParty).getServerGuiElement(ID, player, world, x, y, z);
+ if(obj != null) return obj;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z){
+ for(IThirdParty thirdParty : thirdPartyMods) {
+ if(thirdParty instanceof IGuiHandler) {
+ Object obj = ((IGuiHandler)thirdParty).getClientGuiElement(ID, player, world, x, y, z);
+ if(obj != null) return obj;
+ }
+ }
+ return null;
+ }
+
+} \ No newline at end of file