From 859a0d1dee655cceca4e6eba985e3b4b76195e27 Mon Sep 17 00:00:00 2001 From: Space Toad Date: Thu, 14 Jul 2011 11:10:21 +0000 Subject: [PATCH] made initial setup, implemented custom bucket, for #1 --- forge/forge_client/.classpath | 12 ++ forge/forge_client/.project | 29 +++++ .../minecraft/src/forge/IBucketHandler.java | 10 ++ .../minecraft/src/forge/MinecraftForge.java | 28 +++++ forge/forge_server/.classpath | 12 ++ forge/forge_server/.project | 29 +++++ forge/minecraft.patch | 111 ++++++++++++++++++ forge/setup.sh | 7 ++ forge/update_patch.sh | 5 + 9 files changed, 243 insertions(+) create mode 100755 forge/forge_client/.classpath create mode 100755 forge/forge_client/.project create mode 100755 forge/forge_common/net/minecraft/src/forge/IBucketHandler.java create mode 100755 forge/forge_common/net/minecraft/src/forge/MinecraftForge.java create mode 100755 forge/forge_server/.classpath create mode 100755 forge/forge_server/.project create mode 100644 forge/minecraft.patch create mode 100755 forge/setup.sh create mode 100755 forge/update_patch.sh diff --git a/forge/forge_client/.classpath b/forge/forge_client/.classpath new file mode 100755 index 000000000..fae6017a3 --- /dev/null +++ b/forge/forge_client/.classpath @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/forge/forge_client/.project b/forge/forge_client/.project new file mode 100755 index 000000000..12d4bdba8 --- /dev/null +++ b/forge/forge_client/.project @@ -0,0 +1,29 @@ + + + forge_client + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + + + forge_common + 2 + PARENT-1-PROJECT_LOC/forge_common + + + minecraft + 2 + PARENT-1-WORKSPACE_LOC/src_work/minecraft + + + diff --git a/forge/forge_common/net/minecraft/src/forge/IBucketHandler.java b/forge/forge_common/net/minecraft/src/forge/IBucketHandler.java new file mode 100755 index 000000000..96dd41534 --- /dev/null +++ b/forge/forge_common/net/minecraft/src/forge/IBucketHandler.java @@ -0,0 +1,10 @@ +package net.minecraft.src.forge; + +import net.minecraft.src.ItemStack; +import net.minecraft.src.World; + +public interface IBucketHandler { + + public ItemStack fillCustomBucket (World w, int i, int j, int k); + +} diff --git a/forge/forge_common/net/minecraft/src/forge/MinecraftForge.java b/forge/forge_common/net/minecraft/src/forge/MinecraftForge.java new file mode 100755 index 000000000..2327e2723 --- /dev/null +++ b/forge/forge_common/net/minecraft/src/forge/MinecraftForge.java @@ -0,0 +1,28 @@ +package net.minecraft.src.forge; + +import java.util.LinkedList; + +import net.minecraft.src.ItemStack; +import net.minecraft.src.World; + +public class MinecraftForge { + + private static LinkedList bucketHandlers = new LinkedList(); + + public static ItemStack fillCustomBucket (World w, int i, int j, int k) { + for (IBucketHandler handler : bucketHandlers) { + ItemStack stack = handler.fillCustomBucket(w, i, j, k); + + if (stack != null) { + return stack; + } + } + + return null; + } + + public static void registerCustomBucketHander (IBucketHandler handler) { + bucketHandlers.add(handler); + } + +} diff --git a/forge/forge_server/.classpath b/forge/forge_server/.classpath new file mode 100755 index 000000000..cce36288c --- /dev/null +++ b/forge/forge_server/.classpath @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/forge/forge_server/.project b/forge/forge_server/.project new file mode 100755 index 000000000..90891bc87 --- /dev/null +++ b/forge/forge_server/.project @@ -0,0 +1,29 @@ + + + forge_server + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + + + forge_common + 2 + PARENT-1-PROJECT_LOC/forge_common + + + minecraft_server + 2 + PARENT-1-WORKSPACE_LOC/src_work/minecraft_server + + + diff --git a/forge/minecraft.patch b/forge/minecraft.patch new file mode 100644 index 000000000..5d1e29efe --- /dev/null +++ b/forge/minecraft.patch @@ -0,0 +1,111 @@ +diff -u -r --strip-trailing-cr ../src_base/minecraft/net/minecraft/src/ItemBucket.java ../src_work/minecraft/net/minecraft/src/ItemBucket.java +--- ../src_base/minecraft/net/minecraft/src/ItemBucket.java 2011-07-11 21:58:45.174682000 +0200 ++++ ../src_work/minecraft/net/minecraft/src/ItemBucket.java 2011-07-14 13:03:34.748396700 +0200 +@@ -6,6 +6,8 @@ + + import java.util.Random; + ++import net.minecraft.src.forge.MinecraftForge; ++ + // Referenced classes of package net.minecraft.src: + // Item, EntityPlayer, Vec3D, MathHelper, + // World, MovingObjectPosition, EnumMovingObjectType, Material, +@@ -55,6 +57,13 @@ + } + if(isFull == 0) + { ++ ItemStack customBucket = MinecraftForge.fillCustomBucket(world, ++ i, j, k); ++ ++ if (customBucket != null) { ++ return customBucket; ++ } ++ + if(world.getBlockMaterial(i, j, k) == Material.water && world.getBlockMetadata(i, j, k) == 0) + { + world.setBlockWithNotify(i, j, k, 0); +diff -u -r --strip-trailing-cr ../src_base/minecraft_server/net/minecraft/server/MinecraftServer.java ../src_work/minecraft_server/net/minecraft/server/MinecraftServer.java +--- ../src_base/minecraft_server/net/minecraft/server/MinecraftServer.java 2011-07-11 21:58:45.468698800 +0200 ++++ ../src_work/minecraft_server/net/minecraft/server/MinecraftServer.java 2011-07-11 22:00:55.619143000 +0200 +@@ -333,41 +333,22 @@ + } + finally + { +- System.exit(0); ++ try ++ { ++ stopServer(); ++ serverStopped = true; ++ } ++ catch(Throwable throwable2) ++ { ++ throwable2.printStackTrace(); ++ } ++ finally ++ { ++ System.exit(0); ++ } + } +- break MISSING_BLOCK_LABEL_350; +- } +- try +- { +- stopServer(); +- serverStopped = true; +- } +- catch(Throwable throwable) +- { +- throwable.printStackTrace(); +- } +- finally +- { +- System.exit(0); +- } +- break MISSING_BLOCK_LABEL_350; +- Exception exception2; +- exception2; +- try +- { +- stopServer(); +- serverStopped = true; +- } +- catch(Throwable throwable3) +- { +- throwable3.printStackTrace(); +- } +- finally +- { +- System.exit(0); +- } +- throw exception2; + } ++} + + private void doTick() + { +diff -u -r --strip-trailing-cr ../src_base/minecraft_server/net/minecraft/src/ItemBucket.java ../src_work/minecraft_server/net/minecraft/src/ItemBucket.java +--- ../src_base/minecraft_server/net/minecraft/src/ItemBucket.java 2011-07-11 21:58:45.765715800 +0200 ++++ ../src_work/minecraft_server/net/minecraft/src/ItemBucket.java 2011-07-14 13:03:49.701251900 +0200 +@@ -6,6 +6,8 @@ + + import java.util.Random; + ++import net.minecraft.src.forge.MinecraftForge; ++ + // Referenced classes of package net.minecraft.src: + // Item, EntityPlayer, Vec3D, MathHelper, + // World, MovingObjectPosition, EnumMovingObjectType, Material, +@@ -55,6 +57,13 @@ + } + if(isFull == 0) + { ++ ItemStack customBucket = MinecraftForge.fillCustomBucket(world, ++ i, j, k); ++ ++ if (customBucket != null) { ++ return customBucket; ++ } ++ + if(world.getBlockMaterial(i, j, k) == Material.water && world.getBlockMetadata(i, j, k) == 0) + { + world.setBlockWithNotify(i, j, k, 0); diff --git a/forge/setup.sh b/forge/setup.sh new file mode 100755 index 000000000..1ad87c465 --- /dev/null +++ b/forge/setup.sh @@ -0,0 +1,7 @@ +if [ ! -f ../src_base ]; then + cp -r ../src ../src_base + #patch -p0 < minecraft.patch + cp -r ../src ../src_work +else + echo "patch already applied - remove src and src_base and decompile again" +fi diff --git a/forge/update_patch.sh b/forge/update_patch.sh new file mode 100755 index 000000000..9e9edfbb9 --- /dev/null +++ b/forge/update_patch.sh @@ -0,0 +1,5 @@ +rm minecraft.patch +touch minecraft.patch + +diff -u ../src_base ../src_work -r --strip-trailing-cr | tr -d '\r' \ + >> minecraft.patch