From 1bd3e96e6e15275ba626b5ab30a4a3804d98baac Mon Sep 17 00:00:00 2001 From: Lex Manos Date: Mon, 11 Nov 2013 13:15:06 -0800 Subject: [PATCH 1/9] Noop out FakePlayer.addStat. --- common/net/minecraftforge/common/FakePlayer.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/common/net/minecraftforge/common/FakePlayer.java b/common/net/minecraftforge/common/FakePlayer.java index 7d63255fbf..6550cf5b05 100644 --- a/common/net/minecraftforge/common/FakePlayer.java +++ b/common/net/minecraftforge/common/FakePlayer.java @@ -4,6 +4,7 @@ import cpw.mods.fml.common.FMLCommonHandler; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemInWorldManager; import net.minecraft.server.MinecraftServer; +import net.minecraft.stats.StatBase; import net.minecraft.util.ChatMessageComponent; import net.minecraft.util.ChunkCoordinates; import net.minecraft.world.World; @@ -25,4 +26,6 @@ public class FakePlayer extends EntityPlayerMP @Override public void sendChatToPlayer(ChatMessageComponent chatmessagecomponent){} + @Override + public void addStat(StatBase par1StatBase, int par2){} } From 0a12840e6823677f17fe2b014147ff2fc48a4ba3 Mon Sep 17 00:00:00 2001 From: CovertJaguar Date: Tue, 12 Nov 2013 01:05:13 -0800 Subject: [PATCH 2/9] Fix Water/Lava Fluid Localization --- .../net/minecraftforge/fluids/FluidRegistry.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/common/net/minecraftforge/fluids/FluidRegistry.java b/common/net/minecraftforge/fluids/FluidRegistry.java index 5031fa62ba..16d011f7d9 100644 --- a/common/net/minecraftforge/fluids/FluidRegistry.java +++ b/common/net/minecraftforge/fluids/FluidRegistry.java @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.Map; import net.minecraft.block.Block; +import net.minecraft.util.StatCollector; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.Event; @@ -25,8 +26,19 @@ public abstract class FluidRegistry static BiMap fluidIDs = HashBiMap.create(); static BiMap fluidBlocks; - public static final Fluid WATER = new Fluid("water").setBlockID(Block.waterStill.blockID).setUnlocalizedName(Block.waterStill.getUnlocalizedName()); - public static final Fluid LAVA = new Fluid("lava").setBlockID(Block.lavaStill.blockID).setLuminosity(15).setDensity(3000).setViscosity(6000).setTemperature(1300).setUnlocalizedName(Block.lavaStill.getUnlocalizedName()); + public static final Fluid WATER = new Fluid("water") { + @Override + public String getLocalizedName() { + return StatCollector.translateToLocal("tile.water.name"); + } + }.setBlockID(Block.waterStill.blockID).setUnlocalizedName(Block.waterStill.getUnlocalizedName()); + + public static final Fluid LAVA = new Fluid("lava") { + @Override + public String getLocalizedName() { + return StatCollector.translateToLocal("tile.lava.name"); + } + }.setBlockID(Block.lavaStill.blockID).setLuminosity(15).setDensity(3000).setViscosity(6000).setTemperature(1300).setUnlocalizedName(Block.lavaStill.getUnlocalizedName()); public static int renderIdFluid = -1; From c8e249f919ffc3858be7ca5045c52ba9300e45d5 Mon Sep 17 00:00:00 2001 From: Christian Date: Tue, 12 Nov 2013 17:22:20 -0500 Subject: [PATCH 3/9] Updated FML: MinecraftForge/FML@6af42bc656dfb98972d034363352affc9e777805 Add in null protection for client/server sides of handleChat --- fml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fml b/fml index 3d25b4e793..6af42bc656 160000 --- a/fml +++ b/fml @@ -1 +1 @@ -Subproject commit 3d25b4e793c59a9131a441d6c7a2d80cac9cd701 +Subproject commit 6af42bc656dfb98972d034363352affc9e777805 From 4f05808b8eea3e42d5e29a956c92580be97e294c Mon Sep 17 00:00:00 2001 From: Christian Date: Tue, 12 Nov 2013 17:33:24 -0500 Subject: [PATCH 4/9] Don't send openGui commands from the fakeplayer. Fixes thaumcraft and probably others. --- common/net/minecraftforge/common/FakePlayer.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/common/net/minecraftforge/common/FakePlayer.java b/common/net/minecraftforge/common/FakePlayer.java index 6550cf5b05..4c7da5ba94 100644 --- a/common/net/minecraftforge/common/FakePlayer.java +++ b/common/net/minecraftforge/common/FakePlayer.java @@ -28,4 +28,6 @@ public class FakePlayer extends EntityPlayerMP public void sendChatToPlayer(ChatMessageComponent chatmessagecomponent){} @Override public void addStat(StatBase par1StatBase, int par2){} + @Override + public void openGui(Object mod, int modGuiId, World world, int x, int y, int z){} } From 9fd39ebe793b4115f6eaea5c96b85a4f952395e5 Mon Sep 17 00:00:00 2001 From: Christian Date: Tue, 12 Nov 2013 18:05:04 -0500 Subject: [PATCH 5/9] Updated FML: MinecraftForge/FML@b7f34629c3c47b92ee89d72b0dc935b4997cb009 Don't try and open GUIs on the server. --- fml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fml b/fml index 6af42bc656..b7f34629c3 160000 --- a/fml +++ b/fml @@ -1 +1 @@ -Subproject commit 6af42bc656dfb98972d034363352affc9e777805 +Subproject commit b7f34629c3c47b92ee89d72b0dc935b4997cb009 From 745d601831d477aade6d214330fc08027e3d0b7c Mon Sep 17 00:00:00 2001 From: Christian Date: Wed, 13 Nov 2013 07:46:04 -0500 Subject: [PATCH 6/9] Updated FML: MinecraftForge/FML@da72640c7ef1f44c49f7f592fbdd193622a30b40 Way to go, missing import. *sigh* --- fml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fml b/fml index b7f34629c3..da72640c7e 160000 --- a/fml +++ b/fml @@ -1 +1 @@ -Subproject commit b7f34629c3c47b92ee89d72b0dc935b4997cb009 +Subproject commit da72640c7ef1f44c49f7f592fbdd193622a30b40 From 28abe2cc3ce3001f1795146cfc47f0a6daf65a93 Mon Sep 17 00:00:00 2001 From: Christian Date: Wed, 13 Nov 2013 19:14:56 -0500 Subject: [PATCH 7/9] Updated FML: MinecraftForge/FML@23baf3a8ce58cb8306189401a60647957ccbb4c2 Actually fix the nethandler code Update patches --- fml | 2 +- .../client/multiplayer/NetClientHandler.java.patch | 10 +++++----- .../net/minecraft/network/NetServerHandler.java.patch | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/fml b/fml index da72640c7e..23baf3a8ce 160000 --- a/fml +++ b/fml @@ -1 +1 @@ -Subproject commit da72640c7ef1f44c49f7f592fbdd193622a30b40 +Subproject commit 23baf3a8ce58cb8306189401a60647957ccbb4c2 diff --git a/patches/minecraft/net/minecraft/client/multiplayer/NetClientHandler.java.patch b/patches/minecraft/net/minecraft/client/multiplayer/NetClientHandler.java.patch index 0ef9b480ac..63a9622488 100644 --- a/patches/minecraft/net/minecraft/client/multiplayer/NetClientHandler.java.patch +++ b/patches/minecraft/net/minecraft/client/multiplayer/NetClientHandler.java.patch @@ -21,10 +21,10 @@ this.disconnected = true; this.mc.loadWorld((WorldClient)null); -@@ -866,7 +871,11 @@ - public void handleChat(Packet3Chat par1Packet3Chat) - { - par1Packet3Chat = FMLNetworkHandler.handleChatMessage(this, par1Packet3Chat); +@@ -870,7 +875,11 @@ + { + return; + } - this.mc.ingameGUI.getChatGUI().printChatMessage(ChatMessageComponent.createFromJson(par1Packet3Chat.message).toStringWithFormatting(true)); + ClientChatReceivedEvent event = new ClientChatReceivedEvent(par1Packet3Chat.message); + if (!MinecraftForge.EVENT_BUS.post(event) && event.message != null) @@ -34,7 +34,7 @@ } public void handleAnimation(Packet18Animation par1Packet18Animation) -@@ -1354,6 +1363,10 @@ +@@ -1358,6 +1367,10 @@ { tileentity.readFromNBT(par1Packet132TileEntityData.data); } diff --git a/patches/minecraft/net/minecraft/network/NetServerHandler.java.patch b/patches/minecraft/net/minecraft/network/NetServerHandler.java.patch index d28a430214..7e6a1554fd 100644 --- a/patches/minecraft/net/minecraft/network/NetServerHandler.java.patch +++ b/patches/minecraft/net/minecraft/network/NetServerHandler.java.patch @@ -127,7 +127,7 @@ { this.playerEntity.theItemInWorldManager.activateBlockOrUseItem(this.playerEntity, worldserver, itemstack, i, j, k, l, par1Packet15Place.getXOffset(), par1Packet15Place.getYOffset(), par1Packet15Place.getZOffset()); } -@@ -695,6 +733,8 @@ +@@ -698,6 +736,8 @@ } ChatMessageComponent chatmessagecomponent = ChatMessageComponent.createFromTranslationWithSubstitutions("chat.type.text", new Object[] {this.playerEntity.getTranslatedEntityName(), s}); @@ -136,7 +136,7 @@ this.mcServer.getConfigurationManager().func_110459_a(chatmessagecomponent, false); } -@@ -849,7 +889,7 @@ +@@ -852,7 +892,7 @@ return; } From 77c5caffd5a04d073c886c5b32365e027cb821dc Mon Sep 17 00:00:00 2001 From: Lex Manos Date: Sat, 16 Nov 2013 15:26:00 -0800 Subject: [PATCH 8/9] Fix NPE on specific tile entities when the block break event is canceled. Closes #863 --- common/net/minecraftforge/common/ForgeHooks.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/common/net/minecraftforge/common/ForgeHooks.java b/common/net/minecraftforge/common/ForgeHooks.java index 43dbe83474..8d98241644 100644 --- a/common/net/minecraftforge/common/ForgeHooks.java +++ b/common/net/minecraftforge/common/ForgeHooks.java @@ -22,6 +22,7 @@ import net.minecraft.item.ItemSpade; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemSword; import net.minecraft.network.NetServerHandler; +import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.Packet53BlockChange; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; @@ -487,7 +488,11 @@ public class ForgeHooks TileEntity tileentity = world.getBlockTileEntity(x, y, z); if (tileentity != null) { - entityPlayer.playerNetServerHandler.sendPacketToPlayer(tileentity.getDescriptionPacket()); + Packet pkt = tileentity.getDescriptionPacket(); + if (pkt != null) + { + entityPlayer.playerNetServerHandler.sendPacketToPlayer(pkt); + } } } return event; From 45cc0bd87c302a4f3bbeb54c56a412839460dcff Mon Sep 17 00:00:00 2001 From: Lex Manos Date: Sat, 16 Nov 2013 15:26:52 -0800 Subject: [PATCH 9/9] Fix NPE in FakePlayers when they are created in a purely client side environment. To remove in 1.7 as FakePlayers should be used for server side interaction with the world on a player's behalf, not for client rendering. --- .../net/minecraftforge/common/FakePlayer.java | 15 +++++++++++++ .../entity/player/EntityPlayerMP.java.patch | 21 ++++++++++++------- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/common/net/minecraftforge/common/FakePlayer.java b/common/net/minecraftforge/common/FakePlayer.java index 4c7da5ba94..7413a7d191 100644 --- a/common/net/minecraftforge/common/FakePlayer.java +++ b/common/net/minecraftforge/common/FakePlayer.java @@ -1,12 +1,15 @@ package net.minecraftforge.common; import cpw.mods.fml.common.FMLCommonHandler; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemInWorldManager; +import net.minecraft.network.packet.Packet204ClientInfo; import net.minecraft.server.MinecraftServer; import net.minecraft.stats.StatBase; import net.minecraft.util.ChatMessageComponent; import net.minecraft.util.ChunkCoordinates; +import net.minecraft.util.DamageSource; import net.minecraft.world.World; //Preliminary, simple Fake Player class @@ -30,4 +33,16 @@ public class FakePlayer extends EntityPlayerMP public void addStat(StatBase par1StatBase, int par2){} @Override public void openGui(Object mod, int modGuiId, World world, int x, int y, int z){} + @Override + public boolean isEntityInvulnerable(){ return true; } + @Override + public boolean canAttackPlayer(EntityPlayer player){ return false; } + @Override + public void onDeath(DamageSource source){ return; } + @Override + public void onUpdate(){ return; } + @Override + public void travelToDimension(int dim){ return; } + @Override + public void updateClientInfo(Packet204ClientInfo pkt){ return; } } diff --git a/patches/minecraft/net/minecraft/entity/player/EntityPlayerMP.java.patch b/patches/minecraft/net/minecraft/entity/player/EntityPlayerMP.java.patch index 6d2c8e179f..a186e0fbdf 100644 --- a/patches/minecraft/net/minecraft/entity/player/EntityPlayerMP.java.patch +++ b/patches/minecraft/net/minecraft/entity/player/EntityPlayerMP.java.patch @@ -13,11 +13,16 @@ public class EntityPlayerMP extends EntityPlayer implements ICrafting { private String translator = "en_US"; -@@ -165,18 +171,10 @@ +@@ -164,19 +170,14 @@ + super(par2World, par3Str); par4ItemInWorldManager.thisPlayerMP = this; this.theItemInWorldManager = par4ItemInWorldManager; - this.renderDistance = par1MinecraftServer.getConfigurationManager().getViewDistance(); +- this.renderDistance = par1MinecraftServer.getConfigurationManager().getViewDistance(); - ChunkCoordinates chunkcoordinates = par2World.getSpawnPoint(); ++ if (par1MinecraftServer == null) //ToDo: Remove this in 1.7, Fake players shouldn't be used purely client side. ++ this.renderDistance = 0; ++ else ++ this.renderDistance = par1MinecraftServer.getConfigurationManager().getViewDistance(); + ChunkCoordinates chunkcoordinates = par2World.provider.getRandomizedSpawnPoint(); int i = chunkcoordinates.posX; int j = chunkcoordinates.posZ; @@ -33,7 +38,7 @@ this.mcServer = par1MinecraftServer; this.stepHeight = 0.0F; -@@ -240,11 +238,6 @@ +@@ -240,11 +241,6 @@ this.yOffset = 0.0F; } @@ -45,7 +50,7 @@ /** * Called to update the entity's position/logic. */ -@@ -254,7 +247,7 @@ +@@ -254,7 +250,7 @@ --this.initialInvulnerability; this.openContainer.detectAndSendChanges(); @@ -54,7 +59,7 @@ { this.closeScreen(); this.openContainer = this.inventoryContainer; -@@ -290,7 +283,10 @@ +@@ -290,7 +286,10 @@ if (chunkcoordintpair != null && this.worldObj.blockExists(chunkcoordintpair.chunkXPos << 4, 0, chunkcoordintpair.chunkZPos << 4)) { arraylist.add(this.worldObj.getChunkFromChunkCoords(chunkcoordintpair.chunkXPos, chunkcoordintpair.chunkZPos)); @@ -66,7 +71,7 @@ } } -@@ -311,6 +307,7 @@ +@@ -311,6 +310,7 @@ { Chunk chunk = (Chunk)iterator2.next(); this.getServerForPlayer().getEntityTracker().func_85172_a(this, chunk); @@ -74,7 +79,7 @@ } } } -@@ -383,11 +380,25 @@ +@@ -383,11 +383,25 @@ */ public void onDeath(DamageSource par1DamageSource) { @@ -100,7 +105,7 @@ } Collection collection = this.worldObj.getScoreboard().func_96520_a(ScoreObjectiveCriteria.deathCount); -@@ -1054,4 +1065,16 @@ +@@ -1054,4 +1068,16 @@ { this.field_143005_bX = MinecraftServer.getSystemTimeMillis(); }