From 1cbfb94d8688df7c649594749e9a69d8480c5452 Mon Sep 17 00:00:00 2001 From: pahimar Date: Sat, 29 Sep 2012 21:48:44 -0400 Subject: [PATCH 01/23] Simplify the loading of localization files now that our localization PR has been merged into FML and Forge --- .../ee3/common/EquivalentExchange3.java | 6 +- .../core/handlers/LocalizationHandler.java | 60 ++----------------- .../core/helper/LocalizationHelper.java | 41 ------------- .../ee3/common/core/helper/VersionHelper.java | 9 +-- 4 files changed, 12 insertions(+), 104 deletions(-) diff --git a/ee3_common/ee3/common/EquivalentExchange3.java b/ee3_common/ee3/common/EquivalentExchange3.java index 5f1a1b16..17f377fa 100644 --- a/ee3_common/ee3/common/EquivalentExchange3.java +++ b/ee3_common/ee3/common/EquivalentExchange3.java @@ -53,11 +53,11 @@ public class EquivalentExchange3 { @PreInit public void preInit(FMLPreInitializationEvent event) { + // Load the localization files into the LanguageRegistry + LocalizationHandler.loadLanguages(); + // Initialize the configuration ConfigurationHandler.init(event.getSuggestedConfigurationFile()); - - // Load the localization files into the LanguageRegistry - LocalizationHandler.instance().loadLanguages(); // Conduct the version check and log the result VersionHelper.checkVersion(); diff --git a/ee3_common/ee3/common/core/handlers/LocalizationHandler.java b/ee3_common/ee3/common/core/handlers/LocalizationHandler.java index 13eb2438..ca8fbe8b 100644 --- a/ee3_common/ee3/common/core/handlers/LocalizationHandler.java +++ b/ee3_common/ee3/common/core/handlers/LocalizationHandler.java @@ -1,10 +1,5 @@ package ee3.common.core.handlers; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.util.Iterator; -import java.util.Properties; import cpw.mods.fml.common.registry.LanguageRegistry; import ee3.common.core.helper.LocalizationHelper; import ee3.common.lib.Localizations; @@ -20,61 +15,14 @@ import ee3.common.lib.Localizations; */ public class LocalizationHandler { - private static final LocalizationHandler INSTANCE = new LocalizationHandler(); - - public static LocalizationHandler instance() { - return INSTANCE; - } - /*** * Loads in all the localization files from the Localizations library class */ - public void loadLanguages() { - InputStream languageStream = null; - Properties languageMappings = new Properties(); - Iterator keyIter = null; - String currentKey, currentLang; - - try { - // For every file specified in the Localization library class, load them into the Language Registry - for (String localizationFile : Localizations.localeFiles) { - URL localizationFileURL = this.getClass().getResource(localizationFile); - - languageStream = localizationFileURL.openStream(); - - // If this file is a XML file, load it from XML - if (LocalizationHelper.isXMLLanguageFile(localizationFile)) { - languageMappings.loadFromXML(languageStream); - } - // Otherwise, load it like any other Java Properties file - else { - languageMappings.load(languageStream); - } - - // Read the locale from the file name of the localization file - currentLang = LocalizationHelper.getLocaleFromFileName(localizationFile); - - // For every key in the localization file, add its key:value pair to the Language Registry for the given locale - keyIter = (Iterator)languageMappings.keys(); - while (keyIter.hasNext()) { - currentKey = keyIter.next(); - LanguageRegistry.instance().addStringLocalization(currentKey, currentLang, languageMappings.getProperty(currentKey)); - } - } - - } catch (Exception e) { - e.printStackTrace(System.err); - } finally { - // Close the input stream when we are done with it - try { - if (languageStream != null) { - languageStream.close(); - } - } catch (IOException ex) { - ex.printStackTrace(System.err); - } + public static void loadLanguages() { + // For every file specified in the Localization library class, load them into the Language Registry + for (String localizationFile : Localizations.localeFiles) { + LanguageRegistry.instance().loadLocalization(localizationFile, LocalizationHelper.getLocaleFromFileName(localizationFile), LocalizationHelper.isXMLLanguageFile(localizationFile)); } - } } diff --git a/ee3_common/ee3/common/core/helper/LocalizationHelper.java b/ee3_common/ee3/common/core/helper/LocalizationHelper.java index 93228e1c..35e064af 100644 --- a/ee3_common/ee3/common/core/helper/LocalizationHelper.java +++ b/ee3_common/ee3/common/core/helper/LocalizationHelper.java @@ -1,12 +1,5 @@ package ee3.common.core.helper; -import java.util.HashMap; -import java.util.Properties; -import cpw.mods.fml.common.registry.LanguageRegistry; -import cpw.mods.fml.relauncher.ReflectionHelper; -import net.minecraft.src.StringTranslate; -import ee3.common.core.handlers.LocalizationHandler; - /** * LocalizationHelper * @@ -18,40 +11,6 @@ import ee3.common.core.handlers.LocalizationHandler; */ public class LocalizationHelper { - // The language data field name for localization data in the Language Registry - private static final String LANGUAGE_REGISTRY_LANGUAGE_DATA_FIELD = "modLanguageData"; - - /*** - * Returns the localized version of the text represented by key for the current language from the Language Registry - * @param key The key that represents the text we are attempting to localize - * @return The localized string for the specified key for the current language, null if no localized version of the key exists in the Language Registry - */ - public static String localize(String key) { - return localize(StringTranslate.getInstance().getCurrentLanguage(), key); - } - - /*** - * Returns the localized version of the text represented by key for the specified language from the Language Registry - * @param language The language for which to search for the localized version of the key - * @param key The key that represents the text we are attempting to localize - * @return The localized string for the specified key for the specified language, null if no localized version of the key exists in the Language Registry - */ - public static String localize(String language, String key) { - String localizedValue = ""; - HashMap modLanguageData = null; - Properties languageMapping = null; - - try { - modLanguageData = ReflectionHelper.getPrivateValue(cpw.mods.fml.common.registry.LanguageRegistry.class, LanguageRegistry.instance(), LANGUAGE_REGISTRY_LANGUAGE_DATA_FIELD); - languageMapping = modLanguageData.get(language); - localizedValue = languageMapping.getProperty(key); - } catch (Exception e) { - e.printStackTrace(System.err); - } - - return localizedValue; - } - /*** * Simple test to determine if a specified file name represents a XML file or not * @param fileName String representing the file name of the file in question diff --git a/ee3_common/ee3/common/core/helper/VersionHelper.java b/ee3_common/ee3/common/core/helper/VersionHelper.java index b8bdee29..b12dd08b 100644 --- a/ee3_common/ee3/common/core/helper/VersionHelper.java +++ b/ee3_common/ee3/common/core/helper/VersionHelper.java @@ -7,6 +7,7 @@ import java.util.logging.Level; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Loader; +import cpw.mods.fml.common.registry.LanguageRegistry; import ee3.common.lib.Reference; /** @@ -97,16 +98,16 @@ public class VersionHelper { public static String getResultMessage() { if (result == UNINITIALIZED) { - return LocalizationHelper.localize(UNINITIALIZED_MESSAGE); + return LanguageRegistry.instance().getStringLocalization(UNINITIALIZED_MESSAGE); } else if (result == CURRENT) { - return LocalizationHelper.localize(CURRENT_MESSAGE); + return LanguageRegistry.instance().getStringLocalization(CURRENT_MESSAGE); } else if (result == OUTDATED) { - return LocalizationHelper.localize(OUTDATED_MESSAGE); + return LanguageRegistry.instance().getStringLocalization(OUTDATED_MESSAGE); } else if (result == CONNECTION_ERROR) { - return LocalizationHelper.localize(CONNECTION_ERROR_MESSAGE); + return LanguageRegistry.instance().getStringLocalization(CONNECTION_ERROR_MESSAGE); } else { return null; From fd5e247c595c7e5f9ec3def4d47addfd69a31692 Mon Sep 17 00:00:00 2001 From: pahimar Date: Mon, 1 Oct 2012 15:18:38 -0400 Subject: [PATCH 02/23] Increase the size of the Calcinator GUI, and save the GIMP image files to the resources for easier modification by the masses --- ee3_client/ee3/client/gui/GuiCalcinator.java | 1 + .../common/container/ContainerCalcinator.java | 4 ++-- resources/ee3/art/gui/calcinator-moarfire.png | Bin 3830 -> 0 bytes resources/ee3/art/gui/calcinator.png | Bin 6152 -> 6020 bytes resources/ee3/art/gui/xcf/calcinator_gui.xcf | Bin 0 -> 48122 bytes resources/ee3/art/sprite_sheet_template.xcf | Bin 0 -> 6964 bytes resources/ee3/art/sprites/xcf/ee3_blocks.xcf | Bin 0 -> 9721 bytes resources/ee3/art/sprites/xcf/ee3_items.xcf | Bin 0 -> 12121 bytes 8 files changed, 3 insertions(+), 2 deletions(-) delete mode 100644 resources/ee3/art/gui/calcinator-moarfire.png create mode 100644 resources/ee3/art/gui/xcf/calcinator_gui.xcf create mode 100644 resources/ee3/art/sprite_sheet_template.xcf create mode 100644 resources/ee3/art/sprites/xcf/ee3_blocks.xcf create mode 100644 resources/ee3/art/sprites/xcf/ee3_items.xcf diff --git a/ee3_client/ee3/client/gui/GuiCalcinator.java b/ee3_client/ee3/client/gui/GuiCalcinator.java index 703bd424..ea29c181 100644 --- a/ee3_client/ee3/client/gui/GuiCalcinator.java +++ b/ee3_client/ee3/client/gui/GuiCalcinator.java @@ -20,6 +20,7 @@ public class GuiCalcinator extends GuiContainer { public GuiCalcinator(InventoryPlayer player, TileCalcinator calcinator) { super(new ContainerCalcinator(player, calcinator)); + this.ySize = 176; this.calcinator = calcinator; } diff --git a/ee3_common/ee3/common/container/ContainerCalcinator.java b/ee3_common/ee3/common/container/ContainerCalcinator.java index 7588ff2a..3910e260 100644 --- a/ee3_common/ee3/common/container/ContainerCalcinator.java +++ b/ee3_common/ee3/common/container/ContainerCalcinator.java @@ -31,14 +31,14 @@ public class ContainerCalcinator extends Container { { for (int inventoryColumnIndex = 0; inventoryColumnIndex < 9; ++inventoryColumnIndex) { - this.addSlotToContainer(new Slot(inventoryPlayer, inventoryColumnIndex + inventoryRowIndex * 9 + 9, 8 + inventoryColumnIndex * 18, 84 + inventoryRowIndex * 18)); + this.addSlotToContainer(new Slot(inventoryPlayer, inventoryColumnIndex + inventoryRowIndex * 9 + 9, 8 + inventoryColumnIndex * 18, 94 + inventoryRowIndex * 18)); } } // Add the player's action bar slots to the container for (int actionBarSlotIndex = 0; actionBarSlotIndex < 9; ++actionBarSlotIndex) { - this.addSlotToContainer(new Slot(inventoryPlayer, actionBarSlotIndex, 8 + actionBarSlotIndex * 18, 142)); + this.addSlotToContainer(new Slot(inventoryPlayer, actionBarSlotIndex, 8 + actionBarSlotIndex * 18, 152)); } } diff --git a/resources/ee3/art/gui/calcinator-moarfire.png b/resources/ee3/art/gui/calcinator-moarfire.png deleted file mode 100644 index a3986a426f740854ece0e61aca13687605c1f152..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3830 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 diff --git a/resources/ee3/art/gui/calcinator.png b/resources/ee3/art/gui/calcinator.png index f0427de5e554190661c2ef79bda1b019a19547d8..444c09c17676a0c7d21997402aaded00f3a508da 100644 GIT binary patch literal 6020 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 UR1EjnVffXoDz$?XicmZB|2oT%8UO$Q literal 0 HcmV?d00001 diff --git a/resources/ee3/art/sprite_sheet_template.xcf b/resources/ee3/art/sprite_sheet_template.xcf new file mode 100644 index 0000000000000000000000000000000000000000..fdce0c29450862e3e088ab044531258e2ad74156 GIT binary patch literal 6964 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 literal 0 HcmV?d00001 From b22f6dae4f81041f2ef751ccfc55dd185aa9ba4f Mon Sep 17 00:00:00 2001 From: pahimar Date: Tue, 2 Oct 2012 22:00:43 -0400 Subject: [PATCH 03/23] Adding a fuel handler --- ee3_common/ee3/common/EquivalentExchange3.java | 4 ++++ .../ee3/common/core/handlers/FuelHandler.java | 14 ++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 ee3_common/ee3/common/core/handlers/FuelHandler.java diff --git a/ee3_common/ee3/common/EquivalentExchange3.java b/ee3_common/ee3/common/EquivalentExchange3.java index 17f377fa..40636eec 100644 --- a/ee3_common/ee3/common/EquivalentExchange3.java +++ b/ee3_common/ee3/common/EquivalentExchange3.java @@ -22,6 +22,7 @@ import ee3.common.core.RecipesTransmutationStone; import ee3.common.core.handlers.AddonHandler; import ee3.common.core.handlers.ConfigurationHandler; import ee3.common.core.handlers.EntityLivingHandler; +import ee3.common.core.handlers.FuelHandler; import ee3.common.core.handlers.ItemPickupHandler; import ee3.common.core.handlers.LocalizationHandler; import ee3.common.core.handlers.PacketHandler; @@ -106,6 +107,9 @@ public class EquivalentExchange3 { // Load the Transmutation Stone recipes RecipesTransmutationStone.init(); + + // Register the Fuel Handler + GameRegistry.registerFuelHandler(new FuelHandler()); } diff --git a/ee3_common/ee3/common/core/handlers/FuelHandler.java b/ee3_common/ee3/common/core/handlers/FuelHandler.java new file mode 100644 index 00000000..5b63302d --- /dev/null +++ b/ee3_common/ee3/common/core/handlers/FuelHandler.java @@ -0,0 +1,14 @@ +package ee3.common.core.handlers; + +import net.minecraft.src.ItemStack; +import cpw.mods.fml.common.IFuelHandler; + +public class FuelHandler implements IFuelHandler { + + @Override + public int getBurnTime(ItemStack fuel) { + // TODO Add in fuel values for EE3 fuel related items + return 0; + } + +} From 5a11cc81429f752ab389c1ed84d8a71efeaac7c0 Mon Sep 17 00:00:00 2001 From: pahimar Date: Wed, 3 Oct 2012 21:19:17 -0400 Subject: [PATCH 04/23] Pull out the model from RenderCalcinator into its own Model class, for better IItemRenderer --- .../ee3/client/render/ModelCalcinator.java | 117 ++++++++++++++++++ .../ee3/client/render/RenderCalcinator.java | 104 +--------------- 2 files changed, 122 insertions(+), 99 deletions(-) create mode 100644 ee3_client/ee3/client/render/ModelCalcinator.java diff --git a/ee3_client/ee3/client/render/ModelCalcinator.java b/ee3_client/ee3/client/render/ModelCalcinator.java new file mode 100644 index 00000000..f2f2c599 --- /dev/null +++ b/ee3_client/ee3/client/render/ModelCalcinator.java @@ -0,0 +1,117 @@ +package ee3.client.render; + +import org.lwjgl.opengl.GL11; + +import ee3.common.lib.Reference; +import ee3.common.tile.TileCalcinator; +import net.minecraft.src.ModelBase; +import net.minecraft.src.ModelRenderer; +import net.minecraftforge.client.ForgeHooksClient; + +public class ModelCalcinator extends ModelBase { + + private static final int TEXTURE_HEIGHT = 128; + private static final int TEXTURE_WIDTH = 128; + + private ModelRenderer legFrontLeft, legFrontRight, legBackLeft, legBackRight; + private ModelRenderer armFrontLeft, armFrontRight, armBackLeft, armBackRight; + private ModelRenderer firePlate; + private ModelRenderer bowlBottom, bowlLeft, bowlRight, bowlFront, bowlBack; + private ModelRenderer ashLayer; + private float scale; + + public ModelCalcinator(float scale) { + this.scale = scale; + this.textureHeight = TEXTURE_HEIGHT; + this.textureWidth = TEXTURE_WIDTH; + + this.legFrontLeft = new ModelRenderer(this, 0, 0); + this.legFrontLeft.addBox(-1F, -8F, -1F, 2, 8, 2); + this.legFrontLeft.setRotationPoint(2, 8, 2); + this.legFrontLeft.rotateAngleY = ((float) Math.PI / 4F); + this.legFrontRight = new ModelRenderer(this, 0, 0); + this.legFrontRight.addBox(-1F, -8F, -1F, 2, 8, 2); + this.legFrontRight.setRotationPoint(2, 8, 14); + this.legFrontRight.rotateAngleY = ((float) Math.PI / 4F); + this.legBackLeft = new ModelRenderer(this, 0, 0); + this.legBackLeft.addBox(-1F, -8F, -1F, 2, 8, 2); + this.legBackLeft.setRotationPoint(14, 8, 2); + this.legBackLeft.rotateAngleY = ((float) Math.PI / 4F); + this.legBackRight = new ModelRenderer(this, 0, 0); + this.legBackRight.addBox(-1F, -8F, -1F, 2, 8, 2); + this.legBackRight.setRotationPoint(14, 8, 14); + this.legBackRight.rotateAngleY = ((float) Math.PI / 4F); + + this.armFrontLeft = new ModelRenderer(this, 8, 0); + this.armFrontLeft.addBox(-2F, -0.5F, -0.5F, 4, 1, 1); + this.armFrontLeft.setRotationPoint(4, 3, 4); + this.armFrontLeft.rotateAngleY = ((float) Math.PI * 3 / 4F); + this.armFrontRight = new ModelRenderer(this, 8, 0); + this.armFrontRight.addBox(-2F, -0.5F, -0.5F, 4, 1, 1); + this.armFrontRight.setRotationPoint(12, 3, 4); + this.armFrontRight.rotateAngleY = ((float) Math.PI / 4F); + this.armBackLeft = new ModelRenderer(this, 8, 0); + this.armBackLeft.addBox(-2F, -0.5F, -0.5F, 4, 1, 1); + this.armBackLeft.setRotationPoint(12, 3, 12); + this.armBackLeft.rotateAngleY = ((float) Math.PI * 7 / 4F); + this.armBackRight = new ModelRenderer(this, 8, 0); + this.armBackRight.addBox(-2F, -0.5F, -0.5F, 4, 1, 1); + this.armBackRight.setRotationPoint(4, 3, 12); + this.armBackRight.rotateAngleY = ((float) Math.PI * 5 / 4F); + + this.firePlate = new ModelRenderer(this, 0, 10); + this.firePlate.addBox(-4F, -0.5F, -4F, 8, 1, 8); + this.firePlate.setRotationPoint(8, 3, 8); + this.firePlate.rotateAngleY = ((float) Math.PI / 4F); + + this.bowlBottom = new ModelRenderer(this, 0, 19); + this.bowlBottom.addBox(-8F, -1F, -8F, 16, 1, 16); + this.bowlBottom.setRotationPoint(8, 9, 8); + this.bowlBack = new ModelRenderer(this, 0, 36); + this.bowlBack.addBox(-8F, -3.5F, -0.5F, 16, 7, 1); + this.bowlBack.setRotationPoint(8F, 12.5F, 0.5F); + this.bowlFront = new ModelRenderer(this, 0, 36); + this.bowlFront.addBox(-8F, -3.5F, -0.5F, 16, 7, 1); + this.bowlFront.setRotationPoint(8, 12.5F, 15.5F); + this.bowlLeft = new ModelRenderer(this, 0, 44); + this.bowlLeft.addBox(-0.5F, -3.5F, -7F, 1, 7, 14); + this.bowlLeft.setRotationPoint(0.5F, 12.5F, 8); + this.bowlRight = new ModelRenderer(this, 0, 44); + this.bowlRight.addBox(-0.5F, -3.5F, -7F, 1, 7, 14); + this.bowlRight.setRotationPoint(15.5F, 12.5F, 8); + + this.ashLayer = new ModelRenderer(this, 0, 65); + this.ashLayer.addBox(-7F, -0.5F, -7F, 14, 1, 14); + this.ashLayer.setRotationPoint(8, 9, 8); + this.ashLayer.mirror = true; + } + + public void render(TileCalcinator calcinator, double x, double y, double z) { + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_LIGHTING); + + GL11.glTranslated(x, y, z); + ForgeHooksClient.bindTexture(Reference.SPRITE_SHEET_LOCATION + "calcinator.png", 0); + + legFrontLeft.render(scale); + legFrontRight.render(scale); + legBackLeft.render(scale); + legBackRight.render(scale); + armFrontLeft.render(scale); + armFrontRight.render(scale); + armBackLeft.render(scale); + armBackRight.render(scale); + firePlate.render(scale); + bowlBottom.render(scale); + bowlBack.render(scale); + bowlFront.render(scale); + bowlLeft.render(scale); + bowlRight.render(scale); + + ashLayer.render(scale); + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopMatrix(); + } + +} diff --git a/ee3_client/ee3/client/render/RenderCalcinator.java b/ee3_client/ee3/client/render/RenderCalcinator.java index cacb654b..c415b2c7 100644 --- a/ee3_client/ee3/client/render/RenderCalcinator.java +++ b/ee3_client/ee3/client/render/RenderCalcinator.java @@ -2,116 +2,22 @@ package ee3.client.render; import org.lwjgl.opengl.GL11; -import ee3.common.lib.Reference; +import ee3.common.tile.TileCalcinator; import net.minecraft.src.ModelBase; import net.minecraft.src.ModelRenderer; -import net.minecraft.src.Tessellator; import net.minecraft.src.TileEntity; import net.minecraft.src.TileEntitySpecialRenderer; -import net.minecraftforge.client.ForgeHooksClient; public class RenderCalcinator extends TileEntitySpecialRenderer { - private static final int TEXTURE_HEIGHT = 128; - private static final int TEXTURE_WIDTH = 128; + static final float scale = (float) (1.0 / 16.0); - private ModelBase model = new ModelBase() {}; - static final float factor = (float) (1.0 / 16.0); - - /* The four support legs of the Calcinator */ - private final ModelRenderer[] legs = new ModelRenderer[4]; - - /* The four support arms for the fire plateof the Calcinator */ - private final ModelRenderer[] supportArms = new ModelRenderer[4]; - - /* The five faces (four sides and the bottom) of the Calcinator bowl */ - private final ModelRenderer[] bowlParts = new ModelRenderer[5]; - - private final ModelRenderer firePlate; - private final ModelRenderer ashLayer; - - public RenderCalcinator() { - model.textureHeight = TEXTURE_HEIGHT; - model.textureWidth = TEXTURE_WIDTH; - - legs[0] = new ModelRenderer(model, 0, 0); - legs[0].addBox(-1F, -8F, -1F, 2, 8, 2).setRotationPoint(2, 8, 2); - legs[0].rotateAngleY = ((float)Math.PI / 4F); - legs[1] = new ModelRenderer(model, 0, 0); - legs[1].addBox(-1F, -8F, -1F, 2, 8, 2).setRotationPoint(2, 8, 14); - legs[1].rotateAngleY = ((float)Math.PI / 4F); - legs[2] = new ModelRenderer(model, 0, 0); - legs[2].addBox(-1F, -8F, -1F, 2, 8, 2).setRotationPoint(14, 8, 2); - legs[2].rotateAngleY = ((float)Math.PI / 4F); - legs[3] = new ModelRenderer(model, 0, 0); - legs[3].addBox(-1F, -8F, -1F, 2, 8, 2).setRotationPoint(14, 8, 14); - legs[3].rotateAngleY = ((float)Math.PI / 4F); - - firePlate = new ModelRenderer(model, 0, 10); - firePlate.addBox(-4F, -0.5F, -4F, 8, 1, 8).setRotationPoint(8, 3, 8); - firePlate.rotateAngleY = ((float)Math.PI / 4F); - - supportArms[0] = new ModelRenderer(model, 8, 0); - supportArms[0].addBox(-2F, -0.5F, -0.5F, 4, 1, 1).setRotationPoint(4, 3, 4); - supportArms[0].rotateAngleY = ((float)Math.PI * 3 / 4F); - supportArms[1] = new ModelRenderer(model, 8, 0); - supportArms[1].addBox(-2F, -0.5F, -0.5F, 4, 1, 1).setRotationPoint(12, 3, 4); - supportArms[1].rotateAngleY = ((float)Math.PI / 4F); - supportArms[2] = new ModelRenderer(model, 8, 0); - supportArms[2].addBox(-2F, -0.5F, -0.5F, 4, 1, 1).setRotationPoint(12, 3, 12); - supportArms[2].rotateAngleY = ((float)Math.PI * 7 / 4F); - supportArms[3] = new ModelRenderer(model, 8, 0); - supportArms[3].addBox(-2F, -0.5F, -0.5F, 4, 1, 1).setRotationPoint(4, 3, 12); - supportArms[3].rotateAngleY = ((float)Math.PI * 5 / 4F); - - bowlParts[0] = new ModelRenderer(model, 0, 19); - bowlParts[0].addBox(-8F, -1F, -8F, 16, 1, 16).setRotationPoint(8, 9, 8); - bowlParts[1] = new ModelRenderer(model, 0, 36); - bowlParts[1].addBox(-8F, -3.5F, -0.5F, 16, 7, 1).setRotationPoint(8, 12.5F, 15.5F); - bowlParts[2] = new ModelRenderer(model, 0, 44); - bowlParts[2].addBox(-0.5F, -3.5F, -7F, 1, 7, 14).setRotationPoint(15.5F, 12.5F, 8); - bowlParts[3] = new ModelRenderer(model, 0, 44); - bowlParts[3].addBox(-0.5F, -3.5F, -7F, 1, 7, 14).setRotationPoint(0.5F, 12.5F, 8); - bowlParts[4] = new ModelRenderer(model, 0, 36); - bowlParts[4].addBox(-8F, -3.5F, -0.5F, 16, 7, 1).setRotationPoint(8F, 12.5F, 0.5F); - - ashLayer = new ModelRenderer(model, 0, 65); - ashLayer.addBox(-7F, -0.5F, -7F, 14, 1, 14).setRotationPoint(8, 9, 8); - ashLayer.mirror = true; - - } + private ModelCalcinator modelCalcinator = new ModelCalcinator(scale); @Override - public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { - render(x, y, z); - } - - private void render(double x, double y, double z) { - GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_LIGHTING); - - GL11.glTranslated(x, y, z); - ForgeHooksClient.bindTexture(Reference.SPRITE_SHEET_LOCATION + "calcinator.png", 0); - - firePlate.render(factor); - - for (ModelRenderer leg : legs) { - leg.render(factor); - } - - for (ModelRenderer supportArm : supportArms) { - supportArm.render(factor); - } - - for (ModelRenderer bowlPart : bowlParts) { - bowlPart.render(factor); - } - - ashLayer.render(factor); - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glPopMatrix(); + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float tick) { + modelCalcinator.render((TileCalcinator)tileEntity, x, y, z); } } From 9ae515a930aa07cb505d0892aef4819785bf2cf2 Mon Sep 17 00:00:00 2001 From: pahimar Date: Thu, 4 Oct 2012 07:59:46 -0400 Subject: [PATCH 05/23] Getting ready for more Calcination --- .../ee3/common/EquivalentExchange3.java | 2 +- .../ee3/common/recipe/RecipesCalcinator.java | 5 + .../RecipesTransmutationStone.java | 387 +++++++++--------- .../ee3/common/tile/TileCalcinator.java | 27 +- 4 files changed, 225 insertions(+), 196 deletions(-) create mode 100644 ee3_common/ee3/common/recipe/RecipesCalcinator.java rename ee3_common/ee3/common/{core => recipe}/RecipesTransmutationStone.java (97%) diff --git a/ee3_common/ee3/common/EquivalentExchange3.java b/ee3_common/ee3/common/EquivalentExchange3.java index 40636eec..20666df8 100644 --- a/ee3_common/ee3/common/EquivalentExchange3.java +++ b/ee3_common/ee3/common/EquivalentExchange3.java @@ -18,7 +18,6 @@ import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.TickRegistry; import ee3.common.block.ModBlocks; import ee3.common.core.CommonProxy; -import ee3.common.core.RecipesTransmutationStone; import ee3.common.core.handlers.AddonHandler; import ee3.common.core.handlers.ConfigurationHandler; import ee3.common.core.handlers.EntityLivingHandler; @@ -31,6 +30,7 @@ import ee3.common.core.handlers.VersionCheckTickHandler; import ee3.common.core.helper.VersionHelper; import ee3.common.item.ModItems; import ee3.common.lib.Reference; +import ee3.common.recipe.RecipesTransmutationStone; /** * EquivalentExchange3 diff --git a/ee3_common/ee3/common/recipe/RecipesCalcinator.java b/ee3_common/ee3/common/recipe/RecipesCalcinator.java new file mode 100644 index 00000000..15efa825 --- /dev/null +++ b/ee3_common/ee3/common/recipe/RecipesCalcinator.java @@ -0,0 +1,5 @@ +package ee3.common.recipe; + +public class RecipesCalcinator { + +} diff --git a/ee3_common/ee3/common/core/RecipesTransmutationStone.java b/ee3_common/ee3/common/recipe/RecipesTransmutationStone.java similarity index 97% rename from ee3_common/ee3/common/core/RecipesTransmutationStone.java rename to ee3_common/ee3/common/recipe/RecipesTransmutationStone.java index 1dfe1f74..1120b25f 100644 --- a/ee3_common/ee3/common/core/RecipesTransmutationStone.java +++ b/ee3_common/ee3/common/recipe/RecipesTransmutationStone.java @@ -1,194 +1,193 @@ -package ee3.common.core; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import cpw.mods.fml.common.ObfuscationReflectionHelper; - -import net.minecraft.src.Block; -import net.minecraft.src.FurnaceRecipes; -import net.minecraft.src.Item; -import net.minecraft.src.ItemStack; -import ee3.common.core.handlers.EquivalencyHandler; -import ee3.common.core.helper.GeneralHelper; -import ee3.common.core.helper.RecipeHelper; -import ee3.common.item.ModItems; -import ee3.common.lib.Reference; - -public class RecipesTransmutationStone { - - private static ItemStack philStone = new ItemStack(ModItems.philStone, 1, -1); - private static ItemStack miniumStone = new ItemStack(ModItems.miniumStone, 1, -1); - private static List transmutationStones = Arrays.asList(miniumStone, philStone); - - - private static ItemStack anyCoal = new ItemStack(Item.coal, 1, -1); - private static ItemStack anyWood = new ItemStack(Block.wood, 1, -1); - private static ItemStack anyPlank = new ItemStack(Block.planks, 1, -1); - private static ItemStack anySandStone = new ItemStack(Block.sandStone, 1, -1); - private static ItemStack dyeBoneMeal = new ItemStack(Item.dyePowder, 1, 15); - - public static void init() { - initEquivalencyList(); - - for (ItemStack stone: transmutationStones) { - initTransmutationRecipes(stone); - initEquivalenceRecipes(stone); - initReconstructiveRecipes(stone); - initDestructorRecipes(stone); - initPortableSmeltingRecipes(stone); - } - - if (Reference.DEBUG_MODE) { - EquivalencyHandler.debug(); - } - } - - public static void initTransmutationRecipes(ItemStack transmutationStone) { - /* 4 Cobble <-> 1 Flint */ - RecipeHelper.addRecipe(Item.flint, transmutationStone, Block.cobblestone, Block.cobblestone, Block.cobblestone, Block.cobblestone); - RecipeHelper.addRecipe(new ItemStack(Block.cobblestone, 4), transmutationStone, Item.flint); - - /* 4 Dirt <-> 1 Gravel */ - RecipeHelper.addRecipe(Block.gravel, transmutationStone, Block.dirt, Block.dirt, Block.dirt, Block.dirt); - RecipeHelper.addRecipe(new ItemStack(Block.dirt, 4), transmutationStone, Block.gravel); - - /* 4 Sand <-> 1 Sandstone */ - // Vanilla Recipes exist to make SandStone from 4 Sand - RecipeHelper.addRecipe(new ItemStack(Block.sand, 4), transmutationStone, anySandStone); - - /* 2 Sticks -> Wood Plank */ - RecipeHelper.addRecipe(Block.planks, transmutationStone, Item.stick, Item.stick); - // Vanilla recipe exists to make sticks from planks - - /* 4 Wood Planks -> Wood Block */ - RecipeHelper.addRecipe(Block.wood, transmutationStone, anyPlank, anyPlank, anyPlank, anyPlank); - // Vanilla recipes exist to make planks from any wood log - - /* 4 Gravel/Sandstone/Flint -> 1 Clay Ball, 1 Clay Ball -> 4 Gravel */ - RecipeHelper.addRecipe(Item.clay, transmutationStone, Block.gravel, Block.gravel, Block.gravel, Block.gravel); - RecipeHelper.addRecipe(Item.clay, transmutationStone, anySandStone, anySandStone, anySandStone, anySandStone); - RecipeHelper.addRecipe(Item.clay, transmutationStone, Item.flint, Item.flint, Item.flint, Item.flint); - RecipeHelper.addRecipe(new ItemStack(Block.gravel, 4), transmutationStone, Item.clay); - - /* 2 Wood Log <-> 1 Obsidian */ - RecipeHelper.addRecipe(Block.obsidian, transmutationStone, anyWood, anyWood); - RecipeHelper.addRecipe(new ItemStack(Block.wood, 2), transmutationStone, Block.obsidian); - - /* 4 Clay Ball <-> 1 Clay Block */ - // Vanilla recipe exists to make clay blocks from clay balls - RecipeHelper.addRecipe(new ItemStack(Item.clay, 4), transmutationStone, Block.blockClay); - - /* 4 Obsidian/Clay Block -> 1 Iron Ingot, Iron Ingot -> Clay Block */ - RecipeHelper.addRecipe(Item.ingotIron, transmutationStone, Block.obsidian, Block.obsidian, Block.obsidian, Block.obsidian); - RecipeHelper.addRecipe(Item.ingotIron, transmutationStone, Block.blockClay, Block.blockClay, Block.blockClay, Block.blockClay); - RecipeHelper.addRecipe(new ItemStack(Block.blockClay, 4), transmutationStone, Item.ingotIron); - - /* 8 Iron Ingot <-> 1 Gold Ingot */ - RecipeHelper.addRecipe(Item.ingotGold, transmutationStone, Item.ingotIron, Item.ingotIron, Item.ingotIron, Item.ingotIron, Item.ingotIron, Item.ingotIron, Item.ingotIron, Item.ingotIron); - RecipeHelper.addRecipe(new ItemStack(Item.ingotIron, 8), transmutationStone, Item.ingotGold); - - /* 4 Gold Ingot <-> 1 Diamond */ - RecipeHelper.addRecipe(Item.diamond, transmutationStone, Item.ingotGold, Item.ingotGold, Item.ingotGold, Item.ingotGold); - RecipeHelper.addRecipe(new ItemStack(Item.ingotGold, 4), transmutationStone, Item.diamond); - - /* 8 Iron Block <-> 1 Gold Block */ - RecipeHelper.addRecipe(Block.blockGold, transmutationStone, Block.blockSteel, Block.blockSteel, Block.blockSteel, Block.blockSteel, Block.blockSteel, Block.blockSteel, Block.blockSteel, Block.blockSteel); - RecipeHelper.addRecipe(new ItemStack(Block.blockSteel, 8), transmutationStone, Block.blockGold); - - /* 4 Gold Block <-> 1 Diamond Block */ - RecipeHelper.addRecipe(Block.blockDiamond, transmutationStone, Block.blockGold, Block.blockGold, Block.blockGold, Block.blockGold); - RecipeHelper.addRecipe(new ItemStack(Block.blockGold, 4), transmutationStone, Block.blockDiamond); - - /* 1 Ender Pearl <-> 4 Iron Ingot */ - RecipeHelper.addRecipe(Item.enderPearl, transmutationStone, Item.ingotIron, Item.ingotIron, Item.ingotIron, Item.ingotIron); - RecipeHelper.addRecipe(new ItemStack(Item.ingotIron, 4), transmutationStone, Item.enderPearl); - } - - public static void initEquivalenceRecipes(ItemStack stone) { - int outputI; - - for (ArrayList itemStackList : EquivalencyHandler.equivalencyList) { - ItemStack[] currentList = new ItemStack[itemStackList.size()]; - currentList = itemStackList.toArray(currentList); - - for (int i = 0; i < currentList.length; i++) { - outputI = (i == currentList.length - 1 ? 0 : i + 1); - - RecipeHelper.addRecipe(currentList[outputI], stone, GeneralHelper.convertSingleStackToPluralStacks(currentList[i])); - } - } - } - - public static void initReconstructiveRecipes(ItemStack stone) { - /* 3 Bone Meal --> 1 Bone */ - RecipeHelper.addRecipe(Item.bone, stone, dyeBoneMeal, dyeBoneMeal, dyeBoneMeal); - - /* 2 Blaze Powder --> 1 Blaze Rod */ - RecipeHelper.addRecipe(Item.blazeRod, stone, Item.blazePowder, Item.blazePowder); - } - - - public static void initDestructorRecipes(ItemStack stone) { - /* Smooth Stone -> Cobble Stone */ - RecipeHelper.addRecipe(Block.cobblestone, stone, Block.stone); - - /* Glass -> Sand */ - RecipeHelper.addRecipe(Block.sand, stone, Block.glass); - - /* Glowstone Block -> 4 Glowstone Dust */ - RecipeHelper.addRecipe(new ItemStack(Item.lightStoneDust, 4), stone, Block.glowStone); - - /* Brick Block -> 4 Bricks */ - RecipeHelper.addRecipe(new ItemStack(Item.brick, 4), stone, Block.brick); - } - - public static void initPortableSmeltingRecipes(ItemStack stone) { - Map furnaceMap = FurnaceRecipes.smelting().getSmeltingList(); - Map furnaceMetaMap = ObfuscationReflectionHelper.getPrivateValue(FurnaceRecipes.class, FurnaceRecipes.smelting(), "metaSmeltingList"); - - Iterator iterFurnaceKeyMap = furnaceMap.keySet().iterator(); - Iterator iterFurnaceMetaKeyMap = furnaceMetaMap.keySet().iterator(); - - Integer furnaceMapKey; - List furnaceMetaMapKey; - - ItemStack unSmeltedStack; - - while (iterFurnaceKeyMap.hasNext()) { - furnaceMapKey = (Integer) iterFurnaceKeyMap.next(); - unSmeltedStack = new ItemStack(furnaceMapKey, 1, 0); - - RecipeHelper.addSmeltingRecipe(unSmeltedStack, stone, anyCoal); - } - - while (iterFurnaceMetaKeyMap.hasNext()) { - furnaceMetaMapKey = (List)iterFurnaceMetaKeyMap.next(); - unSmeltedStack = new ItemStack((Integer)furnaceMetaMapKey.get(0), 1, (Integer)furnaceMetaMapKey.get(1)); - - RecipeHelper.addSmeltingRecipe(unSmeltedStack, stone, anyCoal); - } - } - - protected static void initEquivalencyList() { - EquivalencyHandler.addObjectsToEquivalencyLists(Block.sand, Block.dirt, Block.cobblestone, Block.grass); - EquivalencyHandler.addObjectsToEquivalencyLists(Block.plantYellow, Block.plantRed); - EquivalencyHandler.addObjectsToEquivalencyLists(Block.mushroomRed, Block.mushroomBrown); - EquivalencyHandler.addObjectsToEquivalencyLists(Item.pumpkinSeeds, Item.melonSeeds); - EquivalencyHandler.addObjectsToEquivalencyLists(Block.pumpkin, Block.melon); - EquivalencyHandler.addObjectsToEquivalencyLists(new ItemStack(Item.paper, 3), new ItemStack(Item.reed, 3)); - EquivalencyHandler.addObjectsToEquivalencyLists(new ItemStack(Item.flint, 2), new ItemStack(Block.gravel, 2), new ItemStack(Block.sandStone, 2, 0), new ItemStack(Block.sandStone, 2, 1), new ItemStack(Block.sandStone, 2, 2)); - EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Block.planks, 4)); - EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Block.wood, 4)); - EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Block.sapling, 4)); - EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Block.leaves, 4)); - EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Block.tallGrass, 3)); - EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Block.cloth, 16)); - EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Block.stoneBrick, 4)); - EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Item.dyePowder, 16, 3, 4, 15)); - } - -} +package ee3.common.recipe; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import cpw.mods.fml.common.ObfuscationReflectionHelper; + +import net.minecraft.src.Block; +import net.minecraft.src.FurnaceRecipes; +import net.minecraft.src.Item; +import net.minecraft.src.ItemStack; +import ee3.common.core.handlers.EquivalencyHandler; +import ee3.common.core.helper.GeneralHelper; +import ee3.common.core.helper.RecipeHelper; +import ee3.common.item.ModItems; +import ee3.common.lib.Reference; + +public class RecipesTransmutationStone { + + private static ItemStack philStone = new ItemStack(ModItems.philStone, 1, -1); + private static ItemStack miniumStone = new ItemStack(ModItems.miniumStone, 1, -1); + private static List transmutationStones = Arrays.asList(miniumStone, philStone); + + private static ItemStack anyCoal = new ItemStack(Item.coal, 1, -1); + private static ItemStack anyWood = new ItemStack(Block.wood, 1, -1); + private static ItemStack anyPlank = new ItemStack(Block.planks, 1, -1); + private static ItemStack anySandStone = new ItemStack(Block.sandStone, 1, -1); + private static ItemStack dyeBoneMeal = new ItemStack(Item.dyePowder, 1, 15); + + public static void init() { + initEquivalencyList(); + + for (ItemStack stone: transmutationStones) { + initTransmutationRecipes(stone); + initEquivalenceRecipes(stone); + initReconstructiveRecipes(stone); + initDestructorRecipes(stone); + initPortableSmeltingRecipes(stone); + } + + if (Reference.DEBUG_MODE) { + EquivalencyHandler.debug(); + } + } + + public static void initTransmutationRecipes(ItemStack transmutationStone) { + /* 4 Cobble <-> 1 Flint */ + RecipeHelper.addRecipe(Item.flint, transmutationStone, Block.cobblestone, Block.cobblestone, Block.cobblestone, Block.cobblestone); + RecipeHelper.addRecipe(new ItemStack(Block.cobblestone, 4), transmutationStone, Item.flint); + + /* 4 Dirt <-> 1 Gravel */ + RecipeHelper.addRecipe(Block.gravel, transmutationStone, Block.dirt, Block.dirt, Block.dirt, Block.dirt); + RecipeHelper.addRecipe(new ItemStack(Block.dirt, 4), transmutationStone, Block.gravel); + + /* 4 Sand <-> 1 Sandstone */ + // Vanilla Recipes exist to make SandStone from 4 Sand + RecipeHelper.addRecipe(new ItemStack(Block.sand, 4), transmutationStone, anySandStone); + + /* 2 Sticks -> Wood Plank */ + RecipeHelper.addRecipe(Block.planks, transmutationStone, Item.stick, Item.stick); + // Vanilla recipe exists to make sticks from planks + + /* 4 Wood Planks -> Wood Block */ + RecipeHelper.addRecipe(Block.wood, transmutationStone, anyPlank, anyPlank, anyPlank, anyPlank); + // Vanilla recipes exist to make planks from any wood log + + /* 4 Gravel/Sandstone/Flint -> 1 Clay Ball, 1 Clay Ball -> 4 Gravel */ + RecipeHelper.addRecipe(Item.clay, transmutationStone, Block.gravel, Block.gravel, Block.gravel, Block.gravel); + RecipeHelper.addRecipe(Item.clay, transmutationStone, anySandStone, anySandStone, anySandStone, anySandStone); + RecipeHelper.addRecipe(Item.clay, transmutationStone, Item.flint, Item.flint, Item.flint, Item.flint); + RecipeHelper.addRecipe(new ItemStack(Block.gravel, 4), transmutationStone, Item.clay); + + /* 2 Wood Log <-> 1 Obsidian */ + RecipeHelper.addRecipe(Block.obsidian, transmutationStone, anyWood, anyWood); + RecipeHelper.addRecipe(new ItemStack(Block.wood, 2), transmutationStone, Block.obsidian); + + /* 4 Clay Ball <-> 1 Clay Block */ + // Vanilla recipe exists to make clay blocks from clay balls + RecipeHelper.addRecipe(new ItemStack(Item.clay, 4), transmutationStone, Block.blockClay); + + /* 4 Obsidian/Clay Block -> 1 Iron Ingot, Iron Ingot -> Clay Block */ + RecipeHelper.addRecipe(Item.ingotIron, transmutationStone, Block.obsidian, Block.obsidian, Block.obsidian, Block.obsidian); + RecipeHelper.addRecipe(Item.ingotIron, transmutationStone, Block.blockClay, Block.blockClay, Block.blockClay, Block.blockClay); + RecipeHelper.addRecipe(new ItemStack(Block.blockClay, 4), transmutationStone, Item.ingotIron); + + /* 8 Iron Ingot <-> 1 Gold Ingot */ + RecipeHelper.addRecipe(Item.ingotGold, transmutationStone, Item.ingotIron, Item.ingotIron, Item.ingotIron, Item.ingotIron, Item.ingotIron, Item.ingotIron, Item.ingotIron, Item.ingotIron); + RecipeHelper.addRecipe(new ItemStack(Item.ingotIron, 8), transmutationStone, Item.ingotGold); + + /* 4 Gold Ingot <-> 1 Diamond */ + RecipeHelper.addRecipe(Item.diamond, transmutationStone, Item.ingotGold, Item.ingotGold, Item.ingotGold, Item.ingotGold); + RecipeHelper.addRecipe(new ItemStack(Item.ingotGold, 4), transmutationStone, Item.diamond); + + /* 8 Iron Block <-> 1 Gold Block */ + RecipeHelper.addRecipe(Block.blockGold, transmutationStone, Block.blockSteel, Block.blockSteel, Block.blockSteel, Block.blockSteel, Block.blockSteel, Block.blockSteel, Block.blockSteel, Block.blockSteel); + RecipeHelper.addRecipe(new ItemStack(Block.blockSteel, 8), transmutationStone, Block.blockGold); + + /* 4 Gold Block <-> 1 Diamond Block */ + RecipeHelper.addRecipe(Block.blockDiamond, transmutationStone, Block.blockGold, Block.blockGold, Block.blockGold, Block.blockGold); + RecipeHelper.addRecipe(new ItemStack(Block.blockGold, 4), transmutationStone, Block.blockDiamond); + + /* 1 Ender Pearl <-> 4 Iron Ingot */ + RecipeHelper.addRecipe(Item.enderPearl, transmutationStone, Item.ingotIron, Item.ingotIron, Item.ingotIron, Item.ingotIron); + RecipeHelper.addRecipe(new ItemStack(Item.ingotIron, 4), transmutationStone, Item.enderPearl); + } + + public static void initEquivalenceRecipes(ItemStack stone) { + int outputI; + + for (ArrayList itemStackList : EquivalencyHandler.equivalencyList) { + ItemStack[] currentList = new ItemStack[itemStackList.size()]; + currentList = itemStackList.toArray(currentList); + + for (int i = 0; i < currentList.length; i++) { + outputI = (i == currentList.length - 1 ? 0 : i + 1); + + RecipeHelper.addRecipe(currentList[outputI], stone, GeneralHelper.convertSingleStackToPluralStacks(currentList[i])); + } + } + } + + public static void initReconstructiveRecipes(ItemStack stone) { + /* 3 Bone Meal --> 1 Bone */ + RecipeHelper.addRecipe(Item.bone, stone, dyeBoneMeal, dyeBoneMeal, dyeBoneMeal); + + /* 2 Blaze Powder --> 1 Blaze Rod */ + RecipeHelper.addRecipe(Item.blazeRod, stone, Item.blazePowder, Item.blazePowder); + } + + + public static void initDestructorRecipes(ItemStack stone) { + /* Smooth Stone -> Cobble Stone */ + RecipeHelper.addRecipe(Block.cobblestone, stone, Block.stone); + + /* Glass -> Sand */ + RecipeHelper.addRecipe(Block.sand, stone, Block.glass); + + /* Glowstone Block -> 4 Glowstone Dust */ + RecipeHelper.addRecipe(new ItemStack(Item.lightStoneDust, 4), stone, Block.glowStone); + + /* Brick Block -> 4 Bricks */ + RecipeHelper.addRecipe(new ItemStack(Item.brick, 4), stone, Block.brick); + } + + public static void initPortableSmeltingRecipes(ItemStack stone) { + Map furnaceMap = FurnaceRecipes.smelting().getSmeltingList(); + Map furnaceMetaMap = ObfuscationReflectionHelper.getPrivateValue(FurnaceRecipes.class, FurnaceRecipes.smelting(), "metaSmeltingList"); + + Iterator iterFurnaceKeyMap = furnaceMap.keySet().iterator(); + Iterator iterFurnaceMetaKeyMap = furnaceMetaMap.keySet().iterator(); + + Integer furnaceMapKey; + List furnaceMetaMapKey; + + ItemStack unSmeltedStack; + + while (iterFurnaceKeyMap.hasNext()) { + furnaceMapKey = (Integer) iterFurnaceKeyMap.next(); + unSmeltedStack = new ItemStack(furnaceMapKey, 1, 0); + + RecipeHelper.addSmeltingRecipe(unSmeltedStack, stone, anyCoal); + } + + while (iterFurnaceMetaKeyMap.hasNext()) { + furnaceMetaMapKey = (List)iterFurnaceMetaKeyMap.next(); + unSmeltedStack = new ItemStack((Integer)furnaceMetaMapKey.get(0), 1, (Integer)furnaceMetaMapKey.get(1)); + + RecipeHelper.addSmeltingRecipe(unSmeltedStack, stone, anyCoal); + } + } + + protected static void initEquivalencyList() { + EquivalencyHandler.addObjectsToEquivalencyLists(Block.sand, Block.dirt, Block.cobblestone, Block.grass); + EquivalencyHandler.addObjectsToEquivalencyLists(Block.plantYellow, Block.plantRed); + EquivalencyHandler.addObjectsToEquivalencyLists(Block.mushroomRed, Block.mushroomBrown); + EquivalencyHandler.addObjectsToEquivalencyLists(Item.pumpkinSeeds, Item.melonSeeds); + EquivalencyHandler.addObjectsToEquivalencyLists(Block.pumpkin, Block.melon); + EquivalencyHandler.addObjectsToEquivalencyLists(new ItemStack(Item.paper, 3), new ItemStack(Item.reed, 3)); + EquivalencyHandler.addObjectsToEquivalencyLists(new ItemStack(Item.flint, 2), new ItemStack(Block.gravel, 2), new ItemStack(Block.sandStone, 2, 0), new ItemStack(Block.sandStone, 2, 1), new ItemStack(Block.sandStone, 2, 2)); + EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Block.planks, 4)); + EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Block.wood, 4)); + EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Block.sapling, 4)); + EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Block.leaves, 4)); + EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Block.tallGrass, 3)); + EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Block.cloth, 16)); + EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Block.stoneBrick, 4)); + EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Item.dyePowder, 16, 3, 4, 15)); + } + +} diff --git a/ee3_common/ee3/common/tile/TileCalcinator.java b/ee3_common/ee3/common/tile/TileCalcinator.java index 1b6d954f..87d26ac6 100644 --- a/ee3_common/ee3/common/tile/TileCalcinator.java +++ b/ee3_common/ee3/common/tile/TileCalcinator.java @@ -4,6 +4,7 @@ import ee3.common.block.ModBlocks; import net.minecraft.src.IInventory; import net.minecraft.src.ItemStack; import net.minecraft.src.NBTTagCompound; +import net.minecraft.src.NBTTagList; public class TileCalcinator extends TileEE implements IInventory { @@ -14,10 +15,35 @@ public class TileCalcinator extends TileEE implements IInventory { public void readFromNBT(NBTTagCompound nbtTagCompound) { super.readFromNBT(nbtTagCompound); + + // Read in the ItemStacks in the inventory from NBT + NBTTagList tagList = nbtTagCompound.getTagList("Items"); + this.calcinatorItemStacks = new ItemStack[this.getSizeInventory()]; + for (int i = 0; i < tagList.tagCount(); ++i) { + NBTTagCompound tagCompound = (NBTTagCompound)tagList.tagAt(i); + byte slot = tagCompound.getByte("Slot"); + if (slot >= 0 && slot < this.calcinatorItemStacks.length) { + this.calcinatorItemStacks[slot] = ItemStack.loadItemStackFromNBT(tagCompound); + } + } + } public void writeToNBT(NBTTagCompound nbtTagCompound) { super.writeToNBT(nbtTagCompound); + + // Write the ItemStacks in the inventory to NBT + NBTTagList tagList = new NBTTagList(); + for (int currentIndex = 0; currentIndex < this.calcinatorItemStacks.length; ++currentIndex) { + if (this.calcinatorItemStacks[currentIndex] != null) { + NBTTagCompound tagCompound = new NBTTagCompound(); + tagCompound.setByte("Slot", (byte)currentIndex); + this.calcinatorItemStacks[currentIndex].writeToNBT(tagCompound); + tagList.appendTag(tagCompound); + } + } + nbtTagCompound.setTag("Items", tagList); + } /** @@ -57,7 +83,6 @@ public class TileCalcinator extends TileEE implements IInventory { return 64; } - public void openChest() { } public void closeChest() { } From a985fc9bacdb1a15a3b6192e74acb38cc862cd05 Mon Sep 17 00:00:00 2001 From: pahimar Date: Thu, 4 Oct 2012 15:02:34 -0400 Subject: [PATCH 06/23] Fix up some Z conflicts, seam issues, and simplified the model code further --- .../ee3/client/render/ModelCalcinator.java | 88 +++++++++--------- resources/ee3/art/sprites/calcinator.png | Bin 6148 -> 3503 bytes resources/ee3/art/sprites/xcf/calcinator.xcf | Bin 0 -> 13376 bytes 3 files changed, 43 insertions(+), 45 deletions(-) create mode 100644 resources/ee3/art/sprites/xcf/calcinator.xcf diff --git a/ee3_client/ee3/client/render/ModelCalcinator.java b/ee3_client/ee3/client/render/ModelCalcinator.java index f2f2c599..c528b1cd 100644 --- a/ee3_client/ee3/client/render/ModelCalcinator.java +++ b/ee3_client/ee3/client/render/ModelCalcinator.java @@ -26,62 +26,64 @@ public class ModelCalcinator extends ModelBase { this.textureWidth = TEXTURE_WIDTH; this.legFrontLeft = new ModelRenderer(this, 0, 0); - this.legFrontLeft.addBox(-1F, -8F, -1F, 2, 8, 2); - this.legFrontLeft.setRotationPoint(2, 8, 2); - this.legFrontLeft.rotateAngleY = ((float) Math.PI / 4F); + this.legFrontLeft.addBox(-1F, -8F, -1F, 2, 8, 2, scale); + this.legFrontLeft.setRotationPoint(-9F, 4, 0); this.legFrontRight = new ModelRenderer(this, 0, 0); - this.legFrontRight.addBox(-1F, -8F, -1F, 2, 8, 2); - this.legFrontRight.setRotationPoint(2, 8, 14); - this.legFrontRight.rotateAngleY = ((float) Math.PI / 4F); + this.legFrontRight.addBox(-1F, -8F, -1F, 2, 8, 2, scale); + this.legFrontRight.setRotationPoint(9F, 4, 0); this.legBackLeft = new ModelRenderer(this, 0, 0); - this.legBackLeft.addBox(-1F, -8F, -1F, 2, 8, 2); - this.legBackLeft.setRotationPoint(14, 8, 2); - this.legBackLeft.rotateAngleY = ((float) Math.PI / 4F); + this.legBackLeft.addBox(-1F, -8F, -1F, 2, 8, 2, scale); + this.legBackLeft.setRotationPoint(0, 4, -9F); this.legBackRight = new ModelRenderer(this, 0, 0); - this.legBackRight.addBox(-1F, -8F, -1F, 2, 8, 2); - this.legBackRight.setRotationPoint(14, 8, 14); - this.legBackRight.rotateAngleY = ((float) Math.PI / 4F); + this.legBackRight.addBox(-1F, -8F, -1F, 2, 8, 2, scale); + this.legBackRight.setRotationPoint(0, 4, 9F); - this.armFrontLeft = new ModelRenderer(this, 8, 0); - this.armFrontLeft.addBox(-2F, -0.5F, -0.5F, 4, 1, 1); - this.armFrontLeft.setRotationPoint(4, 3, 4); - this.armFrontLeft.rotateAngleY = ((float) Math.PI * 3 / 4F); - this.armFrontRight = new ModelRenderer(this, 8, 0); - this.armFrontRight.addBox(-2F, -0.5F, -0.5F, 4, 1, 1); - this.armFrontRight.setRotationPoint(12, 3, 4); - this.armFrontRight.rotateAngleY = ((float) Math.PI / 4F); - this.armBackLeft = new ModelRenderer(this, 8, 0); - this.armBackLeft.addBox(-2F, -0.5F, -0.5F, 4, 1, 1); - this.armBackLeft.setRotationPoint(12, 3, 12); - this.armBackLeft.rotateAngleY = ((float) Math.PI * 7 / 4F); - this.armBackRight = new ModelRenderer(this, 8, 0); - this.armBackRight.addBox(-2F, -0.5F, -0.5F, 4, 1, 1); - this.armBackRight.setRotationPoint(4, 3, 12); - this.armBackRight.rotateAngleY = ((float) Math.PI * 5 / 4F); + this.armFrontLeft = new ModelRenderer(this, 0, 10); + this.armFrontLeft.addBox(-2F, -1F, -1F, 4, 2, 2, scale); + this.armFrontLeft.setRotationPoint(6, 0, 0); + this.armFrontRight = new ModelRenderer(this, 0, 10); + this.armFrontRight.addBox(-2F, -1F, -1F, 4, 2, 2, scale); + this.armFrontRight.setRotationPoint(-6, 0, 0); + this.armBackLeft = new ModelRenderer(this, 12, 10); + this.armBackLeft.addBox(-1F, -1F, -2.0F, 2, 2, 4, scale); + this.armBackLeft.setRotationPoint(0, 0, 6); + this.armBackRight = new ModelRenderer(this, 12, 10); + this.armBackRight.addBox(-1F, -1F, -2.0F, 2, 2, 4, scale); + this.armBackRight.setRotationPoint(0, 0, -6); - this.firePlate = new ModelRenderer(this, 0, 10); - this.firePlate.addBox(-4F, -0.5F, -4F, 8, 1, 8); - this.firePlate.setRotationPoint(8, 3, 8); + this.firePlate = new ModelRenderer(this, 8, 0); + this.firePlate.addBox(-4F, -1F, -4F, 8, 2, 8, scale); + this.firePlate.setRotationPoint(8, 4, 8); this.firePlate.rotateAngleY = ((float) Math.PI / 4F); + this.firePlate.addChild(this.legFrontLeft); + this.firePlate.addChild(this.legFrontRight); + this.firePlate.addChild(this.legBackLeft); + this.firePlate.addChild(this.legBackRight); + this.firePlate.addChild(this.armFrontLeft); + this.firePlate.addChild(this.armFrontRight); + this.firePlate.addChild(this.armBackLeft); + this.firePlate.addChild(this.armBackRight); + + this.bowlBottom = new ModelRenderer(this, 0, 19); - this.bowlBottom.addBox(-8F, -1F, -8F, 16, 1, 16); + this.bowlBottom.addBox(-8F, -1F, -8F, 16, 1, 16, scale); this.bowlBottom.setRotationPoint(8, 9, 8); this.bowlBack = new ModelRenderer(this, 0, 36); - this.bowlBack.addBox(-8F, -3.5F, -0.5F, 16, 7, 1); + this.bowlBack.addBox(-8F, -3.5F, -0.5F, 16, 7, 1, scale); this.bowlBack.setRotationPoint(8F, 12.5F, 0.5F); this.bowlFront = new ModelRenderer(this, 0, 36); - this.bowlFront.addBox(-8F, -3.5F, -0.5F, 16, 7, 1); + this.bowlFront.addBox(-8F, -3.5F, -0.5F, 16, 7, 1, scale); this.bowlFront.setRotationPoint(8, 12.5F, 15.5F); this.bowlLeft = new ModelRenderer(this, 0, 44); - this.bowlLeft.addBox(-0.5F, -3.5F, -7F, 1, 7, 14); + this.bowlLeft.addBox(-0.5F, -3.5F, -7F, 1, 7, 14, scale); this.bowlLeft.setRotationPoint(0.5F, 12.5F, 8); this.bowlRight = new ModelRenderer(this, 0, 44); - this.bowlRight.addBox(-0.5F, -3.5F, -7F, 1, 7, 14); + this.bowlRight.addBox(-0.5F, -3.5F, -7F, 1, 7, 14, scale); this.bowlRight.setRotationPoint(15.5F, 12.5F, 8); this.ashLayer = new ModelRenderer(this, 0, 65); - this.ashLayer.addBox(-7F, -0.5F, -7F, 14, 1, 14); + this.ashLayer.addBox(-7F, -0.5F, -7F, 14, 1, 14, scale); this.ashLayer.setRotationPoint(8, 9, 8); this.ashLayer.mirror = true; } @@ -93,15 +95,10 @@ public class ModelCalcinator extends ModelBase { GL11.glTranslated(x, y, z); ForgeHooksClient.bindTexture(Reference.SPRITE_SHEET_LOCATION + "calcinator.png", 0); - legFrontLeft.render(scale); - legFrontRight.render(scale); - legBackLeft.render(scale); - legBackRight.render(scale); - armFrontLeft.render(scale); - armFrontRight.render(scale); - armBackLeft.render(scale); - armBackRight.render(scale); + // TODO Make a fire pot instead of a plate firePlate.render(scale); + + // TODO Merge this together better bowlBottom.render(scale); bowlBack.render(scale); bowlFront.render(scale); @@ -110,6 +107,7 @@ public class ModelCalcinator extends ModelBase { ashLayer.render(scale); + GL11.glEnable(GL11.GL_LIGHTING); GL11.glPopMatrix(); } diff --git a/resources/ee3/art/sprites/calcinator.png b/resources/ee3/art/sprites/calcinator.png index 6b56782d147d192c3eb5c55fdb5ba2dd14dd7b7a..f63038fb090f872625fb2c0482f3d2db19051626 100644 GIT binary patch literal 3503 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 diff --git a/resources/ee3/art/sprites/xcf/calcinator.xcf b/resources/ee3/art/sprites/xcf/calcinator.xcf new file mode 100644 index 0000000000000000000000000000000000000000..44e10bade47a98b79491418598ee57f5af2f52c0 GIT binary patch literal 13376 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 literal 0 HcmV?d00001 From c211e0ab2e7f1e0733e37378cd4c24d59271d4e4 Mon Sep 17 00:00:00 2001 From: pahimar Date: Tue, 9 Oct 2012 15:03:19 -0400 Subject: [PATCH 07/23] The Calcinator now renders as a 3D object when dropped in world, held in hand, or in the players inventory. Thanks Soaryn for the help! --- ee3_client/ee3/client/core/ClientProxy.java | 4 + .../ee3/client/render/ModelCalcinator.java | 135 +++++++++++------- .../client/render/RenderItemCalcinator.java | 49 +++++++ 3 files changed, 134 insertions(+), 54 deletions(-) create mode 100644 ee3_client/ee3/client/render/RenderItemCalcinator.java diff --git a/ee3_client/ee3/client/core/ClientProxy.java b/ee3_client/ee3/client/core/ClientProxy.java index dc8b8125..78328020 100644 --- a/ee3_client/ee3/client/core/ClientProxy.java +++ b/ee3_client/ee3/client/core/ClientProxy.java @@ -12,9 +12,11 @@ import ee3.client.core.handlers.KeyBindingHandler; import ee3.client.core.handlers.SoundHandler; import ee3.client.lib.KeyBindings; import ee3.client.render.RenderCalcinator; +import ee3.client.render.RenderItemCalcinator; import ee3.client.render.TextureRedWaterFX; import ee3.client.render.TextureRedWaterFlowFX; import ee3.common.core.CommonProxy; +import ee3.common.lib.BlockIds; import ee3.common.lib.Reference; import ee3.common.lib.RenderIds; import ee3.common.tile.TileCalcinator; @@ -74,6 +76,8 @@ public class ClientProxy extends CommonProxy { FMLClientHandler.instance().getClient().renderEngine.registerTextureFX(new TextureRedWaterFX()); FMLClientHandler.instance().getClient().renderEngine.registerTextureFX(new TextureRedWaterFlowFX()); + + MinecraftForgeClient.registerItemRenderer(BlockIds.CALCINATOR, new RenderItemCalcinator()); } @Override diff --git a/ee3_client/ee3/client/render/ModelCalcinator.java b/ee3_client/ee3/client/render/ModelCalcinator.java index c528b1cd..0d3cec8f 100644 --- a/ee3_client/ee3/client/render/ModelCalcinator.java +++ b/ee3_client/ee3/client/render/ModelCalcinator.java @@ -13,11 +13,12 @@ public class ModelCalcinator extends ModelBase { private static final int TEXTURE_HEIGHT = 128; private static final int TEXTURE_WIDTH = 128; + private ModelRenderer firePotBottom, firePotLeft, firePotRight, firePotFront, firePotBack; private ModelRenderer legFrontLeft, legFrontRight, legBackLeft, legBackRight; private ModelRenderer armFrontLeft, armFrontRight, armBackLeft, armBackRight; - private ModelRenderer firePlate; private ModelRenderer bowlBottom, bowlLeft, bowlRight, bowlFront, bowlBack; - private ModelRenderer ashLayer; + private ModelRenderer firePotEmbers, bowlEmbers; + private float scale; public ModelCalcinator(float scale) { @@ -25,67 +26,94 @@ public class ModelCalcinator extends ModelBase { this.textureHeight = TEXTURE_HEIGHT; this.textureWidth = TEXTURE_WIDTH; + this.firePotLeft = new ModelRenderer(this, 0, 36); + this.firePotLeft.addBox(-0.5F, -1.5F, -4F, 1, 3, 8, scale); + this.firePotLeft.setRotationPoint(3.5F, 1F, 0F); + this.firePotRight = new ModelRenderer(this, 0, 36); + this.firePotRight.addBox(-0.5F, -1.5F, -4F, 1, 3, 8, scale); + this.firePotRight.setRotationPoint(-3.5F, 1F, 0F); + this.firePotBack = new ModelRenderer(this, 0, 36); + this.firePotBack.addBox(-3F, -1.5F, -0.5F, 6, 3, 1, scale); + this.firePotBack.setRotationPoint(0F, 1F, -3.5F); + this.firePotFront = new ModelRenderer(this, 0, 36); + this.firePotFront.addBox(-3F, -1.5F, -0.5F, 6, 3, 1, scale); + this.firePotFront.setRotationPoint(0F, 1F, 3.5F); + this.firePotBottom = new ModelRenderer(this, 0, 36); + this.firePotBottom.addBox(-3F, -0.5F, -3F, 6, 1, 6, scale); + this.firePotBottom.setRotationPoint(8, 2, 8); + + this.firePotBottom.addChild(this.firePotBack); + this.firePotBottom.addChild(this.firePotFront); + this.firePotBottom.addChild(this.firePotLeft); + this.firePotBottom.addChild(this.firePotRight); + this.legFrontLeft = new ModelRenderer(this, 0, 0); this.legFrontLeft.addBox(-1F, -8F, -1F, 2, 8, 2, scale); - this.legFrontLeft.setRotationPoint(-9F, 4, 0); + this.legFrontLeft.setRotationPoint(-9F, 6, 0); this.legFrontRight = new ModelRenderer(this, 0, 0); this.legFrontRight.addBox(-1F, -8F, -1F, 2, 8, 2, scale); - this.legFrontRight.setRotationPoint(9F, 4, 0); + this.legFrontRight.setRotationPoint(9F, 6, 0); this.legBackLeft = new ModelRenderer(this, 0, 0); this.legBackLeft.addBox(-1F, -8F, -1F, 2, 8, 2, scale); - this.legBackLeft.setRotationPoint(0, 4, -9F); + this.legBackLeft.setRotationPoint(0, 6, -9F); this.legBackRight = new ModelRenderer(this, 0, 0); this.legBackRight.addBox(-1F, -8F, -1F, 2, 8, 2, scale); - this.legBackRight.setRotationPoint(0, 4, 9F); + this.legBackRight.setRotationPoint(0, 6, 9F); this.armFrontLeft = new ModelRenderer(this, 0, 10); - this.armFrontLeft.addBox(-2F, -1F, -1F, 4, 2, 2, scale); - this.armFrontLeft.setRotationPoint(6, 0, 0); + this.armFrontLeft.addBox(-2F, -0.5F, -1F, 4, 1, 2, scale); + this.armFrontLeft.setRotationPoint(6, 1, 0); this.armFrontRight = new ModelRenderer(this, 0, 10); - this.armFrontRight.addBox(-2F, -1F, -1F, 4, 2, 2, scale); - this.armFrontRight.setRotationPoint(-6, 0, 0); + this.armFrontRight.addBox(-2F, -0.5F, -1F, 4, 1, 2, scale); + this.armFrontRight.setRotationPoint(-6, 1, 0); this.armBackLeft = new ModelRenderer(this, 12, 10); - this.armBackLeft.addBox(-1F, -1F, -2.0F, 2, 2, 4, scale); - this.armBackLeft.setRotationPoint(0, 0, 6); + this.armBackLeft.addBox(-1F, -0.5F, -2.0F, 2, 1, 4, scale); + this.armBackLeft.setRotationPoint(0, 1, 6); this.armBackRight = new ModelRenderer(this, 12, 10); - this.armBackRight.addBox(-1F, -1F, -2.0F, 2, 2, 4, scale); - this.armBackRight.setRotationPoint(0, 0, -6); + this.armBackRight.addBox(-1F, -0.5F, -2.0F, 2, 1, 4, scale); + this.armBackRight.setRotationPoint(0, 1, -6); - this.firePlate = new ModelRenderer(this, 8, 0); - this.firePlate.addBox(-4F, -1F, -4F, 8, 2, 8, scale); - this.firePlate.setRotationPoint(8, 4, 8); - this.firePlate.rotateAngleY = ((float) Math.PI / 4F); - - this.firePlate.addChild(this.legFrontLeft); - this.firePlate.addChild(this.legFrontRight); - this.firePlate.addChild(this.legBackLeft); - this.firePlate.addChild(this.legBackRight); - this.firePlate.addChild(this.armFrontLeft); - this.firePlate.addChild(this.armFrontRight); - this.firePlate.addChild(this.armBackLeft); - this.firePlate.addChild(this.armBackRight); + this.firePotBottom.addChild(this.legFrontLeft); + this.firePotBottom.addChild(this.legFrontRight); + this.firePotBottom.addChild(this.legBackLeft); + this.firePotBottom.addChild(this.legBackRight); + this.firePotBottom.addChild(this.armFrontLeft); + this.firePotBottom.addChild(this.armFrontRight); + this.firePotBottom.addChild(this.armBackLeft); + this.firePotBottom.addChild(this.armBackRight); + this.firePotBottom.rotateAngleY = (float)(Math.PI / 4F); + this.bowlBack = new ModelRenderer(this, 0, 36); + this.bowlBack.addBox(-8F, -3.5F, -0.5F, 16, 7, 1, scale); + this.bowlBack.setRotationPoint(0F, 3.6F, 7.5F); + this.bowlFront = new ModelRenderer(this, 0, 36); + this.bowlFront.addBox(-8F, -3.5F, -0.5F, 16, 7, 1, scale); + this.bowlFront.setRotationPoint(0, 3.6F, -7.5F); + this.bowlLeft = new ModelRenderer(this, 0, 44); + this.bowlLeft.addBox(-0.5F, -3.5F, -7F, 1, 7, 14, scale); + this.bowlLeft.setRotationPoint(7.5F, 3.6F, 0); + this.bowlRight = new ModelRenderer(this, 0, 44); + this.bowlRight.addBox(-0.5F, -3.5F, -7F, 1, 7, 14, scale); + this.bowlRight.setRotationPoint(-7.5F, 3.6F, 0); this.bowlBottom = new ModelRenderer(this, 0, 19); this.bowlBottom.addBox(-8F, -1F, -8F, 16, 1, 16, scale); this.bowlBottom.setRotationPoint(8, 9, 8); - this.bowlBack = new ModelRenderer(this, 0, 36); - this.bowlBack.addBox(-8F, -3.5F, -0.5F, 16, 7, 1, scale); - this.bowlBack.setRotationPoint(8F, 12.5F, 0.5F); - this.bowlFront = new ModelRenderer(this, 0, 36); - this.bowlFront.addBox(-8F, -3.5F, -0.5F, 16, 7, 1, scale); - this.bowlFront.setRotationPoint(8, 12.5F, 15.5F); - this.bowlLeft = new ModelRenderer(this, 0, 44); - this.bowlLeft.addBox(-0.5F, -3.5F, -7F, 1, 7, 14, scale); - this.bowlLeft.setRotationPoint(0.5F, 12.5F, 8); - this.bowlRight = new ModelRenderer(this, 0, 44); - this.bowlRight.addBox(-0.5F, -3.5F, -7F, 1, 7, 14, scale); - this.bowlRight.setRotationPoint(15.5F, 12.5F, 8); + this.bowlBottom.addChild(this.bowlBack); + this.bowlBottom.addChild(this.bowlFront); + this.bowlBottom.addChild(this.bowlLeft); + this.bowlBottom.addChild(this.bowlRight); + + this.bowlEmbers = new ModelRenderer(this, 0, 65); + this.bowlEmbers.addBox(-7F, -0.5F, -7F, 14, 1, 14, scale); + this.bowlEmbers.setRotationPoint(8, 9, 8); + this.bowlEmbers.mirror = true; + + this.firePotEmbers = new ModelRenderer(this, 0, 65); + this.firePotEmbers.addBox(-3F, -0.5F, -3F, 6, 1, 6, scale); + this.firePotEmbers.setRotationPoint(8, 3, 8); + this.firePotEmbers.rotateAngleY = (float)(Math.PI / 4F); - this.ashLayer = new ModelRenderer(this, 0, 65); - this.ashLayer.addBox(-7F, -0.5F, -7F, 14, 1, 14, scale); - this.ashLayer.setRotationPoint(8, 9, 8); - this.ashLayer.mirror = true; } public void render(TileCalcinator calcinator, double x, double y, double z) { @@ -95,21 +123,20 @@ public class ModelCalcinator extends ModelBase { GL11.glTranslated(x, y, z); ForgeHooksClient.bindTexture(Reference.SPRITE_SHEET_LOCATION + "calcinator.png", 0); - // TODO Make a fire pot instead of a plate - firePlate.render(scale); - - // TODO Merge this together better + firePotBottom.render(scale); bowlBottom.render(scale); - bowlBack.render(scale); - bowlFront.render(scale); - bowlLeft.render(scale); - bowlRight.render(scale); - - ashLayer.render(scale); - + firePotEmbers.render(scale); + bowlEmbers.render(scale); GL11.glEnable(GL11.GL_LIGHTING); GL11.glPopMatrix(); } + public void render(float scale) { + firePotBottom.render(scale); + bowlBottom.render(scale); + firePotEmbers.render(scale); + bowlEmbers.render(scale); + } + } diff --git a/ee3_client/ee3/client/render/RenderItemCalcinator.java b/ee3_client/ee3/client/render/RenderItemCalcinator.java new file mode 100644 index 00000000..72062a06 --- /dev/null +++ b/ee3_client/ee3/client/render/RenderItemCalcinator.java @@ -0,0 +1,49 @@ +package ee3.client.render; + +import org.lwjgl.opengl.GL11; + +import ee3.common.lib.Reference; +import net.minecraft.src.ItemStack; +import net.minecraft.src.Tessellator; +import net.minecraftforge.client.ForgeHooksClient; +import net.minecraftforge.client.IItemRenderer; + +public class RenderItemCalcinator implements IItemRenderer { + + private ModelCalcinator calcinatorModel; + + public RenderItemCalcinator() { + calcinatorModel = new ModelCalcinator(1/16F); + } + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + return true; + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + return true; + } + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + switch (type) { + case ENTITY: renderCalcinator(-0.5F, 0.5F, -0.5F); break; + case EQUIPPED: renderCalcinator(0F, 0.4F, 0F); break; + case INVENTORY: renderCalcinator(1F, 0.65F, 1F); break; + default: break; + } + + } + + private void renderCalcinator(float x, float y, float z) { + Tessellator tesselator = Tessellator.instance; + ForgeHooksClient.bindTexture(Reference.SPRITE_SHEET_LOCATION + "calcinator.png", 0); + GL11.glPushMatrix(); //start + GL11.glTranslatef(x, y, z); //size + calcinatorModel.render(0.0625F); + GL11.glPopMatrix(); //end + } + +} From 9d69168a5e8763273135b060b7511063d8d5ff36 Mon Sep 17 00:00:00 2001 From: pahimar Date: Tue, 9 Oct 2012 15:14:02 -0400 Subject: [PATCH 08/23] Add a value for the @Instance annotation, thanks iChun for pointing out my failures in life :-p --- ee3_common/ee3/common/EquivalentExchange3.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ee3_common/ee3/common/EquivalentExchange3.java b/ee3_common/ee3/common/EquivalentExchange3.java index 20666df8..a8acde7a 100644 --- a/ee3_common/ee3/common/EquivalentExchange3.java +++ b/ee3_common/ee3/common/EquivalentExchange3.java @@ -45,7 +45,7 @@ import ee3.common.recipe.RecipesTransmutationStone; @NetworkMod(channels = { Reference.CHANNEL_NAME }, clientSideRequired = true, serverSideRequired = false, packetHandler = PacketHandler.class) public class EquivalentExchange3 { - @Instance + @Instance(Reference.MOD_ID) public static EquivalentExchange3 instance; @SidedProxy(clientSide = "ee3.client.core.ClientProxy", serverSide = "ee3.common.core.CommonProxy") From 4f188ca935cf1058690c4ac4a1009f9a723df1ca Mon Sep 17 00:00:00 2001 From: pahimar Date: Thu, 11 Oct 2012 13:23:21 -0400 Subject: [PATCH 09/23] Config options to enable/disable the version check, updated lang (en_US) with final version check text, reports in the log where it is checking the version number --- .../ee3/common/EquivalentExchange3.java | 7 ++- .../core/handlers/ConfigurationHandler.java | 3 ++ .../handlers/VersionCheckTickHandler.java | 15 +++--- .../ee3/common/core/helper/VersionHelper.java | 46 ++++++++++++------- .../ee3/common/lib/ConfigurationSettings.java | 4 ++ ee3_common/ee3/common/lib/Reference.java | 4 ++ resources/ee3/lang/en_US.xml | 10 ++-- 7 files changed, 61 insertions(+), 28 deletions(-) diff --git a/ee3_common/ee3/common/EquivalentExchange3.java b/ee3_common/ee3/common/EquivalentExchange3.java index a8acde7a..65bdd4d3 100644 --- a/ee3_common/ee3/common/EquivalentExchange3.java +++ b/ee3_common/ee3/common/EquivalentExchange3.java @@ -29,6 +29,7 @@ import ee3.common.core.handlers.PlayerDestroyItemHandler; import ee3.common.core.handlers.VersionCheckTickHandler; import ee3.common.core.helper.VersionHelper; import ee3.common.item.ModItems; +import ee3.common.lib.ConfigurationSettings; import ee3.common.lib.Reference; import ee3.common.recipe.RecipesTransmutationStone; @@ -61,8 +62,10 @@ public class EquivalentExchange3 { ConfigurationHandler.init(event.getSuggestedConfigurationFile()); // Conduct the version check and log the result - VersionHelper.checkVersion(); - VersionHelper.logResult(); + if (ConfigurationSettings.ENABLE_VERSION_CHECK) { + VersionHelper.checkVersion(); + } + VersionHelper.logResult(); // Initialize the Version Check Tick Handler (Client only) TickRegistry.registerTickHandler(new VersionCheckTickHandler(), Side.CLIENT); diff --git a/ee3_common/ee3/common/core/handlers/ConfigurationHandler.java b/ee3_common/ee3/common/core/handlers/ConfigurationHandler.java index 97fb8e45..b226ac97 100644 --- a/ee3_common/ee3/common/core/handlers/ConfigurationHandler.java +++ b/ee3_common/ee3/common/core/handlers/ConfigurationHandler.java @@ -33,6 +33,9 @@ public class ConfigurationHandler { configuration.load(); /* General Configs */ + ConfigurationSettings.ENABLE_VERSION_CHECK = configuration + .get(CATEGORY_GENERAL, Reference.ENABLE_VERSION_CHECK, ConfigurationSettings.ENABLE_VERSION_CHECK_DEFAULT) + .getBoolean(ConfigurationSettings.ENABLE_VERSION_CHECK_DEFAULT); ConfigurationSettings.ENABLE_SOUNDS = configuration .get(CATEGORY_GENERAL, Reference.ENABLE_SOUNDS, ConfigurationSettings.ENABLE_SOUNDS_DEFAULT) .getBoolean(ConfigurationSettings.ENABLE_SOUNDS_DEFAULT); diff --git a/ee3_common/ee3/common/core/handlers/VersionCheckTickHandler.java b/ee3_common/ee3/common/core/handlers/VersionCheckTickHandler.java index 1a800ac2..e4e451a7 100644 --- a/ee3_common/ee3/common/core/handlers/VersionCheckTickHandler.java +++ b/ee3_common/ee3/common/core/handlers/VersionCheckTickHandler.java @@ -6,6 +6,7 @@ import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.common.ITickHandler; import cpw.mods.fml.common.TickType; import ee3.common.core.helper.VersionHelper; +import ee3.common.lib.ConfigurationSettings; import ee3.common.lib.Reference; public class VersionCheckTickHandler implements ITickHandler { @@ -17,12 +18,14 @@ public class VersionCheckTickHandler implements ITickHandler { @Override public void tickEnd(EnumSet type, Object... tickData) { - if (!initialized) { - for (TickType tickType : type) { - if (tickType == TickType.CLIENT) { - if (FMLClientHandler.instance().getClient().currentScreen == null) { - initialized = true; - FMLClientHandler.instance().getClient().ingameGUI.getChatGUI().printChatMessage(VersionHelper.getResultMessage()); + if (ConfigurationSettings.ENABLE_VERSION_CHECK) { + if (!initialized) { + for (TickType tickType : type) { + if (tickType == TickType.CLIENT) { + if (FMLClientHandler.instance().getClient().currentScreen == null) { + initialized = true; + FMLClientHandler.instance().getClient().ingameGUI.getChatGUI().printChatMessage(Reference.VERSION_CHECK_COLOUR_PREFIX + VersionHelper.getResultMessage()); + } } } } diff --git a/ee3_common/ee3/common/core/helper/VersionHelper.java b/ee3_common/ee3/common/core/helper/VersionHelper.java index b12dd08b..800f1d69 100644 --- a/ee3_common/ee3/common/core/helper/VersionHelper.java +++ b/ee3_common/ee3/common/core/helper/VersionHelper.java @@ -8,6 +8,7 @@ import java.util.logging.Level; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.registry.LanguageRegistry; +import ee3.common.lib.ConfigurationSettings; import ee3.common.lib.Reference; /** @@ -32,12 +33,14 @@ public class VersionHelper { public static final byte CONNECTION_ERROR = 3; // Localization keys + private static final String VERSION_CHECK_DISABLED = "version.check_disabled"; + private static final String VERSION_CHECK_INIT_LOG_MESSAGE = "version.init_log_message"; private static final String UNINITIALIZED_MESSAGE = "version.uninitialized"; private static final String CURRENT_MESSAGE = "version.current"; private static final String OUTDATED_MESSAGE = "version.outdated"; private static final String CONNECTION_ERROR_MESSAGE = "version.connection_error"; - // Var to hold the result of the remote version check + // Var to hold the result of the remote version check, initially set to uninitialized public static byte result = UNINITIALIZED; /*** @@ -88,29 +91,40 @@ public class VersionHelper { } public static void logResult() { - if ((result == CURRENT) || (result == OUTDATED)) { - LogHelper.log(Level.FINE, getResultMessage()); + if (ConfigurationSettings.ENABLE_VERSION_CHECK) { + LogHelper.log(Level.FINE, LanguageRegistry.instance().getStringLocalization(VERSION_CHECK_INIT_LOG_MESSAGE) + " " + REMOTE_VERSION_FILE); + if ((result == CURRENT) || (result == OUTDATED)) { + LogHelper.log(Level.FINE, getResultMessage()); + } + else { + LogHelper.log(Level.WARNING, getResultMessage()); + } } else { - LogHelper.log(Level.WARNING, getResultMessage()); + LogHelper.log(Level.FINE, getResultMessage()); } } public static String getResultMessage() { - if (result == UNINITIALIZED) { - return LanguageRegistry.instance().getStringLocalization(UNINITIALIZED_MESSAGE); - } - else if (result == CURRENT) { - return LanguageRegistry.instance().getStringLocalization(CURRENT_MESSAGE); - } - else if (result == OUTDATED) { - return LanguageRegistry.instance().getStringLocalization(OUTDATED_MESSAGE); - } - else if (result == CONNECTION_ERROR) { - return LanguageRegistry.instance().getStringLocalization(CONNECTION_ERROR_MESSAGE); + if (ConfigurationSettings.ENABLE_VERSION_CHECK) { + if (result == UNINITIALIZED) { + return LanguageRegistry.instance().getStringLocalization(UNINITIALIZED_MESSAGE); + } + else if (result == CURRENT) { + return LanguageRegistry.instance().getStringLocalization(CURRENT_MESSAGE); + } + else if (result == OUTDATED) { + return LanguageRegistry.instance().getStringLocalization(OUTDATED_MESSAGE); + } + else if (result == CONNECTION_ERROR) { + return LanguageRegistry.instance().getStringLocalization(CONNECTION_ERROR_MESSAGE); + } + else { + return null; + } } else { - return null; + return LanguageRegistry.instance().getStringLocalization(VERSION_CHECK_DISABLED); } } diff --git a/ee3_common/ee3/common/lib/ConfigurationSettings.java b/ee3_common/ee3/common/lib/ConfigurationSettings.java index cdd5c3d5..7efa81bf 100644 --- a/ee3_common/ee3/common/lib/ConfigurationSettings.java +++ b/ee3_common/ee3/common/lib/ConfigurationSettings.java @@ -19,6 +19,10 @@ public class ConfigurationSettings { public static boolean ENABLE_PARTICLE_FX; public static final boolean ENABLE_PARTICLE_FX_DEFAULT = true; + // Whether or not EE3 will do a version check when loaded + public static boolean ENABLE_VERSION_CHECK; + public static final boolean ENABLE_VERSION_CHECK_DEFAULT = true; + /* * Minium stone config settings */ diff --git a/ee3_common/ee3/common/lib/Reference.java b/ee3_common/ee3/common/lib/Reference.java index 97b0d33a..aabb7d0e 100644 --- a/ee3_common/ee3/common/lib/Reference.java +++ b/ee3_common/ee3/common/lib/Reference.java @@ -24,10 +24,14 @@ public class Reference { public static final int SHIFTED_ID_RANGE_CORRECTION = 256; /* Configuration related constants */ + public static final String ENABLE_VERSION_CHECK = "enable_version_check"; public static final String ENABLE_SOUNDS = "enable_sounds"; public static final String ENABLE_PARTICLE_FX = "enable_particle_fx"; public static final String AUTO_RESOLVE_BLOCK_IDS = "auto_resolve_block_ids"; + /* Text colour related constants */ + public static final String VERSION_CHECK_COLOUR_PREFIX = "\u00a7e"; + /* KeyBinding related constants */ // TODO: Localize keybinding names public static final String KEYBINDING_EXTRA = "mod.ee3.extra_key"; diff --git a/resources/ee3/lang/en_US.xml b/resources/ee3/lang/en_US.xml index eb3ac0b2..08c624fc 100644 --- a/resources/ee3/lang/en_US.xml +++ b/resources/ee3/lang/en_US.xml @@ -8,8 +8,10 @@ Red Water (Still) Red Water (Flowing) Calcinator - Uninitialized - Current - Outdated - Connection Error + Initializing version check for Equivalent Exchange against the remote version authority file, located at + The version check for Equivalent Exchange did not complete successfully (version check did not initialize properly) + You are currently using the most up to date version of Equivalent Exchange for your version of Minecraft (yay!) + You are currently using an out of date version of Equivalent Exchange; consider updating here - http://goo.gl/sNcGl + Error connecting to the remote Equivalent Exchange version authority file (check your Internet connection?) + Remote version check for Equivalent Exchange disabled From 792543eaacf159d639c32368eb94947194226cad Mon Sep 17 00:00:00 2001 From: pahimar Date: Thu, 11 Oct 2012 13:33:50 -0400 Subject: [PATCH 10/23] Localized the name of the Calcinator in its Gui --- ee3_client/ee3/client/gui/GuiCalcinator.java | 3 ++- ee3_common/ee3/common/lib/Reference.java | 5 ++++- resources/ee3/lang/en_US.xml | 1 + 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ee3_client/ee3/client/gui/GuiCalcinator.java b/ee3_client/ee3/client/gui/GuiCalcinator.java index ea29c181..7b2944f4 100644 --- a/ee3_client/ee3/client/gui/GuiCalcinator.java +++ b/ee3_client/ee3/client/gui/GuiCalcinator.java @@ -4,6 +4,7 @@ import org.lwjgl.opengl.GL11; import cpw.mods.fml.common.Side; import cpw.mods.fml.common.asm.SideOnly; +import cpw.mods.fml.common.registry.LanguageRegistry; import ee3.common.container.ContainerCalcinator; import ee3.common.lib.Reference; import ee3.common.tile.TileCalcinator; @@ -26,7 +27,7 @@ public class GuiCalcinator extends GuiContainer { protected void drawGuiContainerForegroundLayer() { - this.fontRenderer.drawString("Calcinator", 60, 6, 4210752); + this.fontRenderer.drawString(LanguageRegistry.instance().getStringLocalization(Reference.GUI_CALCINATOR_NAME), 60, 6, 4210752); this.fontRenderer.drawString(StatCollector.translateToLocal("container.inventory"), 8, this.ySize - 96 + 2, 4210752); } diff --git a/ee3_common/ee3/common/lib/Reference.java b/ee3_common/ee3/common/lib/Reference.java index aabb7d0e..83dee6b6 100644 --- a/ee3_common/ee3/common/lib/Reference.java +++ b/ee3_common/ee3/common/lib/Reference.java @@ -49,7 +49,10 @@ public class Reference { public static final String GUI_SHEET_LOCATION = "/ee3/art/gui/"; public static final String ITEM_SPRITE_SHEET = "ee3_items.png"; public static final String BLOCK_SPRITE_SHEET = "ee3_blocks.png"; - + + /* Gui related constants */ + public static final String GUI_CALCINATOR_NAME = "gui.calcinator.name"; + /* General Tile Entity related constants */ public static final String TE_GEN_OWNER_NBT_TAG_LABEL = "owner"; public static final String TE_GEN_STATE_NBT_TAG_LABEL = "state"; diff --git a/resources/ee3/lang/en_US.xml b/resources/ee3/lang/en_US.xml index 08c624fc..0d4b46ee 100644 --- a/resources/ee3/lang/en_US.xml +++ b/resources/ee3/lang/en_US.xml @@ -8,6 +8,7 @@ Red Water (Still) Red Water (Flowing) Calcinator + Calcinator Initializing version check for Equivalent Exchange against the remote version authority file, located at The version check for Equivalent Exchange did not complete successfully (version check did not initialize properly) You are currently using the most up to date version of Equivalent Exchange for your version of Minecraft (yay!) From 4053cdf2d3ced55accbf198c4c2eb54b410ed9c5 Mon Sep 17 00:00:00 2001 From: pahimar Date: Thu, 11 Oct 2012 16:05:02 -0400 Subject: [PATCH 11/23] Proper EE3 logger, the start of it at least --- ee3_common/ee3/common/EquivalentExchange3.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ee3_common/ee3/common/EquivalentExchange3.java b/ee3_common/ee3/common/EquivalentExchange3.java index 65bdd4d3..95965894 100644 --- a/ee3_common/ee3/common/EquivalentExchange3.java +++ b/ee3_common/ee3/common/EquivalentExchange3.java @@ -1,5 +1,7 @@ package ee3.common; +import java.util.logging.Logger; + import net.minecraftforge.common.MinecraftForge; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Mod; @@ -51,6 +53,9 @@ public class EquivalentExchange3 { @SidedProxy(clientSide = "ee3.client.core.ClientProxy", serverSide = "ee3.common.core.CommonProxy") public static CommonProxy proxy; + + // TODO Come back to this later + public static Logger eeLogger = Logger.getLogger(Reference.MOD_NAME); @PreInit public void preInit(FMLPreInitializationEvent event) { From 156eaa9d17dfe4f052f01afed344012a19c76e09 Mon Sep 17 00:00:00 2001 From: pahimar Date: Thu, 11 Oct 2012 21:17:40 -0400 Subject: [PATCH 12/23] After catching that ExtraBiomes and BuildCraft had their own Logger (and how they did it), I went about doing it for EE3 :) --- ee3_common/ee3/common/EquivalentExchange3.java | 11 +++++------ .../core/handlers/VersionCheckTickHandler.java | 2 +- ee3_common/ee3/common/core/helper/LogHelper.java | 13 +++++++++++-- .../ee3/common/core/helper/VersionHelper.java | 6 +++--- ee3_common/ee3/common/lib/Reference.java | 2 ++ resources/ee3/lang/en_US.xml | 12 ++++++------ 6 files changed, 28 insertions(+), 18 deletions(-) diff --git a/ee3_common/ee3/common/EquivalentExchange3.java b/ee3_common/ee3/common/EquivalentExchange3.java index 95965894..8e3c4832 100644 --- a/ee3_common/ee3/common/EquivalentExchange3.java +++ b/ee3_common/ee3/common/EquivalentExchange3.java @@ -1,7 +1,5 @@ package ee3.common; -import java.util.logging.Logger; - import net.minecraftforge.common.MinecraftForge; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Mod; @@ -29,6 +27,7 @@ import ee3.common.core.handlers.LocalizationHandler; import ee3.common.core.handlers.PacketHandler; import ee3.common.core.handlers.PlayerDestroyItemHandler; import ee3.common.core.handlers.VersionCheckTickHandler; +import ee3.common.core.helper.LogHelper; import ee3.common.core.helper.VersionHelper; import ee3.common.item.ModItems; import ee3.common.lib.ConfigurationSettings; @@ -51,15 +50,15 @@ public class EquivalentExchange3 { @Instance(Reference.MOD_ID) public static EquivalentExchange3 instance; - @SidedProxy(clientSide = "ee3.client.core.ClientProxy", serverSide = "ee3.common.core.CommonProxy") + @SidedProxy(clientSide = Reference.CLIENT_PROXY_CLASS, serverSide = Reference.SERVER_PROXY_CLASS) public static CommonProxy proxy; - - // TODO Come back to this later - public static Logger eeLogger = Logger.getLogger(Reference.MOD_NAME); @PreInit public void preInit(FMLPreInitializationEvent event) { + // Initialize the log helper + LogHelper.init(); + // Load the localization files into the LanguageRegistry LocalizationHandler.loadLanguages(); diff --git a/ee3_common/ee3/common/core/handlers/VersionCheckTickHandler.java b/ee3_common/ee3/common/core/handlers/VersionCheckTickHandler.java index e4e451a7..e5a62299 100644 --- a/ee3_common/ee3/common/core/handlers/VersionCheckTickHandler.java +++ b/ee3_common/ee3/common/core/handlers/VersionCheckTickHandler.java @@ -24,7 +24,7 @@ public class VersionCheckTickHandler implements ITickHandler { if (tickType == TickType.CLIENT) { if (FMLClientHandler.instance().getClient().currentScreen == null) { initialized = true; - FMLClientHandler.instance().getClient().ingameGUI.getChatGUI().printChatMessage(Reference.VERSION_CHECK_COLOUR_PREFIX + VersionHelper.getResultMessage()); + FMLClientHandler.instance().getClient().ingameGUI.getChatGUI().printChatMessage(Reference.VERSION_CHECK_COLOUR_PREFIX + "[" + Reference.MOD_NAME + "] " + VersionHelper.getResultMessage()); } } } diff --git a/ee3_common/ee3/common/core/helper/LogHelper.java b/ee3_common/ee3/common/core/helper/LogHelper.java index 2aa2b54b..871eb4d0 100644 --- a/ee3_common/ee3/common/core/helper/LogHelper.java +++ b/ee3_common/ee3/common/core/helper/LogHelper.java @@ -1,15 +1,24 @@ package ee3.common.core.helper; import java.util.logging.Level; +import java.util.logging.Logger; import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.FMLLog; +import ee3.common.EquivalentExchange3; import ee3.common.lib.Reference; public class LogHelper { + private static Logger eeLogger = Logger.getLogger(Reference.MOD_NAME); + + public static void init() { + eeLogger.setParent(FMLLog.getLogger()); + } + public static void log(Level logLevel, String message) { - System.out.println(Reference.LOGGER_PREFIX + message); - FMLCommonHandler.instance().getFMLLogger().log(logLevel, Reference.LOGGER_PREFIX + message); + //System.out.println(Reference.LOGGER_PREFIX + message); + eeLogger.log(logLevel, message); } } diff --git a/ee3_common/ee3/common/core/helper/VersionHelper.java b/ee3_common/ee3/common/core/helper/VersionHelper.java index 800f1d69..48d39417 100644 --- a/ee3_common/ee3/common/core/helper/VersionHelper.java +++ b/ee3_common/ee3/common/core/helper/VersionHelper.java @@ -92,16 +92,16 @@ public class VersionHelper { public static void logResult() { if (ConfigurationSettings.ENABLE_VERSION_CHECK) { - LogHelper.log(Level.FINE, LanguageRegistry.instance().getStringLocalization(VERSION_CHECK_INIT_LOG_MESSAGE) + " " + REMOTE_VERSION_FILE); + LogHelper.log(Level.INFO, LanguageRegistry.instance().getStringLocalization(VERSION_CHECK_INIT_LOG_MESSAGE) + " " + REMOTE_VERSION_FILE); if ((result == CURRENT) || (result == OUTDATED)) { - LogHelper.log(Level.FINE, getResultMessage()); + LogHelper.log(Level.INFO, getResultMessage()); } else { LogHelper.log(Level.WARNING, getResultMessage()); } } else { - LogHelper.log(Level.FINE, getResultMessage()); + LogHelper.log(Level.INFO, getResultMessage()); } } diff --git a/ee3_common/ee3/common/lib/Reference.java b/ee3_common/ee3/common/lib/Reference.java index 83dee6b6..dc8fc92c 100644 --- a/ee3_common/ee3/common/lib/Reference.java +++ b/ee3_common/ee3/common/lib/Reference.java @@ -22,6 +22,8 @@ public class Reference { public static final String LOGGER_PREFIX = "[" + MOD_ID + "] "; public static final int SECOND_IN_TICKS = 20; public static final int SHIFTED_ID_RANGE_CORRECTION = 256; + public static final String SERVER_PROXY_CLASS = "ee3.common.core.CommonProxy"; + public static final String CLIENT_PROXY_CLASS = "ee3.client.core.ClientProxy"; /* Configuration related constants */ public static final String ENABLE_VERSION_CHECK = "enable_version_check"; diff --git a/resources/ee3/lang/en_US.xml b/resources/ee3/lang/en_US.xml index 0d4b46ee..2f289108 100644 --- a/resources/ee3/lang/en_US.xml +++ b/resources/ee3/lang/en_US.xml @@ -9,10 +9,10 @@ Red Water (Flowing) Calcinator Calcinator - Initializing version check for Equivalent Exchange against the remote version authority file, located at - The version check for Equivalent Exchange did not complete successfully (version check did not initialize properly) - You are currently using the most up to date version of Equivalent Exchange for your version of Minecraft (yay!) - You are currently using an out of date version of Equivalent Exchange; consider updating here - http://goo.gl/sNcGl - Error connecting to the remote Equivalent Exchange version authority file (check your Internet connection?) - Remote version check for Equivalent Exchange disabled + Initializing version check against the remote version authority file, located at + The version check did not complete successfully (version check did not initialize properly) + You are currently using the most up to date version for your version of Minecraft + You are currently using an out of date version; consider updating here - http://goo.gl/sNcGl + Error connecting to the remote version authority file (check your Internet connection?) + Remote version check disabled, skipping From 51bd858f8b0fc84950017709ff4f2e9e1df25b75 Mon Sep 17 00:00:00 2001 From: pahimar Date: Thu, 11 Oct 2012 21:47:35 -0400 Subject: [PATCH 13/23] First fledging steps into in world transmutation again (more tomorrow), and localized the key bindings --- ee3_client/ee3/client/core/ClientProxy.java | 7 ++++--- .../client/core/handlers/KeyBindingHandler.java | 10 +++++++--- .../helper/KeyBindingHelper.java} | 4 ++-- .../common/core/handlers/EquivalencyHandler.java | 9 ++++++--- .../common/core/helper/TransmutationHelper.java | 5 ++--- ee3_common/ee3/common/item/ItemMiniumStone.java | 15 +++++++++++++++ ee3_common/ee3/common/lib/Reference.java | 8 ++++---- resources/ee3/lang/en_US.xml | 4 ++++ 8 files changed, 44 insertions(+), 18 deletions(-) rename ee3_client/ee3/client/{lib/KeyBindings.java => core/helper/KeyBindingHelper.java} (95%) diff --git a/ee3_client/ee3/client/core/ClientProxy.java b/ee3_client/ee3/client/core/ClientProxy.java index 78328020..9bd196ff 100644 --- a/ee3_client/ee3/client/core/ClientProxy.java +++ b/ee3_client/ee3/client/core/ClientProxy.java @@ -8,9 +8,10 @@ import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.client.registry.KeyBindingRegistry; import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.common.registry.LanguageRegistry; import ee3.client.core.handlers.KeyBindingHandler; import ee3.client.core.handlers.SoundHandler; -import ee3.client.lib.KeyBindings; +import ee3.client.core.helper.KeyBindingHelper; import ee3.client.render.RenderCalcinator; import ee3.client.render.RenderItemCalcinator; import ee3.client.render.TextureRedWaterFX; @@ -40,8 +41,8 @@ public class ClientProxy extends CommonProxy { @Override public void setKeyBinding(String name, int value) { - KeyBindings.addKeyBinding(name, value); - KeyBindings.addIsRepeating(false); + KeyBindingHelper.addKeyBinding(LanguageRegistry.instance().getStringLocalization(name), value); + KeyBindingHelper.addIsRepeating(false); } @Override diff --git a/ee3_client/ee3/client/core/handlers/KeyBindingHandler.java b/ee3_client/ee3/client/core/handlers/KeyBindingHandler.java index 2f60abdc..24b1427e 100644 --- a/ee3_client/ee3/client/core/handlers/KeyBindingHandler.java +++ b/ee3_client/ee3/client/core/handlers/KeyBindingHandler.java @@ -10,7 +10,8 @@ import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.client.registry.KeyBindingRegistry; import cpw.mods.fml.common.TickType; import cpw.mods.fml.common.network.PacketDispatcher; -import ee3.client.lib.KeyBindings; +import cpw.mods.fml.common.registry.LanguageRegistry; +import ee3.client.core.helper.KeyBindingHelper; import ee3.common.EquivalentExchange3; import ee3.common.item.ModItems; import ee3.common.lib.GuiIds; @@ -31,7 +32,7 @@ import ee3.common.network.PacketTypeHandler; public class KeyBindingHandler extends KeyBindingRegistry.KeyHandler { public KeyBindingHandler() { - super(KeyBindings.gatherKeyBindings(), KeyBindings.gatherIsRepeating()); + super(KeyBindingHelper.gatherKeyBindings(), KeyBindingHelper.gatherIsRepeating()); } @Override @@ -45,7 +46,7 @@ public class KeyBindingHandler extends KeyBindingRegistry.KeyHandler { if (tickEnd) { // If we are not in a GUI of any kind, continue execution if (FMLClientHandler.instance().getClient().currentScreen == null) { - if (kb.keyDescription == Reference.KEYBINDING_EXTRA) { + if (kb.keyDescription == getLocalizedKey(Reference.KEYBINDING_EXTRA)) { ItemStack currentItem = FMLClientHandler.instance().getClient().thePlayer.getCurrentEquippedItem(); if (currentItem != null) { @@ -72,4 +73,7 @@ public class KeyBindingHandler extends KeyBindingRegistry.KeyHandler { return EnumSet.of(TickType.CLIENT); } + private static String getLocalizedKey(String key) { + return LanguageRegistry.instance().getStringLocalization(key); + } } diff --git a/ee3_client/ee3/client/lib/KeyBindings.java b/ee3_client/ee3/client/core/helper/KeyBindingHelper.java similarity index 95% rename from ee3_client/ee3/client/lib/KeyBindings.java rename to ee3_client/ee3/client/core/helper/KeyBindingHelper.java index 6dfd8513..a7935779 100644 --- a/ee3_client/ee3/client/lib/KeyBindings.java +++ b/ee3_client/ee3/client/core/helper/KeyBindingHelper.java @@ -1,4 +1,4 @@ -package ee3.client.lib; +package ee3.client.core.helper; import java.util.ArrayList; import net.minecraft.src.KeyBinding; @@ -12,7 +12,7 @@ import net.minecraft.src.KeyBinding; * @license Lesser GNU Public License v3 (http://www.gnu.org/licenses/lgpl.html) * */ -public class KeyBindings { +public class KeyBindingHelper { public static ArrayList keyBindingsList; public static ArrayList isRepeatingList; diff --git a/ee3_common/ee3/common/core/handlers/EquivalencyHandler.java b/ee3_common/ee3/common/core/handlers/EquivalencyHandler.java index 12b0e8d0..afca946f 100644 --- a/ee3_common/ee3/common/core/handlers/EquivalencyHandler.java +++ b/ee3_common/ee3/common/core/handlers/EquivalencyHandler.java @@ -20,15 +20,18 @@ public class EquivalencyHandler { if ((stack1Index != null) && (stack2Index != null)) { return; - } else if ((stack1Index != null) && (stack2Index == null)) { + } + else if ((stack1Index != null) && (stack2Index == null)) { currentList = equivalencyList.get(stack1Index.intValue()); currentList.add(stack2); equivalencyList.set(stack1Index.intValue(), currentList); - } else if ((stack1Index == null) && (stack2Index != null)) { + } + else if ((stack1Index == null) && (stack2Index != null)) { currentList = equivalencyList.get(stack2Index.intValue()); currentList.add(stack1); equivalencyList.set(stack2Index.intValue(), currentList); - } else if ((stack1Index == null) && (stack2Index == null)) { + } + else if ((stack1Index == null) && (stack2Index == null)) { currentList.add(stack1); currentList.add(stack2); equivalencyList.add(currentList); diff --git a/ee3_common/ee3/common/core/helper/TransmutationHelper.java b/ee3_common/ee3/common/core/helper/TransmutationHelper.java index ba6af687..910254dd 100644 --- a/ee3_common/ee3/common/core/helper/TransmutationHelper.java +++ b/ee3_common/ee3/common/core/helper/TransmutationHelper.java @@ -19,8 +19,7 @@ public class TransmutationHelper { } /* - * @TODO Clean up later tonight - ItemStack nextItem = TransmuteEquivalencyList.getNextBlockInEquivalencyList(id, meta, player.isSneaking()); + ItemStack nextItem = EquivalencyHandler.getNextBlockInEquivalencyList(id, meta, player.isSneaking()); if (nextItem != null) { if (Block.blocksList[nextItem.itemID] != null) { @@ -30,7 +29,7 @@ public class TransmutationHelper { } } */ - + return false; } diff --git a/ee3_common/ee3/common/item/ItemMiniumStone.java b/ee3_common/ee3/common/item/ItemMiniumStone.java index 53647d81..f0b0142d 100644 --- a/ee3_common/ee3/common/item/ItemMiniumStone.java +++ b/ee3_common/ee3/common/item/ItemMiniumStone.java @@ -1,12 +1,16 @@ package ee3.common.item; +import net.minecraft.src.EntityPlayer; import net.minecraft.src.EnumRarity; import net.minecraft.src.ItemStack; +import net.minecraft.src.World; import cpw.mods.fml.common.Side; import cpw.mods.fml.common.asm.SideOnly; import ee3.common.EquivalentExchange3; +import ee3.common.core.helper.TransmutationHelper; import ee3.common.lib.ConfigurationSettings; import ee3.common.lib.CustomItemRarity; +import ee3.common.lib.Reference; /** * ItemMiniumStone @@ -46,4 +50,15 @@ public class ItemMiniumStone extends ItemEE { return itemStack; } + @Override + public boolean onItemUse(ItemStack itemStack, EntityPlayer entityPlayer, World world, int x, int y, int z, int l, float f1, float f2, float f3) { + boolean result = TransmutationHelper.transmuteInWorld(world, entityPlayer, itemStack, x, y, z); + + if (result) { + itemStack.damageItem(1, entityPlayer); + } + + return result; + } + } diff --git a/ee3_common/ee3/common/lib/Reference.java b/ee3_common/ee3/common/lib/Reference.java index dc8fc92c..51584e70 100644 --- a/ee3_common/ee3/common/lib/Reference.java +++ b/ee3_common/ee3/common/lib/Reference.java @@ -36,13 +36,13 @@ public class Reference { /* KeyBinding related constants */ // TODO: Localize keybinding names - public static final String KEYBINDING_EXTRA = "mod.ee3.extra_key"; + public static final String KEYBINDING_EXTRA = "key.extra"; public static final int KEYBINDING_EXTRA_DEFAULT = 46; - public static final String KEYBINDING_RELEASE = "mod.ee3.release_key"; + public static final String KEYBINDING_RELEASE = "key.release"; public static final int KEYBINDING_RELEASE_DEFAULT = 19; - public static final String KEYBINDING_TOGGLE = "mod.ee3.toggle_key"; + public static final String KEYBINDING_TOGGLE = "key.toggle"; public static final int KEYBINDING_TOGGLE_DEFAULT = 34; - public static final String KEYBINDING_CHARGE = "mod.ee3.charge_key"; + public static final String KEYBINDING_CHARGE = "key.charge"; public static final int KEYBINDING_CHARGE_DEFAULT = 47; /* Texture related constants */ diff --git a/resources/ee3/lang/en_US.xml b/resources/ee3/lang/en_US.xml index 2f289108..b5f02cd4 100644 --- a/resources/ee3/lang/en_US.xml +++ b/resources/ee3/lang/en_US.xml @@ -2,6 +2,10 @@ English (US) Localization File + Extra + Release + Toggle + Charge Shard of Minium Minium Stone Philosopher's Stone From 9861d701cdbe5705e579edd955315a50a60ca5cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=9BAZ27?= Date: Fri, 12 Oct 2012 22:23:05 +0600 Subject: [PATCH 14/23] RU localization file update --- resources/ee3/lang/ru_RU.xml | 37 +++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/resources/ee3/lang/ru_RU.xml b/resources/ee3/lang/ru_RU.xml index 4681acf6..6e1dc740 100644 --- a/resources/ee3/lang/ru_RU.xml +++ b/resources/ee3/lang/ru_RU.xml @@ -1,15 +1,22 @@ - - - - Russian (RU) Localization File - Осколок Миниума - Миниум - Философский Камень - Красная Вода (Стоящая) - Красная Вода (Текущая) - Кальцинатор - Неинициализированная - Текущая - Устаревшая - Ошибка подключения - + + + + Russian (RU) Localization File + Дополнительная функция + Выпуск + Переключение + Заряд + Осколок Сурика + Сурик + Философский Камень + Красная Вода (Стоящая) + Красная Вода (Текущая) + Кальцинатор + Кальцинатор + Инициализация проверки версии в удаленном файле, находящемся на + Проверка версии не была завершена успешно (проверка версии не инициализирована правильно) + Вы используете самую последнюю версию для вашей версии Minecraft + Вы используете устаревшую версию, обновите здесь - http://goo.gl/sNcGl + Ошибка подключения к удаленному файлу (проверьте подключение к Интернету) + Удаленная проверка версии отключена, пропуск + From fa94dc6d5ee602711767f059598eb49d2ac853d7 Mon Sep 17 00:00:00 2001 From: pahimar Date: Mon, 15 Oct 2012 21:42:57 -0400 Subject: [PATCH 15/23] Some work on the DynEMC system --- .../ee3/common/core/helper/QualityHelper.java | 48 ++++++++++ ee3_common/ee3/common/emc/EMCEntry.java | 87 +++++++++++++++++++ ee3_common/ee3/common/emc/EMCRegistry.java | 16 ++++ ee3_common/ee3/common/emc/EMCType.java | 11 +++ 4 files changed, 162 insertions(+) create mode 100644 ee3_common/ee3/common/core/helper/QualityHelper.java create mode 100644 ee3_common/ee3/common/emc/EMCEntry.java create mode 100644 ee3_common/ee3/common/emc/EMCRegistry.java create mode 100644 ee3_common/ee3/common/emc/EMCType.java diff --git a/ee3_common/ee3/common/core/helper/QualityHelper.java b/ee3_common/ee3/common/core/helper/QualityHelper.java new file mode 100644 index 00000000..519e7602 --- /dev/null +++ b/ee3_common/ee3/common/core/helper/QualityHelper.java @@ -0,0 +1,48 @@ +package ee3.common.core.helper; + +import net.minecraft.src.ItemStack; + +public class QualityHelper { + + /* + * Legend for the dust table quality lookup, comparison is based off of quality tiers + * + * Item Quality + * |_0_|_1_|_2_|_3_|_4_|_5_| + * Fuel 0 | 0 | 0 | 0 | 1 | 1 | 1 | + * Quality 1 | 0 | 1 | 1 | 1 | 2 | 2 | + * 2 | 0 | 1 | 2 | 2 | 2 | 2 | + * 3 | 1 | 1 | 2 | 3 | 3 | 3 | + * 4 | 1 | 2 | 2 | 3 | 4 | 4 | + * 5 | 1 | 2 | 2 | 3 | 4 | 5 | + */ + private static int[][] dustTable = { + {0, 0, 0, 1, 1, 1}, + {0, 1, 1, 1, 2, 2}, + {0, 1, 2, 2, 2, 2}, + {1, 1, 2, 3, 3, 3}, + {1, 2, 2, 3, 4, 4}, + {1, 2, 2, 3, 4, 5}, + }; + + public static int getItemTierQuality(ItemStack item) { + // TODO Return the 'Tier' level of the given ItemStack + return -1; + } + + public static int getFuelTierQuality(ItemStack fuel) { + // TODO Return the 'Tier' level of the given ItemStack + return -1; + } + + public static int getDustTierQuality(ItemStack item, ItemStack fuel) { + if ((getItemTierQuality(item) >= 0) && (getItemTierQuality(item) <= 5)) { + if ((getFuelTierQuality(fuel) >= 0) && (getFuelTierQuality(fuel) <= 5)) { + return dustTable[getItemTierQuality(item)][getFuelTierQuality(fuel)]; + } + } + + return -1; + } + +} diff --git a/ee3_common/ee3/common/emc/EMCEntry.java b/ee3_common/ee3/common/emc/EMCEntry.java new file mode 100644 index 00000000..9a79a82f --- /dev/null +++ b/ee3_common/ee3/common/emc/EMCEntry.java @@ -0,0 +1,87 @@ +package ee3.common.emc; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +public class EMCEntry { + + private float cost, recoveryPercentage; + private boolean learnable, recoverable; + private Map breakdown; + + public EMCEntry(float cost) { + this.cost = cost; + recoveryPercentage = 1F; + learnable = true; + recoverable = true; + breakdown = Collections.synchronizedMap(new HashMap()); + } + + public EMCEntry(float cost, float recoveryPercentage, boolean learnable, boolean recoverable) { + this.cost = cost; + this.recoveryPercentage = recoveryPercentage; + this.learnable = learnable; + this.recoverable = recoverable; + breakdown = Collections.synchronizedMap(new HashMap()); + } + + public float getCost() { + return cost; + } + + public float getRecoveryPercentage() { + return recoveryPercentage; + } + + public boolean isLearnable() { + return learnable; + } + + public boolean isRecoverable() { + return recoverable; + } + + public Map getEMCBreakDown() { + return breakdown; + } + + public float getEMCBreakdownByType(EMCType emcType) { + if (breakdown.containsKey(emcType)) { + if (breakdown.get(emcType) != null) { + return breakdown.get(emcType).floatValue(); + } + } + + return -1F; + } + + public void setCost(float cost) { + this.cost = cost; + } + + public void setRecoveryPercentage(float recoveryPercentage) { + this.recoveryPercentage = recoveryPercentage; + } + + public void setLearnable(boolean learnable) { + this.learnable = learnable; + } + + public void setRecoverable(boolean recoverable) { + this.recoverable = recoverable; + } + + public void addEMCBreakDown(EMCType emcType, Float breakdownPercentage) { + if (!(breakdown.containsKey(emcType))) { + breakdown.put(emcType, breakdownPercentage); + } + } + + public void setEMCBreakDown(EMCType emcType, Float breakdownPercentage) { + if (breakdown.containsKey(emcType)) { + breakdown.put(emcType, breakdownPercentage); + } + } + +} diff --git a/ee3_common/ee3/common/emc/EMCRegistry.java b/ee3_common/ee3/common/emc/EMCRegistry.java new file mode 100644 index 00000000..45782292 --- /dev/null +++ b/ee3_common/ee3/common/emc/EMCRegistry.java @@ -0,0 +1,16 @@ +package ee3.common.emc; + +import java.util.HashMap; +import java.util.Map; + +public class EMCRegistry { + + private static final EMCRegistry emcRegistry = new EMCRegistry(); + + private HashMap> emcMap = new HashMap>(); + + public EMCRegistry instance() { + return emcRegistry; + } + +} diff --git a/ee3_common/ee3/common/emc/EMCType.java b/ee3_common/ee3/common/emc/EMCType.java new file mode 100644 index 00000000..dfb73822 --- /dev/null +++ b/ee3_common/ee3/common/emc/EMCType.java @@ -0,0 +1,11 @@ +package ee3.common.emc; + +public enum EMCType { + WATER, + EARTH, + FIRE, + AIR, + VOID, + BLOOD, + PURE +} From 040500292d740fbd75d317b0075fb68ecf6fb838 Mon Sep 17 00:00:00 2001 From: pahimar Date: Mon, 15 Oct 2012 21:45:38 -0400 Subject: [PATCH 16/23] tab cleanup in comments, might take the whole table out of the comments --- ee3_common/ee3/common/core/helper/QualityHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ee3_common/ee3/common/core/helper/QualityHelper.java b/ee3_common/ee3/common/core/helper/QualityHelper.java index 519e7602..b14df137 100644 --- a/ee3_common/ee3/common/core/helper/QualityHelper.java +++ b/ee3_common/ee3/common/core/helper/QualityHelper.java @@ -8,7 +8,7 @@ public class QualityHelper { * Legend for the dust table quality lookup, comparison is based off of quality tiers * * Item Quality - * |_0_|_1_|_2_|_3_|_4_|_5_| + * |_0_|_1_|_2_|_3_|_4_|_5_| * Fuel 0 | 0 | 0 | 0 | 1 | 1 | 1 | * Quality 1 | 0 | 1 | 1 | 1 | 2 | 2 | * 2 | 0 | 1 | 2 | 2 | 2 | 2 | From eeadd08ef01119ea9c646366b764a278cac30c34 Mon Sep 17 00:00:00 2001 From: pahimar Date: Mon, 15 Oct 2012 21:56:50 -0400 Subject: [PATCH 17/23] TINY bit more work before bed --- ee3_common/ee3/common/emc/EMCRegistry.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ee3_common/ee3/common/emc/EMCRegistry.java b/ee3_common/ee3/common/emc/EMCRegistry.java index 45782292..a5713ffa 100644 --- a/ee3_common/ee3/common/emc/EMCRegistry.java +++ b/ee3_common/ee3/common/emc/EMCRegistry.java @@ -3,6 +3,8 @@ package ee3.common.emc; import java.util.HashMap; import java.util.Map; +import net.minecraft.src.ItemStack; + public class EMCRegistry { private static final EMCRegistry emcRegistry = new EMCRegistry(); @@ -13,4 +15,9 @@ public class EMCRegistry { return emcRegistry; } + public EMCEntry getEMCEntry(ItemStack item) { + + return null; + } + } From e666b0f5460e55095545e5b1d1d031090a2d43a3 Mon Sep 17 00:00:00 2001 From: pahimar Date: Tue, 16 Oct 2012 10:38:31 -0400 Subject: [PATCH 18/23] Fix some whitespace issues, and some renames for EMC types --- ee3_common/ee3/common/emc/EMCEntry.java | 35 +++++++++++----------- ee3_common/ee3/common/emc/EMCRegistry.java | 10 +++---- ee3_common/ee3/common/emc/EMCType.java | 8 +---- 3 files changed, 24 insertions(+), 29 deletions(-) diff --git a/ee3_common/ee3/common/emc/EMCEntry.java b/ee3_common/ee3/common/emc/EMCEntry.java index 9a79a82f..08753932 100644 --- a/ee3_common/ee3/common/emc/EMCEntry.java +++ b/ee3_common/ee3/common/emc/EMCEntry.java @@ -9,7 +9,7 @@ public class EMCEntry { private float cost, recoveryPercentage; private boolean learnable, recoverable; private Map breakdown; - + public EMCEntry(float cost) { this.cost = cost; recoveryPercentage = 1F; @@ -17,67 +17,68 @@ public class EMCEntry { recoverable = true; breakdown = Collections.synchronizedMap(new HashMap()); } - - public EMCEntry(float cost, float recoveryPercentage, boolean learnable, boolean recoverable) { + + public EMCEntry(float cost, float recoveryPercentage, boolean learnable, + boolean recoverable) { this.cost = cost; this.recoveryPercentage = recoveryPercentage; this.learnable = learnable; this.recoverable = recoverable; breakdown = Collections.synchronizedMap(new HashMap()); } - + public float getCost() { return cost; } - + public float getRecoveryPercentage() { return recoveryPercentage; } - + public boolean isLearnable() { return learnable; } - + public boolean isRecoverable() { return recoverable; } - + public Map getEMCBreakDown() { return breakdown; } - + public float getEMCBreakdownByType(EMCType emcType) { if (breakdown.containsKey(emcType)) { if (breakdown.get(emcType) != null) { return breakdown.get(emcType).floatValue(); } } - + return -1F; } - + public void setCost(float cost) { this.cost = cost; } - + public void setRecoveryPercentage(float recoveryPercentage) { this.recoveryPercentage = recoveryPercentage; } - + public void setLearnable(boolean learnable) { this.learnable = learnable; } - + public void setRecoverable(boolean recoverable) { this.recoverable = recoverable; } - + public void addEMCBreakDown(EMCType emcType, Float breakdownPercentage) { - if (!(breakdown.containsKey(emcType))) { + if (!(breakdown.containsKey(emcType))) { breakdown.put(emcType, breakdownPercentage); } } - + public void setEMCBreakDown(EMCType emcType, Float breakdownPercentage) { if (breakdown.containsKey(emcType)) { breakdown.put(emcType, breakdownPercentage); diff --git a/ee3_common/ee3/common/emc/EMCRegistry.java b/ee3_common/ee3/common/emc/EMCRegistry.java index a5713ffa..cf0eec97 100644 --- a/ee3_common/ee3/common/emc/EMCRegistry.java +++ b/ee3_common/ee3/common/emc/EMCRegistry.java @@ -8,16 +8,16 @@ import net.minecraft.src.ItemStack; public class EMCRegistry { private static final EMCRegistry emcRegistry = new EMCRegistry(); - + private HashMap> emcMap = new HashMap>(); - + public EMCRegistry instance() { return emcRegistry; } - + public EMCEntry getEMCEntry(ItemStack item) { - + return null; } - + } diff --git a/ee3_common/ee3/common/emc/EMCType.java b/ee3_common/ee3/common/emc/EMCType.java index dfb73822..99a746cb 100644 --- a/ee3_common/ee3/common/emc/EMCType.java +++ b/ee3_common/ee3/common/emc/EMCType.java @@ -1,11 +1,5 @@ package ee3.common.emc; public enum EMCType { - WATER, - EARTH, - FIRE, - AIR, - VOID, - BLOOD, - PURE + FLUID, TERRA, FERVOR, HEAVENLY, VOID, BLOOD, PURE } From 95f5230d24232e57ae7732d607346ae7552de16b Mon Sep 17 00:00:00 2001 From: pahimar Date: Tue, 16 Oct 2012 13:31:27 -0400 Subject: [PATCH 19/23] Basic get/sets for the EMCRegistry --- ee3_common/ee3/common/emc/EMCEntry.java | 3 +- ee3_common/ee3/common/emc/EMCRegistry.java | 76 +++++++++++++++++++++- ee3_common/ee3/common/emc/EMCType.java | 2 +- 3 files changed, 75 insertions(+), 6 deletions(-) diff --git a/ee3_common/ee3/common/emc/EMCEntry.java b/ee3_common/ee3/common/emc/EMCEntry.java index 08753932..db21da1e 100644 --- a/ee3_common/ee3/common/emc/EMCEntry.java +++ b/ee3_common/ee3/common/emc/EMCEntry.java @@ -18,8 +18,7 @@ public class EMCEntry { breakdown = Collections.synchronizedMap(new HashMap()); } - public EMCEntry(float cost, float recoveryPercentage, boolean learnable, - boolean recoverable) { + public EMCEntry(float cost, float recoveryPercentage, boolean learnable, boolean recoverable) { this.cost = cost; this.recoveryPercentage = recoveryPercentage; this.learnable = learnable; diff --git a/ee3_common/ee3/common/emc/EMCRegistry.java b/ee3_common/ee3/common/emc/EMCRegistry.java index cf0eec97..be1e83be 100644 --- a/ee3_common/ee3/common/emc/EMCRegistry.java +++ b/ee3_common/ee3/common/emc/EMCRegistry.java @@ -3,6 +3,8 @@ package ee3.common.emc; import java.util.HashMap; import java.util.Map; +import net.minecraft.src.Block; +import net.minecraft.src.Item; import net.minecraft.src.ItemStack; public class EMCRegistry { @@ -14,10 +16,78 @@ public class EMCRegistry { public EMCRegistry instance() { return emcRegistry; } - - public EMCEntry getEMCEntry(ItemStack item) { - + + public EMCEntry getEMCValue(Block block) { + if (block != null) { + return getEMCValue(block.blockID, 0); + } + return null; } + + public EMCEntry getEMCValue(Item item) { + if (item != null) { + return getEMCValue(item.shiftedIndex, 0); + } + + return null; + } + + public EMCEntry getEMCValue(ItemStack itemStack) { + if (itemStack != null) { + return getEMCValue(itemStack.itemID, itemStack.getItemDamage()); + } + + return null; + } + + public EMCEntry getEMCValue(int id) { + return getEMCValue(id, 0); + } + + public EMCEntry getEMCValue(int id, int meta) { + if (emcMap.containsKey(id)) { + if (emcMap.get(id).containsKey(meta)) { + return emcMap.get(id).get(meta); + } + } + + return null; + } + + public void addEMCValue(Block block, EMCEntry emcEntry) { + addEMCValue(block.blockID, 0, emcEntry); + } + + public void addEMCValue(Block block, int meta, EMCEntry emcEntry) { + addEMCValue(block.blockID, meta, emcEntry); + } + + public void addEMCValue(Item item, EMCEntry emcEntry) { + addEMCValue(item.shiftedIndex, 0, emcEntry); + } + + public void addEMCValue(ItemStack itemStack, EMCEntry emcEntry) { + addEMCValue(itemStack.itemID, itemStack.getItemDamage(), emcEntry); + } + + public void addEMCValue(int id, EMCEntry emcEntry) { + addEMCValue(id, 0, emcEntry); + } + + public void addEMCValue(int id, int meta, EMCEntry emcEntry) { + HashMap tempMap = new HashMap(); + + if (emcMap.containsKey(id)) { + tempMap = emcMap.get(id); + + if (tempMap.containsKey(meta)) { + return; + } + } + + tempMap.put(meta, emcEntry); + emcMap.put(id, tempMap); + } } diff --git a/ee3_common/ee3/common/emc/EMCType.java b/ee3_common/ee3/common/emc/EMCType.java index 99a746cb..79844d02 100644 --- a/ee3_common/ee3/common/emc/EMCType.java +++ b/ee3_common/ee3/common/emc/EMCType.java @@ -1,5 +1,5 @@ package ee3.common.emc; public enum EMCType { - FLUID, TERRA, FERVOR, HEAVENLY, VOID, BLOOD, PURE + CORPOREAL, KINETIC, TEMPORAL, ESSENTIA, AMORPHOUS, VOID, OMNI } From d0036f1d8587cc1038055bcbe512aea4faa062b3 Mon Sep 17 00:00:00 2001 From: pahimar Date: Wed, 17 Oct 2012 16:01:43 -0400 Subject: [PATCH 20/23] Getting the Equivalency Handler back online, finishing it up tonight --- .../core/handlers/EquivalencyHandler.java | 100 ++++++++++++++++-- ee3_common/ee3/common/emc/EMCRegistry.java | 2 +- .../recipe/RecipesTransmutationStone.java | 34 +++--- 3 files changed, 109 insertions(+), 27 deletions(-) diff --git a/ee3_common/ee3/common/core/handlers/EquivalencyHandler.java b/ee3_common/ee3/common/core/handlers/EquivalencyHandler.java index afca946f..4ed779ff 100644 --- a/ee3_common/ee3/common/core/handlers/EquivalencyHandler.java +++ b/ee3_common/ee3/common/core/handlers/EquivalencyHandler.java @@ -7,16 +7,26 @@ import net.minecraft.src.ItemStack; public class EquivalencyHandler { - public static ArrayList> equivalencyList = new ArrayList>(); + private static final EquivalencyHandler instance = new EquivalencyHandler(); + + private static ArrayList> equivalencyList = new ArrayList>(); + + public static EquivalencyHandler instance() { + return instance; + } + + public ArrayList> getAllLists() { + return equivalencyList; + } - public static void addObjectToEquivalencyList(Object obj1, Object obj2) { + public void addObjects(Object obj1, Object obj2) { ItemStack stack1 = GeneralHelper.convertObjectToItemStack(obj1); ItemStack stack2 = GeneralHelper.convertObjectToItemStack(obj2); ArrayList currentList = new ArrayList(); - Integer stack1Index = getEquivalencyIndexForItem(stack1); - Integer stack2Index = getEquivalencyIndexForItem(stack2); + Integer stack1Index = getIndexInList(stack1); + Integer stack2Index = getIndexInList(stack2); if ((stack1Index != null) && (stack2Index != null)) { return; @@ -38,16 +48,16 @@ public class EquivalencyHandler { } } - public static void addObjectsToEquivalencyLists(Object... objList) { + public void addObjects(Object... objList) { if (objList.length < 2) return; for (int i = 0; i < objList.length - 1; i++) { - addObjectToEquivalencyList(objList[i], objList[i + 1]); + addObjects(objList[i], objList[i + 1]); } } - public static Integer getEquivalencyIndexForItem(Object obj) { + public Integer getIndexInList(Object obj) { ItemStack checkStack = GeneralHelper.convertObjectToItemStack(obj); ArrayList currentList; int i = 0; @@ -64,8 +74,25 @@ public class EquivalencyHandler { return null; } + + public Integer getIndexinList(int id, int meta) { + ArrayList currentList; + int i = 0; - public static ArrayList getEquivalencyListForItem(Object obj) { + while (i < equivalencyList.size()) { + currentList = equivalencyList.get(i); + for (ItemStack currentStack : currentList) { + if ((id == currentStack.itemID) && (meta == currentStack.getItemDamage())) { + return new Integer(i); + } + } + ++i; + } + + return null; + } + + public ArrayList getEquivalencyList(Object obj) { ItemStack checkStack = GeneralHelper.convertObjectToItemStack(obj); if (checkStack == null) @@ -81,8 +108,63 @@ public class EquivalencyHandler { return null; } + + public ArrayList getEquivalencyList(int id, int meta) { + for (ArrayList list : equivalencyList) { + for (ItemStack currentStack : list) { + if ((id == currentStack.itemID) && (meta == currentStack.getItemDamage())) { + return list; + } + } + } - public static void debug() { + return null; + } + + public ItemStack getNextInList(Object obj) { + ItemStack checkStack = GeneralHelper.convertObjectToItemStack(obj); + + if (checkStack != null) { + return getNextInList(checkStack.itemID, checkStack.getItemDamage()); + } + + return null; + } + + public ItemStack getNextInList(int id, int meta) { + ArrayList list = getEquivalencyList(id, meta); + + ItemStack currentStack; + ItemStack returnStack = null; + int i = 0; + + if (list != null) { + while (i < list.size()) { + currentStack = list.get(i); + + if ((id == currentStack.itemID) && (meta == currentStack.getItemDamage())) { + returnStack = list.get((i + 1) % list.size()); + break; + } + + ++i; + } + } + + return returnStack; + } + + public ItemStack getPrevInList(Object obj) { + // TODO Finish + return null; + } + + public ItemStack getPrevInList(int id, int meta) { + // TODO Finish + return null; + } + + public void debug() { int i = 0; for (ArrayList list : equivalencyList) { System.out.println("equivalencyList[" + i + "]: " + list.toString()); diff --git a/ee3_common/ee3/common/emc/EMCRegistry.java b/ee3_common/ee3/common/emc/EMCRegistry.java index be1e83be..48387402 100644 --- a/ee3_common/ee3/common/emc/EMCRegistry.java +++ b/ee3_common/ee3/common/emc/EMCRegistry.java @@ -13,7 +13,7 @@ public class EMCRegistry { private HashMap> emcMap = new HashMap>(); - public EMCRegistry instance() { + public static EMCRegistry instance() { return emcRegistry; } diff --git a/ee3_common/ee3/common/recipe/RecipesTransmutationStone.java b/ee3_common/ee3/common/recipe/RecipesTransmutationStone.java index 1120b25f..c6035571 100644 --- a/ee3_common/ee3/common/recipe/RecipesTransmutationStone.java +++ b/ee3_common/ee3/common/recipe/RecipesTransmutationStone.java @@ -42,7 +42,7 @@ public class RecipesTransmutationStone { } if (Reference.DEBUG_MODE) { - EquivalencyHandler.debug(); + EquivalencyHandler.instance().debug(); } } @@ -110,7 +110,7 @@ public class RecipesTransmutationStone { public static void initEquivalenceRecipes(ItemStack stone) { int outputI; - for (ArrayList itemStackList : EquivalencyHandler.equivalencyList) { + for (ArrayList itemStackList : EquivalencyHandler.instance().getAllLists()) { ItemStack[] currentList = new ItemStack[itemStackList.size()]; currentList = itemStackList.toArray(currentList); @@ -173,21 +173,21 @@ public class RecipesTransmutationStone { } protected static void initEquivalencyList() { - EquivalencyHandler.addObjectsToEquivalencyLists(Block.sand, Block.dirt, Block.cobblestone, Block.grass); - EquivalencyHandler.addObjectsToEquivalencyLists(Block.plantYellow, Block.plantRed); - EquivalencyHandler.addObjectsToEquivalencyLists(Block.mushroomRed, Block.mushroomBrown); - EquivalencyHandler.addObjectsToEquivalencyLists(Item.pumpkinSeeds, Item.melonSeeds); - EquivalencyHandler.addObjectsToEquivalencyLists(Block.pumpkin, Block.melon); - EquivalencyHandler.addObjectsToEquivalencyLists(new ItemStack(Item.paper, 3), new ItemStack(Item.reed, 3)); - EquivalencyHandler.addObjectsToEquivalencyLists(new ItemStack(Item.flint, 2), new ItemStack(Block.gravel, 2), new ItemStack(Block.sandStone, 2, 0), new ItemStack(Block.sandStone, 2, 1), new ItemStack(Block.sandStone, 2, 2)); - EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Block.planks, 4)); - EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Block.wood, 4)); - EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Block.sapling, 4)); - EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Block.leaves, 4)); - EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Block.tallGrass, 3)); - EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Block.cloth, 16)); - EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Block.stoneBrick, 4)); - EquivalencyHandler.addObjectsToEquivalencyLists(RecipeHelper.getMetaCycle(Item.dyePowder, 16, 3, 4, 15)); + EquivalencyHandler.instance().addObjects(Block.sand, Block.dirt, Block.cobblestone, Block.grass); + EquivalencyHandler.instance().addObjects(Block.plantYellow, Block.plantRed); + EquivalencyHandler.instance().addObjects(Block.mushroomRed, Block.mushroomBrown); + EquivalencyHandler.instance().addObjects(Item.pumpkinSeeds, Item.melonSeeds); + EquivalencyHandler.instance().addObjects(Block.pumpkin, Block.melon); + EquivalencyHandler.instance().addObjects(new ItemStack(Item.paper, 3), new ItemStack(Item.reed, 3)); + EquivalencyHandler.instance().addObjects(new ItemStack(Item.flint, 2), new ItemStack(Block.gravel, 2), new ItemStack(Block.sandStone, 2, 0), new ItemStack(Block.sandStone, 2, 1), new ItemStack(Block.sandStone, 2, 2)); + EquivalencyHandler.instance().addObjects(RecipeHelper.getMetaCycle(Block.planks, 4)); + EquivalencyHandler.instance().addObjects(RecipeHelper.getMetaCycle(Block.wood, 4)); + EquivalencyHandler.instance().addObjects(RecipeHelper.getMetaCycle(Block.sapling, 4)); + EquivalencyHandler.instance().addObjects(RecipeHelper.getMetaCycle(Block.leaves, 4)); + EquivalencyHandler.instance().addObjects(RecipeHelper.getMetaCycle(Block.tallGrass, 3)); + EquivalencyHandler.instance().addObjects(RecipeHelper.getMetaCycle(Block.cloth, 16)); + EquivalencyHandler.instance().addObjects(RecipeHelper.getMetaCycle(Block.stoneBrick, 4)); + EquivalencyHandler.instance().addObjects(RecipeHelper.getMetaCycle(Item.dyePowder, 16, 3, 4, 15)); } } From 72eee4575386f0a023e7e35567f7ad6980de8c10 Mon Sep 17 00:00:00 2001 From: Bram Van der Sype Date: Fri, 19 Oct 2012 10:43:40 +0200 Subject: [PATCH 21/23] Updated Dutch translations If possible, we should have some context for the key words. It's hard to translate them sometimes without knowing what the context will be. I'm guessing they'll be used for the keybindings? --- resources/ee3/lang/nl_NL.xml | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/resources/ee3/lang/nl_NL.xml b/resources/ee3/lang/nl_NL.xml index b53f845d..e7dec311 100644 --- a/resources/ee3/lang/nl_NL.xml +++ b/resources/ee3/lang/nl_NL.xml @@ -2,14 +2,21 @@ Dutch (NL) Localization File + Extra + Ontlaad + Wissel + Opladen Minium Scherf Minium Steen Steen der Wijzen Rood Water (Stilstaand) Rood Water (Vloeiend) Calcinator - Ongestart - Huidig - Verouderd - Verbindingsfout + Calcinator + Initialisatie versiecontrole tegen extern versie bestand, te vinden op + De versiecontrole is niet geslaagd (versiecontrole niet correct gestart) + Je gebruikt momenteel de meest recente versie voor jouw Minecraft versie + Je gebruikt momenteel een verouderde versie; overweeg om up te daten - http://goo.gl/sNcGl + Fout bij het verbinden met het extern versiecontrole bestand (controleer je internetverbinding) + Externe versiecontrole uitgeschakeld, wordt overgeslagen From 3f1664c32266f46a8a61e8c45efe83a81be42931 Mon Sep 17 00:00:00 2001 From: pahimar Date: Sun, 21 Oct 2012 19:56:52 -0400 Subject: [PATCH 22/23] getPrev done --- .../core/handlers/EquivalencyHandler.java | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/ee3_common/ee3/common/core/handlers/EquivalencyHandler.java b/ee3_common/ee3/common/core/handlers/EquivalencyHandler.java index 4ed779ff..4d749ae1 100644 --- a/ee3_common/ee3/common/core/handlers/EquivalencyHandler.java +++ b/ee3_common/ee3/common/core/handlers/EquivalencyHandler.java @@ -155,13 +155,37 @@ public class EquivalencyHandler { } public ItemStack getPrevInList(Object obj) { - // TODO Finish + ItemStack checkStack = GeneralHelper.convertObjectToItemStack(obj); + + if (checkStack != null) { + return getPrevInList(checkStack.itemID, checkStack.getItemDamage()); + } + return null; } public ItemStack getPrevInList(int id, int meta) { - // TODO Finish - return null; + ArrayList list = getEquivalencyList(id, meta); + + ItemStack currentStack; + ItemStack returnStack = null; + int i = 0; + + if (list != null) { + while (i < list.size()) { + currentStack = list.get(i); + + if ((id == currentStack.itemID) && (meta == currentStack.getItemDamage())) { + int index = ((i - 1) + list.size()) % list.size(); + returnStack = list.get(index); + break; + } + + ++i; + } + } + + return returnStack; } public void debug() { From cfb4d74002c05793673d85e09c3e71b16ea1f960 Mon Sep 17 00:00:00 2001 From: pahimar Date: Sun, 21 Oct 2012 22:39:43 -0400 Subject: [PATCH 23/23] Update naming to MC 1.4 --- .../common/container/ContainerCalcinator.java | 48 +++++++++---------- .../core/handlers/EquivalencyHandler.java | 4 +- .../common/core/handlers/PacketHandler.java | 4 +- .../handlers/PlayerDestroyItemHandler.java | 2 +- ee3_common/ee3/common/network/PacketEE.java | 4 +- .../ee3/common/network/PacketKeyPressed.java | 4 +- .../ee3/common/network/PacketTileUpdate.java | 4 +- 7 files changed, 35 insertions(+), 35 deletions(-) diff --git a/ee3_common/ee3/common/container/ContainerCalcinator.java b/ee3_common/ee3/common/container/ContainerCalcinator.java index 3910e260..2b61e9af 100644 --- a/ee3_common/ee3/common/container/ContainerCalcinator.java +++ b/ee3_common/ee3/common/container/ContainerCalcinator.java @@ -48,76 +48,76 @@ public class ContainerCalcinator extends Container { } // TODO Write our own version - this is taken from ContainerFurnace - public ItemStack transferStackInSlot(int par1) + public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2) { - ItemStack var2 = null; - Slot var3 = (Slot)this.inventorySlots.get(par1); + ItemStack var3 = null; + Slot var4 = (Slot)this.inventorySlots.get(par2); - if (var3 != null && var3.getHasStack()) + if (var4 != null && var4.getHasStack()) { - ItemStack var4 = var3.getStack(); - var2 = var4.copy(); + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); - if (par1 == 2) + if (par2 == 2) { - if (!this.mergeItemStack(var4, 3, 39, true)) + if (!this.mergeItemStack(var5, 3, 39, true)) { return null; } - var3.onSlotChange(var4, var2); + var4.onSlotChange(var5, var3); } - else if (par1 != 1 && par1 != 0) + else if (par2 != 1 && par2 != 0) { - if (FurnaceRecipes.smelting().getSmeltingResult(var4) != null) + if (FurnaceRecipes.smelting().getSmeltingResult(var5) != null) { - if (!this.mergeItemStack(var4, 0, 1, false)) + if (!this.mergeItemStack(var5, 0, 1, false)) { return null; } } - else if (TileEntityFurnace.isItemFuel(var4)) + else if (TileEntityFurnace.isItemFuel(var5)) { - if (!this.mergeItemStack(var4, 1, 2, false)) + if (!this.mergeItemStack(var5, 1, 2, false)) { return null; } } - else if (par1 >= 3 && par1 < 30) + else if (par2 >= 3 && par2 < 30) { - if (!this.mergeItemStack(var4, 30, 39, false)) + if (!this.mergeItemStack(var5, 30, 39, false)) { return null; } } - else if (par1 >= 30 && par1 < 39 && !this.mergeItemStack(var4, 3, 30, false)) + else if (par2 >= 30 && par2 < 39 && !this.mergeItemStack(var5, 3, 30, false)) { return null; } } - else if (!this.mergeItemStack(var4, 3, 39, false)) + else if (!this.mergeItemStack(var5, 3, 39, false)) { return null; } - if (var4.stackSize == 0) + if (var5.stackSize == 0) { - var3.putStack((ItemStack)null); + var4.putStack((ItemStack)null); } else { - var3.onSlotChanged(); + var4.onSlotChanged(); } - if (var4.stackSize == var2.stackSize) + if (var5.stackSize == var3.stackSize) { return null; } - var3.onPickupFromSlot(var4); + var4.func_82870_a(par1EntityPlayer, var5); } - return var2; + return var3; } } diff --git a/ee3_common/ee3/common/core/handlers/EquivalencyHandler.java b/ee3_common/ee3/common/core/handlers/EquivalencyHandler.java index 4d749ae1..e66ba9a8 100644 --- a/ee3_common/ee3/common/core/handlers/EquivalencyHandler.java +++ b/ee3_common/ee3/common/core/handlers/EquivalencyHandler.java @@ -65,7 +65,7 @@ public class EquivalencyHandler { while (i < equivalencyList.size()) { currentList = equivalencyList.get(i); for (ItemStack currentStack : currentList) { - if (checkStack.isStackEqual(currentStack)) { + if (ItemStack.areItemStacksEqual(checkStack, currentStack)) { return new Integer(i); } } @@ -100,7 +100,7 @@ public class EquivalencyHandler { for (ArrayList list : equivalencyList) { for (ItemStack currentStack : list) { - if (checkStack.isStackEqual(currentStack)) { + if (ItemStack.areItemStacksEqual(checkStack, currentStack)) { return list; } } diff --git a/ee3_common/ee3/common/core/handlers/PacketHandler.java b/ee3_common/ee3/common/core/handlers/PacketHandler.java index 1a2fe33a..ed87498d 100644 --- a/ee3_common/ee3/common/core/handlers/PacketHandler.java +++ b/ee3_common/ee3/common/core/handlers/PacketHandler.java @@ -3,7 +3,7 @@ package ee3.common.core.handlers; import java.io.ByteArrayInputStream; import java.io.DataInputStream; -import net.minecraft.src.NetworkManager; +import net.minecraft.src.INetworkManager; import net.minecraft.src.Packet250CustomPayload; import cpw.mods.fml.common.network.IPacketHandler; import cpw.mods.fml.common.network.Player; @@ -28,7 +28,7 @@ public class PacketHandler implements IPacketHandler { * @param player The Player associated with the packet */ @Override - public void onPacketData(NetworkManager manager, Packet250CustomPayload packet, Player player) { + public void onPacketData(INetworkManager manager, Packet250CustomPayload packet, Player player) { // Build a PacketEE object from the data contained within the Packet250CustomPayload packet PacketEE packetEE = PacketTypeHandler.buildPacket(packet.data); diff --git a/ee3_common/ee3/common/core/handlers/PlayerDestroyItemHandler.java b/ee3_common/ee3/common/core/handlers/PlayerDestroyItemHandler.java index a09b98d4..584825d7 100644 --- a/ee3_common/ee3/common/core/handlers/PlayerDestroyItemHandler.java +++ b/ee3_common/ee3/common/core/handlers/PlayerDestroyItemHandler.java @@ -8,7 +8,7 @@ public class PlayerDestroyItemHandler { @ForgeSubscribe public void onPlayerDestroyItemEvent(PlayerDestroyItemEvent event) { // TODO Come back and actually do what I want here - System.out.println(event.original.getItemNameandInformation()); + System.out.println(event.original.func_82833_r()); } } diff --git a/ee3_common/ee3/common/network/PacketEE.java b/ee3_common/ee3/common/network/PacketEE.java index 5fa0493e..0f0bd8e4 100644 --- a/ee3_common/ee3/common/network/PacketEE.java +++ b/ee3_common/ee3/common/network/PacketEE.java @@ -5,7 +5,7 @@ import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import cpw.mods.fml.common.network.Player; -import net.minecraft.src.NetworkManager; +import net.minecraft.src.INetworkManager; public class PacketEE { @@ -43,7 +43,7 @@ public class PacketEE { public void writeData(DataOutputStream dos) throws IOException { } - public void execute(NetworkManager network, Player player) { } + public void execute(INetworkManager network, Player player) { } public void setKey(int key) { } } diff --git a/ee3_common/ee3/common/network/PacketKeyPressed.java b/ee3_common/ee3/common/network/PacketKeyPressed.java index e8052486..ac201702 100644 --- a/ee3_common/ee3/common/network/PacketKeyPressed.java +++ b/ee3_common/ee3/common/network/PacketKeyPressed.java @@ -11,7 +11,7 @@ import ee3.common.lib.ItemIds; import ee3.common.lib.Reference; import net.minecraft.src.EntityPlayer; -import net.minecraft.src.NetworkManager; +import net.minecraft.src.INetworkManager; import net.minecraft.src.Packet250CustomPayload; public class PacketKeyPressed extends PacketEE { @@ -40,7 +40,7 @@ public class PacketKeyPressed extends PacketEE { this.key = key; } - public void execute(NetworkManager manager, Player player) { + public void execute(INetworkManager manager, Player player) { EntityPlayer thePlayer = (EntityPlayer) player; if ((this.key.equals(Reference.KEYBINDING_EXTRA)) && (thePlayer.getCurrentEquippedItem().getItem().shiftedIndex == ItemIds.MINIUM_STONE)) { diff --git a/ee3_common/ee3/common/network/PacketTileUpdate.java b/ee3_common/ee3/common/network/PacketTileUpdate.java index 7e4ff247..4614473f 100644 --- a/ee3_common/ee3/common/network/PacketTileUpdate.java +++ b/ee3_common/ee3/common/network/PacketTileUpdate.java @@ -6,7 +6,7 @@ import java.io.IOException; import cpw.mods.fml.common.network.Player; -import net.minecraft.src.NetworkManager; +import net.minecraft.src.INetworkManager; import net.minecraftforge.common.ForgeDirection; public class PacketTileUpdate extends PacketEE { @@ -62,7 +62,7 @@ public class PacketTileUpdate extends PacketEE { this.player = data.readUTF(); } - public void execute(NetworkManager manager, Player player) { + public void execute(INetworkManager manager, Player player) { // TODO: Stuff here }