From 1c1ceb162a47ea1b111b710fdfd4f41196c2db31 Mon Sep 17 00:00:00 2001 From: pahimar Date: Fri, 25 May 2012 13:37:01 -0400 Subject: [PATCH] Support for custom item rarity types. Works in SMP. --- ee3_client/ee3/client/EEProxy.java | 20 ++++++++ ee3_common/ee3/core/RecipesPhilStone.java | 12 ++--- ee3_common/ee3/core/interfaces/IProxy.java | 4 ++ ee3_common/ee3/item/ItemPhilosopherStone.java | 4 +- ee3_common/ee3/item/ModItems.java | 2 - ee3_common/ee3/lib/CustomItemRarity.java | 50 +++++++++++++++++++ ee3_common/net/minecraft/src/mod_EE3.java | 10 ++-- ee3_server/ee3/server/EEProxy.java | 9 +++- ee3_server/net/minecraft/src/EnumRarity.java | 9 ++++ 9 files changed, 106 insertions(+), 14 deletions(-) create mode 100644 ee3_common/ee3/lib/CustomItemRarity.java create mode 100644 ee3_server/net/minecraft/src/EnumRarity.java diff --git a/ee3_client/ee3/client/EEProxy.java b/ee3_client/ee3/client/EEProxy.java index 4d3b026c..6d131b92 100644 --- a/ee3_client/ee3/client/EEProxy.java +++ b/ee3_client/ee3/client/EEProxy.java @@ -4,11 +4,14 @@ import java.io.File; import java.lang.reflect.Field; import ee3.core.interfaces.IProxy; +import static ee3.lib.CustomItemRarity.*; import net.minecraft.client.Minecraft; import net.minecraft.src.EntityPlayer; +import net.minecraft.src.EnumRarity; import net.minecraft.src.ModLoader; import net.minecraft.src.NetworkManager; import net.minecraft.src.World; +import net.minecraft.src.forge.EnumHelperClient; import net.minecraft.src.forge.MinecraftForgeClient; /** @@ -106,4 +109,21 @@ public class EEProxy implements IProxy { ModLoader.getMinecraftInstance().sndManager.playSound(soundName, x, y, z, volume, pitch); } + public void addCustomEnumRarityTypes() { + EnumHelperClient.addRarity(JUNK, COLOR_JUNK, DISPLAY_NAME_JUNK); + EnumHelperClient.addRarity(NORMAL, COLOR_NORMAL, DISPLAY_NAME_NORMAL); + EnumHelperClient.addRarity(MAGICAL, COLOR_MAGICAL, DISPLAY_NAME_MAGICAL); + EnumHelperClient.addRarity(RARE, COLOR_RARE, DISPLAY_NAME_RARE); + EnumHelperClient.addRarity(LEGENDARY, COLOR_LEGENDARY, DISPLAY_NAME_LEGENDARY); + } + + @Override + public EnumRarity getCustomEnumRarityType(String custom) { + for (EnumRarity eRare : EnumRarity.class.getEnumConstants()) { + if (eRare.name().equals(custom)) + return eRare; + } + return EnumRarity.common; + } + } diff --git a/ee3_common/ee3/core/RecipesPhilStone.java b/ee3_common/ee3/core/RecipesPhilStone.java index 69c96586..ac2f16b3 100644 --- a/ee3_common/ee3/core/RecipesPhilStone.java +++ b/ee3_common/ee3/core/RecipesPhilStone.java @@ -40,12 +40,12 @@ public class RecipesPhilStone { public static void initRecipes() { - determineBaseMaterials(); - //initTransmutationRecipes(); - //initEquivalenceRecipes(); - //initReconstructiveRecipes(); - //initDestructorRecipes(); - //initPortableSmeltingRecipes(); + //determineBaseMaterials(); + initTransmutationRecipes(); + initEquivalenceRecipes(); + initReconstructiveRecipes(); + initDestructorRecipes(); + initPortableSmeltingRecipes(); } public static void determineBaseMaterials() { diff --git a/ee3_common/ee3/core/interfaces/IProxy.java b/ee3_common/ee3/core/interfaces/IProxy.java index 6dddc463..d8d9a12e 100644 --- a/ee3_common/ee3/core/interfaces/IProxy.java +++ b/ee3_common/ee3/core/interfaces/IProxy.java @@ -3,6 +3,7 @@ package ee3.core.interfaces; import java.io.File; import net.minecraft.src.EntityPlayer; +import net.minecraft.src.EnumRarity; import net.minecraft.src.NetworkManager; import net.minecraft.src.ShapedRecipes; import net.minecraft.src.World; @@ -44,5 +45,8 @@ public interface IProxy { public abstract Object handleGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z); public abstract void playSound(String soundName, float x, float y, float z, float volume, float pitch); + + public abstract void addCustomEnumRarityTypes(); + public abstract EnumRarity getCustomEnumRarityType(String custom); } diff --git a/ee3_common/ee3/item/ItemPhilosopherStone.java b/ee3_common/ee3/item/ItemPhilosopherStone.java index e7f0e6f0..4310d6a3 100644 --- a/ee3_common/ee3/item/ItemPhilosopherStone.java +++ b/ee3_common/ee3/item/ItemPhilosopherStone.java @@ -2,8 +2,10 @@ package ee3.item; import ee3.core.interfaces.IItemChargeable; import ee3.core.interfaces.IItemModal; +import ee3.lib.CustomItemRarity; import net.minecraft.src.EnumRarity; import net.minecraft.src.ItemStack; +import net.minecraft.src.mod_EE3; /** * TODO Class Description @@ -24,7 +26,7 @@ public class ItemPhilosopherStone extends ItemEE implements IItemChargeable, IIt } public EnumRarity getRarity(ItemStack par1ItemStack) { - return EnumRarity.uncommon; + return mod_EE3.proxy.getCustomEnumRarityType(CustomItemRarity.RARE); } @Override diff --git a/ee3_common/ee3/item/ModItems.java b/ee3_common/ee3/item/ModItems.java index 98b724e5..7504998d 100644 --- a/ee3_common/ee3/item/ModItems.java +++ b/ee3_common/ee3/item/ModItems.java @@ -20,8 +20,6 @@ public class ModItems { if (initialized) initialized = true; - System.out.println("philStone: " + ItemIds.PHIL_STONE); - /* Initialise each mod item individually */ philStone = new ItemPhilosopherStone(ItemIds.PHIL_STONE).setIconCoord(0, 0).setItemName("philStone"); diff --git a/ee3_common/ee3/lib/CustomItemRarity.java b/ee3_common/ee3/lib/CustomItemRarity.java new file mode 100644 index 00000000..7f36c4d7 --- /dev/null +++ b/ee3_common/ee3/lib/CustomItemRarity.java @@ -0,0 +1,50 @@ +package ee3.lib; + +/** + * TODO Class Description + * @author pahimar + * + */ +public class CustomItemRarity { + + /** + * Colour Value Guide + * + * 0 = Black + * 1 = Dark Blue + * 2 = Green + * 3 = Cyan + * 4 = Dark Red + * 5 = Purple + * 6 = Orange + * 7 = Light Grey + * 8 = Dark Grey + * 9 = Blue + * 10 = Light Green + * 11 = Light Cyan + * 12 = Light Red + * 13 = Pink + * 14 = Yellow + * 15 = White + * + **/ + + public static final int COLOR_JUNK = 7; + public static final int COLOR_NORMAL = 15; + public static final int COLOR_MAGICAL = 9; + public static final int COLOR_RARE = 14; + public static final int COLOR_LEGENDARY = 6; + + public static final String JUNK = "custom_junk"; + public static final String NORMAL = "custom_normal"; + public static final String MAGICAL = "custom_magical"; + public static final String RARE = "custom_rare"; + public static final String LEGENDARY = "custom_legendary"; + + public static final String DISPLAY_NAME_JUNK = "Junk"; + public static final String DISPLAY_NAME_NORMAL = "Normal"; + public static final String DISPLAY_NAME_MAGICAL = "Magical"; + public static final String DISPLAY_NAME_RARE = "Rare"; + public static final String DISPLAY_NAME_LEGENDARY = "Legendary"; + +} diff --git a/ee3_common/net/minecraft/src/mod_EE3.java b/ee3_common/net/minecraft/src/mod_EE3.java index a56b1454..ae912564 100644 --- a/ee3_common/net/minecraft/src/mod_EE3.java +++ b/ee3_common/net/minecraft/src/mod_EE3.java @@ -53,7 +53,10 @@ public class mod_EE3 extends NetworkMod { this.proxy.registerSoundHandler(); // Initialise the configuration settings from file - config.init(); + this.config.init(); + + // Add in the custom Item rarity types + this.proxy.addCustomEnumRarityTypes(); // Initialise the mod items ModItems.init(); @@ -61,9 +64,8 @@ public class mod_EE3 extends NetworkMod { // Initialise the Philosopher Stone recipes RecipesPhilStone.initRecipes(); - BuildCraftAddon.init(); - - emcList.initEMCList(); + // Initialise the EMC List + this.emcList.initEMCList(); } @Override diff --git a/ee3_server/ee3/server/EEProxy.java b/ee3_server/ee3/server/EEProxy.java index 6bf7cd45..cd800ae7 100644 --- a/ee3_server/ee3/server/EEProxy.java +++ b/ee3_server/ee3/server/EEProxy.java @@ -7,6 +7,7 @@ import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.ReflectionHelper; import net.minecraft.src.EntityPlayer; +import net.minecraft.src.EnumRarity; import net.minecraft.src.ModLoader; import net.minecraft.src.NetworkManager; import net.minecraft.src.World; @@ -74,7 +75,6 @@ public class EEProxy implements IProxy { public void handleTEPacket(int x, int y, int z, byte direction, String player) { } @Override - // Stub, no need for a Sound Handler on the server public void registerSoundHandler() { } @Override @@ -86,4 +86,11 @@ public class EEProxy implements IProxy { @Override public void playSound(String soundName, float x, float y, float z, float volume, float pitch) { } + @Override + public void addCustomEnumRarityTypes() { } + + @Override + public EnumRarity getCustomEnumRarityType(String custom) { + return null; + } } diff --git a/ee3_server/net/minecraft/src/EnumRarity.java b/ee3_server/net/minecraft/src/EnumRarity.java new file mode 100644 index 00000000..89be5bc7 --- /dev/null +++ b/ee3_server/net/minecraft/src/EnumRarity.java @@ -0,0 +1,9 @@ +package net.minecraft.src; + +/** + * EnumRarity + * Stubbed in server side to allow for EE item code to be common and not client/server specific + * @author pahimar + * + */ +public enum EnumRarity { }