This commit is contained in:
André Carvalho 2012-11-24 11:54:46 +00:00
commit d31bff2615
18 changed files with 324 additions and 96 deletions

113
README.md
View file

@ -1,28 +1,99 @@
## Welcome to Equivalent Exchange 3! ## Welcome to Equivalent Exchange 3!
The Compilation part (Setup) was done mostly by Minalien, I just changed it a bit. Some credit goes to BuildCraft's README.md, which I based this README off of. Setup MCP was done mostly by Minalien, I just changed it a bit. Some credit goes to BuildCraft's README.md, which I based this README off of.
The Minecraft Forums page can be found [here] (www.minecraftforum.net/topic/1540010-equivalent-exchange-3). The Minecraft Forums page can be found [here] (http://www.minecraftforum.net/topic/1540010-equivalent-exchange-3).
### Compiling Equivalent Exchange 3 ### Compiling Equivalent Exchange 3
IMPORTANT: This is not guaranteed to work as it has not been tested extensively (only done on Linux so far, partly on Windows). IMPORTANT: This is not guaranteed to work as it has not been tested extensively (only done on Linux so far, partly on Windows).
____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ ____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
#### Setup MCP #### Prerequisites (Tested for Windows 7 ONLY!)
1. Create an empty directory for EE3 development. This directory is referenced as `mcdev` from now on. 1. Download and install the Java JDK [here](http://www.oracle.com/technetwork/java/javase/downloads/jdk7u9-downloads-1859576.html). Just scroll down.
2. Download the latest version of MCP from [here] (http://mcp.ocean-labs.de/index.php/MCP_Releases) , e.g. mcp719.zip. Install MCP dependencies as listed on the website if neccessary. * Go to `Control Panel\System and Security\System`, and click on `Advanced System Settings` on the left-hand side.
3. Install Apache Ant [here] (ant.apache.org.) * Click on `Environment Variables`.
3. Inside `mcdev`, create a directory named `mcp` and unzip the MCP ZIP file into it * Under `System Variables`, click `New`.
4. To verify, check if a file name `CHANGELOG` exists inside the mcp directory. * For `Variable Name`, input `JAVA_HOME`.
5. Get a clean (unmodded!) copy of minecraft. Currently EE3 runs on 1.4.2 but that might have changed. * For `Variable Value`, input something similar to `;C:\Program Files (x86)\Java\jdk1.7.0_09` exactly as shown to the end.(or wherever your Java JDK installation is), and click `Ok`.
6. From your .minecraft directory, copy the bin and the resources directory to the `jars` directory inside `mcp`. * Scroll down to a variable named `Path`, and double-click on it.
7. Get a clean (unmodded!) copy of minecraft_server.jar and also place it into `jars`. * Append `;C:\Program Files (x86)\Java\jdk1.7.0_09\bin` (or wherever your Java JDK installation is \bin), and click `Ok`.
8. Download the latest forge source for Minecraft 1.4.2 and unzip it into `mcp` so that `mcp/forge/install.sh` exists. You need at least Forge 6.0.1, best way is to get it from [here] (http://files.minecraftforge.net/): http://files.minecraftforge.net/ NOTE: 6.0.1.355 was the last version to support 1.4.2, do not get anything later than that for 1.4.2 versions of EE3! 2. Download and Apache Ant [here] (http://ant.apache.org).
9. Execute `mcdev/mcp/forge/install.sh` or `mcp/forge/install.cmd`, depending on your platform. On Linux you might have to `chmod +x` `install.sh` before you can execute it. On some system configurations you need to execute `install.sh` from within the forge directory whereas on others it doesn't matter. Just check the output for error messages to find out what you need to do. * Unzip the files anywhere you want, eg `C:\Program Files (x86)\Ant`.
* Again, go to `Environment Variables` just like you did for the Java JDK.
* Under `System Variables`, click `New`.
* For `Variable Name`, input `ANT_HOME`.
* For `Variable Value`, input `C:\Ant\apache-ant-1.8.4` (or your Ant directory \apache-ant-1.8.4).
* Scroll down to `Path`, and double-click on it.
* Append `;C:\Ant\apache-ant-1.8.4\bin` exactly as shown to the end (or your Ant directory \apache-ant-1.8.4\bin).
3. Download and install Github [here] (http://windows.github.com/).
* Create an account.
* Go back to the Equivalent-Exchange-3 directory [here] (http://github.com/pahimar/Equivalent-Exchange-3).
* Click `Clone to Windows` near the top-left of the page.
* You should see Github flash and `pahimar/Equivalent-Exchange-3` appear. (The local repository defaults to `C:\Users\(username)\Documents\GitHub\Equivalent-Exchange-3`, you can change it if you want but then you have to find it again on Github).
4. Create an empty directory for EE3 development. This directory is refernced as `mcdev` from now on. It can be where you cloned EE3, but it'll be a little messy.
#### Setup EE3 5. You are now ready to Setup MCP!
1. Inside `mcdev`, create a directory named `source`. Clone EE3 into this directory.
2. [FOR WINDOWS] Open up cmd. Type `cmd` in Run.
3. [FOR WINDOWS] Navigate to `mcdev\source` by executing `cd [wherever your mcdev is located, just copy and paste the path in]`. #### Setup MCP (Linux and Windows 7 tested)
2. Inside `sources\Equivalent-Exchange-3` execute `ant build -Ddir.development=../../`. If you've done everything right, BUILD SUCCESSFUL is displayed. 1. Download the latest version of MCP from [here] (http://mcp.ocean-labs.de/index.php/MCP_Releases) , e.g. mcp723.zip. Install MCP dependencies as listed on the website if neccessary.
3. Execute `ant recompile -Ddir.development=../../`.
4. Execute `ant reobfuscate -Ddir.development=../../`. 2. Inside `mcdev`, create a directory named `mcp` and unzip the MCP .zip file into it.
5. If you've done everything right AND the source code currently compiles, you can execute startclient.sh or startclient.bat inside the mcp directory now to start Minecraft with EE3.
3. To verify, check if a file name `CHANGELOG` exists inside the `mcp` directory.
4. Get a clean (unmodded!) copy of minecraft's `bin` folder. Currently EE3 runs on 1.4.5 but that might have changed.
5. From your `.minecraft` directory (on Windows, defaults to `%appdata%\.minecraft`), copy the `bin` and the `resources` (I don't think you need resources on Windows 7) directory to the `jars` directory inside `mcp`. (I actually believe Forge's installation might do it for you)
6. Get a clean (unmodded!) copy of `minecraft_server.jar` and also place it into `jars`. (Forge might do this for you)
7. Download the latest forge **source** for Minecraft 1.4.5 and unzip it into `mcp` so that `mcp/forge/install.sh` exists. You need at least Forge 6.4.0, best way is to get it from [here] (http://files.minecraftforge.net/).
8. Execute `install.sh` (Linux and Mac?) or `install.cmd` (Windows), both found in `mcdev/mcp/forge`. On Linux you might have to `chmod +x` `install.sh` before you can execute it. On some system configurations you need to execute `install.sh` from within the `forge` directory whereas on others it doesn't matter. Just check the output for error messages to find out what you need to do.
#### Setup EE3 (Some tested for Linux, some for Windows)
1. Inside `mcdev`, create a directory named `source`. If you're doing this from the default clone directory, make two folders: `source` and `Equivalent-Exchange-3`. Copy and paste the original files into `Equivalent-Exchange-3`, and then move that into `source`.
2. If you haven't already, move/clone `Equivalent-Exchange-3` into `source`.
3. Right now, you should have a directory that looks something like:
***
mcdev
\-mcp
\-mcp stuff blablabla (should have CHANGELOG).
\-forge
\-jars
\-source
\-Equivalent-Exchange-3
\-EE3's files, including build.xml.
***
4. Inside `Equivalent-Exchange-3`, create a new file called `build.properties`.
* Open it up, and type into it the following:
* `dir.development=../../`
* `dir.share=Shared` (or what you want it to be)
* `dir.release=Releases` (what you want it to be)
* `release.minecraft.version=1.4.5` (as of 11/21)
* `release.mod.version=pre2` (or whatever version # want it to be)
5. [FOR WINDOWS] Open up `cmd` by typing `cmd` in Run.
6. [FOR WINDOWS] Navigate to `mcdev\source` by executing `cd mcdev's location\source`.
7. Inside `sources\Equivalent-Exchange-3` execute `ant release`. If you've done everything right, `BUILD SUCCESSFUL` is displayed. If not, you probably did something wrong.
8. Go to `mcdev\source\Equivalent-Exchange-3\Releases\1.4.5\pre2` (or whatever you put into `build.properties` for `dir.release`, `release.minecraft.version`, and `release.mod.version`). You should see a .jar named `ee3-universal-pre2.jar` (or whatever you put into `release.mod.version`).
9. Copy the jar into your Minecraft mods folder, and play Minecraft!
### To Update EE3 (For Windows Only?)
1. Check to see if pahimar updated EE3 since you last compiled. If he/she did, follow these instructions.
2. Open Github.
3. Double-click on pahimar/Equivalent-Exchange-3.
4. At the top, there is a button named `Sync` (or `Refreshing...` if its still checking).
5. Click `Sync`, and wait for it to finish.
6. Re-compile (or move it to `mcdev\source` then re-compile, depending on what you did.)

View file

@ -9,6 +9,7 @@ import cpw.mods.fml.client.registry.ClientRegistry;
import cpw.mods.fml.client.registry.KeyBindingRegistry; import cpw.mods.fml.client.registry.KeyBindingRegistry;
import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry; import cpw.mods.fml.common.registry.LanguageRegistry;
import ee3.client.core.handlers.DrawBlockHighlightHandler;
import ee3.client.core.handlers.KeyBindingHandler; import ee3.client.core.handlers.KeyBindingHandler;
import ee3.client.core.handlers.SoundHandler; import ee3.client.core.handlers.SoundHandler;
import ee3.client.core.helper.KeyBindingHelper; import ee3.client.core.helper.KeyBindingHelper;
@ -39,6 +40,11 @@ public class ClientProxy extends CommonProxy {
KeyBindingRegistry.registerKeyBinding(new KeyBindingHandler()); KeyBindingRegistry.registerKeyBinding(new KeyBindingHandler());
} }
@Override
public void registerDrawBlockHighlightHandler() {
MinecraftForge.EVENT_BUS.register(new DrawBlockHighlightHandler());
}
@Override @Override
public void setKeyBinding(String name, int value) { public void setKeyBinding(String name, int value) {
KeyBindingHelper.addKeyBinding(name, value); KeyBindingHelper.addKeyBinding(name, value);

View file

@ -0,0 +1,17 @@
package ee3.client.core.handlers;
import net.minecraft.src.RenderEngine;
import net.minecraftforge.client.event.DrawBlockHighlightEvent;
import net.minecraftforge.event.ForgeSubscribe;
public class DrawBlockHighlightHandler {
@ForgeSubscribe
public void onDrawBlockHighlightEvent(DrawBlockHighlightEvent event) {
RenderEngine renderEngine = event.context.renderEngine;
// TODO Magic happens here
}
}

View file

@ -17,6 +17,7 @@ import ee3.common.EquivalentExchange3;
import ee3.common.core.helper.LogHelper; import ee3.common.core.helper.LogHelper;
import ee3.common.item.ITransmutationStone; import ee3.common.item.ITransmutationStone;
import ee3.common.item.ModItems; import ee3.common.item.ModItems;
import ee3.common.lib.ConfigurationSettings;
import ee3.common.lib.GuiIds; import ee3.common.lib.GuiIds;
import ee3.common.lib.Reference; import ee3.common.lib.Reference;
import ee3.common.network.PacketEE; import ee3.common.network.PacketEE;
@ -49,7 +50,7 @@ public class KeyBindingHandler extends KeyBindingRegistry.KeyHandler {
if (tickEnd) { if (tickEnd) {
// If we are not in a GUI of any kind, continue execution // If we are not in a GUI of any kind, continue execution
if (FMLClientHandler.instance().getClient().currentScreen == null) { if (FMLClientHandler.instance().getClient().currentScreen == null) {
System.out.println(kb.keyDescription); // TODO Clean this up properly
if (kb.keyDescription == Reference.KEYBINDING_EXTRA) { if (kb.keyDescription == Reference.KEYBINDING_EXTRA) {
ItemStack currentItem = FMLClientHandler.instance().getClient().thePlayer.getCurrentEquippedItem(); ItemStack currentItem = FMLClientHandler.instance().getClient().thePlayer.getCurrentEquippedItem();
@ -59,6 +60,15 @@ public class KeyBindingHandler extends KeyBindingRegistry.KeyHandler {
} }
} }
} }
else if (kb.keyDescription == Reference.KEYBINDING_TOGGLE) {
ItemStack currentItem = FMLClientHandler.instance().getClient().thePlayer.getCurrentEquippedItem();
if (currentItem != null) {
if (currentItem.getItem() instanceof ITransmutationStone) {
ConfigurationSettings.ENABLE_OVERLAY_PHILOSOPHER_STONE = !ConfigurationSettings.ENABLE_OVERLAY_PHILOSOPHER_STONE;
}
}
}
} }
} }

View file

@ -2,15 +2,48 @@ package ee3.client.core.helper;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import net.minecraft.src.Block;
import net.minecraft.src.FontRenderer; import net.minecraft.src.FontRenderer;
import net.minecraft.src.Item; import net.minecraft.src.Item;
import net.minecraft.src.ItemStack; import net.minecraft.src.ItemStack;
import net.minecraft.src.RenderBlocks;
import net.minecraft.src.RenderEngine; import net.minecraft.src.RenderEngine;
import net.minecraft.src.Tessellator; import net.minecraft.src.Tessellator;
public class RenderUtils { public class RenderUtils {
public static void renderItemIntoGUI(FontRenderer fontRenderer, RenderEngine renderEngine, ItemStack stack, int x, int y) { private static int rotationAngle = 0;
public static void renderRotatingBlockIntoGUI(FontRenderer fontRenderer, RenderEngine renderEngine, ItemStack stack, int x, int y, float zLevel, float scale) {
RenderBlocks renderBlocks = new RenderBlocks();
Block block = Block.blocksList[stack.itemID];
renderEngine.bindTexture(renderEngine.getTexture(block.getTextureFile()));
GL11.glPushMatrix();
GL11.glTranslatef((float)(x - 2), (float)(y + 3), -3.0F + zLevel);
GL11.glScalef(10.0F, 10.0F, 10.0F);
GL11.glTranslatef(1.0F, 0.5F, 1.0F);
GL11.glScalef(1.0F * scale, 1.0F * scale, -1.0F);
GL11.glRotatef(210.0F, 1.0F, 0.0F, 0.0F);
GL11.glRotatef(0F + 1 * rotationAngle, 0.0F, 1.0F, 0.0F);
rotationAngle = (rotationAngle + 1) % 360;
int var10 = Item.itemsList[stack.itemID].getColorFromItemStack(stack, 0);
float var16 = (float)(var10 >> 16 & 255) / 255.0F;
float var12 = (float)(var10 >> 8 & 255) / 255.0F;
float var13 = (float)(var10 & 255) / 255.0F;
GL11.glColor4f(var16, var12, var13, 1.0F);
GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F);
renderBlocks.useInventoryTint = true;
renderBlocks.renderBlockAsItem(block, stack.getItemDamage(), 1.0F);
renderBlocks.useInventoryTint = true;
GL11.glPopMatrix();
}
public static void renderItemIntoGUI(FontRenderer fontRenderer, RenderEngine renderEngine, ItemStack stack, int x, int y, float opacity, float scale) {
int itemID = stack.itemID; int itemID = stack.itemID;
int meta = stack.getItemDamage(); int meta = stack.getItemDamage();
@ -25,16 +58,20 @@ public class RenderUtils {
float var16 = (float) (overlayColour >> 8 & 255) / 255.0F; float var16 = (float) (overlayColour >> 8 & 255) / 255.0F;
float var12 = (float) (overlayColour & 255) / 255.0F; float var12 = (float) (overlayColour & 255) / 255.0F;
GL11.glColor4f(var17, var16, var12, 1.0F); GL11.glColor4f(var17, var16, var12, opacity);
drawTexturedQuad(x, y, iconIndex % 16 * 16*4, iconIndex / 16 * 16*4, 16*4, 16*4, -90); drawTexturedQuad(x, y, iconIndex % 16 * 16, iconIndex / 16 * 16, 16, 16, -90, scale);
GL11.glEnable(GL11.GL_LIGHTING); GL11.glEnable(GL11.GL_LIGHTING);
} }
public static void drawTexturedQuad(int x, int y, int u, int v, int width, int height, double zLevel) { public static void drawTexturedQuad(int x, int y, int u, int v, int width, int height, double zLevel, float scale) {
float var7 = 0.00390625F/4; u = (int) (u * scale);
float var8 = 0.00390625F/4; v = (int) (v * scale);
width = (int) (width * scale);
height = (int) (height * scale);
float var7 = 0.00390625F/scale;
float var8 = 0.00390625F/scale;
Tessellator var9 = Tessellator.instance; Tessellator var9 = Tessellator.instance;
var9.startDrawingQuads(); var9.startDrawingQuads();
var9.addVertexWithUV(x + 0, y + height, zLevel, (u + 0) * var7, (v + height) * var8); var9.addVertexWithUV(x + 0, y + height, zLevel, (u + 0) * var7, (v + height) * var8);

View file

@ -108,6 +108,9 @@ public class EquivalentExchange3 {
// Register the EntityLiving Handler // Register the EntityLiving Handler
MinecraftForge.EVENT_BUS.register(new EntityLivingHandler()); MinecraftForge.EVENT_BUS.register(new EntityLivingHandler());
// Register the DrawBlockHighlight Handler
proxy.registerDrawBlockHighlightHandler();
// Initialize mod blocks // Initialize mod blocks
ModBlocks.init(); ModBlocks.init();

View file

@ -10,6 +10,7 @@ import ee3.client.gui.GuiPortableCrafting;
import ee3.common.container.ContainerCalcinator; import ee3.common.container.ContainerCalcinator;
import ee3.common.container.ContainerPortableCrafting; import ee3.common.container.ContainerPortableCrafting;
import ee3.common.lib.GuiIds; import ee3.common.lib.GuiIds;
import ee3.common.lib.Strings;
import ee3.common.tile.TileCalcinator; import ee3.common.tile.TileCalcinator;
/** /**
@ -26,6 +27,8 @@ public class CommonProxy implements IGuiHandler {
public void registerKeyBindingHandler() {} public void registerKeyBindingHandler() {}
public void registerDrawBlockHighlightHandler() {}
public void setKeyBinding(String name, int value) {} public void setKeyBinding(String name, int value) {}
public void registerSoundHandler() {} public void registerSoundHandler() {}
@ -39,8 +42,7 @@ public class CommonProxy implements IGuiHandler {
public void initRenderingAndTextures() {} public void initRenderingAndTextures() {}
public void initTileEntities() { public void initTileEntities() {
// TODO: Constant GameRegistry.registerTileEntity(TileCalcinator.class, Strings.TE_CALCINATOR_NAME);
GameRegistry.registerTileEntity(TileCalcinator.class, "tileCalcinator");
} }
@Override @Override

View file

@ -26,6 +26,7 @@ import static net.minecraftforge.common.Configuration.*;
public class ConfigurationHandler { public class ConfigurationHandler {
private static final String CATEGORY_KEYBIND = "keybinds"; private static final String CATEGORY_KEYBIND = "keybinds";
private static final String CATEGORY_GRAPHICS = "graphics";
public static void init(File configFile) { public static void init(File configFile) {
Configuration configuration = new Configuration(configFile); Configuration configuration = new Configuration(configFile);
@ -35,14 +36,11 @@ public class ConfigurationHandler {
/* General Configs */ /* General Configs */
ConfigurationSettings.ENABLE_VERSION_CHECK = configuration ConfigurationSettings.ENABLE_VERSION_CHECK = configuration
.get(CATEGORY_GENERAL, Reference.ENABLE_VERSION_CHECK, ConfigurationSettings.ENABLE_VERSION_CHECK_DEFAULT) .get(CATEGORY_GENERAL, ConfigurationSettings.ENABLE_VERSION_CHECK_CONFIGNAME, ConfigurationSettings.ENABLE_VERSION_CHECK_DEFAULT)
.getBoolean(ConfigurationSettings.ENABLE_VERSION_CHECK_DEFAULT); .getBoolean(ConfigurationSettings.ENABLE_VERSION_CHECK_DEFAULT);
ConfigurationSettings.ENABLE_SOUNDS = configuration ConfigurationSettings.ENABLE_SOUNDS = configuration
.get(CATEGORY_GENERAL, Reference.ENABLE_SOUNDS, ConfigurationSettings.ENABLE_SOUNDS_DEFAULT) .get(CATEGORY_GENERAL, ConfigurationSettings.ENABLE_SOUNDS_CONFIGNAME, ConfigurationSettings.ENABLE_SOUNDS_DEFAULT)
.getBoolean(ConfigurationSettings.ENABLE_SOUNDS_DEFAULT); .getBoolean(ConfigurationSettings.ENABLE_SOUNDS_DEFAULT);
ConfigurationSettings.ENABLE_PARTICLE_FX = configuration
.get(CATEGORY_GENERAL, Reference.ENABLE_PARTICLE_FX, ConfigurationSettings.ENABLE_PARTICLE_FX_DEFAULT)
.getBoolean(ConfigurationSettings.ENABLE_PARTICLE_FX_DEFAULT);
ConfigurationSettings.MINIUM_STONE_TRANSMUTE_COST = configuration ConfigurationSettings.MINIUM_STONE_TRANSMUTE_COST = configuration
.get(CATEGORY_GENERAL, ConfigurationSettings.MINIUM_STONE_TRANSMUTE_COST_CONFIGNAME, ConfigurationSettings.MINIUM_STONE_TRANSMUTE_COST_DEFAULT) .get(CATEGORY_GENERAL, ConfigurationSettings.MINIUM_STONE_TRANSMUTE_COST_CONFIGNAME, ConfigurationSettings.MINIUM_STONE_TRANSMUTE_COST_DEFAULT)
.getInt(ConfigurationSettings.MINIUM_STONE_TRANSMUTE_COST_DEFAULT); .getInt(ConfigurationSettings.MINIUM_STONE_TRANSMUTE_COST_DEFAULT);
@ -50,9 +48,17 @@ public class ConfigurationHandler {
.get(CATEGORY_GENERAL, ConfigurationSettings.MINIUM_STONE_MAX_DURABILITY_CONFIGNAME, ConfigurationSettings.MINIUM_STONE_MAX_DURABILITY_DEFAULT) .get(CATEGORY_GENERAL, ConfigurationSettings.MINIUM_STONE_MAX_DURABILITY_CONFIGNAME, ConfigurationSettings.MINIUM_STONE_MAX_DURABILITY_DEFAULT)
.getInt(ConfigurationSettings.MINIUM_STONE_MAX_DURABILITY_DEFAULT); .getInt(ConfigurationSettings.MINIUM_STONE_MAX_DURABILITY_DEFAULT);
/* Graphics/Rendering Configs */
ConfigurationSettings.ENABLE_PARTICLE_FX = configuration
.get(CATEGORY_GENERAL, ConfigurationSettings.ENABLE_PARTICLE_FX_CONFIGNAME, ConfigurationSettings.ENABLE_PARTICLE_FX_DEFAULT)
.getBoolean(ConfigurationSettings.ENABLE_PARTICLE_FX_DEFAULT);
ConfigurationSettings.ENABLE_OVERLAY_PHILOSOPHER_STONE = configuration
.get(CATEGORY_GENERAL, ConfigurationSettings.ENABLE_OVERLAY_PHILOSOPHER_STONE_CONFIGNAME, ConfigurationSettings.ENABLE_OVERLAY_PHILOSOPHER_STONE_DEFAULT)
.getBoolean(ConfigurationSettings.ENABLE_OVERLAY_PHILOSOPHER_STONE_DEFAULT);
/* Block Configs */ /* Block Configs */
ConfigurationSettings.AUTO_RESOLVE_BLOCK_IDS = configuration ConfigurationSettings.AUTO_RESOLVE_BLOCK_IDS = configuration
.get(CATEGORY_BLOCK, Reference.AUTO_RESOLVE_BLOCK_IDS, ConfigurationSettings.AUTO_RESOLVE_BLOCK_IDS_DEFAULT) .get(CATEGORY_BLOCK, ConfigurationSettings.AUTO_RESOLVE_BLOCK_IDS_CONFIGNAME, ConfigurationSettings.AUTO_RESOLVE_BLOCK_IDS_DEFAULT)
.getBoolean(ConfigurationSettings.AUTO_RESOLVE_BLOCK_IDS_DEFAULT); .getBoolean(ConfigurationSettings.AUTO_RESOLVE_BLOCK_IDS_DEFAULT);
BlockIds.CALCINATOR = configuration BlockIds.CALCINATOR = configuration
.getBlock(Strings.CALCINATOR_NAME, BlockIds.CALCINATOR_DEFAULT) .getBlock(Strings.CALCINATOR_NAME, BlockIds.CALCINATOR_DEFAULT)

View file

@ -6,8 +6,12 @@ import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12; import org.lwjgl.opengl.GL12;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.src.Block;
import net.minecraft.src.EntityItem;
import net.minecraft.src.EntityPlayer; import net.minecraft.src.EntityPlayer;
import net.minecraft.src.ItemBlock;
import net.minecraft.src.ItemStack; import net.minecraft.src.ItemStack;
import net.minecraft.src.MovingObjectPosition;
import net.minecraft.src.RenderHelper; import net.minecraft.src.RenderHelper;
import net.minecraft.src.RenderItem; import net.minecraft.src.RenderItem;
import net.minecraft.src.ScaledResolution; import net.minecraft.src.ScaledResolution;
@ -15,9 +19,11 @@ import net.minecraft.src.ScaledResolution;
import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.client.FMLClientHandler;
import cpw.mods.fml.common.ITickHandler; import cpw.mods.fml.common.ITickHandler;
import cpw.mods.fml.common.TickType; import cpw.mods.fml.common.TickType;
import ee3.client.core.handlers.DrawBlockHighlightHandler;
import ee3.client.core.helper.RenderUtils; import ee3.client.core.helper.RenderUtils;
import ee3.common.core.helper.TransmutationHelper;
import ee3.common.core.helper.VersionHelper; import ee3.common.core.helper.VersionHelper;
import ee3.common.item.ItemPhilosopherStone; import ee3.common.item.ITransmutationStone;
import ee3.common.lib.ConfigurationSettings; import ee3.common.lib.ConfigurationSettings;
import ee3.common.lib.Reference; import ee3.common.lib.Reference;
@ -40,7 +46,7 @@ public class RenderTickHandler implements ITickHandler {
currentItemStack = player.inventory.getCurrentItem(); currentItemStack = player.inventory.getCurrentItem();
} }
if ((player != null) && (currentItemStack != null) && (minecraft.inGameHasFocus) && (currentItemStack.getItem() instanceof ItemPhilosopherStone)) { if ((player != null) && (currentItemStack != null) && (minecraft.inGameHasFocus) && (currentItemStack.getItem() instanceof ITransmutationStone) && (ConfigurationSettings.ENABLE_OVERLAY_PHILOSOPHER_STONE)) {
renderStoneHUD(minecraft, player, currentItemStack, (Float) tickData[0]); renderStoneHUD(minecraft, player, currentItemStack, (Float) tickData[0]);
} }
} }
@ -60,10 +66,18 @@ public class RenderTickHandler implements ITickHandler {
private static void renderStoneHUD(Minecraft minecraft, EntityPlayer player, ItemStack stack, float partialTicks) { private static void renderStoneHUD(Minecraft minecraft, EntityPlayer player, ItemStack stack, float partialTicks) {
int loc = player.inventory.currentItem*20; float overlayScale = 2F; // TODO config option
int shift = player.capabilities.isCreativeMode?0:20; float blockScale = overlayScale / 2;
GL11.glPushMatrix(); float overlayOpacity = 1F; // TODO config option
MovingObjectPosition rayTrace = minecraft.objectMouseOver;
ItemStack currentBlock = null;
if ((player.worldObj != null) && (rayTrace != null)) {
currentBlock = TransmutationHelper.getNextBlock(player.worldObj.getBlockId(rayTrace.blockX, rayTrace.blockY, rayTrace.blockZ), player.worldObj.getBlockMetadata(rayTrace.blockX, rayTrace.blockY, rayTrace.blockZ), true);
}
GL11.glPushMatrix();
ScaledResolution sr = new ScaledResolution(minecraft.gameSettings, minecraft.displayWidth, minecraft.displayHeight); ScaledResolution sr = new ScaledResolution(minecraft.gameSettings, minecraft.displayWidth, minecraft.displayHeight);
GL11.glClear(256); GL11.glClear(256);
GL11.glMatrixMode(GL11.GL_PROJECTION); GL11.glMatrixMode(GL11.GL_PROJECTION);
@ -72,8 +86,6 @@ public class RenderTickHandler implements ITickHandler {
GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glLoadIdentity(); GL11.glLoadIdentity();
GL11.glTranslatef(0.0F, 0.0F, -2000.0F); GL11.glTranslatef(0.0F, 0.0F, -2000.0F);
int k = sr.getScaledWidth();
int l = sr.getScaledHeight();
GL11.glPushMatrix(); GL11.glPushMatrix();
RenderHelper.enableGUIStandardItemLighting(); RenderHelper.enableGUIStandardItemLighting();
@ -81,12 +93,13 @@ public class RenderTickHandler implements ITickHandler {
GL11.glEnable(GL12.GL_RESCALE_NORMAL); GL11.glEnable(GL12.GL_RESCALE_NORMAL);
GL11.glEnable(GL11.GL_COLOR_MATERIAL); GL11.glEnable(GL11.GL_COLOR_MATERIAL);
GL11.glEnable(GL11.GL_LIGHTING); GL11.glEnable(GL11.GL_LIGHTING);
RenderItem itemRenderer = new RenderItem(); RenderItem renderItem = new RenderItem();
RenderUtils.renderItemIntoGUI(minecraft.fontRenderer, minecraft.renderEngine, stack, 0, 0); RenderUtils.renderItemIntoGUI(minecraft.fontRenderer, minecraft.renderEngine, stack, (int) (sr.getScaledWidth() - (16 * overlayScale)), (int) (sr.getScaledHeight() - (16 * overlayScale)), overlayOpacity / 2, overlayScale);
//itemRenderer.renderItemIntoGUI(minecraft.fontRenderer, minecraft.renderEngine, stack, 0, 0); if ((currentBlock != null) && (currentBlock.getItem() instanceof ItemBlock)) {
RenderUtils.renderRotatingBlockIntoGUI(minecraft.fontRenderer, minecraft.renderEngine, currentBlock, (int) (sr.getScaledWidth() - (16 * overlayScale) / 2 - 8), (int) (sr.getScaledHeight() - (16 * overlayScale) / 2 - 8), -90, blockScale);
}
GL11.glDisable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_LIGHTING);
GL11.glPopMatrix(); GL11.glPopMatrix();
GL11.glPopMatrix(); GL11.glPopMatrix();
} }

View file

@ -18,20 +18,32 @@ public class ConfigurationSettings {
*/ */
// Whether or not automatic block id resolution for EE3 is turned on or off // Whether or not automatic block id resolution for EE3 is turned on or off
public static boolean AUTO_RESOLVE_BLOCK_IDS; public static boolean AUTO_RESOLVE_BLOCK_IDS;
public static final String ENABLE_VERSION_CHECK_CONFIGNAME = "enable_version_check";
public static final boolean AUTO_RESOLVE_BLOCK_IDS_DEFAULT = false; public static final boolean AUTO_RESOLVE_BLOCK_IDS_DEFAULT = false;
// Whether or not EE3 sounds are enabled // Whether or not EE3 sounds are enabled
public static boolean ENABLE_SOUNDS; public static boolean ENABLE_SOUNDS;
public static final String ENABLE_SOUNDS_CONFIGNAME = "enable_sounds";
public static final boolean ENABLE_SOUNDS_DEFAULT = true; public static final boolean ENABLE_SOUNDS_DEFAULT = true;
// Whether or not EE3 particle fx are enabled
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 // Whether or not EE3 will do a version check when loaded
public static boolean ENABLE_VERSION_CHECK; public static boolean ENABLE_VERSION_CHECK;
public static final String AUTO_RESOLVE_BLOCK_IDS_CONFIGNAME = "auto_resolve_block_ids";
public static final boolean ENABLE_VERSION_CHECK_DEFAULT = true; public static final boolean ENABLE_VERSION_CHECK_DEFAULT = true;
/*
* Render config settings
*/
// Whether or not EE3 particle fx are enabled
public static boolean ENABLE_PARTICLE_FX;
public static final String ENABLE_PARTICLE_FX_CONFIGNAME = "enable_particle_fx";
public static final boolean ENABLE_PARTICLE_FX_DEFAULT = true;
// Whether or not the Philosopher Stone overlay is enabled
public static boolean ENABLE_OVERLAY_PHILOSOPHER_STONE;
public static final String ENABLE_OVERLAY_PHILOSOPHER_STONE_CONFIGNAME = "enable_philosopher_stone_overlay";
public static final boolean ENABLE_OVERLAY_PHILOSOPHER_STONE_DEFAULT = true;
/* /*
* Minium stone config settings * Minium stone config settings
*/ */

View file

@ -31,7 +31,8 @@ public class Localizations {
LANG_RESOURCE_LOCATION + "ru_RU.xml", LANG_RESOURCE_LOCATION + "ru_RU.xml",
LANG_RESOURCE_LOCATION + "sr_RS.xml", LANG_RESOURCE_LOCATION + "sr_RS.xml",
LANG_RESOURCE_LOCATION + "sv_SE.xml", LANG_RESOURCE_LOCATION + "sv_SE.xml",
LANG_RESOURCE_LOCATION + "zh_CN.xml" LANG_RESOURCE_LOCATION + "zh_CN.xml",
LANG_RESOURCE_LOCATION + "zh_TW.xml"
}; };
} }

View file

@ -24,12 +24,6 @@ public class Reference {
public static final String SERVER_PROXY_CLASS = "ee3.common.core.CommonProxy"; public static final String SERVER_PROXY_CLASS = "ee3.common.core.CommonProxy";
public static final String CLIENT_PROXY_CLASS = "ee3.client.core.ClientProxy"; public static final String CLIENT_PROXY_CLASS = "ee3.client.core.ClientProxy";
/* 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";
/* KeyBinding related constants */ /* KeyBinding related constants */
public static final String KEYBINDING_EXTRA = "key.extra"; public static final String KEYBINDING_EXTRA = "key.extra";
public static final int KEYBINDING_EXTRA_DEFAULT = 46; public static final int KEYBINDING_EXTRA_DEFAULT = 46;

View file

@ -26,4 +26,7 @@ public class Strings {
public static final String PHILOSOPHER_STONE_NAME = "philStone"; public static final String PHILOSOPHER_STONE_NAME = "philStone";
public static final String ALCHEMY_DUST_NAME = "alchemyDust"; public static final String ALCHEMY_DUST_NAME = "alchemyDust";
/* TileEntity name constants */
public static final String TE_CALCINATOR_NAME = "tileCalcinator";
} }

View file

@ -23,7 +23,7 @@
<entry key="itemGroup.EE3">Equivalent Exchange 3</entry> <entry key="itemGroup.EE3">Equivalent Exchange 3</entry>
<entry key="version.init_log_message">Inicializando chequeo de versión contra el archivo autoritario remoto, ubicado en</entry> <entry key="version.init_log_message">Inicializando chequeo de versión contra el archivo autoritario remoto, ubicado en</entry>
<entry key="version.uninitialized">El chequeo de versiones no se completó exitosamente (el chequeo de versiones no se inicializó correctamente)</entry> <entry key="version.uninitialized">El chequeo de versiones no se completó exitosamente (el chequeo de versiones no se inicializó correctamente)</entry>
<entry key="version.current">Actualmente estás usando la versión más actualizada para tu versión de Minecraft</entry> <entry key="version.current">Actualmente estás usando la versión de Equivalent Exchange 3 (@REMOTE_MOD_VERSION) más actualizada para @MINECRAFT_VERSION@</entry>
<entry key="version.outdated">Actualmente estás usando una versión desactualizada; considera actualizarla aquí - @MOD_UPDATE_LOCATION@</entry> <entry key="version.outdated">Actualmente estás usando una versión desactualizada; considera actualizarla aquí - @MOD_UPDATE_LOCATION@</entry>
<entry key="version.connection_error">Error al conectar con el archivo autoritario remoto (¿Comprueba tu conexión a internet?)</entry> <entry key="version.connection_error">Error al conectar con el archivo autoritario remoto (¿Comprueba tu conexión a internet?)</entry>
<entry key="version.check_disabled">Chequeo remoto de versiones desactivado, omitiendo</entry> <entry key="version.check_disabled">Chequeo remoto de versiones desactivado, omitiendo</entry>

View file

@ -1,4 +1,4 @@
?<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties version="1.0"> <properties version="1.0">
<comment>Brazilian Portuguese(pt-BR) Localization File</comment> <comment>Brazilian Portuguese(pt-BR) Localization File</comment>
@ -11,20 +11,20 @@
<entry key="item.miniumStone.name">Pedra de Minium</entry> <entry key="item.miniumStone.name">Pedra de Minium</entry>
<entry key="item.philStone.name">Pedra Filosofal</entry> <entry key="item.philStone.name">Pedra Filosofal</entry>
<entry key="item.alchemyDust.ash.name">Cinzas</entry> <entry key="item.alchemyDust.ash.name">Cinzas</entry>
<entry key="item.alchemyDust.minium.name">Pó de Minium</entry> <entry key="item.alchemyDust.minium.name">Pó de Minium</entry>
<entry key="item.alchemyDust.verdant.name">Pó Verdejante</entry> <entry key="item.alchemyDust.verdant.name">Pó Verdejante</entry>
<entry key="item.alchemyDust.azure.name">Pó Índigo</entry> <entry key="item.alchemyDust.azure.name">Pó Índigo</entry>
<entry key="item.alchemyDust.amaranthine.name">Pó Amarantino</entry> <entry key="item.alchemyDust.amaranthine.name">Pó Amarantino</entry>
<entry key="item.alchemyDust.iridescent.name">Pó Iridescente</entry> <entry key="item.alchemyDust.iridescent.name">Pó Iridescente</entry>
<entry key="tile.redWaterStill.name">Água Vermelha (Parada)</entry> <entry key="tile.redWaterStill.name">Água Vermelha (Parada)</entry>
<entry key="tile.redWaterFlowing.name">Água Vermelha (Corrente)</entry> <entry key="tile.redWaterFlowing.name">Água Vermelha (Corrente)</entry>
<entry key="tile.calcinator.name">Calcinador</entry> <entry key="tile.calcinator.name">Calcinador</entry>
<entry key="gui.calcinator.name">Calcinador</entry> <entry key="gui.calcinator.name">Calcinador</entry>
<entry key="itemGroup.EE3">Equivalent Exchange 3</entry> <entry key="itemGroup.EE3">Equivalent Exchange 3</entry>
<entry key="version.init_log_message">Inicializando checagem de versão remota contra a versão remota mestre, localizada em:</entry> <entry key="version.init_log_message">Inicializando checagem de versão remota contra a versão remota mestre, localizada em:</entry>
<entry key="version.uninitialized">Checagem de versão remota não conseguiu ser inicializada adequadamente</entry> <entry key="version.uninitialized">Checagem de versão remota não conseguiu ser inicializada adequadamente</entry>
<entry key="version.current">Usando a versão mais recente(@REMOTE_MOD_VERSION@) de Equivalent Exchange 3 para @MINECRAFT_VERSION@</entry> <entry key="version.current">Usando a versão mais recente(@REMOTE_MOD_VERSION@) de Equivalent Exchange 3 para @MINECRAFT_VERSION@</entry>
<entry key="version.outdated">Uma nova versão de @MOD_NAME@ existe (@REMOTE_MOD_VERSION@) para @MINECRAFT_VERSION@. Consiga-a aqui: @MOD_UPDATE_LOCATION@</entry> <entry key="version.outdated">Uma nova versão de @MOD_NAME@ existe (@REMOTE_MOD_VERSION@) para @MINECRAFT_VERSION@. Consiga-a aqui: @MOD_UPDATE_LOCATION@</entry>
<entry key="version.general_error">Erro checando a versão remota mestre</entry> <entry key="version.general_error">Erro checando a versão remota mestre</entry>
<entry key="version.check_disabled">Checagem remota desligada, pulando</entry> <entry key="version.check_disabled">Checagem remota desligada, pulando</entry>
</properties> </properties>

View file

@ -10,15 +10,21 @@
<entry key="item.inertStone.name">Инерт Камен</entry> <entry key="item.inertStone.name">Инерт Камен</entry>
<entry key="item.miniumStone.name">Миниум Камен</entry> <entry key="item.miniumStone.name">Миниум Камен</entry>
<entry key="item.philStone.name">Философ'сКи Камен</entry> <entry key="item.philStone.name">Философ'сКи Камен</entry>
<entry key="item.alchemyDust.ash.name">Пепео</entry>
<entry key="item.alchemyDust.minium.name">Minium Прашина</entry>
<entry key="item.alchemyDust.verdant.name">Зелена Прашина</entry>
<entry key="item.alchemyDust.azure.name">Плава Пашина</entry>
<entry key="item.alchemyDust.amaranthine.name">Неувенљива Прашина</entry>
<entry key="item.alchemyDust.iridescent.name">Преливач боја Прашина </entry>
<entry key="tile.redWaterStill.name">Црвена Вода (Извор)</entry> <entry key="tile.redWaterStill.name">Црвена Вода (Извор)</entry>
<entry key="tile.redWaterFlowing.name">Црвена Вода (Текућа)</entry> <entry key="tile.redWaterFlowing.name">Црвена Вода (Текућа)</entry>
<entry key="tile.calcinator.name">Цалцинатор</entry> <entry key="tile.calcinator.name">Цалцинатор</entry>
<entry key="gui.calcinator.name">Цалцинатор</entry> <entry key="gui.calcinator.name">Цалцинатор</entry>
<entry key="itemGroup.EE3">Иста Размена 3</entry> <entry key="itemGroup.EE3">Иста Размена 3</entry>
<entry key="version.init_log_message">Покретање верзије провера према Приступу удаљеним фајловима верзије ауторитета, који се налази у</entry> <entry key="version.init_log_message">Покретање верзије провера према приступу удаљеним фајловима верзије ауторитета, који се налази у</entry>
<entry key="version.uninitialized">Провера Верзије није успешно завршена (верзија провере није покренута правилно)</entry> <entry key="version.uninitialized">Провера Верзије није успешно завршена (верзија провере није покренута правилно)</entry>
<entry key="version.current">Ви тренутно користите најновију верзију за мајнкрафт</entry> <entry key="version.current">Ви тренутно користите најновију верзинју (@REMOTE_MOD_VERSION@) од Исте Замене 3 за @MINECRAFT_VERSION@</entry>
<entry key="version.outdated">Ви тренутно користите застарелу верзију; Размотрити надоградљу на - @MOD_UPDATE_LOCATION@</entry> <entry key="version.outdated">Нова @MOD_NAME@ верзија постоји (@REMOTE_MOD_VERSION@) за @MINECRAFT_VERSION@. Узмите овде: @MOD_UPDATE_LOCATION@</entry>
<entry key="version.connection_error">Грешка у повезивању удаљене верзије ауторетета податка (Погледајте вашу конекцију?)</entry> <entry key="version.connection_error">Грешка у повезивању удаљене верзије ауторетета податка (Погледајте вашу конекцију?)</entry>
<entry key="version.check_disabled">Провера верзије је искључено, Прескочено</entry> <entry key="version.check_disabled">Провера верзије је искључено, Прескочено</entry>
</properties> </properties>

View file

@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties version="1.0"> <properties version="1.0">
<comment>Chinese (Simplified) Localization File</comment> <comment>Chinese (Simplified)(zh_CN) Localization File</comment>
<entry key="key.extra">Extra</entry>
<entry key="key.release">松开</entry>
<entry key="key.toggle">切换</entry>
<entry key="key.charge"></entry>
<entry key="item.miniumShard.name">铅丹碎片</entry> <entry key="item.miniumShard.name">铅丹碎片</entry>
<entry key="item.inertStone.name">惰性石</entry> <entry key="item.inertStone.name">惰性石</entry>
<entry key="item.miniumStone.name">铅丹石</entry> <entry key="item.miniumStone.name">铅丹石</entry>
@ -10,4 +14,17 @@
<entry key="tile.redWaterFlowing.name">红水 (流动)</entry> <entry key="tile.redWaterFlowing.name">红水 (流动)</entry>
<entry key="tile.calcinator.name">煅烧炉</entry> <entry key="tile.calcinator.name">煅烧炉</entry>
<entry key="gui.calcinator.name">煅烧炉</entry> <entry key="gui.calcinator.name">煅烧炉</entry>
<entry key="item.alchemyDust.ash.name"></entry>
<entry key="item.alchemyDust.minium.name">铅丹灰</entry>
<entry key="item.alchemyDust.verdant.name">玉灰</entry>
<entry key="item.alchemyDust.azure.name">蔚蓝灰</entry>
<entry key="item.alchemyDust.amaranthine.name">苋属灰</entry>
<entry key="item.alchemyDust.iridescent.name">虹彩灰</entry>
<entry key="itemGroup.EE3">Equivalent Exchange 3</entry>
<entry key="version.init_log_message">Initializing version check against the remote version authority file, located at</entry>
<entry key="version.uninitialized">The version check did not complete successfully (version check did not initialize properly)</entry>
<entry key="version.current">你现在在用@MINECRAFT_VERSION@的Equivalent Exchange 3的最新的现代化 (@REMOTE_MOD_VERSION@)。</entry>
<entry key="version.outdated">A new @MOD_NAME@ version exists (@REMOTE_MOD_VERSION@) for @MINECRAFT_VERSION@. 请更新: @MOD_UPDATE_LOCATION@</entry>
<entry key="version.connection_error">Error connecting to the remote version authority file (check your Internet connection?)</entry>
<entry key="version.check_disabled">Remote version check disabled, skipping</entry>
</properties> </properties>

View file

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties version="1.0">
<comment>Chinese (Traditional)(zh_TW) Localization File</comment>
<entry key="key.extra">Extra</entry>
<entry key="key.release">鬆開</entry>
<entry key="key.toggle">切換</entry>
<entry key="key.charge"></entry>
<entry key="item.miniumShard.name">鉛丹碎片</entry>
<entry key="item.inertStone.name">惰性石</entry>
<entry key="item.miniumStone.name">鉛丹石</entry>
<entry key="item.philStone.name">聖人石</entry>
<entry key="tile.redWaterStill.name">紅水 (靜止)</entry>
<entry key="tile.redWaterFlowing.name">紅水 (流動)</entry>
<entry key="tile.calcinator.name">煅燒爐</entry>
<entry key="gui.calcinator.name">煅燒爐</entry>
<entry key="item.alchemyDust.ash.name"></entry>
<entry key="item.alchemyDust.minium.name">鉛丹灰</entry>
<entry key="item.alchemyDust.verdant.name">玉灰</entry>
<entry key="item.alchemyDust.azure.name">蔚藍灰</entry>
<entry key="item.alchemyDust.amaranthine.name">莧屬灰</entry>
<entry key="item.alchemyDust.iridescent.name">虹彩灰</entry>
<entry key="itemGroup.EE3">Equivalent Exchange 3</entry>
<entry key="version.init_log_message">Initializing version check against the remote version authority file, located at</entry>
<entry key="version.uninitialized">The version check did not complete successfully (version check did not initialize properly)</entry>
<entry key="version.current">你現在在用@MINECRAFT_VERSION@的Equivalent Exchange 3的最新的現代化 (@REMOTE_MOD_VERSION@)。</entry>
<entry key="version.outdated">A new @MOD_NAME@ version exists (@REMOTE_MOD_VERSION@) for @MINECRAFT_VERSION@. 請更新: http://goo.gl/sNcGl</entry>
<entry key="version.connection_error">Error connecting to the remote version authority file (check your Internet connection?)</entry>
<entry key="version.check_disabled">Remote version check disabled, skipping</entry>
</properties>