diff --git a/.classpath b/.classpath
deleted file mode 100644
index 2af1d2f7..00000000
--- a/.classpath
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/.gitattributes b/.gitattributes
index 6fadbded..813e896e 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,22 +1,16 @@
-# Auto detect text files and perform LF normalization
+# text stuff
*.java text
+*.sh text eol=lf
+*.bat text eol=crlf
+*.md text
-# Custom for Visual Studio
-*.cs diff=csharp
-*.sln merge=union
-*.csproj merge=union
-*.vbproj merge=union
-*.fsproj merge=union
-*.dbproj merge=union
-
-# Standard to msysgit
-*.doc diff=astextplain
-*.DOC diff=astextplain
-*.docx diff=astextplain
-*.DOCX diff=astextplain
-*.dot diff=astextplain
-*.DOT diff=astextplain
-*.pdf diff=astextplain
-*.PDF diff=astextplain
-*.rtf diff=astextplain
-*.RTF diff=astextplain
+#binary
+*.dat binary
+*.bin binary
+*.png binary
+*.exe binary
+*.dll binary
+*.zip binary
+*.jar binary
+*.7z binary
+*.db binary
diff --git a/.gitignore b/.gitignore
index ff007088..47becfaa 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,15 @@
-/bin
-/build
-/download
+#eclipse
+.project
+.classpath
+.metadata
+bin
+
+#idea
+*.iml
+.idea
+out
+
+#gradle
+build
+.gradle
+
diff --git a/.project b/.project
deleted file mode 100644
index d2bbeb49..00000000
--- a/.project
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
- BuildCraft
-
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
-
- org.eclipse.jdt.core.javanature
-
-
-
- common/assets
- 2
- PROJECT_LOC/buildcraft_resources/assets
-
-
-
diff --git a/README.md b/README.md
index a5d3ec71..b1f2e8e9 100644
--- a/README.md
+++ b/README.md
@@ -31,39 +31,40 @@ less time coding and more time doing stuff that makes them less grumpy.
* Render issue (Quarry causes flickering) - Try without optifine, if it still flickers, report it
### Compiling and packaging Buildcraft
-1. Ensure that `Apache Ant` (found [here](http://ant.apache.org/)) and `Git` (found [here](http://git-scm.com/)) are installed correctly on your system.
- * Linux users will need the latest version of astyle installed as well.
+1. Ensure that `Java` (found [here](http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html)), `Git` (found [here](http://git-scm.com/)) are installed correctly on your system.
+ * Optional: Install `Gradle` (found [here](http://www.gradle.org/downloads))
1. Create a base directory for the build
-1. Clone the Buildcraft repository into `basedir/BuildCraft/`
- * Optional: Copy BuildCraft localization repository into `basedir/BuildCraft-Localization`
-1. Navigate to basedir/Buildcraft in a shell and run `ant` (this will take 2-5 minutes)
-1. The compiled and obfuscated jar will be in basedir/bin
+1. Clone the Buildcraft repository into 'baseDir/BuildCraft/'
+ * Optional: Copy BuildCraft localization repository into `baseDir/BuildCraft-Localization`
+1. Navigate to basedir/BuildCraft in a shell and run `gradlew setupCIWorkspace build` (this may take a while).
+ * With `Gradle` installed: use `gradle` instead of `gradlew`
+ * On Windows: use `gradlew.bat` instead of `gradlew`
+1. The compiled and obfuscated jar will be in 'baseDir/BuildCraft/build/libs'
-Your directory structure should look like this before running ant:
+Your directory structure should look like this before running gradle:
***
- basedir
- \- buildcraft
+ baseDir
+ \- BuildCraft
|- buildcraft_resources
|- common
|- ...
- \- buildcraft.localization
+ \- BuildCraft-Localization
|- lang
***
-And like this after running ant:
+And like this after running gradle:
***
basedir
- \- buildcraft
- |- bin
+ \- BuildCraft
+ |- .gradle
|- build
|- buildcraft_resources
|- common
- |- download
|- ...
- \- buildcraft.localization
+ \- BuildCraft-Localization
|- lang
***
@@ -72,3 +73,13 @@ And like this after running ant:
Localizations can be submitted [here](https://github.com/BuildCraft/BuildCraft-Localization). Localization PRs against
this repository will have to be rejected.
+
+### Depending on BuildCraft
+
+add the following to your build.gradle file
+```
+dependencies {
+ compile 'com.mod-buildcraft:BuildCraft:5.0.0.+'
+}
+```
+where `5.0.0` is the desired version of BuildCraft
diff --git a/bc-build.sh b/bc-build.sh
deleted file mode 100755
index 00c56b4a..00000000
--- a/bc-build.sh
+++ /dev/null
@@ -1,51 +0,0 @@
-VERSION=5.0.0
-MC_VERSION=1.7.2
-FORGE_VERSION=10.12.0.1024
-BUILD_NUMBER=58
-
-build_dir=`pwd`/build-$VERSION
-forge_archive=forge-$MC_VERSION-$FORGE_VERSION-src.zip
-
-rm -rf $build_dir
-mkdir $build_dir
-mkdir $build_dir/forge
-
-cd $build_dir/forge
-
-wget http://files.minecraftforge.net/maven/net/minecraftforge/forge/$MC_VERSION-$FORGE_VERSION/$forge_archive
-
-unzip $forge_archive
-
-./gradlew setupDecompWorkspace
-
-rm -rf src/*
-mkdir src/main
-cp -r ../../common src/main/java
-cp -r ../../buildcraft_resources src/main/resources
-
-(
-cd src/main
-for j in `find .` ; do
- if [ ! -d $j ]; then
- case $j in
- *Version.java)
- sed "s/@VERSION@/$VERSION/g" $j > $j.tmp && mv $j.tmp $j
- sed "s/@MC_VERSION@/$MC_VERSION/g" $j > $j.tmp && mv $j.tmp $j
- sed "s/@BUILD_NUMBER@/$BUILD_NUMBER/g" $j > $j.tmp && mv $j.tmp $j
- ;;
- *.info)
- sed "s/@VERSION@/$VERSION/g" $j > $j.tmp && mv $j.tmp $j
- sed "s/@MC_VERSION@/$MC_VERSION/g" $j > $j.tmp && mv $j.tmp $j
- sed "s/@BUILD_NUMBER@/$BUILD_NUMBER/g" $j > $j.tmp && mv $j.tmp $j
- ;;
- esac
- fi
-done
-)
-
-./gradlew reobf
-
-(
-cd build/libs
-mv *.jar $build_dir/buildcraft-$MC_VERSION-$VERSION.jar
-)
diff --git a/build.gradle b/build.gradle
new file mode 100755
index 00000000..9c713084
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,214 @@
+// DONT TOUCH THE BUILDSCTPT[] BLOCK
+// its special, and it is only there to make forgegradle work correctly.
+
+buildscript {
+ repositories {
+ mavenCentral()
+ maven {
+ name = "forge"
+ url = "http://files.minecraftforge.net/maven"
+ }
+ maven {
+ name = "sonatype"
+ url = "https://oss.sonatype.org/content/repositories/snapshots/"
+ }
+ }
+ dependencies {
+ classpath 'net.minecraftforge.gradle:ForgeGradle:1.1-SNAPSHOT'
+ }
+}
+
+apply plugin: 'forge' // adds the forge cuntionality
+apply plugin: 'maven' // for uploading to a mnven repo
+
+// grab buildNumber
+ext.buildnumber = 0 // this will be referenced as simply project.buildnumber from now on.
+
+if (System.getenv().BUILD_NUMBER)
+ project.buildnumber = System.getenv().BUILD_NUMBER
+else
+ logger.lifecycle "SETTING BUILDNUMBER TO 0"
+
+version = "5.0.1"
+group= "com.mod-buildcraft"
+archivesBaseName = "buildcraft" // the name that all artifacts will use as a base. artifacts names follow this pattern: [baseName]-[appendix]-[version]-[classifier].[extension]
+
+minecraft {
+ version = "1.7.2-10.12.0.1029" // McVersion-ForgeVersion this variable is later changed to contain only the MC version, while the apiVersion variable is used for the forge version. Yeah its stupid, and will be changed eentually.
+
+ assetDir = "run/assets" // the palce for FOrgegradle to download the assets. The assets that the launcher gets and stuff
+
+ // replacing stuff in the source
+ replace '@VERSION@', project.version
+ replace '@MC_VERSION@', version
+ replace '@BUILD_NUMBER@', project.buildnumber
+}
+
+// configure the source folders
+sourceSets {
+ main {
+ java {
+ srcDir 'common/buildcraft'
+ // exclude 'some exclusion'
+ // include 'some inclusion'
+ }
+ resources {
+ srcDir 'buildcraft_resources'
+ srcDir '../BuildCraft-Localization'
+ exclude '**/.md' // exclude readme from localization repo
+ // exclude 'some exclusion'
+ // include 'some inclusion'
+
+ }
+ }
+}
+
+processResources
+{
+ // replace stuff in mcmod.info, nothing else
+ from(sourceSets.main.resources.srcDirs) {
+ include 'mcmod.info'
+
+ // replace version and mcversion
+ // ${version} and ${mcversion} are the exact strings bieng replaced
+ expand 'version':project.version, 'mcversion':project.minecraft.version, 'buildnumber':project.buildnumber
+ }
+
+ // copy everything else, thats not the mcmod.info
+ from(sourceSets.main.resources.srcDirs) {
+ exclude 'mcmod.info'
+ }
+}
+
+// --------------------
+// extra jar section
+// -------------------
+
+// for the benfit of the jars, we will now now add the buildnumber to the jars
+project.version += '.' + project.buildnumber
+
+// add a source jar
+task sourceJar(type: Jar) {
+ from sourceSets.main.allSource
+ classifier = 'sources'
+}
+
+// add a javadoc jar
+task javadocJar(type: Jar, dependsOn: javadoc) {
+ classifier = 'javadoc'
+ from 'build/docs/javadoc'
+}
+
+// because the normal output has been made to be obfuscated
+task deobfJar(type: Jar) {
+ from sourceSets.main.output
+ classifier = 'dev'
+}
+
+// make sure all of these happen when we run build
+build.dependsOn sourceJar, javadocJar, deobfJar
+
+// --------------------
+// maven section
+// -------------------
+
+// create the deployerJars dependency configuration
+configurations {
+ deployerJars
+}
+
+dependencies {
+ // dependency in deployerJars, for maven deployment. see definition in mavenDeployer{} below
+ deployerJars "org.apache.maven.wagon:wagon-ssh:2.2"
+}
+
+// specify artifacts to be uploaded
+artifacts {
+ // the default jar is already here by defualt
+ archives sourceJar
+ archives javadocJar
+ archives deobfJar
+}
+
+uploadArchives {
+ // make sure this happens after reobfuscation
+ dependsOn 'reobf'
+
+ repositories {
+ if (project.hasProperty("filesmaven")) { // if this is the Forge server, and this stuff is defined...
+ logger.info('Publishing to files server')
+
+ mavenDeployer {
+ // specify the jars that maven needs to deploy here
+ configuration = configurations.deployerJars
+
+ // authentication, again, specially set in the forge server environment
+ repository(url: project.filesmaven.url) {
+ authentication(userName: project.filesmaven.username, privateKey: project.filesmaven.key)
+ }
+
+ // here you specify all your metadata
+ // this is the definition of the maven pom.xml. This is simply a DSL to define the XML. Not actual fields or things to set.
+ pom {
+ groupId = project.group
+ version = project.version + '.' + project.buildnumber
+ artifactId = project.archivesBaseName
+ project {
+ name project.archivesBaseName
+ packaging 'jar'
+ description 'A Minecraft mod adding all sourts of machinery'
+ url 'http://www.mod-buildcraft.com/'
+
+ scm {
+ url 'https://github.com/BuildCraft/BuildCraft'
+ connection 'scm:git:git://github.com/BuildCraft/BuildCraft.git'
+ developerConnection 'scm:git:git@github.com:BuildCraft/BuildCraft.git'
+ }
+
+ issueManagement {
+ system 'github'
+ url 'https://github.com/BuildCraft/BuildCraft/issues'
+ }
+
+ licenses {
+ license {
+ name 'Minecraft Mod Public License'
+ url 'http://www.mod-buildcraft.com/MMPL-1.0.txt'
+ distribution 'repo'
+ }
+ }
+
+ developers {
+ developer {
+ id 'SpaceToad'
+ name 'SpaceToad'
+ roles { role 'developer' }
+ }
+ developer {
+ id 'CovertJaguar'
+ name 'CovertJaguar'
+ roles { role 'developer' }
+ }
+ developer {
+ id 'SirSngir'
+ name 'SirSengir'
+ roles { role 'developer' }
+ }
+ developer {
+ id 'Krapht'
+ name 'Krapht'
+ roles { role 'developer' }
+ }
+
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ // otherwise publishing to the local repo in ~/.m2 is fine...
+ add project.repositories.mavenLocal()
+ }
+ }
+}
diff --git a/build.xml b/build.xml
deleted file mode 100644
index 2d9627aa..00000000
--- a/build.xml
+++ /dev/null
@@ -1,261 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Building buildcraft version ${project.complete.version} (${project.version})
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/buildcraft_resources/build.number b/buildcraft_resources/build.number
deleted file mode 100644
index d5ef47b1..00000000
--- a/buildcraft_resources/build.number
+++ /dev/null
@@ -1,3 +0,0 @@
-#Build Number for ANT. Do not edit!
-#Sat Jan 04 11:45:52 PST 2014
-build.number=57
diff --git a/buildcraft_resources/build.xml b/buildcraft_resources/build.xml
deleted file mode 100644
index c88b64a9..00000000
--- a/buildcraft_resources/build.xml
+++ /dev/null
@@ -1,138 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/buildcraft_resources/mcmod.info b/buildcraft_resources/mcmod.info
index 2ded18c1..049c51ff 100644
--- a/buildcraft_resources/mcmod.info
+++ b/buildcraft_resources/mcmod.info
@@ -2,8 +2,8 @@
{
"modid": "BuildCraft|Core",
"name": "BuildCraft",
- "version": "@VERSION@",
- "mcversion": "@MC_VERSION@",
+ "version": "$version",
+ "mcversion": "$mcversion",
"description": "Extending Minecraft with pipes, auto-crafting, quarries, engines and much more!",
"credits": "Created by SpaceToad",
"logoFile": "assets/buildcraft/logo.png",
@@ -19,8 +19,8 @@
{
"modid": "BuildCraft|Builders",
"name": "BC Builders",
- "version": "@VERSION@",
- "mcversion": "@MC_VERSION@",
+ "version": "$version",
+ "mcversion": "$mcversion",
"description": "Extending Minecraft with pipes, auto-crafting, quarries, engines and much more! (Builders Component)",
"credits": "Created by SpaceToad",
"logoFile": "assets/buildcraft/logo.png",
@@ -36,8 +36,8 @@
{
"modid": "BuildCraft|Energy",
"name": "BC Energy",
- "version": "@VERSION@",
- "mcversion": "@MC_VERSION@",
+ "version": "$version",
+ "mcversion": "$mcversion",
"description": "Extending Minecraft with pipes, auto-crafting, quarries, engines and much more! (Energy Component)",
"credits": "Created by SpaceToad",
"logoFile": "assets/buildcraft/logo.png",
@@ -53,8 +53,8 @@
{
"modid": "BuildCraft|Factory",
"name": "BC Factory",
- "version": "@VERSION@",
- "mcversion": "@MC_VERSION@",
+ "version": "$version",
+ "mcversion": "$mcversion",
"description": "Extending Minecraft with pipes, auto-crafting, quarries, engines and much more! (Factory Component)",
"credits": "Created by SpaceToad",
"logoFile": "assets/buildcraft/logo.png",
@@ -70,8 +70,8 @@
{
"modid": "BuildCraft|Silicon",
"name": "BC Silicon",
- "version": "@VERSION@",
- "mcversion": "@MC_VERSION@",
+ "version": "$version",
+ "mcversion": "$mcversion",
"description": "Extending Minecraft with pipes, auto-crafting, quarries, engines and much more! (Silicon Component)",
"credits": "Created by SpaceToad",
"logoFile": "assets/buildcraft/logo.png",
@@ -87,8 +87,8 @@
{
"modid": "BuildCraft|Transport",
"name": "BC Transport",
- "version": "@VERSION@",
- "mcversion": "@MC_VERSION@",
+ "version": "$version",
+ "mcversion": "$mcversion",
"description": "Extending Minecraft with pipes, auto-crafting, quarries, engines and much more! (Transport Component)",
"credits": "Created by SpaceToad",
"logoFile": "assets/buildcraft/logo.png",
diff --git a/common/buildcraft/builders/network/PacketHandlerBuilders.java b/common/buildcraft/builders/network/PacketHandlerBuilders.java
index 1b492258..fbb74458 100644
--- a/common/buildcraft/builders/network/PacketHandlerBuilders.java
+++ b/common/buildcraft/builders/network/PacketHandlerBuilders.java
@@ -8,7 +8,11 @@
*/
package buildcraft.builders.network;
-import buildcraft.BuildCraftBuilders;
+import io.netty.buffer.ByteBuf;
+import io.netty.channel.ChannelHandlerContext;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.network.INetHandler;
+import net.minecraft.tileentity.TileEntity;
import buildcraft.builders.TileArchitect;
import buildcraft.builders.TileBlueprintLibrary;
import buildcraft.core.network.BuildCraftChannelHandler;
@@ -16,17 +20,7 @@ import buildcraft.core.network.BuildCraftPacket;
import buildcraft.core.network.PacketIds;
import buildcraft.core.network.PacketUpdate;
import buildcraft.core.proxy.CoreProxy;
-import buildcraft.core.utils.Utils;
import cpw.mods.fml.common.network.NetworkRegistry;
-import io.netty.buffer.ByteBuf;
-import io.netty.channel.ChannelHandlerContext;
-
-import java.io.ByteArrayInputStream;
-import java.io.DataInputStream;
-
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.network.INetHandler;
-import net.minecraft.tileentity.TileEntity;
public class PacketHandlerBuilders extends BuildCraftChannelHandler {
@@ -35,11 +29,11 @@ public class PacketHandlerBuilders extends BuildCraftChannelHandler {
super.decodeInto(ctx, data, packet);
try {
- INetHandler netHandler = ctx.channel().attr(NetworkRegistry.NET_HANDLER).get();
- EntityPlayer player = Utils.getPlayerFromNetHandler(netHandler);
+ INetHandler netHandler = ctx.channel().attr(NetworkRegistry.NET_HANDLER).get();
+ EntityPlayer player = CoreProxy.proxy.getPlayerFromNetHandler(netHandler);
int packetID = packet.getID();
-
+
switch (packetID) {
// FIXME: Replace that by a RPC
case PacketIds.ARCHITECT_NAME:
diff --git a/common/buildcraft/core/network/PacketHandler.java b/common/buildcraft/core/network/PacketHandler.java
index ca682bd2..4c70a8dd 100644
--- a/common/buildcraft/core/network/PacketHandler.java
+++ b/common/buildcraft/core/network/PacketHandler.java
@@ -11,40 +11,31 @@ package buildcraft.core.network;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
-import java.io.ByteArrayInputStream;
-import java.io.DataInputStream;
import java.io.IOException;
-import java.io.ObjectInputStream;
-import buildcraft.core.proxy.CoreProxy;
-import buildcraft.core.utils.Utils;
import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.network.INetHandler;
-import net.minecraft.network.NetHandlerPlayServer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.DimensionManager;
-
-import cpw.mods.fml.repackage.com.nothome.delta.DebugDiffWriter;
+import buildcraft.core.proxy.CoreProxy;
import cpw.mods.fml.common.network.NetworkRegistry;
-
public class PacketHandler extends BuildCraftChannelHandler {
private void onTileUpdate(EntityPlayer player, PacketTileUpdate packet) throws IOException {
- World world = player.worldObj;
-
+ World world = player.worldObj;
+
if (!packet.targetExists(world)) {
return;
}
TileEntity entity = packet.getTarget(world);
-
+
if (!(entity instanceof ISynchronizedTile)) {
return;
}
-
+
ISynchronizedTile tile = (ISynchronizedTile) entity;
tile.handleUpdatePacket(packet);
tile.postPacketHandling(packet);
@@ -54,13 +45,13 @@ public class PacketHandler extends BuildCraftChannelHandler {
public void decodeInto(ChannelHandlerContext ctx, ByteBuf data, BuildCraftPacket packet) {
super.decodeInto(ctx, data, packet);
-
+
try {
INetHandler netHandler = ctx.channel().attr(NetworkRegistry.NET_HANDLER).get();
- EntityPlayer player = Utils.getPlayerFromNetHandler(netHandler);
+ EntityPlayer player = CoreProxy.proxy.getPlayerFromNetHandler(netHandler);
int packetID = packet.getID();
-
+
switch (packetID) {
case PacketIds.TILE_UPDATE: {
onTileUpdate(player, (PacketTileUpdate) packet);
@@ -70,13 +61,13 @@ public class PacketHandler extends BuildCraftChannelHandler {
case PacketIds.STATE_UPDATE: {
PacketTileState pkt = (PacketTileState) packet;
World world = player.worldObj;
-
+
TileEntity tile = world.getTileEntity(pkt.posX, pkt.posY, pkt.posZ);
-
+
if (tile instanceof ISyncedTile) {
pkt.applyStates(data, (ISyncedTile) tile);
}
-
+
break;
}
@@ -92,7 +83,7 @@ public class PacketHandler extends BuildCraftChannelHandler {
case PacketIds.RPC: {
PacketRPC rpc = new PacketRPC();
- rpc.sender = (EntityPlayer) player;
+ rpc.sender = player;
int dimId = data.readShort();
World world = null;
diff --git a/common/buildcraft/core/proxy/CoreProxy.java b/common/buildcraft/core/proxy/CoreProxy.java
index 4d58a0d0..e2eab91a 100644
--- a/common/buildcraft/core/proxy/CoreProxy.java
+++ b/common/buildcraft/core/proxy/CoreProxy.java
@@ -8,45 +8,36 @@
*/
package buildcraft.core.proxy;
-import buildcraft.api.core.LaserKind;
-import buildcraft.core.EntityBlock;
-import buildcraft.core.ItemBlockBuildCraft;
-import buildcraft.core.network.BuildCraftPacket;
-import cpw.mods.fml.common.Loader;
-import cpw.mods.fml.common.SidedProxy;
-import cpw.mods.fml.common.registry.GameRegistry;
-
-import java.io.File;
import java.util.List;
import java.util.Random;
-import com.mojang.authlib.GameProfile;
-
import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.entity.player.EntityPlayerMP;
-import net.minecraft.inventory.IInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.CraftingManager;
-import net.minecraft.network.Packet;
+import net.minecraft.network.INetHandler;
+import net.minecraft.network.NetHandlerPlayServer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.util.IChatComponent;
import net.minecraft.world.World;
import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe;
+import buildcraft.api.core.LaserKind;
+import buildcraft.core.EntityBlock;
+import buildcraft.core.ItemBlockBuildCraft;
+import com.mojang.authlib.GameProfile;
+
+import cpw.mods.fml.common.Loader;
+import cpw.mods.fml.common.SidedProxy;
+import cpw.mods.fml.common.registry.GameRegistry;
-/**
- * This class comes from the old times where there were two Minecrafts
- * codebases, one client and one server. We should slowly aim at removing it.
- */
-@Deprecated
public class CoreProxy {
@SidedProxy(clientSide = "buildcraft.core.proxy.CoreProxyClient", serverSide = "buildcraft.core.proxy.CoreProxy")
@@ -140,7 +131,7 @@ public class CoreProxy {
private EntityPlayer createNewPlayer(World world) {
EntityPlayer player = new EntityPlayer(world, new GameProfile (null, "[BuildCraft]")) {
@Override
- public void addChatMessage(IChatComponent var1) {
+ public void addChatMessage(IChatComponent var1) {
}
@Override
@@ -159,9 +150,9 @@ public class CoreProxy {
private EntityPlayer createNewPlayer(World world, int x, int y, int z) {
EntityPlayer player = new EntityPlayer(world, new GameProfile (null, "[BuildCraft]")) {
@Override
- public void addChatMessage(IChatComponent var1) {
+ public void addChatMessage(IChatComponent var1) {
}
-
+
@Override
public boolean canCommandSenderUseCommand(int var1, String var2) {
return false;
@@ -170,7 +161,7 @@ public class CoreProxy {
@Override
public ChunkCoordinates getPlayerCoordinates() {
return null;
- }
+ }
};
player.posX = x;
player.posY = y;
@@ -204,4 +195,16 @@ public class CoreProxy {
public EntityBlock newEntityBlock(World world, double i, double j, double k, double iSize, double jSize, double kSize, LaserKind laserKind) {
return new EntityBlock(world, i, j, k, iSize, jSize, kSize);
}
+
+ /**
+ * This function returns either the player from the handler if it's on the
+ * server, or directly from the minecraft instance if it's the client.
+ */
+ public EntityPlayer getPlayerFromNetHandler (INetHandler handler) {
+ if (handler instanceof NetHandlerPlayServer) {
+ return ((NetHandlerPlayServer) handler).playerEntity;
+ } else {
+ return null;
+ }
+ }
}
diff --git a/common/buildcraft/core/proxy/CoreProxyClient.java b/common/buildcraft/core/proxy/CoreProxyClient.java
index de07ad5f..8af781e1 100644
--- a/common/buildcraft/core/proxy/CoreProxyClient.java
+++ b/common/buildcraft/core/proxy/CoreProxyClient.java
@@ -8,6 +8,23 @@
*/
package buildcraft.core.proxy;
+import java.util.List;
+
+import net.minecraft.block.Block;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.multiplayer.WorldClient;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.item.EntityItem;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.network.INetHandler;
+import net.minecraft.network.NetHandlerPlayServer;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.ChunkCoordinates;
+import net.minecraft.util.IChatComponent;
+import net.minecraft.world.World;
import buildcraft.BuildCraftCore;
import buildcraft.api.core.LaserKind;
import buildcraft.core.EntityBlock;
@@ -21,32 +38,11 @@ import buildcraft.core.render.RenderRobot;
import buildcraft.core.render.RenderingEntityBlocks;
import buildcraft.core.render.RenderingMarkers;
import buildcraft.transport.render.TileEntityPickupFX;
-import cpw.mods.fml.client.FMLClientHandler;
-import cpw.mods.fml.client.registry.RenderingRegistry;
-import cpw.mods.fml.common.registry.LanguageRegistry;
-
-import java.io.File;
-import java.util.List;
import com.mojang.authlib.GameProfile;
-import net.minecraft.block.Block;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.multiplayer.WorldClient;
-import net.minecraft.client.network.NetHandlerPlayClient;
-import net.minecraft.creativetab.CreativeTabs;
-import net.minecraft.entity.Entity;
-import net.minecraft.entity.item.EntityItem;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-import net.minecraft.network.INetHandler;
-import net.minecraft.network.NetHandlerPlayServer;
-import net.minecraft.network.Packet;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.ChunkCoordinates;
-import net.minecraft.util.IChatComponent;
-import net.minecraft.world.World;
+import cpw.mods.fml.client.FMLClientHandler;
+import cpw.mods.fml.client.registry.RenderingRegistry;
public class CoreProxyClient extends CoreProxy {
@@ -136,7 +132,7 @@ public class CoreProxyClient extends CoreProxy {
return null;
}
};
-
+
return player;
}
@@ -167,4 +163,17 @@ public class CoreProxyClient extends CoreProxy {
}
return eb;
}
+
+ /**
+ * This function returns either the player from the handler if it's on the
+ * server, or directly from the minecraft instance if it's the client.
+ */
+ @Override
+ public EntityPlayer getPlayerFromNetHandler (INetHandler handler) {
+ if (handler instanceof NetHandlerPlayServer) {
+ return ((NetHandlerPlayServer) handler).playerEntity;
+ } else {
+ return Minecraft.getMinecraft().thePlayer;
+ }
+ }
}
diff --git a/common/buildcraft/core/utils/StringUtils.java b/common/buildcraft/core/utils/StringUtils.java
index bdd6aca2..a92df8f7 100644
--- a/common/buildcraft/core/utils/StringUtils.java
+++ b/common/buildcraft/core/utils/StringUtils.java
@@ -14,13 +14,13 @@ import net.minecraft.util.StatCollector;
public class StringUtils {
- public static final Splitter newLineSplitter = Splitter.on("\\n");
+ public static final Splitter newLineSplitter = Splitter.on("\\n");
- public static String localize(String key) {
- return StatCollector.translateToLocal(key);
- }
+ public static String localize(String key) {
+ return StatCollector.translateToLocal(key);
+ }
- public static boolean canLocalize(String key) {
- return StatCollector.canTranslate(key);
- }
+ public static boolean canLocalize(String key) {
+ return StatCollector.canTranslate(key);
+ }
}
\ No newline at end of file
diff --git a/common/buildcraft/core/utils/Utils.java b/common/buildcraft/core/utils/Utils.java
index ee90bbc0..f7d2524e 100644
--- a/common/buildcraft/core/utils/Utils.java
+++ b/common/buildcraft/core/utils/Utils.java
@@ -8,6 +8,28 @@
*/
package buildcraft.core.utils;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Random;
+
+import net.minecraft.block.Block;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.CompressedStreamTools;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.MathHelper;
+import net.minecraft.world.IBlockAccess;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.BuildCraftCore;
import buildcraft.api.core.IAreaProvider;
import buildcraft.api.core.LaserKind;
@@ -25,52 +47,10 @@ import buildcraft.core.inventory.InvUtils;
import buildcraft.core.inventory.Transactor;
import buildcraft.core.network.BuildCraftPacket;
import buildcraft.core.network.ISynchronizedTile;
-import buildcraft.core.network.PacketTileUpdate;
import buildcraft.core.network.PacketUpdate;
import buildcraft.core.proxy.CoreProxy;
import buildcraft.energy.TileEngine;
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.Unpooled;
-
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.nio.charset.Charset;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Random;
-
import cpw.mods.fml.common.network.internal.FMLProxyPacket;
-import net.minecraft.block.Block;
-import net.minecraft.client.Minecraft;
-import net.minecraft.entity.EntityLivingBase;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.inventory.IInventory;
-import net.minecraft.inventory.InventoryLargeChest;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.CompressedStreamTools;
-import net.minecraft.nbt.NBTBase;
-import net.minecraft.nbt.NBTTagByte;
-import net.minecraft.nbt.NBTTagByteArray;
-import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.nbt.NBTTagDouble;
-import net.minecraft.nbt.NBTTagEnd;
-import net.minecraft.nbt.NBTTagFloat;
-import net.minecraft.nbt.NBTTagInt;
-import net.minecraft.nbt.NBTTagIntArray;
-import net.minecraft.nbt.NBTTagList;
-import net.minecraft.nbt.NBTTagLong;
-import net.minecraft.nbt.NBTTagShort;
-import net.minecraft.nbt.NBTTagString;
-import net.minecraft.network.INetHandler;
-import net.minecraft.network.NetHandlerPlayServer;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.tileentity.TileEntityChest;
-import net.minecraft.util.MathHelper;
-import net.minecraft.world.IBlockAccess;
-import net.minecraft.world.World;
-import net.minecraftforge.common.util.ForgeDirection;
public class Utils {
@@ -78,12 +58,12 @@ public class Utils {
private static final List directions = new ArrayList(Arrays.asList(ForgeDirection.VALID_DIRECTIONS));
public enum NBTTag_Types {
- NBTTagEnd, NBTTagByte, NBTTagShort,
- NBTTagInt, NBTTagLong, NBTTagFloat,
+ NBTTagEnd, NBTTagByte, NBTTagShort,
+ NBTTagInt, NBTTagLong, NBTTagFloat,
NBTTagDouble, NBTTagByteArray, NBTTagString,
NBTTagList, NBTTagCompound, NBTTagIntArray
}
-
+
/* IINVENTORY HELPERS */
/**
* Tries to add the passed stack to any valid inventories around the given
@@ -428,8 +408,8 @@ public class Utils {
}
return slots;
}
-
- public static void writeUTF (ByteBuf data, String str) {
+
+ public static void writeUTF (ByteBuf data, String str) {
try {
byte [] b = str.getBytes("UTF-8");
data.writeInt (b.length);
@@ -439,19 +419,19 @@ public class Utils {
data.writeInt (0);
}
}
-
- public static String readUTF (ByteBuf data) {
+
+ public static String readUTF (ByteBuf data) {
try {
int len = data.readInt();
byte [] b = new byte [len];
data.readBytes(b);
return new String (b, "UTF-8");
- } catch (UnsupportedEncodingException e) {
+ } catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
}
}
-
+
public static void writeNBT (ByteBuf data, NBTTagCompound nbt) {
try {
byte[] compressed = CompressedStreamTools.compress(nbt);
@@ -459,9 +439,9 @@ public class Utils {
data.writeBytes(compressed);
} catch (IOException e) {
e.printStackTrace();
- }
+ }
}
-
+
public static NBTTagCompound readNBT(ByteBuf data) {
try {
short length = data.readShort();
@@ -473,18 +453,18 @@ public class Utils {
return null;
}
}
-
+
public static void writeStack (ByteBuf data, ItemStack stack) {
if (stack == null) {
data.writeBoolean(false);
} else {
data.writeBoolean(true);
- NBTTagCompound nbt = new NBTTagCompound();
+ NBTTagCompound nbt = new NBTTagCompound();
stack.writeToNBT(nbt);
Utils.writeNBT(data, nbt);
}
}
-
+
public static ItemStack readStack(ByteBuf data) {
if (!data.readBoolean()) {
@@ -494,35 +474,23 @@ public class Utils {
return ItemStack.loadItemStackFromNBT(nbt);
}
}
-
+
/**
* This subprogram transforms a packet into a FML packet to be send in the
- * minecraft default packet mechanism. This always use BC-CORE as a
+ * minecraft default packet mechanism. This always use BC-CORE as a
* channel, and as a result, should use discriminators declared there.
- *
+ *
* WARNING! The implementation of this subprogram relies on the internal
* behavior of #FMLIndexedMessageToMessageCodec (in particular the encode
* member). It is probably opening a maintenance issue and should be
- * replaced eventually by some more solid mechanism.
+ * replaced eventually by some more solid mechanism.
*/
public static FMLProxyPacket toPacket (BuildCraftPacket packet, int discriminator) {
ByteBuf buf = Unpooled.buffer();
-
+
buf.writeByte((byte) discriminator);
packet.writeData(buf);
-
+
return new FMLProxyPacket(buf, DefaultProps.NET_CHANNEL_NAME + "-CORE");
}
-
- /**
- * This function returns either the player from the handler if it's on the
- * server, or directly from the minecraft instance if it's the client.
- */
- public static EntityPlayer getPlayerFromNetHandler (INetHandler handler) {
- if (handler instanceof NetHandlerPlayServer) {
- return ((NetHandlerPlayServer) handler).playerEntity;
- } else {
- return Minecraft.getMinecraft().thePlayer;
- }
- }
}
diff --git a/common/buildcraft/factory/network/PacketHandlerFactory.java b/common/buildcraft/factory/network/PacketHandlerFactory.java
index af51ce8c..080841e8 100644
--- a/common/buildcraft/factory/network/PacketHandlerFactory.java
+++ b/common/buildcraft/factory/network/PacketHandlerFactory.java
@@ -8,39 +8,35 @@
*/
package buildcraft.factory.network;
-import buildcraft.core.network.BuildCraftChannelHandler;
-import buildcraft.core.network.BuildCraftPacket;
-import buildcraft.core.network.PacketIds;
-import buildcraft.core.network.PacketPayload;
-import buildcraft.core.network.PacketPayloadStream;
-import buildcraft.core.network.PacketUpdate;
-import buildcraft.core.proxy.CoreProxy;
-import buildcraft.core.utils.Utils;
-import buildcraft.factory.TileRefinery;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
-import java.io.ByteArrayInputStream;
-import java.io.DataInputStream;
import java.io.IOException;
-import cpw.mods.fml.common.network.NetworkRegistry;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.network.INetHandler;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.fluids.FluidRegistry;
+import buildcraft.core.network.BuildCraftChannelHandler;
+import buildcraft.core.network.BuildCraftPacket;
+import buildcraft.core.network.PacketIds;
+import buildcraft.core.network.PacketPayloadStream;
+import buildcraft.core.network.PacketUpdate;
+import buildcraft.core.proxy.CoreProxy;
+import buildcraft.factory.TileRefinery;
+import cpw.mods.fml.common.network.NetworkRegistry;
public class PacketHandlerFactory extends BuildCraftChannelHandler {
@Override
public void decodeInto(ChannelHandlerContext ctx, ByteBuf data, BuildCraftPacket packet) {
super.decodeInto(ctx, data, packet);
-
+
try {
INetHandler netHandler = ctx.channel().attr(NetworkRegistry.NET_HANDLER).get();
- EntityPlayer player = Utils.getPlayerFromNetHandler(netHandler);
-
+ EntityPlayer player = CoreProxy.proxy.getPlayerFromNetHandler(netHandler);
+
int packetID = packet.getID();
switch (packetID) {
@@ -73,7 +69,7 @@ public class PacketHandlerFactory extends BuildCraftChannelHandler {
TileRefinery tile = getRefinery(playerEntity.worldObj, packet.posX, packet.posY, packet.posZ);
if (tile == null || packet.payload == null)
return;
-
+
ByteBuf stream = ((PacketPayloadStream)packet.payload).stream;
tile.setFilter(stream.readByte(), FluidRegistry.getFluid(stream.readShort()));
diff --git a/common/buildcraft/silicon/network/PacketHandlerSilicon.java b/common/buildcraft/silicon/network/PacketHandlerSilicon.java
index 515a5176..ea0c2402 100644
--- a/common/buildcraft/silicon/network/PacketHandlerSilicon.java
+++ b/common/buildcraft/silicon/network/PacketHandlerSilicon.java
@@ -8,6 +8,13 @@
*/
package buildcraft.silicon.network;
+import io.netty.buffer.ByteBuf;
+import io.netty.channel.ChannelHandlerContext;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.Container;
+import net.minecraft.network.INetHandler;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
import buildcraft.core.network.BuildCraftChannelHandler;
import buildcraft.core.network.BuildCraftPacket;
import buildcraft.core.network.PacketCoordinates;
@@ -15,39 +22,27 @@ import buildcraft.core.network.PacketIds;
import buildcraft.core.network.PacketNBT;
import buildcraft.core.network.PacketSlotChange;
import buildcraft.core.proxy.CoreProxy;
-import buildcraft.core.utils.Utils;
import buildcraft.silicon.TileAdvancedCraftingTable;
import buildcraft.silicon.TileAssemblyTable;
import buildcraft.silicon.TileAssemblyTable.SelectionMessage;
import buildcraft.silicon.gui.ContainerAssemblyTable;
-import io.netty.buffer.ByteBuf;
-import io.netty.channel.ChannelHandlerContext;
-
-import java.io.ByteArrayInputStream;
-import java.io.DataInputStream;
-
import cpw.mods.fml.common.network.NetworkRegistry;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.inventory.Container;
-import net.minecraft.network.INetHandler;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.world.World;
public class PacketHandlerSilicon extends BuildCraftChannelHandler {
@Override
public void decodeInto(ChannelHandlerContext ctx, ByteBuf data, BuildCraftPacket packet) {
super.decodeInto(ctx, data, packet);
-
+
try {
INetHandler netHandler = ctx.channel().attr(NetworkRegistry.NET_HANDLER).get();
-
- EntityPlayer player = Utils.getPlayerFromNetHandler(netHandler);
-
+
+ EntityPlayer player = CoreProxy.proxy.getPlayerFromNetHandler(netHandler);
+
int packetID = packet.getID();
-
+
switch (packetID) {
- case PacketIds.SELECTION_ASSEMBLY_SEND:
+ case PacketIds.SELECTION_ASSEMBLY_SEND:
onSelectionUpdate(player, (PacketNBT) packet);
break;
case PacketIds.SELECTION_ASSEMBLY:
@@ -104,7 +99,7 @@ public class PacketHandlerSilicon extends BuildCraftChannelHandler {
/**
* Sends the current selection on the assembly table to a player.
- *
+ *
* @param player
* @param packet
*/
@@ -119,7 +114,7 @@ public class PacketHandlerSilicon extends BuildCraftChannelHandler {
/**
* Sets the selection on an assembly table according to player request.
- *
+ *
* @param player
* @param packetA
*/
@@ -136,7 +131,7 @@ public class PacketHandlerSilicon extends BuildCraftChannelHandler {
/**
* Sets the packet into the advanced workbench
- *
+ *
* @param player
* @param packet1
*/
diff --git a/common/buildcraft/transport/ItemFacade.java b/common/buildcraft/transport/ItemFacade.java
index bdccd182..dfb0f123 100644
--- a/common/buildcraft/transport/ItemFacade.java
+++ b/common/buildcraft/transport/ItemFacade.java
@@ -8,22 +8,6 @@
*/
package buildcraft.transport;
-import buildcraft.BuildCraftTransport;
-import buildcraft.api.core.Position;
-import buildcraft.api.recipes.BuildcraftRecipes;
-import buildcraft.core.CreativeTabBuildCraft;
-import buildcraft.core.ItemBuildCraft;
-import buildcraft.core.proxy.CoreProxy;
-
-import com.google.common.base.Strings;
-import com.google.common.collect.Sets;
-
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
@@ -41,6 +25,18 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
+import buildcraft.BuildCraftTransport;
+import buildcraft.api.core.Position;
+import buildcraft.api.recipes.BuildcraftRecipes;
+import buildcraft.core.CreativeTabBuildCraft;
+import buildcraft.core.ItemBuildCraft;
+import buildcraft.core.proxy.CoreProxy;
+
+import com.google.common.base.Strings;
+import com.google.common.collect.Sets;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
public class ItemFacade extends ItemBuildCraft {
@@ -54,10 +50,9 @@ public class ItemFacade extends ItemBuildCraft {
setCreativeTab(CreativeTabBuildCraft.FACADES.get());
}
- //TODO: how to control name of items?
- /*@Override
- public String getItemDisplayName(ItemStack itemstack) {
- String name = super.getItemDisplayName(itemstack);
+ @Override
+ public String getItemStackDisplayName(ItemStack itemstack) {
+ String name = super.getItemStackDisplayName(itemstack);
Block decodedBlock = ItemFacade.getBlock(itemstack);
int decodedMeta = ItemFacade.getMetaData(itemstack);
if (decodedBlock != null && decodedBlock.getRenderType() == 31) {
@@ -70,7 +65,7 @@ public class ItemFacade extends ItemBuildCraft {
name += " < BROKEN (" + decodedBlock.getLocalizedName() + ":" + decodedMeta + " )>";
}
return name;
- }*/
+ }
@Override
public String getUnlocalizedName(ItemStack itemstack) {
@@ -109,12 +104,12 @@ public class ItemFacade extends ItemBuildCraft {
}
public static void initialize() {
- for (Object o : Block.blockRegistry) {
+ for (Object o : Block.blockRegistry) {
Block b = (Block) o;
if (!(b == Blocks.glass)) {
if (b == Blocks.bedrock
- || b == Blocks.grass
+ || b == Blocks.grass
|| b == Blocks.leaves
|| b == Blocks.sponge
|| b == Blocks.chest
@@ -123,17 +118,17 @@ public class ItemFacade extends ItemBuildCraft {
|| b == Blocks.lit_pumpkin) {
continue;
}
-
- if (!b.isOpaqueCube()
+
+ if (!b.isOpaqueCube()
|| b.hasTileEntity(0)
- || !b.renderAsNormalBlock()
+ || !b.renderAsNormalBlock()
|| b.getRenderType() != 0) {
continue;
}
- }
-
+ }
+
Item item = Item.getItemFromBlock(b);
-
+
if (item != null) {
ItemStack base = new ItemStack(item, 1);
@@ -142,14 +137,23 @@ public class ItemFacade extends ItemBuildCraft {
for (int meta = 0; meta <= 15; meta++) {
ItemStack is = new ItemStack(item, 1, meta);
-
+
if (!Strings.isNullOrEmpty(is.getUnlocalizedName())
&& names.add(is.getUnlocalizedName())) {
- ItemFacade.addFacade(is);
+
+ try {
+ ItemFacade.addFacade(is);
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
}
}
} else {
- ItemFacade.addFacade(base);
+ try {
+ ItemFacade.addFacade(base);
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
}
}
}
@@ -186,7 +190,7 @@ public class ItemFacade extends ItemBuildCraft {
// 3 Structurepipes + this block makes 6 facades
BuildcraftRecipes.assemblyTable.addRecipe(8000, facade6, new ItemStack(BuildCraftTransport.pipeStructureCobblestone, 3), itemStack);
-
+
Block bl = Block.getBlockFromItem(itemStack.getItem());
// Special handling for logs
@@ -199,9 +203,9 @@ public class ItemFacade extends ItemBuildCraft {
itemStack.getItemDamage() | 8);
allFacades.add(rotLog1);
allFacades.add(rotLog2);
- }
+ }
}
-
+
private static final Block NULL_BLOCK = null;
private static final ItemStack NO_MATCH = new ItemStack(NULL_BLOCK, 0, 0);
@@ -240,8 +244,8 @@ public class ItemFacade extends ItemBuildCraft {
if (slotmatch != null && slotmatch != NO_MATCH) {
Block block = ItemFacade.getBlock(slotmatch);
int blockMeta = ItemFacade.getMetaData(slotmatch);
-
-
+
+
if (block != null && block.getRenderType() == 31 && (blockMeta & 0xC) == 0)
return getStack(block, (blockMeta & 0x3) | 4);
// Meta | 4 = true
@@ -280,7 +284,7 @@ public class ItemFacade extends ItemBuildCraft {
public static ItemStack getStack(Block block, int metadata) {
ItemStack stack = new ItemStack(BuildCraftTransport.facadeItem, 1, 0);
NBTTagCompound nbt = new NBTTagCompound();
- nbt.setInteger("meta", metadata);
+ nbt.setInteger("meta", metadata);
nbt.setInteger("id", Block.blockRegistry.getIDForObject(block));
stack.setTagCompound(nbt);
return stack;
diff --git a/common/buildcraft/transport/PipeToolTipManager.java b/common/buildcraft/transport/PipeToolTipManager.java
index 79259c21..d424f70d 100644
--- a/common/buildcraft/transport/PipeToolTipManager.java
+++ b/common/buildcraft/transport/PipeToolTipManager.java
@@ -42,10 +42,10 @@ public class PipeToolTipManager {
if (StringUtils.canLocalize(tipTag)) {
String localized = StringUtils.localize(tipTag);
if (localized != null) {
- String[] lines = (String[])Iterables.toArray(StringUtils.newLineSplitter.split(localized), String.class);
- tips.addAll(Arrays.asList(lines));
+ List lines = StringUtils.newLineSplitter.splitToList(localized);
+ tips.addAll(lines);
+ }
}
- }
String tip = toolTips.get(pipe);
if (tip != null)
tips.add(tip);
diff --git a/common/buildcraft/transport/gates/ItemGate.java b/common/buildcraft/transport/gates/ItemGate.java
index b64b8aae..56e1e073 100644
--- a/common/buildcraft/transport/gates/ItemGate.java
+++ b/common/buildcraft/transport/gates/ItemGate.java
@@ -177,10 +177,10 @@ public class ItemGate extends ItemBuildCraft {
}
@Override
- public String getItemStackDisplayName(ItemStack stack)
- {
- return ("" + StatCollector.translateToLocal(this.getUnlocalizedNameInefficiently(stack))).trim();
- }
+ public String getItemStackDisplayName(ItemStack stack)
+ {
+ return ("" + StatCollector.translateToLocal(this.getUnlocalizedNameInefficiently(stack))).trim();
+ }
@SuppressWarnings({"unchecked", "rawtypes"})
@Override
diff --git a/common/buildcraft/transport/network/PacketHandlerTransport.java b/common/buildcraft/transport/network/PacketHandlerTransport.java
index 43c1d90b..d57945f7 100644
--- a/common/buildcraft/transport/network/PacketHandlerTransport.java
+++ b/common/buildcraft/transport/network/PacketHandlerTransport.java
@@ -8,6 +8,13 @@
*/
package buildcraft.transport.network;
+import io.netty.buffer.ByteBuf;
+import io.netty.channel.ChannelHandlerContext;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.Container;
+import net.minecraft.network.INetHandler;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
import buildcraft.core.network.BuildCraftChannelHandler;
import buildcraft.core.network.BuildCraftPacket;
import buildcraft.core.network.PacketCoordinates;
@@ -15,35 +22,18 @@ import buildcraft.core.network.PacketIds;
import buildcraft.core.network.PacketSlotChange;
import buildcraft.core.network.PacketUpdate;
import buildcraft.core.proxy.CoreProxy;
-import buildcraft.core.utils.Utils;
import buildcraft.transport.PipeTransportItems;
import buildcraft.transport.PipeTransportPower;
import buildcraft.transport.TileGenericPipe;
import buildcraft.transport.gui.ContainerGateInterface;
import buildcraft.transport.pipes.PipeItemsDiamond;
import buildcraft.transport.pipes.PipeItemsEmerald;
-import cpw.mods.fml.common.network.FMLOutboundHandler;
import cpw.mods.fml.common.network.NetworkRegistry;
-import io.netty.buffer.ByteBuf;
-import io.netty.channel.ChannelHandlerContext;
-
-import java.io.ByteArrayInputStream;
-import java.io.DataInputStream;
-
-import net.minecraft.client.Minecraft;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.entity.player.EntityPlayerMP;
-import net.minecraft.inventory.Container;
-import net.minecraft.network.INetHandler;
-import net.minecraft.network.NetHandlerPlayServer;
-import net.minecraft.network.play.INetHandlerPlayServer;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.world.World;
public class PacketHandlerTransport extends BuildCraftChannelHandler {
/**
- * TODO: A lot of this is based on the player to retrieve the world.
+ * TODO: A lot of this is based on the player to retrieve the world.
* Passing a dimension id would be more appropriate. More generally, it
* seems like a lot of these packets could be replaced with tile-based
* RPCs.
@@ -52,8 +42,8 @@ public class PacketHandlerTransport extends BuildCraftChannelHandler {
public void decodeInto(ChannelHandlerContext ctx, ByteBuf data, BuildCraftPacket packet) {
super.decodeInto(ctx, data, packet);
try {
- INetHandler netHandler = ctx.channel().attr(NetworkRegistry.NET_HANDLER).get();
- EntityPlayer player = Utils.getPlayerFromNetHandler(netHandler);
+ INetHandler netHandler = ctx.channel().attr(NetworkRegistry.NET_HANDLER).get();
+ EntityPlayer player = CoreProxy.proxy.getPlayerFromNetHandler(netHandler);
int packetID = packet.getID();
@@ -89,17 +79,17 @@ public class PacketHandlerTransport extends BuildCraftChannelHandler {
/**
* SERVER SIDE *
*/
- case PacketIds.DIAMOND_PIPE_SELECT: {
+ case PacketIds.DIAMOND_PIPE_SELECT: {
onDiamondPipeSelect(player, (PacketSlotChange) packet);
break;
}
- case PacketIds.EMERALD_PIPE_SELECT: {
+ case PacketIds.EMERALD_PIPE_SELECT: {
onEmeraldPipeSelect(player, (PacketSlotChange) packet);
break;
}
- case PacketIds.GATE_REQUEST_INIT:
+ case PacketIds.GATE_REQUEST_INIT:
onGateInitRequest(player, (PacketCoordinates) packet);
break;
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..3c7abdf1
Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..99044556
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Sun Feb 16 13:39:47 CST 2014
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-bin.zip
diff --git a/gradlew b/gradlew
new file mode 100644
index 00000000..91a7e269
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+ echo "$*"
+}
+
+die ( ) {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+ [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+ JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 00000000..aec99730
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega