diff --git a/client/cpw/mods/fml/client/FMLClientHandler.java b/client/cpw/mods/fml/client/FMLClientHandler.java index 58b8f3a804..6c8ab98dd6 100644 --- a/client/cpw/mods/fml/client/FMLClientHandler.java +++ b/client/cpw/mods/fml/client/FMLClientHandler.java @@ -41,6 +41,7 @@ import net.minecraft.src.IInventory; import net.minecraft.src.Item; import net.minecraft.src.ItemStack; import net.minecraft.src.KeyBinding; +import net.minecraft.src.NetClientHandler; import net.minecraft.src.NetworkManager; import net.minecraft.src.Packet1Login; import net.minecraft.src.Packet250CustomPayload; @@ -379,11 +380,11 @@ public class FMLClientHandler implements IFMLSidedHandler * @return true if you want the packet to stop processing and not echo to * the rest of the world */ - public boolean handleChatPacket(Packet3Chat chat, EntityPlayer player) + public boolean handleChatPacket(Packet3Chat chat) { for (ModContainer mod : Loader.getModList()) { - if (mod.wantsNetworkPackets() && mod.getNetworkHandler().onChat(chat, player)) + if (mod.wantsNetworkPackets() && mod.getNetworkHandler().onChat(chat)) { return true; } @@ -392,6 +393,21 @@ public class FMLClientHandler implements IFMLSidedHandler return false; } + public void handleServerLogin(Packet1Login loginPacket, NetClientHandler handler, NetworkManager networkManager) + { + Packet250CustomPayload packet = new Packet250CustomPayload(); + packet.field_44012_a = "REGISTER"; + packet.field_44011_c = FMLCommonHandler.instance().getPacketRegistry(); + packet.field_44010_b = packet.field_44011_c.length; + if (packet.field_44010_b > 0) + { + networkManager.func_972_a(packet); + } + for (ModContainer mod : Loader.getModList()) { + mod.getNetworkHandler().onServerLogin(handler); + } + } + /** * Called when a packet 250 packet is received from the player * diff --git a/client/net/minecraft/src/BaseMod.java b/client/net/minecraft/src/BaseMod.java index 0bb3755124..a1874ea429 100644 --- a/client/net/minecraft/src/BaseMod.java +++ b/client/net/minecraft/src/BaseMod.java @@ -73,9 +73,20 @@ public abstract class BaseMod implements IWorldGenerator, IPickupNotifier, IDisp @Override public final boolean onChat(Object... data) { - return onChatMessageReceived((EntityPlayer)data[1], (Packet3Chat)data[0]); + receiveChatPacket(((Packet3Chat)data[0]).field_517_a); + return true; } + + @Override + public final void onServerLogin(Object handler) { + serverConnect((NetClientHandler) handler); + } + + public final void onServerLogout() { + serverDisconnect(); + } + @Override public final void onPlayerLogin(Object player) { @@ -97,7 +108,7 @@ public abstract class BaseMod implements IWorldGenerator, IPickupNotifier, IDisp @Override public final void onPacket250Packet(Object... data) { - onPacket250Received((EntityPlayer)data[1], (Packet250CustomPayload)data[0]); + receiveCustomPacket((Packet250CustomPayload)data[0]); } @Override @@ -300,6 +311,13 @@ public abstract class BaseMod implements IWorldGenerator, IPickupNotifier, IDisp } + public void serverConnect(NetClientHandler handler) { + + } + + public void serverDisconnect() { + + } /** * Called when someone crafts an item from a crafting table * diff --git a/common/cpw/mods/fml/common/INetworkHandler.java b/common/cpw/mods/fml/common/INetworkHandler.java index 715018ba49..b41a8d15c3 100644 --- a/common/cpw/mods/fml/common/INetworkHandler.java +++ b/common/cpw/mods/fml/common/INetworkHandler.java @@ -13,6 +13,7 @@ package cpw.mods.fml.common; + /** * @author cpw * @@ -21,4 +22,5 @@ public interface INetworkHandler { boolean onChat(Object... data); void onPacket250Packet(Object... data); + void onServerLogin(Object handler); } diff --git a/patches/minecraft/net/minecraft/src/NetClientHandler.java.patch b/patches/minecraft/net/minecraft/src/NetClientHandler.java.patch new file mode 100644 index 0000000000..00b452a48f --- /dev/null +++ b/patches/minecraft/net/minecraft/src/NetClientHandler.java.patch @@ -0,0 +1,41 @@ +--- ../src-base/minecraft/net/minecraft/src/NetClientHandler.java 0000-00-00 00:00:00.000000000 -0000 ++++ ../src-work/minecraft/net/minecraft/src/NetClientHandler.java 0000-00-00 00:00:00.000000000 -0000 +@@ -14,6 +14,8 @@ + import java.util.List; + import java.util.Map; + import java.util.Random; ++ ++import cpw.mods.fml.client.FMLClientHandler; + import net.minecraft.client.Minecraft; + + public class NetClientHandler extends NetHandler +@@ -59,6 +61,7 @@ + this.field_1212_e.field_6322_g.field_620_ab = p_4115_1_.field_519_a; + this.field_35785_d = p_4115_1_.field_35251_h; + ((PlayerControllerMP)this.field_1212_e.field_6327_b).func_35648_a(p_4115_1_.field_35249_d == 1); ++ FMLClientHandler.instance().handleServerLogin(p_4115_1_, this, field_1213_d); + } + + public void func_832_a(Packet21PickupSpawn p_832_1_) +@@ -510,6 +513,7 @@ + + public void func_4113_a(Packet3Chat p_4113_1_) + { ++ FMLClientHandler.instance().handleChatPacket(p_4113_1_); + this.field_1212_e.field_6308_u.func_552_a(p_4113_1_.field_517_a); + } + +@@ -1026,4 +1030,13 @@ + var2.field_35212_aW.field_35759_a = p_50100_1_.field_50072_a; + var2.field_35212_aW.field_35758_c = p_50100_1_.field_50071_c; + } ++ ++ /* (non-Javadoc) ++ * @see net.minecraft.src.NetHandler#func_44028_a(net.minecraft.src.Packet250CustomPayload) ++ */ ++ @Override ++ public void func_44028_a(Packet250CustomPayload p_44028_1_) ++ { ++ FMLClientHandler.instance().handlePacket250(p_44028_1_); ++ } + } diff --git a/patches/minecraft/net/minecraft/src/TileEntityFurnace.java.patch b/patches/minecraft/net/minecraft/src/TileEntityFurnace.java.patch new file mode 100644 index 0000000000..422e674f67 --- /dev/null +++ b/patches/minecraft/net/minecraft/src/TileEntityFurnace.java.patch @@ -0,0 +1,26 @@ +--- ../src-base/minecraft/net/minecraft/src/TileEntityFurnace.java 0000-00-00 00:00:00.000000000 -0000 ++++ ../src-work/minecraft/net/minecraft/src/TileEntityFurnace.java 0000-00-00 00:00:00.000000000 -0000 +@@ -1,5 +1,8 @@ + package net.minecraft.src; + ++import cpw.mods.fml.client.FMLClientHandler; ++import cpw.mods.fml.common.FMLCommonHandler; ++ + public class TileEntityFurnace extends TileEntity implements IInventory + { + private ItemStack[] field_833_a = new ItemStack[3]; +@@ -251,7 +254,13 @@ + else + { + int var1 = p_488_1_.func_1091_a().field_291_aS; +- return var1 < 256 && Block.field_345_n[var1].field_356_bn == Material.field_1335_c ? 300 : (var1 == Item.field_266_B.field_291_aS ? 100 : (var1 == Item.field_225_k.field_291_aS ? 1600 : (var1 == Item.field_258_aw.field_291_aS ? 20000 : (var1 == Block.field_333_z.field_376_bc ? 100 : (var1 == Item.field_40417_bo.field_291_aS ? 2400 : 0))))); ++ if (var1 < 256 && Block.field_345_n[var1].field_356_bn == Material.field_1335_c) return 300; ++ if (var1 == Item.field_266_B.field_291_aS) return 100; ++ if (var1 == Item.field_225_k.field_291_aS) return 1600; ++ if (var1 == Item.field_258_aw.field_291_aS) return 20000; ++ if (var1 == Block.field_333_z.field_376_bc) return 100; ++ if (var1 == Item.field_40417_bo.field_291_aS) return 2400; ++ return FMLCommonHandler.instance().fuelLookup(var1, p_488_1_.func_21179_h()); + } + } + diff --git a/patches/minecraft_server/net/minecraft/src/TileEntityFurnace.java.patch b/patches/minecraft_server/net/minecraft/src/TileEntityFurnace.java.patch index 9099235b58..bfb50a4d4f 100644 --- a/patches/minecraft_server/net/minecraft/src/TileEntityFurnace.java.patch +++ b/patches/minecraft_server/net/minecraft/src/TileEntityFurnace.java.patch @@ -8,12 +8,18 @@ public class TileEntityFurnace extends TileEntity implements IInventory { private ItemStack[] field_489_e = new ItemStack[3]; -@@ -236,7 +238,7 @@ +@@ -236,7 +238,13 @@ else { int var1 = p_194_1_.func_569_a().field_234_aS; - return var1 < 256 && Block.field_542_n[var1].field_553_bn == Material.field_524_c ? 300 : (var1 == Item.field_209_B.field_234_aS ? 100 : (var1 == Item.field_168_k.field_234_aS ? 1600 : (var1 == Item.field_201_aw.field_234_aS ? 20000 : (var1 == Block.field_6047_y.field_573_bc ? 100 : (var1 == Item.field_40239_bm.field_234_aS ? 2400 : 0))))); -+ return var1 < 256 && Block.field_542_n[var1].field_553_bn == Material.field_524_c ? 300 : (var1 == Item.field_209_B.field_234_aS ? 100 : (var1 == Item.field_168_k.field_234_aS ? 1600 : (var1 == Item.field_201_aw.field_234_aS ? 20000 : (var1 == Block.field_6047_y.field_573_bc ? 100 : (var1 == Item.field_40239_bm.field_234_aS ? 2400 : FMLCommonHandler.instance().fuelLookup(var1, p_194_1_.func_21125_h())))))); ++ if (var1 < 256 && Block.field_542_n[var1].field_553_bn == Material.field_524_c) return 300; ++ if (var1 == Item.field_209_B.field_234_aS) return 100; ++ if (var1 == Item.field_168_k.field_234_aS) return 1600; ++ if (var1 == Item.field_201_aw.field_234_aS) return 20000; ++ if (var1 == Block.field_6047_y.field_573_bc) return 100; ++ if (var1 == Item.field_40239_bm.field_234_aS) return 2400; ++ return FMLCommonHandler.instance().fuelLookup(var1, p_194_1_.func_21125_h()); } } diff --git a/server/net/minecraft/src/BaseMod.java b/server/net/minecraft/src/BaseMod.java index 266015e7ab..356306f418 100644 --- a/server/net/minecraft/src/BaseMod.java +++ b/server/net/minecraft/src/BaseMod.java @@ -66,6 +66,14 @@ public abstract class BaseMod implements IWorldGenerator, IPickupNotifier, IDisp return onChatMessageReceived((EntityPlayer)data[1], (Packet3Chat)data[0]); } + @Override + public final void onServerLogin(Object handler) { + // NOOP + } + + public final void onServerLogout() { + // NOOP + } @Override public final void onPlayerLogin(Object player) {