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