diff --git a/patches/minecraft/net/minecraft/entity/EntityLivingBase.java.patch b/patches/minecraft/net/minecraft/entity/EntityLivingBase.java.patch index af2692872..220f1d69b 100644 --- a/patches/minecraft/net/minecraft/entity/EntityLivingBase.java.patch +++ b/patches/minecraft/net/minecraft/entity/EntityLivingBase.java.patch @@ -302,7 +302,7 @@ ItemStack itemstack1 = this.func_184582_a(entityequipmentslot); if (!ItemStack.func_77989_b(itemstack1, itemstack)) { -+ if (!ItemStack.areItemStacksEqualUsingNBTShareTag(itemstack1, itemstack)) ++ if (!itemstack1.areShareTagsEqual(itemstack)) ((WorldServer)this.field_70170_p).func_73039_n().func_151247_a(this, new SPacketEntityEquipment(this.func_145782_y(), entityequipmentslot, itemstack1)); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.living.LivingEquipmentChangeEvent(this, entityequipmentslot, itemstack, itemstack1)); if (!itemstack.func_190926_b()) { diff --git a/patches/minecraft/net/minecraft/inventory/Container.java.patch b/patches/minecraft/net/minecraft/inventory/Container.java.patch index d61714885..ef98a31ba 100644 --- a/patches/minecraft/net/minecraft/inventory/Container.java.patch +++ b/patches/minecraft/net/minecraft/inventory/Container.java.patch @@ -4,7 +4,7 @@ ItemStack itemstack = ((Slot)this.field_75151_b.get(i)).func_75211_c(); ItemStack itemstack1 = this.field_75153_a.get(i); if (!ItemStack.func_77989_b(itemstack1, itemstack)) { -+ boolean clientStackChanged = !ItemStack.areItemStacksEqualUsingNBTShareTag(itemstack1, itemstack); ++ boolean clientStackChanged = !itemstack1.areShareTagsEqual(itemstack); itemstack1 = itemstack.func_190926_b() ? ItemStack.field_190927_a : itemstack.func_77946_l(); this.field_75153_a.set(i, itemstack1); diff --git a/patches/minecraft/net/minecraft/item/ItemStack.java.patch b/patches/minecraft/net/minecraft/item/ItemStack.java.patch index 1151703fc..50ce75697 100644 --- a/patches/minecraft/net/minecraft/item/ItemStack.java.patch +++ b/patches/minecraft/net/minecraft/item/ItemStack.java.patch @@ -193,7 +193,7 @@ } return multimap; -@@ -874,4 +897,89 @@ +@@ -874,4 +897,37 @@ public void func_190918_g(int p_190918_1_) { this.func_190917_f(-p_190918_1_); } @@ -229,57 +229,5 @@ + private Item getItemRaw() + { + return this.field_151002_e; -+ } -+ -+ /** -+ * Modeled after ItemStack.areItemStacksEqual -+ * Uses Item.getNBTShareTag for comparison instead of NBT and capabilities. -+ * Only used for comparing itemStacks that were transferred from server to client using Item.getNBTShareTag. -+ */ -+ public static boolean areItemStacksEqualUsingNBTShareTag(ItemStack stackA, ItemStack stackB) -+ { -+ if (stackA.func_190926_b()) -+ return stackB.func_190926_b(); -+ else -+ return !stackB.func_190926_b() && stackA.isItemStackEqualUsingNBTShareTag(stackB); -+ } -+ -+ /** -+ * Modeled after ItemStack.isItemStackEqual -+ * Uses Item.getNBTShareTag for comparison instead of NBT and capabilities. -+ * Only used for comparing itemStacks that were transferred from server to client using Item.getNBTShareTag. -+ */ -+ private boolean isItemStackEqualUsingNBTShareTag(ItemStack other) -+ { -+ return this.field_77994_a == other.field_77994_a && this.func_77973_b() == other.func_77973_b() && areItemStackShareTagsEqual(this, other); -+ } -+ -+ /** -+ * Modeled after ItemStack.areItemStackTagsEqual -+ * Uses Item.getNBTShareTag for comparison instead of NBT and capabilities. -+ * Only used for comparing itemStacks that were transferred from server to client using Item.getNBTShareTag. -+ */ -+ public static boolean areItemStackShareTagsEqual(ItemStack stackA, ItemStack stackB) -+ { -+ NBTTagCompound shareTagA = stackA.func_77973_b().getNBTShareTag(stackA); -+ NBTTagCompound shareTagB = stackB.func_77973_b().getNBTShareTag(stackB); -+ if (shareTagA == null) -+ return shareTagB == null; -+ else -+ return shareTagB != null && shareTagA.equals(shareTagB); -+ } -+ -+ /** -+ * -+ * Should this item, when held, allow sneak-clicks to pass through to the underlying block? -+ * -+ * @param world The world -+ * @param pos Block position in world -+ * @param player The Player that is wielding the item -+ * @return -+ */ -+ public boolean doesSneakBypassUse(net.minecraft.world.IWorldReader world, BlockPos pos, EntityPlayer player) -+ { -+ return this.func_190926_b() || this.func_77973_b().doesSneakBypassUse(this, world, pos, player); + } } diff --git a/patches/minecraft/net/minecraft/network/NetHandlerPlayServer.java.patch b/patches/minecraft/net/minecraft/network/NetHandlerPlayServer.java.patch index 8aaf5e29f..950bef0c5 100644 --- a/patches/minecraft/net/minecraft/network/NetHandlerPlayServer.java.patch +++ b/patches/minecraft/net/minecraft/network/NetHandlerPlayServer.java.patch @@ -12,7 +12,57 @@ this.field_147371_a.func_179290_a(new SPacketMoveVehicle(entity)); return; } -@@ -1265,5 +1267,7 @@ +@@ -791,7 +793,9 @@ + double d1 = this.field_147369_b.field_70163_u - ((double)blockpos.func_177956_o() + 0.5D) + 1.5D; + double d2 = this.field_147369_b.field_70161_v - ((double)blockpos.func_177952_p() + 0.5D); + double d3 = d0 * d0 + d1 * d1 + d2 * d2; +- if (d3 > 36.0D) { ++ double dist = field_147369_b.func_110148_a(EntityPlayer.REACH_DISTANCE).func_111126_e() + 1; ++ dist *= dist; ++ if (d3 > dist) { + return; + } else if (blockpos.func_177956_o() >= this.field_147367_d.func_71207_Z()) { + return; +@@ -830,7 +834,9 @@ + EnumFacing enumfacing = p_184337_1_.func_187024_b(); + this.field_147369_b.func_143004_u(); + if (blockpos.func_177956_o() < this.field_147367_d.func_71207_Z() - 1 || enumfacing != EnumFacing.UP && blockpos.func_177956_o() < this.field_147367_d.func_71207_Z()) { +- if (this.field_184362_y == null && this.field_147369_b.func_70092_e((double)blockpos.func_177958_n() + 0.5D, (double)blockpos.func_177956_o() + 0.5D, (double)blockpos.func_177952_p() + 0.5D) < 64.0D && !this.field_147367_d.func_175579_a(worldserver, blockpos, this.field_147369_b) && worldserver.func_175723_af().func_177746_a(blockpos)) { ++ double dist = field_147369_b.func_110148_a(EntityPlayer.REACH_DISTANCE).func_111126_e() + 3; ++ dist *= dist; ++ if (this.field_184362_y == null && this.field_147369_b.func_70092_e((double)blockpos.func_177958_n() + 0.5D, (double)blockpos.func_177956_o() + 0.5D, (double)blockpos.func_177952_p() + 0.5D) < dist && !this.field_147367_d.func_175579_a(worldserver, blockpos, this.field_147369_b) && worldserver.func_175723_af().func_177746_a(blockpos)) { + this.field_147369_b.field_71134_c.func_187251_a(this.field_147369_b, worldserver, itemstack, enumhand, blockpos, enumfacing, p_184337_1_.func_187026_d(), p_184337_1_.func_187025_e(), p_184337_1_.func_187020_f()); + } + } else { +@@ -957,7 +963,9 @@ + if (s.startsWith("/")) { + this.func_147361_d(s); + } else { +- ITextComponent itextcomponent = new TextComponentTranslation("chat.type.text", new Object[]{this.field_147369_b.func_145748_c_(), s}); ++ ITextComponent itextcomponent = new TextComponentTranslation("chat.type.text", new Object[]{this.field_147369_b.func_145748_c_(), net.minecraftforge.common.ForgeHooks.newChatWithLinks(s)}); ++ itextcomponent = net.minecraftforge.common.ForgeHooks.onServerChatEvent(this, s, itextcomponent); ++ if (itextcomponent == null) return; + this.field_147367_d.func_184103_al().func_148544_a(itextcomponent, false); + } + +@@ -1055,6 +1063,7 @@ + this.field_147369_b.func_190775_a(entity, enumhand); + } else if (p_147340_1_.func_149565_c() == CPacketUseEntity.Action.INTERACT_AT) { + EnumHand enumhand1 = p_147340_1_.func_186994_b(); ++ if (net.minecraftforge.common.ForgeHooks.onInteractEntityAt(field_147369_b, entity, p_147340_1_.func_179712_b(), enumhand1) != null) return; + entity.func_184199_a(this.field_147369_b, p_147340_1_.func_179712_b(), enumhand1); + } else if (p_147340_1_.func_149565_c() == CPacketUseEntity.Action.ATTACK) { + if (entity instanceof EntityItem || entity instanceof EntityXPOrb || entity instanceof EntityArrow || entity == this.field_147369_b) { +@@ -1085,7 +1094,7 @@ + return; + } + +- this.field_147369_b = this.field_147367_d.func_184103_al().func_72368_a(this.field_147369_b, 0, false); ++ this.field_147369_b = this.field_147367_d.func_184103_al().func_72368_a(this.field_147369_b, field_147369_b.field_71093_bK, false); + if (this.field_147367_d.func_71199_h()) { + this.field_147369_b.func_71033_a(GameType.SPECTATOR); + this.field_147369_b.func_71121_q().func_82736_K().func_82764_b("spectatorsGenerateChunks", "false", this.field_147367_d); +@@ -1265,5 +1274,7 @@ } public void func_147349_a(CPacketCustomPayload p_147349_1_) { diff --git a/patches/minecraft/net/minecraft/network/NetworkManager.java.patch b/patches/minecraft/net/minecraft/network/NetworkManager.java.patch index 5c311a36b..f6707ba38 100644 --- a/patches/minecraft/net/minecraft/network/NetworkManager.java.patch +++ b/patches/minecraft/net/minecraft/network/NetworkManager.java.patch @@ -1,16 +1,22 @@ --- a/net/minecraft/network/NetworkManager.java +++ b/net/minecraft/network/NetworkManager.java -@@ -383,6 +383,16 @@ +@@ -264,6 +264,7 @@ + + @OnlyIn(Dist.CLIENT) + public static NetworkManager func_181124_a(InetAddress p_181124_0_, int p_181124_1_, boolean p_181124_2_) { ++ if (p_181124_0_ instanceof java.net.Inet6Address) System.setProperty("java.net.preferIPv4Stack", "false"); + final NetworkManager networkmanager = new NetworkManager(EnumPacketDirection.CLIENTBOUND); + Class oclass; + LazyLoadBase lazyloadbase; +@@ -383,6 +384,14 @@ return this.field_211397_t; } -+ public Channel channel() -+ { ++ public Channel channel() { + return field_150746_k; + } + -+ public EnumPacketDirection getDirection() -+ { ++ public EnumPacketDirection getDirection() { + return this.field_179294_g; + } + diff --git a/patches/minecraft/net/minecraft/network/NetworkSystem.java.patch b/patches/minecraft/net/minecraft/network/NetworkSystem.java.patch new file mode 100644 index 000000000..e0d0bacc6 --- /dev/null +++ b/patches/minecraft/net/minecraft/network/NetworkSystem.java.patch @@ -0,0 +1,35 @@ +--- a/net/minecraft/network/NetworkSystem.java ++++ b/net/minecraft/network/NetworkSystem.java +@@ -41,12 +41,13 @@ + import org.apache.logging.log4j.Logger; + + public class NetworkSystem { ++ private static final int READ_TIMEOUT = Integer.parseInt(System.getProperty("forge.readTimeout", "30")); + private static final Logger field_151275_b = LogManager.getLogger(); + public static final LazyLoadBase field_151276_c = new LazyLoadBase(() -> { +- return new NioEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Server IO #%d").setDaemon(true).build()); ++ return new NioEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Server IO #%d").setDaemon(true).setThreadFactory(net.minecraftforge.fml.common.thread.SidedThreadGroups.SERVER).build()); + }); + public static final LazyLoadBase field_181141_b = new LazyLoadBase(() -> { +- return new EpollEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Epoll Server IO #%d").setDaemon(true).build()); ++ return new EpollEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Epoll Server IO #%d").setDaemon(true).setThreadFactory(net.minecraftforge.fml.common.thread.SidedThreadGroups.SERVER).build()); + }); + private final MinecraftServer field_151273_d; + public volatile boolean field_151277_a; +@@ -59,6 +60,7 @@ + } + + public void func_151265_a(@Nullable InetAddress p_151265_1_, int p_151265_2_) throws IOException { ++ if (p_151265_1_ instanceof java.net.Inet6Address) System.setProperty("java.net.preferIPv4Stack", "false"); + synchronized(this.field_151274_e) { + Class oclass; + LazyLoadBase lazyloadbase; +@@ -80,7 +82,7 @@ + ; + } + +- p_initChannel_1_.pipeline().addLast("timeout", new ReadTimeoutHandler(30)).addLast("legacy_query", new LegacyPingHandler(NetworkSystem.this)).addLast("splitter", new NettyVarint21FrameDecoder()).addLast("decoder", new NettyPacketDecoder(EnumPacketDirection.SERVERBOUND)).addLast("prepender", new NettyVarint21FrameEncoder()).addLast("encoder", new NettyPacketEncoder(EnumPacketDirection.CLIENTBOUND)); ++ p_initChannel_1_.pipeline().addLast("timeout", new ReadTimeoutHandler(READ_TIMEOUT)).addLast("legacy_query", new LegacyPingHandler(NetworkSystem.this)).addLast("splitter", new NettyVarint21FrameDecoder()).addLast("decoder", new NettyPacketDecoder(EnumPacketDirection.SERVERBOUND)).addLast("prepender", new NettyVarint21FrameEncoder()).addLast("encoder", new NettyPacketEncoder(EnumPacketDirection.CLIENTBOUND)); + NetworkManager networkmanager = new NetworkManager(EnumPacketDirection.SERVERBOUND); + NetworkSystem.this.field_151272_f.add(networkmanager); + p_initChannel_1_.pipeline().addLast("packet_handler", networkmanager); diff --git a/patches/minecraft/net/minecraft/network/PacketBuffer.java.patch b/patches/minecraft/net/minecraft/network/PacketBuffer.java.patch new file mode 100644 index 000000000..a0e33c0ab --- /dev/null +++ b/patches/minecraft/net/minecraft/network/PacketBuffer.java.patch @@ -0,0 +1,36 @@ +--- a/net/minecraft/network/PacketBuffer.java ++++ b/net/minecraft/network/PacketBuffer.java +@@ -256,6 +256,15 @@ + } + + public PacketBuffer func_150788_a(ItemStack p_150788_1_) { ++ return writeItemStack(p_150788_1_, true); ++ } ++ ++ /** ++ * Most ItemStack serialization is Server to Client,and doesn't need to know the FULL tag details. ++ * One exception is items from the creative menu, which must be sent from Client to Server with their full NBT. ++ * If you want to send the FULL tag set limitedTag to false ++ */ ++ public PacketBuffer writeItemStack(ItemStack p_150788_1_, boolean limitedTag) { + if (p_150788_1_.func_190926_b()) { + this.writeShort(-1); + } else { +@@ -264,7 +273,7 @@ + this.writeByte(p_150788_1_.func_190916_E()); + NBTTagCompound nbttagcompound = null; + if (item.func_77645_m() || item.func_77651_p()) { +- nbttagcompound = p_150788_1_.func_77978_p(); ++ nbttagcompound = limitedTag ? p_150788_1_.getShareTag() : p_150788_1_.func_77978_p(); + } + + this.func_150786_a(nbttagcompound); +@@ -280,7 +289,7 @@ + } else { + int j = this.readByte(); + ItemStack itemstack = new ItemStack(Item.func_150899_d(i), j); +- itemstack.func_77982_d(this.func_150793_b()); ++ itemstack.readShareTag(this.func_150793_b()); + return itemstack; + } + } diff --git a/patches/minecraft/net/minecraft/network/handshake/client/CPacketHandshake.java.patch b/patches/minecraft/net/minecraft/network/handshake/client/CPacketHandshake.java.patch index 424242d7c..5b268170a 100644 --- a/patches/minecraft/net/minecraft/network/handshake/client/CPacketHandshake.java.patch +++ b/patches/minecraft/net/minecraft/network/handshake/client/CPacketHandshake.java.patch @@ -30,5 +30,5 @@ + + public String getFMLVersion() { + return this.fmlVersion; ++ } } -+} diff --git a/patches/minecraft/net/minecraft/network/login/server/SPacketLoginSuccess.java.patch b/patches/minecraft/net/minecraft/network/login/server/SPacketLoginSuccess.java.patch new file mode 100644 index 000000000..d8212658b --- /dev/null +++ b/patches/minecraft/net/minecraft/network/login/server/SPacketLoginSuccess.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/network/login/server/SPacketLoginSuccess.java ++++ b/net/minecraft/network/login/server/SPacketLoginSuccess.java +@@ -22,7 +22,7 @@ + public void func_148837_a(PacketBuffer p_148837_1_) throws IOException { + String s = p_148837_1_.func_150789_c(36); + String s1 = p_148837_1_.func_150789_c(16); +- UUID uuid = UUID.fromString(s); ++ UUID uuid = s.length() > 0 ? UUID.fromString(s) : null; // Forge: prevent exception with bad data. + this.field_149602_a = new GameProfile(uuid, s1); + } + diff --git a/patches/minecraft/net/minecraft/network/play/client/CPacketClickWindow.java.patch b/patches/minecraft/net/minecraft/network/play/client/CPacketClickWindow.java.patch new file mode 100644 index 000000000..cf818260c --- /dev/null +++ b/patches/minecraft/net/minecraft/network/play/client/CPacketClickWindow.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/network/play/client/CPacketClickWindow.java ++++ b/net/minecraft/network/play/client/CPacketClickWindow.java +@@ -49,7 +49,7 @@ + p_148840_1_.writeByte(this.field_149553_c); + p_148840_1_.writeShort(this.field_149550_d); + p_148840_1_.func_179249_a(this.field_149549_f); +- p_148840_1_.func_150788_a(this.field_149551_e); ++ p_148840_1_.writeItemStack(this.field_149551_e, false); //Forge: Include full tag for C->S + } + + public int func_149548_c() { diff --git a/patches/minecraft/net/minecraft/network/play/client/CPacketCreativeInventoryAction.java.patch b/patches/minecraft/net/minecraft/network/play/client/CPacketCreativeInventoryAction.java.patch new file mode 100644 index 000000000..a8b0c2c74 --- /dev/null +++ b/patches/minecraft/net/minecraft/network/play/client/CPacketCreativeInventoryAction.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/network/play/client/CPacketCreativeInventoryAction.java ++++ b/net/minecraft/network/play/client/CPacketCreativeInventoryAction.java +@@ -32,7 +32,7 @@ + + public void func_148840_b(PacketBuffer p_148840_1_) throws IOException { + p_148840_1_.writeShort(this.field_149629_a); +- p_148840_1_.func_150788_a(this.field_149628_b); ++ p_148840_1_.writeItemStack(this.field_149628_b, false); //Forge: Include full tag for C->S + } + + public int func_149627_c() { diff --git a/patches/minecraft/net/minecraft/network/play/client/CPacketCustomPayload.java.patch b/patches/minecraft/net/minecraft/network/play/client/CPacketCustomPayload.java.patch index d368056a2..02bbd473e 100644 --- a/patches/minecraft/net/minecraft/network/play/client/CPacketCustomPayload.java.patch +++ b/patches/minecraft/net/minecraft/network/play/client/CPacketCustomPayload.java.patch @@ -10,3 +10,12 @@ public static final ResourceLocation field_210344_a = new ResourceLocation("minecraft:brand"); private ResourceLocation field_149562_a; private PacketBuffer field_149561_c; +@@ -35,7 +36,7 @@ + + public void func_148840_b(PacketBuffer p_148840_1_) throws IOException { + p_148840_1_.func_192572_a(this.field_149562_a); +- p_148840_1_.writeBytes((ByteBuf)this.field_149561_c); ++ p_148840_1_.writeBytes((ByteBuf)this.field_149561_c.copy()); //This may be access multiple times, from multiple threads, lets be safe like the S->C packet + } + + public void func_148833_a(INetHandlerPlayServer p_148833_1_) { diff --git a/patches/minecraft/net/minecraft/server/management/PlayerList.java.patch b/patches/minecraft/net/minecraft/server/management/PlayerList.java.patch index bbb18c9ad..08a7cb8ad 100644 --- a/patches/minecraft/net/minecraft/server/management/PlayerList.java.patch +++ b/patches/minecraft/net/minecraft/server/management/PlayerList.java.patch @@ -1,6 +1,33 @@ --- a/net/minecraft/server/management/PlayerList.java +++ b/net/minecraft/server/management/PlayerList.java -@@ -184,6 +184,7 @@ +@@ -113,7 +113,16 @@ + String s = gameprofile1 == null ? gameprofile.getName() : gameprofile1.getName(); + playerprofilecache.func_152649_a(gameprofile); + NBTTagCompound nbttagcompound = this.func_72380_a(p_72355_2_); +- p_72355_2_.func_70029_a(this.field_72400_f.func_71218_a(p_72355_2_.field_71093_bK)); ++ ++ //Forge: Make sure the dimension hasn't been deleted, if so stick them in the overworld. ++ WorldServer playerWorld = this.field_72400_f.func_71218_a(p_72355_2_.field_71093_bK); ++ if (playerWorld == null) { ++ p_72355_2_.field_71093_bK = 0; ++ playerWorld = this.field_72400_f.func_71218_a(p_72355_2_.field_71093_bK); ++ p_72355_2_.func_70107_b(playerWorld.func_72912_H().func_76079_c(), playerWorld.func_72912_H().func_76075_d(), playerWorld.func_72912_H().func_76074_e()); ++ } ++ ++ p_72355_2_.func_70029_a(playerWorld); + p_72355_2_.field_71134_c.func_73080_a((WorldServer)p_72355_2_.field_70170_p); + String s1 = "local"; + if (p_72355_1_.func_74430_c() != null) { +@@ -125,7 +134,7 @@ + WorldInfo worldinfo = worldserver.func_72912_H(); + this.func_72381_a(p_72355_2_, (EntityPlayerMP)null, worldserver); + NetHandlerPlayServer nethandlerplayserver = new NetHandlerPlayServer(this.field_72400_f, p_72355_1_, p_72355_2_); +- nethandlerplayserver.func_147359_a(new SPacketJoinGame(p_72355_2_.func_145782_y(), p_72355_2_.field_71134_c.func_73081_b(), worldinfo.func_76093_s(), worldserver.field_73011_w.func_186058_p().func_186068_a(), worldserver.func_175659_aa(), this.func_72352_l(), worldinfo.func_76067_t(), worldserver.func_82736_K().func_82766_b("reducedDebugInfo"))); ++ nethandlerplayserver.func_147359_a(new SPacketJoinGame(p_72355_2_.func_145782_y(), p_72355_2_.field_71134_c.func_73081_b(), worldinfo.func_76093_s(), worldserver.field_73011_w.getId(), worldserver.func_175659_aa(), this.func_72352_l(), worldinfo.func_76067_t(), worldserver.func_82736_K().func_82766_b("reducedDebugInfo"))); + nethandlerplayserver.func_147359_a(new SPacketCustomPayload(SPacketCustomPayload.field_209911_b, (new PacketBuffer(Unpooled.buffer())).func_180714_a(this.func_72365_p().getServerModName()))); + nethandlerplayserver.func_147359_a(new SPacketServerDifficulty(worldinfo.func_176130_y(), worldinfo.func_176123_z())); + nethandlerplayserver.func_147359_a(new SPacketPlayerAbilities(p_72355_2_.field_71075_bZ)); +@@ -184,6 +193,7 @@ } p_72355_2_.func_71116_b(); @@ -8,7 +35,31 @@ } protected void func_96456_a(ServerScoreboard p_96456_1_, EntityPlayerMP p_96456_2_) { -@@ -307,6 +308,7 @@ +@@ -266,6 +276,7 @@ + nbttagcompound1 = nbttagcompound; + p_72380_1_.func_70020_e(nbttagcompound); + field_148546_d.debug("loading single player"); ++ net.minecraftforge.event.ForgeEventFactory.firePlayerLoadingEvent(p_72380_1_, this.field_72412_k, p_72380_1_.func_110124_au().toString()); + } else { + nbttagcompound1 = this.field_72412_k.func_75752_b(p_72380_1_); + } +@@ -274,6 +285,7 @@ + } + + protected void func_72391_b(EntityPlayerMP p_72391_1_) { ++ if (p_72391_1_.field_71135_a == null) return; + this.field_72412_k.func_75753_a(p_72391_1_); + StatisticsManagerServer statisticsmanagerserver = this.field_148547_k.get(p_72391_1_.func_110124_au()); + if (statisticsmanagerserver != null) { +@@ -297,6 +309,7 @@ + p_72377_1_.field_71135_a.func_147359_a(new SPacketPlayerListItem(SPacketPlayerListItem.Action.ADD_PLAYER, new EntityPlayerMP[]{this.field_72404_b.get(i)})); + } + ++ net.minecraftforge.common.chunkio.ChunkIOExecutor.adjustPoolSize(this.func_72394_k()); + worldserver.func_72838_d(p_72377_1_); + this.func_72375_a(p_72377_1_, (WorldServer)null); + this.field_72400_f.func_201300_aS().func_201383_a(p_72377_1_); +@@ -307,6 +320,7 @@ } public void func_72367_e(EntityPlayerMP p_72367_1_) { @@ -16,7 +67,56 @@ WorldServer worldserver = p_72367_1_.func_71121_q(); p_72367_1_.func_195066_a(StatList.field_75947_j); this.func_72391_b(p_72367_1_); -@@ -453,6 +455,7 @@ +@@ -324,6 +338,7 @@ + worldserver.func_72964_e(p_72367_1_.field_70176_ah, p_72367_1_.field_70164_aj).func_76630_e(); + } + } ++ net.minecraftforge.common.chunkio.ChunkIOExecutor.adjustPoolSize(this.func_72394_k()); + + worldserver.func_72900_e(p_72367_1_); + worldserver.func_184164_w().func_72695_c(p_72367_1_); +@@ -397,13 +412,21 @@ + } + + public EntityPlayerMP func_72368_a(EntityPlayerMP p_72368_1_, int p_72368_2_, boolean p_72368_3_) { ++ WorldServer world = field_72400_f.func_71218_a(p_72368_2_); ++ if (world == null) ++ p_72368_2_ = p_72368_1_.getSpawnDimension(); ++ else if (!world.func_201675_m().func_76567_e()) ++ p_72368_2_ = world.func_201675_m().getRespawnDimension(p_72368_1_); ++ if (field_72400_f.func_71218_a(p_72368_2_) == null) ++ p_72368_2_ = 0; ++ + p_72368_1_.func_71121_q().func_73039_n().func_72787_a(p_72368_1_); + p_72368_1_.func_71121_q().func_73039_n().func_72790_b(p_72368_1_); + p_72368_1_.func_71121_q().func_184164_w().func_72695_c(p_72368_1_); + this.field_72404_b.remove(p_72368_1_); + this.field_72400_f.func_71218_a(p_72368_1_.field_71093_bK).func_72973_f(p_72368_1_); +- BlockPos blockpos = p_72368_1_.func_180470_cg(); +- boolean flag = p_72368_1_.func_82245_bX(); ++ BlockPos blockpos = p_72368_1_.getBedLocation(p_72368_2_); ++ boolean flag = p_72368_1_.isSpawnForced(p_72368_2_); + p_72368_1_.field_71093_bK = p_72368_2_; + PlayerInteractionManager playerinteractionmanager; + if (this.field_72400_f.func_71242_L()) { +@@ -415,6 +438,7 @@ + EntityPlayerMP entityplayermp = new EntityPlayerMP(this.field_72400_f, this.field_72400_f.func_71218_a(p_72368_1_.field_71093_bK), p_72368_1_.func_146103_bH(), playerinteractionmanager); + entityplayermp.field_71135_a = p_72368_1_.field_71135_a; + entityplayermp.func_193104_a(p_72368_1_, p_72368_3_); ++ entityplayermp.field_71093_bK = p_72368_2_; + entityplayermp.func_145769_d(p_72368_1_.func_145782_y()); + entityplayermp.func_184819_a(p_72368_1_.func_184591_cq()); + +@@ -428,7 +452,7 @@ + BlockPos blockpos1 = EntityPlayer.func_180467_a(this.field_72400_f.func_71218_a(p_72368_1_.field_71093_bK), blockpos, flag); + if (blockpos1 != null) { + entityplayermp.func_70012_b((double)((float)blockpos1.func_177958_n() + 0.5F), (double)((float)blockpos1.func_177956_o() + 0.1F), (double)((float)blockpos1.func_177952_p() + 0.5F), 0.0F, 0.0F); +- entityplayermp.func_180473_a(blockpos, flag); ++ entityplayermp.setSpawnPoint(blockpos, flag, p_72368_1_.field_71093_bK); + } else { + entityplayermp.field_71135_a.func_147359_a(new SPacketChangeGameState(0, 0.0F)); + } +@@ -453,6 +477,7 @@ this.field_177454_f.put(entityplayermp.func_110124_au(), entityplayermp); entityplayermp.func_71116_b(); entityplayermp.func_70606_j(entityplayermp.func_110143_aJ()); @@ -24,12 +124,86 @@ return entityplayermp; } -@@ -482,7 +485,7 @@ +@@ -463,15 +488,19 @@ + } + + public void func_187242_a(EntityPlayerMP p_187242_1_, int p_187242_2_) { ++ changePlayerDimension(p_187242_1_, p_187242_2_, field_72400_f.func_71218_a(p_187242_2_).func_85176_s()); ++ } ++ ++ public void changePlayerDimension(EntityPlayerMP p_187242_1_, int p_187242_2_, net.minecraftforge.common.util.ITeleporter teleporter) { + int i = p_187242_1_.field_71093_bK; + WorldServer worldserver = this.field_72400_f.func_71218_a(p_187242_1_.field_71093_bK); + p_187242_1_.field_71093_bK = p_187242_2_; + WorldServer worldserver1 = this.field_72400_f.func_71218_a(p_187242_1_.field_71093_bK); +- p_187242_1_.field_71135_a.func_147359_a(new SPacketRespawn(p_187242_1_.field_71093_bK, p_187242_1_.field_70170_p.func_175659_aa(), p_187242_1_.field_70170_p.func_72912_H().func_76067_t(), p_187242_1_.field_71134_c.func_73081_b())); ++ p_187242_1_.field_71135_a.func_147359_a(new SPacketRespawn(p_187242_1_.field_71093_bK, worldserver.func_175659_aa(), worldserver.func_72912_H().func_76067_t(), p_187242_1_.field_71134_c.func_73081_b())); + this.func_187243_f(p_187242_1_); + worldserver.func_72973_f(p_187242_1_); + p_187242_1_.field_70128_L = false; +- this.func_82448_a(p_187242_1_, i, worldserver, worldserver1); ++ this.transferEntityToWorld(p_187242_1_, i, worldserver, worldserver1, teleporter); + this.func_72375_a(p_187242_1_, worldserver); + p_187242_1_.field_71135_a.func_147364_a(p_187242_1_.field_70165_t, p_187242_1_.field_70163_u, p_187242_1_.field_70161_v, p_187242_1_.field_70177_z, p_187242_1_.field_70125_A); + p_187242_1_.field_71134_c.func_73080_a(worldserver1); +@@ -482,30 +511,25 @@ for(PotionEffect potioneffect : p_187242_1_.func_70651_bq()) { p_187242_1_.field_71135_a.func_147359_a(new SPacketEntityEffect(p_187242_1_.func_145782_y(), potioneffect)); } - -+ net.minecraftforge.fml.hooks.BasicEventHooks.firePlayerChangedDimensionEvent( p_187242_1_, i, p_187242_2_ ); ++ // Fix MC-88179: on non-death SPacketRespawn, also resend attributes ++ net.minecraft.entity.ai.attributes.AttributeMap attributemap = (net.minecraft.entity.ai.attributes.AttributeMap) p_187242_1_.func_110140_aT(); ++ java.util.Collection watchedAttribs = attributemap.func_111160_c(); ++ if (!watchedAttribs.isEmpty()) p_187242_1_.field_71135_a.func_147359_a(new net.minecraft.network.play.server.SPacketEntityProperties(p_187242_1_.func_145782_y(), watchedAttribs)); ++ net.minecraftforge.fml.hooks.BasicEventHooks.firePlayerChangedDimensionEvent(p_187242_1_, i, p_187242_2_); } public void func_82448_a(Entity p_82448_1_, int p_82448_2_, WorldServer p_82448_3_, WorldServer p_82448_4_) { +- double d0 = p_82448_1_.field_70165_t; +- double d1 = p_82448_1_.field_70161_v; ++ transferEntityToWorld(p_82448_1_, p_82448_2_, p_82448_3_, p_82448_4_, p_82448_4_.func_85176_s()); ++ } ++ ++ public void transferEntityToWorld(Entity p_82448_1_, int p_82448_2_, WorldServer p_82448_3_, WorldServer p_82448_4_, net.minecraftforge.common.util.ITeleporter teleporter) { ++ double moveFactor = p_82448_3_.func_201675_m().getMovementFactor() / p_82448_4_.func_201675_m().getMovementFactor(); ++ double d0 = MathHelper.func_151237_a(p_82448_1_.field_70165_t * moveFactor, p_82448_4_.func_175723_af().func_177726_b() + 16.0D, p_82448_4_.func_175723_af().func_177728_d() - 16.0D); ++ double d1 = MathHelper.func_151237_a(p_82448_1_.field_70161_v * moveFactor, p_82448_4_.func_175723_af().func_177736_c() + 16.0D, p_82448_4_.func_175723_af().func_177733_e() - 16.0D); + double d2 = 8.0D; + float f = p_82448_1_.field_70177_z; + p_82448_3_.field_72984_F.func_76320_a("moving"); +- if (p_82448_1_.field_71093_bK == -1) { +- d0 = MathHelper.func_151237_a(d0 / 8.0D, p_82448_4_.func_175723_af().func_177726_b() + 16.0D, p_82448_4_.func_175723_af().func_177728_d() - 16.0D); +- d1 = MathHelper.func_151237_a(d1 / 8.0D, p_82448_4_.func_175723_af().func_177736_c() + 16.0D, p_82448_4_.func_175723_af().func_177733_e() - 16.0D); +- p_82448_1_.func_70012_b(d0, p_82448_1_.field_70163_u, d1, p_82448_1_.field_70177_z, p_82448_1_.field_70125_A); +- if (p_82448_1_.func_70089_S()) { +- p_82448_3_.func_72866_a(p_82448_1_, false); +- } +- } else if (p_82448_1_.field_71093_bK == 0) { +- d0 = MathHelper.func_151237_a(d0 * 8.0D, p_82448_4_.func_175723_af().func_177726_b() + 16.0D, p_82448_4_.func_175723_af().func_177728_d() - 16.0D); +- d1 = MathHelper.func_151237_a(d1 * 8.0D, p_82448_4_.func_175723_af().func_177736_c() + 16.0D, p_82448_4_.func_175723_af().func_177733_e() - 16.0D); +- p_82448_1_.func_70012_b(d0, p_82448_1_.field_70163_u, d1, p_82448_1_.field_70177_z, p_82448_1_.field_70125_A); +- if (p_82448_1_.func_70089_S()) { +- p_82448_3_.func_72866_a(p_82448_1_, false); +- } +- } else { ++ if (p_82448_1_.field_71093_bK == 1 && teleporter.isVanilla()) { + BlockPos blockpos; + if (p_82448_2_ == 1) { + blockpos = p_82448_4_.func_175694_M(); +@@ -523,13 +547,14 @@ + } + + p_82448_3_.field_72984_F.func_76319_b(); +- if (p_82448_2_ != 1) { ++ if (p_82448_2_ != 1 || !teleporter.isVanilla()) { + p_82448_3_.field_72984_F.func_76320_a("placing"); + d0 = (double)MathHelper.func_76125_a((int)d0, -29999872, 29999872); + d1 = (double)MathHelper.func_76125_a((int)d1, -29999872, 29999872); + if (p_82448_1_.func_70089_S()) { + p_82448_1_.func_70012_b(d0, p_82448_1_.field_70163_u, d1, p_82448_1_.field_70177_z, p_82448_1_.field_70125_A); +- p_82448_4_.func_85176_s().func_180266_a(p_82448_1_, f); ++ p_82448_4_.func_72866_a(p_82448_1_, false); ++ teleporter.placeEntity(p_82448_4_, p_82448_1_, f); + p_82448_4_.func_72838_d(p_82448_1_); + p_82448_4_.func_72866_a(p_82448_1_, false); + } diff --git a/patches/minecraft/net/minecraft/server/network/NetHandlerLoginServer.java.patch b/patches/minecraft/net/minecraft/server/network/NetHandlerLoginServer.java.patch index 08d2030e9..5da9cf892 100644 --- a/patches/minecraft/net/minecraft/server/network/NetHandlerLoginServer.java.patch +++ b/patches/minecraft/net/minecraft/server/network/NetHandlerLoginServer.java.patch @@ -22,6 +22,15 @@ } } +@@ -140,7 +146,7 @@ + this.field_147335_k = p_147315_1_.func_149300_a(privatekey); + this.field_147328_g = NetHandlerLoginServer.LoginState.AUTHENTICATING; + this.field_147333_a.func_150727_a(this.field_147335_k); +- Thread thread = new Thread("User Authenticator #" + field_147331_b.incrementAndGet()) { ++ Thread thread = new Thread(net.minecraftforge.fml.common.thread.SidedThreadGroups.SERVER, "User Authenticator #" + field_147331_b.incrementAndGet()) { + public void run() { + GameProfile gameprofile = NetHandlerLoginServer.this.field_147337_i; + @@ -149,11 +155,11 @@ NetHandlerLoginServer.this.field_147337_i = NetHandlerLoginServer.this.field_147327_f.func_147130_as().hasJoinedServer(new GameProfile((UUID)null, gameprofile.getName()), s, this.func_191235_a()); if (NetHandlerLoginServer.this.field_147337_i != null) { diff --git a/patches/minecraft/net/minecraft/village/Village.java.patch b/patches/minecraft/net/minecraft/village/Village.java.patch index 4d7b8a981..6f07dbb11 100644 --- a/patches/minecraft/net/minecraft/village/Village.java.patch +++ b/patches/minecraft/net/minecraft/village/Village.java.patch @@ -42,7 +42,15 @@ if (entityplayer1 != null) { double d1 = entityplayer1.func_70068_e(p_82685_1_); if (!(d1 > d0)) { -@@ -317,22 +320,47 @@ +@@ -276,6 +279,7 @@ + villagedoorinfo.func_75466_d(); + } + ++ if (field_75586_a.func_175667_e(villagedoorinfo.func_179852_d())) // Forge: check that the door block is loaded to avoid loading chunks + if (!this.func_179860_f(villagedoorinfo.func_179852_d()) || Math.abs(this.field_75581_g - villagedoorinfo.func_75473_b()) > 1200) { + this.field_75585_c = this.field_75585_c.func_177973_b(villagedoorinfo.func_179852_d()); + flag = true; +@@ -317,22 +321,47 @@ } } @@ -51,12 +59,12 @@ + return this.getPlayerReputation(findUUID(p_82684_1_)); + } + -+ public int getPlayerReputation(UUID p_82684_1_) ++ public int getPlayerReputation(UUID p_82684_1_) + { Integer integer = this.field_82693_j.get(p_82684_1_); return integer == null ? 0 : integer; } -+ + + private UUID findUUID(String name) + { + if (this.field_75586_a == null || this.field_75586_a.func_73046_m() == null) @@ -64,7 +72,7 @@ + GameProfile profile = this.field_75586_a.func_73046_m().func_152358_ax().func_152655_a(name); + return profile == null ? EntityPlayer.func_175147_b(name) : profile.getId(); + } - ++ + @Deprecated //Hasn't worked since 1.9, use UUID version below. public int func_82688_a(String p_82688_1_, int p_82688_2_) { - int i = this.func_82684_a(p_82688_1_); @@ -86,13 +94,13 @@ + public boolean isPlayerReputationTooLow(UUID uuid) + { -+ return this.getPlayerReputation(uuid) <= -15; ++ return this.getPlayerReputation(uuid) <= -15; + } + public void func_82690_a(NBTTagCompound p_82690_1_) { this.field_75588_h = p_82690_1_.func_74762_e("PopSize"); this.field_75583_e = p_82690_1_.func_74762_e("Radius"); -@@ -354,17 +382,14 @@ +@@ -354,17 +383,14 @@ for(int j = 0; j < nbttaglist1.size(); ++j) { NBTTagCompound nbttagcompound1 = nbttaglist1.func_150305_b(j); @@ -115,7 +123,7 @@ } public void func_82689_b(NBTTagCompound p_82689_1_) { -@@ -396,14 +421,12 @@ +@@ -396,14 +422,12 @@ p_82689_1_.func_74782_a("Doors", nbttaglist); NBTTagList nbttaglist1 = new NBTTagList(); @@ -133,7 +141,7 @@ nbttagcompound1.func_74768_a("S", this.field_82693_j.get(s)); nbttaglist1.add((INBTBase)nbttagcompound1); } -@@ -413,6 +436,8 @@ +@@ -413,6 +437,8 @@ } p_82689_1_.func_74782_a("Players", nbttaglist1); @@ -142,7 +150,7 @@ } public void func_82692_h() { -@@ -424,8 +449,8 @@ +@@ -424,8 +450,8 @@ } public void func_82683_b(int p_82683_1_) { diff --git a/patches/minecraft/net/minecraft/village/VillageCollection.java.patch b/patches/minecraft/net/minecraft/village/VillageCollection.java.patch new file mode 100644 index 000000000..aabea56e3 --- /dev/null +++ b/patches/minecraft/net/minecraft/village/VillageCollection.java.patch @@ -0,0 +1,10 @@ +--- a/net/minecraft/village/VillageCollection.java ++++ b/net/minecraft/village/VillageCollection.java +@@ -125,6 +125,7 @@ + } + + private void func_180609_b(BlockPos p_180609_1_) { ++ if (!this.field_75556_a.func_205050_e(p_180609_1_, 16)) return; // Forge: prevent loading unloaded chunks when checking for doors + int i = 16; + int j = 4; + int k = 16; diff --git a/patches_old/minecraft/net/minecraft/network/NetHandlerPlayServer.java.patch b/patches_old/minecraft/net/minecraft/network/NetHandlerPlayServer.java.patch deleted file mode 100644 index 877ffe5f5..000000000 --- a/patches_old/minecraft/net/minecraft/network/NetHandlerPlayServer.java.patch +++ /dev/null @@ -1,62 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/network/NetHandlerPlayServer.java -+++ ../src-work/minecraft/net/minecraft/network/NetHandlerPlayServer.java -@@ -671,7 +671,10 @@ - double d2 = this.field_147369_b.field_70161_v - ((double)blockpos.func_177952_p() + 0.5D); - double d3 = d0 * d0 + d1 * d1 + d2 * d2; - -- if (d3 > 36.0D) -+ double dist = field_147369_b.func_110148_a(EntityPlayer.REACH_DISTANCE).func_111126_e() + 1; -+ dist *= dist; -+ -+ if (d3 > dist) - { - return; - } -@@ -729,7 +732,9 @@ - - if (blockpos.func_177956_o() < this.field_147367_d.func_71207_Z() - 1 || enumfacing != EnumFacing.UP && blockpos.func_177956_o() < this.field_147367_d.func_71207_Z()) - { -- if (this.field_184362_y == null && this.field_147369_b.func_70092_e((double)blockpos.func_177958_n() + 0.5D, (double)blockpos.func_177956_o() + 0.5D, (double)blockpos.func_177952_p() + 0.5D) < 64.0D && !this.field_147367_d.func_175579_a(worldserver, blockpos, this.field_147369_b) && worldserver.func_175723_af().func_177746_a(blockpos)) -+ double dist = field_147369_b.func_110148_a(EntityPlayer.REACH_DISTANCE).func_111126_e() + 3; -+ dist *= dist; -+ if (this.field_184362_y == null && this.field_147369_b.func_70092_e((double)blockpos.func_177958_n() + 0.5D, (double)blockpos.func_177956_o() + 0.5D, (double)blockpos.func_177952_p() + 0.5D) < dist && !this.field_147367_d.func_175579_a(worldserver, blockpos, this.field_147369_b) && worldserver.func_175723_af().func_177746_a(blockpos)) - { - this.field_147369_b.field_71134_c.func_187251_a(this.field_147369_b, worldserver, itemstack, enumhand, blockpos, enumfacing, p_184337_1_.func_187026_d(), p_184337_1_.func_187025_e(), p_184337_1_.func_187020_f()); - } -@@ -933,7 +938,9 @@ - } - else - { -- ITextComponent itextcomponent = new TextComponentTranslation("chat.type.text", new Object[] {this.field_147369_b.func_145748_c_(), s}); -+ ITextComponent itextcomponent = new TextComponentTranslation("chat.type.text", this.field_147369_b.func_145748_c_(), net.minecraftforge.common.ForgeHooks.newChatWithLinks(s)); -+ itextcomponent = net.minecraftforge.common.ForgeHooks.onServerChatEvent(this, s, itextcomponent); -+ if (itextcomponent == null) return; - this.field_147367_d.func_184103_al().func_148544_a(itextcomponent, false); - } - -@@ -1066,6 +1073,7 @@ - else if (p_147340_1_.func_149565_c() == CPacketUseEntity.Action.INTERACT_AT) - { - EnumHand enumhand1 = p_147340_1_.func_186994_b(); -+ if(net.minecraftforge.common.ForgeHooks.onInteractEntityAt(field_147369_b, entity, p_147340_1_.func_179712_b(), enumhand1) != null) return; - entity.func_184199_a(this.field_147369_b, p_147340_1_.func_179712_b(), enumhand1); - } - else if (p_147340_1_.func_149565_c() == CPacketUseEntity.Action.ATTACK) -@@ -1106,7 +1114,7 @@ - return; - } - -- this.field_147369_b = this.field_147367_d.func_184103_al().func_72368_a(this.field_147369_b, 0, false); -+ this.field_147369_b = this.field_147367_d.func_184103_al().func_72368_a(this.field_147369_b, field_147369_b.field_71093_bK, false); - - if (this.field_147367_d.func_71199_h()) - { -@@ -1149,7 +1157,7 @@ - { - ItemStack itemstack2 = this.field_147369_b.field_71070_bA.func_184996_a(p_147351_1_.func_149544_d(), p_147351_1_.func_149543_e(), p_147351_1_.func_186993_f(), this.field_147369_b); - -- if (ItemStack.func_77989_b(p_147351_1_.func_149546_g(), itemstack2)) -+ if (ItemStack.areItemStacksEqualUsingNBTShareTag(p_147351_1_.func_149546_g(), itemstack2)) - { - this.field_147369_b.field_71135_a.func_147359_a(new SPacketConfirmTransaction(p_147351_1_.func_149548_c(), p_147351_1_.func_149547_f(), true)); - this.field_147369_b.field_71137_h = true; diff --git a/patches_old/minecraft/net/minecraft/network/NettyPacketEncoder.java.patch b/patches_old/minecraft/net/minecraft/network/NettyPacketEncoder.java.patch deleted file mode 100644 index 412aba17f..000000000 --- a/patches_old/minecraft/net/minecraft/network/NettyPacketEncoder.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/network/NettyPacketEncoder.java -+++ ../src-work/minecraft/net/minecraft/network/NettyPacketEncoder.java -@@ -52,7 +52,7 @@ - } - catch (Throwable throwable) - { -- field_150798_a.error(throwable); -+ throw throwable; // Forge: throw this instead of logging it, to prevent corrupt packets from being sent to the client where they are much harder to debug. - } - } - } diff --git a/patches_old/minecraft/net/minecraft/network/NetworkSystem.java.patch b/patches_old/minecraft/net/minecraft/network/NetworkSystem.java.patch deleted file mode 100644 index e4bb5bf6e..000000000 --- a/patches_old/minecraft/net/minecraft/network/NetworkSystem.java.patch +++ /dev/null @@ -1,44 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/network/NetworkSystem.java -+++ ../src-work/minecraft/net/minecraft/network/NetworkSystem.java -@@ -49,21 +49,21 @@ - { - protected NioEventLoopGroup func_179280_b() - { -- return new NioEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Server IO #%d").setDaemon(true).build()); -+ return new NioEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Server IO #%d").setDaemon(true).setThreadFactory(net.minecraftforge.fml.common.thread.SidedThreadGroups.SERVER).build()); - } - }; - public static final LazyLoadBase field_181141_b = new LazyLoadBase() - { - protected EpollEventLoopGroup func_179280_b() - { -- return new EpollEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Epoll Server IO #%d").setDaemon(true).build()); -+ return new EpollEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Epoll Server IO #%d").setDaemon(true).setThreadFactory(net.minecraftforge.fml.common.thread.SidedThreadGroups.SERVER).build()); - } - }; - public static final LazyLoadBase field_180232_b = new LazyLoadBase() - { - protected LocalEventLoopGroup func_179280_b() - { -- return new LocalEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Local Server IO #%d").setDaemon(true).build()); -+ return new LocalEventLoopGroup(0, (new ThreadFactoryBuilder()).setNameFormat("Netty Local Server IO #%d").setDaemon(true).setThreadFactory(net.minecraftforge.fml.common.thread.SidedThreadGroups.CLIENT).build()); - } - }; - private final MinecraftServer field_151273_d; -@@ -79,6 +79,7 @@ - - public void func_151265_a(InetAddress p_151265_1_, int p_151265_2_) throws IOException - { -+ if (p_151265_1_ instanceof java.net.Inet6Address) System.setProperty("java.net.preferIPv4Stack", "false"); - synchronized (this.field_151274_e) - { - Class oclass; -@@ -110,7 +111,7 @@ - ; - } - -- p_initChannel_1_.pipeline().addLast("timeout", new ReadTimeoutHandler(30)).addLast("legacy_query", new LegacyPingHandler(NetworkSystem.this)).addLast("splitter", new NettyVarint21FrameDecoder()).addLast("decoder", new NettyPacketDecoder(EnumPacketDirection.SERVERBOUND)).addLast("prepender", new NettyVarint21FrameEncoder()).addLast("encoder", new NettyPacketEncoder(EnumPacketDirection.CLIENTBOUND)); -+ p_initChannel_1_.pipeline().addLast("timeout", new ReadTimeoutHandler(net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.READ_TIMEOUT)).addLast("legacy_query", new LegacyPingHandler(NetworkSystem.this)).addLast("splitter", new NettyVarint21FrameDecoder()).addLast("decoder", new NettyPacketDecoder(EnumPacketDirection.SERVERBOUND)).addLast("prepender", new NettyVarint21FrameEncoder()).addLast("encoder", new NettyPacketEncoder(EnumPacketDirection.CLIENTBOUND)); - NetworkManager networkmanager = new NetworkManager(EnumPacketDirection.SERVERBOUND); - NetworkSystem.this.field_151272_f.add(networkmanager); - p_initChannel_1_.pipeline().addLast("packet_handler", networkmanager); diff --git a/patches_old/minecraft/net/minecraft/network/PacketBuffer.java.patch b/patches_old/minecraft/net/minecraft/network/PacketBuffer.java.patch deleted file mode 100644 index f2f417666..000000000 --- a/patches_old/minecraft/net/minecraft/network/PacketBuffer.java.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/network/PacketBuffer.java -+++ ../src-work/minecraft/net/minecraft/network/PacketBuffer.java -@@ -336,7 +336,7 @@ - - if (p_150788_1_.func_77973_b().func_77645_m() || p_150788_1_.func_77973_b().func_77651_p()) - { -- nbttagcompound = p_150788_1_.func_77978_p(); -+ nbttagcompound = p_150788_1_.func_77973_b().getNBTShareTag(p_150788_1_); - } - - this.func_150786_a(nbttagcompound); -@@ -358,7 +358,7 @@ - int j = this.readByte(); - int k = this.readShort(); - ItemStack itemstack = new ItemStack(Item.func_150899_d(i), j, k); -- itemstack.func_77982_d(this.func_150793_b()); -+ itemstack.func_77973_b().readNBTShareTag(itemstack, this.func_150793_b()); - return itemstack; - } - } diff --git a/patches_old/minecraft/net/minecraft/network/handshake/client/C00Handshake.java.patch b/patches_old/minecraft/net/minecraft/network/handshake/client/C00Handshake.java.patch deleted file mode 100644 index f04560812..000000000 --- a/patches_old/minecraft/net/minecraft/network/handshake/client/C00Handshake.java.patch +++ /dev/null @@ -1,48 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/network/handshake/client/C00Handshake.java -+++ ../src-work/minecraft/net/minecraft/network/handshake/client/C00Handshake.java -@@ -14,6 +14,7 @@ - private String field_149598_b; - private int field_149599_c; - private EnumConnectionState field_149597_d; -+ private boolean hasFMLMarker = false; - - public C00Handshake() - { -@@ -28,18 +29,26 @@ - this.field_149597_d = p_i47613_3_; - } - -+ public C00Handshake(String address, int port, EnumConnectionState state, boolean addFMLMarker) -+ { -+ this(address, port, state); -+ this.hasFMLMarker = addFMLMarker; -+ } -+ - public void func_148837_a(PacketBuffer p_148837_1_) throws IOException - { - this.field_149600_a = p_148837_1_.func_150792_a(); - this.field_149598_b = p_148837_1_.func_150789_c(255); - this.field_149599_c = p_148837_1_.readUnsignedShort(); - this.field_149597_d = EnumConnectionState.func_150760_a(p_148837_1_.func_150792_a()); -+ this.hasFMLMarker = this.field_149598_b.contains("\0FML\0"); -+ this.field_149598_b = this.field_149598_b.split("\0")[0]; - } - - public void func_148840_b(PacketBuffer p_148840_1_) throws IOException - { - p_148840_1_.func_150787_b(this.field_149600_a); -- p_148840_1_.func_180714_a(this.field_149598_b); -+ p_148840_1_.func_180714_a(this.field_149598_b + "\0FML\0"); - p_148840_1_.writeShort(this.field_149599_c); - p_148840_1_.func_150787_b(this.field_149597_d.func_150759_c()); - } -@@ -58,4 +67,9 @@ - { - return this.field_149600_a; - } -+ -+ public boolean hasFMLMarker() -+ { -+ return this.hasFMLMarker; -+ } - } diff --git a/patches_old/minecraft/net/minecraft/network/login/server/SPacketLoginSuccess.java.patch b/patches_old/minecraft/net/minecraft/network/login/server/SPacketLoginSuccess.java.patch deleted file mode 100644 index c5361662d..000000000 --- a/patches_old/minecraft/net/minecraft/network/login/server/SPacketLoginSuccess.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/network/login/server/SPacketLoginSuccess.java -+++ ../src-work/minecraft/net/minecraft/network/login/server/SPacketLoginSuccess.java -@@ -26,7 +26,7 @@ - { - String s = p_148837_1_.func_150789_c(36); - String s1 = p_148837_1_.func_150789_c(16); -- UUID uuid = UUID.fromString(s); -+ UUID uuid = s.length() > 0 ? UUID.fromString(s) : null; - this.field_149602_a = new GameProfile(uuid, s1); - } - diff --git a/patches_old/minecraft/net/minecraft/network/play/client/CPacketClickWindow.java.patch b/patches_old/minecraft/net/minecraft/network/play/client/CPacketClickWindow.java.patch deleted file mode 100644 index b6843bb7f..000000000 --- a/patches_old/minecraft/net/minecraft/network/play/client/CPacketClickWindow.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/network/play/client/CPacketClickWindow.java -+++ ../src-work/minecraft/net/minecraft/network/play/client/CPacketClickWindow.java -@@ -55,7 +55,7 @@ - p_148840_1_.writeByte(this.field_149553_c); - p_148840_1_.writeShort(this.field_149550_d); - p_148840_1_.func_179249_a(this.field_149549_f); -- p_148840_1_.func_150788_a(this.field_149551_e); -+ net.minecraftforge.common.util.PacketUtil.writeItemStackFromClientToServer(p_148840_1_, this.field_149551_e); - } - - public int func_149548_c() diff --git a/patches_old/minecraft/net/minecraft/network/play/client/CPacketCreativeInventoryAction.java.patch b/patches_old/minecraft/net/minecraft/network/play/client/CPacketCreativeInventoryAction.java.patch deleted file mode 100644 index 390c68264..000000000 --- a/patches_old/minecraft/net/minecraft/network/play/client/CPacketCreativeInventoryAction.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/network/play/client/CPacketCreativeInventoryAction.java -+++ ../src-work/minecraft/net/minecraft/network/play/client/CPacketCreativeInventoryAction.java -@@ -38,7 +38,7 @@ - public void func_148840_b(PacketBuffer p_148840_1_) throws IOException - { - p_148840_1_.writeShort(this.field_149629_a); -- p_148840_1_.func_150788_a(this.field_149628_b); -+ net.minecraftforge.common.util.PacketUtil.writeItemStackFromClientToServer(p_148840_1_, this.field_149628_b); - } - - public int func_149627_c() diff --git a/patches_old/minecraft/net/minecraft/network/play/client/CPacketCustomPayload.java.patch b/patches_old/minecraft/net/minecraft/network/play/client/CPacketCustomPayload.java.patch deleted file mode 100644 index b0ba90495..000000000 --- a/patches_old/minecraft/net/minecraft/network/play/client/CPacketCustomPayload.java.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/network/play/client/CPacketCustomPayload.java -+++ ../src-work/minecraft/net/minecraft/network/play/client/CPacketCustomPayload.java -@@ -47,7 +47,11 @@ - public void func_148840_b(PacketBuffer p_148840_1_) throws IOException - { - p_148840_1_.func_180714_a(this.field_149562_a); -+ synchronized(this.field_149561_c) { //This may be access multiple times, from multiple threads, lets be safe. -+ this.field_149561_c.markReaderIndex(); - p_148840_1_.writeBytes((ByteBuf)this.field_149561_c); -+ this.field_149561_c.resetReaderIndex(); -+ } - } - - public void func_148833_a(INetHandlerPlayServer p_148833_1_) diff --git a/patches_old/minecraft/net/minecraft/network/play/server/SPacketCustomPayload.java.patch b/patches_old/minecraft/net/minecraft/network/play/server/SPacketCustomPayload.java.patch deleted file mode 100644 index bd9426ff2..000000000 --- a/patches_old/minecraft/net/minecraft/network/play/server/SPacketCustomPayload.java.patch +++ /dev/null @@ -1,21 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/network/play/server/SPacketCustomPayload.java -+++ ../src-work/minecraft/net/minecraft/network/play/server/SPacketCustomPayload.java -@@ -46,12 +46,18 @@ - public void func_148840_b(PacketBuffer p_148840_1_) throws IOException - { - p_148840_1_.func_180714_a(this.field_149172_a); -+ synchronized(this.field_149171_b) { //This may be access multiple times, from multiple threads, lets be safe. -+ this.field_149171_b.markReaderIndex(); - p_148840_1_.writeBytes((ByteBuf)this.field_149171_b); -+ this.field_149171_b.resetReaderIndex(); -+ } - } - - public void func_148833_a(INetHandlerPlayClient p_148833_1_) - { - p_148833_1_.func_147240_a(this); -+ // Forge: fix network buffer leaks (MC-121884) -+ if (this.field_149171_b != null) this.field_149171_b.release(); - } - - @SideOnly(Side.CLIENT) diff --git a/patches_old/minecraft/net/minecraft/network/play/server/SPacketSpawnMob.java.patch b/patches_old/minecraft/net/minecraft/network/play/server/SPacketSpawnMob.java.patch deleted file mode 100644 index 66d894c69..000000000 --- a/patches_old/minecraft/net/minecraft/network/play/server/SPacketSpawnMob.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/network/play/server/SPacketSpawnMob.java -+++ ../src-work/minecraft/net/minecraft/network/play/server/SPacketSpawnMob.java -@@ -38,7 +38,7 @@ - { - this.field_149042_a = p_i46973_1_.func_145782_y(); - this.field_186894_b = p_i46973_1_.func_110124_au(); -- this.field_149040_b = EntityList.field_191308_b.func_148757_b(p_i46973_1_.getClass()); -+ this.field_149040_b = EntityList.getID(p_i46973_1_.getClass()); - this.field_149041_c = p_i46973_1_.field_70165_t; - this.field_149038_d = p_i46973_1_.field_70163_u; - this.field_149039_e = p_i46973_1_.field_70161_v; diff --git a/patches_old/minecraft/net/minecraft/server/management/PlayerList.java.patch b/patches_old/minecraft/net/minecraft/server/management/PlayerList.java.patch deleted file mode 100644 index 587dc6df3..000000000 --- a/patches_old/minecraft/net/minecraft/server/management/PlayerList.java.patch +++ /dev/null @@ -1,253 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/server/management/PlayerList.java -+++ ../src-work/minecraft/net/minecraft/server/management/PlayerList.java -@@ -106,7 +106,7 @@ - this.field_72405_c = 8; - } - -- public void func_72355_a(NetworkManager p_72355_1_, EntityPlayerMP p_72355_2_) -+ public void initializeConnectionToPlayer(NetworkManager p_72355_1_, EntityPlayerMP p_72355_2_, NetHandlerPlayServer nethandlerplayserver) - { - GameProfile gameprofile = p_72355_2_.func_146103_bH(); - PlayerProfileCache playerprofilecache = this.field_72400_f.func_152358_ax(); -@@ -115,6 +115,17 @@ - playerprofilecache.func_152649_a(gameprofile); - NBTTagCompound nbttagcompound = this.func_72380_a(p_72355_2_); - p_72355_2_.func_70029_a(this.field_72400_f.func_71218_a(p_72355_2_.field_71093_bK)); -+ -+ World playerWorld = this.field_72400_f.func_71218_a(p_72355_2_.field_71093_bK); -+ if (playerWorld == null) -+ { -+ p_72355_2_.field_71093_bK = 0; -+ playerWorld = this.field_72400_f.func_71218_a(0); -+ BlockPos spawnPoint = playerWorld.field_73011_w.getRandomizedSpawnPoint(); -+ p_72355_2_.func_70107_b(spawnPoint.func_177958_n(), spawnPoint.func_177956_o(), spawnPoint.func_177952_p()); -+ } -+ -+ p_72355_2_.func_70029_a(playerWorld); - p_72355_2_.field_71134_c.func_73080_a((WorldServer)p_72355_2_.field_70170_p); - String s1 = "local"; - -@@ -127,8 +138,9 @@ - WorldServer worldserver = this.field_72400_f.func_71218_a(p_72355_2_.field_71093_bK); - WorldInfo worldinfo = worldserver.func_72912_H(); - this.func_72381_a(p_72355_2_, (EntityPlayerMP)null, worldserver); -- NetHandlerPlayServer nethandlerplayserver = new NetHandlerPlayServer(this.field_72400_f, p_72355_1_, p_72355_2_); -- nethandlerplayserver.func_147359_a(new SPacketJoinGame(p_72355_2_.func_145782_y(), p_72355_2_.field_71134_c.func_73081_b(), worldinfo.func_76093_s(), worldserver.field_73011_w.func_186058_p().func_186068_a(), worldserver.func_175659_aa(), this.func_72352_l(), worldinfo.func_76067_t(), worldserver.func_82736_K().func_82766_b("reducedDebugInfo"))); -+ p_72355_2_.field_71135_a = nethandlerplayserver; -+ net.minecraftforge.fml.common.FMLCommonHandler.instance().fireServerConnectionEvent(p_72355_1_); -+ nethandlerplayserver.func_147359_a(new SPacketJoinGame(p_72355_2_.func_145782_y(), p_72355_2_.field_71134_c.func_73081_b(), worldinfo.func_76093_s(), worldserver.field_73011_w.getDimension(), worldserver.func_175659_aa(), this.func_72352_l(), worldinfo.func_76067_t(), worldserver.func_82736_K().func_82766_b("reducedDebugInfo"))); - nethandlerplayserver.func_147359_a(new SPacketCustomPayload("MC|Brand", (new PacketBuffer(Unpooled.buffer())).func_180714_a(this.func_72365_p().getServerModName()))); - nethandlerplayserver.func_147359_a(new SPacketServerDifficulty(worldinfo.func_176130_y(), worldinfo.func_176123_z())); - nethandlerplayserver.func_147359_a(new SPacketPlayerAbilities(p_72355_2_.field_71075_bZ)); -@@ -204,6 +216,7 @@ - } - - p_72355_2_.func_71116_b(); -+ net.minecraftforge.fml.common.FMLCommonHandler.instance().firePlayerLoggedIn(p_72355_2_); - } - - protected void func_96456_a(ServerScoreboard p_96456_1_, EntityPlayerMP p_96456_2_) -@@ -304,6 +317,7 @@ - nbttagcompound1 = nbttagcompound; - p_72380_1_.func_70020_e(nbttagcompound); - field_148546_d.debug("loading single player"); -+ net.minecraftforge.event.ForgeEventFactory.firePlayerLoadingEvent(p_72380_1_, this.field_72412_k, p_72380_1_.func_110124_au().toString()); - } - else - { -@@ -313,8 +327,24 @@ - return nbttagcompound1; - } - -+ public NBTTagCompound getPlayerNBT(EntityPlayerMP player) -+ { -+ // Hacky method to allow loading the NBT for a player prior to login -+ NBTTagCompound nbttagcompound = this.field_72400_f.field_71305_c[0].func_72912_H().func_76072_h(); -+ if (player.func_70005_c_().equals(this.field_72400_f.func_71214_G()) && nbttagcompound != null) -+ { -+ return nbttagcompound; -+ } -+ else -+ { -+ return ((net.minecraft.world.storage.SaveHandler)this.field_72412_k).getPlayerNBT(player); -+ } -+ } -+ - protected void func_72391_b(EntityPlayerMP p_72391_1_) - { -+ if (p_72391_1_.field_71135_a == null) return; -+ - this.field_72412_k.func_75753_a(p_72391_1_); - StatisticsManagerServer statisticsmanagerserver = this.field_148547_k.get(p_72391_1_.func_110124_au()); - -@@ -343,6 +373,7 @@ - p_72377_1_.field_71135_a.func_147359_a(new SPacketPlayerListItem(SPacketPlayerListItem.Action.ADD_PLAYER, new EntityPlayerMP[] {this.field_72404_b.get(i)})); - } - -+ net.minecraftforge.common.chunkio.ChunkIOExecutor.adjustPoolSize(this.func_72394_k()); - worldserver.func_72838_d(p_72377_1_); - this.func_72375_a(p_72377_1_, (WorldServer)null); - } -@@ -354,6 +385,7 @@ - - public void func_72367_e(EntityPlayerMP p_72367_1_) - { -+ net.minecraftforge.fml.common.FMLCommonHandler.instance().firePlayerLoggedOut(p_72367_1_); - WorldServer worldserver = p_72367_1_.func_71121_q(); - p_72367_1_.func_71029_a(StatList.field_75947_j); - this.func_72391_b(p_72367_1_); -@@ -376,6 +408,7 @@ - worldserver.func_72964_e(p_72367_1_.field_70176_ah, p_72367_1_.field_70164_aj).func_76630_e(); - } - } -+ net.minecraftforge.common.chunkio.ChunkIOExecutor.adjustPoolSize(this.func_72394_k()); - - worldserver.func_72900_e(p_72367_1_); - worldserver.func_184164_w().func_72695_c(p_72367_1_); -@@ -473,13 +506,24 @@ - - public EntityPlayerMP func_72368_a(EntityPlayerMP p_72368_1_, int p_72368_2_, boolean p_72368_3_) - { -+ World world = field_72400_f.func_71218_a(p_72368_2_); -+ if (world == null) -+ { -+ p_72368_2_ = p_72368_1_.getSpawnDimension(); -+ } -+ else if (!world.field_73011_w.func_76567_e()) -+ { -+ p_72368_2_ = world.field_73011_w.getRespawnDimension(p_72368_1_); -+ } -+ if (field_72400_f.func_71218_a(p_72368_2_) == null) p_72368_2_ = 0; -+ - p_72368_1_.func_71121_q().func_73039_n().func_72787_a(p_72368_1_); - p_72368_1_.func_71121_q().func_73039_n().func_72790_b(p_72368_1_); - p_72368_1_.func_71121_q().func_184164_w().func_72695_c(p_72368_1_); - this.field_72404_b.remove(p_72368_1_); - this.field_72400_f.func_71218_a(p_72368_1_.field_71093_bK).func_72973_f(p_72368_1_); -- BlockPos blockpos = p_72368_1_.func_180470_cg(); -- boolean flag = p_72368_1_.func_82245_bX(); -+ BlockPos blockpos = p_72368_1_.getBedLocation(p_72368_2_); -+ boolean flag = p_72368_1_.isSpawnForced(p_72368_2_); - p_72368_1_.field_71093_bK = p_72368_2_; - PlayerInteractionManager playerinteractionmanager; - -@@ -495,6 +539,7 @@ - EntityPlayerMP entityplayermp = new EntityPlayerMP(this.field_72400_f, this.field_72400_f.func_71218_a(p_72368_1_.field_71093_bK), p_72368_1_.func_146103_bH(), playerinteractionmanager); - entityplayermp.field_71135_a = p_72368_1_.field_71135_a; - entityplayermp.func_193104_a(p_72368_1_, p_72368_3_); -+ entityplayermp.field_71093_bK = p_72368_2_; - entityplayermp.func_145769_d(p_72368_1_.func_145782_y()); - entityplayermp.func_174817_o(p_72368_1_); - entityplayermp.func_184819_a(p_72368_1_.func_184591_cq()); -@@ -542,6 +587,7 @@ - this.field_177454_f.put(entityplayermp.func_110124_au(), entityplayermp); - entityplayermp.func_71116_b(); - entityplayermp.func_70606_j(entityplayermp.func_110143_aJ()); -+ net.minecraftforge.fml.common.FMLCommonHandler.instance().firePlayerRespawnEvent(entityplayermp, p_72368_3_); - return entityplayermp; - } - -@@ -556,15 +602,26 @@ - - public void func_187242_a(EntityPlayerMP p_187242_1_, int p_187242_2_) - { -+ transferPlayerToDimension(p_187242_1_, p_187242_2_, field_72400_f.func_71218_a(p_187242_2_).func_85176_s()); -+ } -+ -+ // TODO: Remove (1.13) -+ public void transferPlayerToDimension(EntityPlayerMP p_187242_1_, int p_187242_2_, net.minecraft.world.Teleporter teleporter) -+ { -+ transferPlayerToDimension(p_187242_1_, p_187242_2_, (net.minecraftforge.common.util.ITeleporter) teleporter); -+ } -+ -+ public void transferPlayerToDimension(EntityPlayerMP p_187242_1_, int p_187242_2_, net.minecraftforge.common.util.ITeleporter teleporter) -+ { - int i = p_187242_1_.field_71093_bK; - WorldServer worldserver = this.field_72400_f.func_71218_a(p_187242_1_.field_71093_bK); - p_187242_1_.field_71093_bK = p_187242_2_; - WorldServer worldserver1 = this.field_72400_f.func_71218_a(p_187242_1_.field_71093_bK); -- p_187242_1_.field_71135_a.func_147359_a(new SPacketRespawn(p_187242_1_.field_71093_bK, p_187242_1_.field_70170_p.func_175659_aa(), p_187242_1_.field_70170_p.func_72912_H().func_76067_t(), p_187242_1_.field_71134_c.func_73081_b())); -+ p_187242_1_.field_71135_a.func_147359_a(new SPacketRespawn(p_187242_1_.field_71093_bK, worldserver1.func_175659_aa(), worldserver1.func_72912_H().func_76067_t(), p_187242_1_.field_71134_c.func_73081_b())); - this.func_187243_f(p_187242_1_); - worldserver.func_72973_f(p_187242_1_); - p_187242_1_.field_70128_L = false; -- this.func_82448_a(p_187242_1_, i, worldserver, worldserver1); -+ this.transferEntityToWorld(p_187242_1_, i, worldserver, worldserver1, teleporter); - this.func_72375_a(p_187242_1_, worldserver); - p_187242_1_.field_71135_a.func_147364_a(p_187242_1_.field_70165_t, p_187242_1_.field_70163_u, p_187242_1_.field_70161_v, p_187242_1_.field_70177_z, p_187242_1_.field_70125_A); - p_187242_1_.field_71134_c.func_73080_a(worldserver1); -@@ -576,17 +633,34 @@ - { - p_187242_1_.field_71135_a.func_147359_a(new SPacketEntityEffect(p_187242_1_.func_145782_y(), potioneffect)); - } -+ // Fix MC-88179: on non-death SPacketRespawn, also resend attributes -+ net.minecraft.entity.ai.attributes.AttributeMap attributemap = (net.minecraft.entity.ai.attributes.AttributeMap) p_187242_1_.func_110140_aT(); -+ java.util.Collection watchedAttribs = attributemap.func_111160_c(); -+ if (!watchedAttribs.isEmpty()) p_187242_1_.field_71135_a.func_147359_a(new net.minecraft.network.play.server.SPacketEntityProperties(p_187242_1_.func_145782_y(), watchedAttribs)); -+ net.minecraftforge.fml.common.FMLCommonHandler.instance().firePlayerChangedDimensionEvent(p_187242_1_, i, p_187242_2_); - } - - public void func_82448_a(Entity p_82448_1_, int p_82448_2_, WorldServer p_82448_3_, WorldServer p_82448_4_) - { -- double d0 = p_82448_1_.field_70165_t; -- double d1 = p_82448_1_.field_70161_v; -+ transferEntityToWorld(p_82448_1_, p_82448_2_, p_82448_3_, p_82448_4_, p_82448_4_.func_85176_s()); -+ } -+ -+ // TODO: Remove (1.13) -+ public void transferEntityToWorld(Entity p_82448_1_, int p_82448_2_, WorldServer p_82448_3_, WorldServer p_82448_4_, net.minecraft.world.Teleporter teleporter) -+ { -+ transferEntityToWorld(p_82448_1_, p_82448_2_, p_82448_3_, p_82448_4_, (net.minecraftforge.common.util.ITeleporter) teleporter); -+ } -+ -+ public void transferEntityToWorld(Entity p_82448_1_, int p_82448_2_, WorldServer p_82448_3_, WorldServer p_82448_4_, net.minecraftforge.common.util.ITeleporter teleporter) -+ { -+ double moveFactor = p_82448_3_.field_73011_w.getMovementFactor() / p_82448_4_.field_73011_w.getMovementFactor(); -+ double d0 = MathHelper.func_151237_a(p_82448_1_.field_70165_t * moveFactor, p_82448_4_.func_175723_af().func_177726_b() + 16.0D, p_82448_4_.func_175723_af().func_177728_d() - 16.0D); -+ double d1 = MathHelper.func_151237_a(p_82448_1_.field_70161_v * moveFactor, p_82448_4_.func_175723_af().func_177736_c() + 16.0D, p_82448_4_.func_175723_af().func_177733_e() - 16.0D); - double d2 = 8.0D; - float f = p_82448_1_.field_70177_z; - p_82448_3_.field_72984_F.func_76320_a("moving"); - -- if (p_82448_1_.field_71093_bK == -1) -+ if (false && p_82448_1_.field_71093_bK == -1) - { - d0 = MathHelper.func_151237_a(d0 / 8.0D, p_82448_4_.func_175723_af().func_177726_b() + 16.0D, p_82448_4_.func_175723_af().func_177728_d() - 16.0D); - d1 = MathHelper.func_151237_a(d1 / 8.0D, p_82448_4_.func_175723_af().func_177736_c() + 16.0D, p_82448_4_.func_175723_af().func_177733_e() - 16.0D); -@@ -597,7 +671,7 @@ - p_82448_3_.func_72866_a(p_82448_1_, false); - } - } -- else if (p_82448_1_.field_71093_bK == 0) -+ else if (false && p_82448_1_.field_71093_bK == 0) - { - d0 = MathHelper.func_151237_a(d0 * 8.0D, p_82448_4_.func_175723_af().func_177726_b() + 16.0D, p_82448_4_.func_175723_af().func_177728_d() - 16.0D); - d1 = MathHelper.func_151237_a(d1 * 8.0D, p_82448_4_.func_175723_af().func_177736_c() + 16.0D, p_82448_4_.func_175723_af().func_177733_e() - 16.0D); -@@ -608,7 +682,7 @@ - p_82448_3_.func_72866_a(p_82448_1_, false); - } - } -- else -+ if (p_82448_1_.field_71093_bK == 1 && teleporter.isVanilla()) - { - BlockPos blockpos; - -@@ -634,7 +708,7 @@ - - p_82448_3_.field_72984_F.func_76319_b(); - -- if (p_82448_2_ != 1) -+ if (p_82448_2_ != 1 || !teleporter.isVanilla()) - { - p_82448_3_.field_72984_F.func_76320_a("placing"); - d0 = (double)MathHelper.func_76125_a((int)d0, -29999872, 29999872); -@@ -643,7 +717,8 @@ - if (p_82448_1_.func_70089_S()) - { - p_82448_1_.func_70012_b(d0, p_82448_1_.field_70163_u, d1, p_82448_1_.field_70177_z, p_82448_1_.field_70125_A); -- p_82448_4_.func_85176_s().func_180266_a(p_82448_1_, f); -+ p_82448_3_.func_72866_a(p_82448_1_, false); -+ teleporter.placeEntity(p_82448_4_, p_82448_1_, f); - p_82448_4_.func_72838_d(p_82448_1_); - p_82448_4_.func_72866_a(p_82448_1_, false); - } diff --git a/patches_old/minecraft/net/minecraft/server/network/NetHandlerHandshakeTCP.java.patch b/patches_old/minecraft/net/minecraft/server/network/NetHandlerHandshakeTCP.java.patch deleted file mode 100644 index 876f48a73..000000000 --- a/patches_old/minecraft/net/minecraft/server/network/NetHandlerHandshakeTCP.java.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/server/network/NetHandlerHandshakeTCP.java -+++ ../src-work/minecraft/net/minecraft/server/network/NetHandlerHandshakeTCP.java -@@ -22,6 +22,8 @@ - - public void func_147383_a(C00Handshake p_147383_1_) - { -+ if (!net.minecraftforge.fml.common.FMLCommonHandler.instance().handleServerHandshake(p_147383_1_, this.field_147386_b)) return; -+ - switch (p_147383_1_.func_149594_c()) - { - case LOGIN: diff --git a/patches_old/minecraft/net/minecraft/stats/RecipeBook.java.patch b/patches_old/minecraft/net/minecraft/stats/RecipeBook.java.patch deleted file mode 100644 index 605fbd53f..000000000 --- a/patches_old/minecraft/net/minecraft/stats/RecipeBook.java.patch +++ /dev/null @@ -1,21 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/stats/RecipeBook.java -+++ ../src-work/minecraft/net/minecraft/stats/RecipeBook.java -@@ -42,9 +42,17 @@ - this.field_194078_b.clear(i); - } - -+ @Deprecated //DO NOT USE - protected static int func_194075_d(@Nullable IRecipe p_194075_0_) - { -- return CraftingManager.field_193380_a.func_148757_b(p_194075_0_); -+ int ret = CraftingManager.field_193380_a.func_148757_b(p_194075_0_); -+ if (ret == -1) -+ { -+ ret = ((net.minecraftforge.registries.ForgeRegistry)net.minecraftforge.fml.common.registry.ForgeRegistries.RECIPES).getID(p_194075_0_.getRegistryName()); -+ if (ret == -1) -+ throw new IllegalArgumentException(String.format("Attempted to get the ID for a unknown recipe: %s Name: %s", p_194075_0_, p_194075_0_.getRegistryName())); -+ } -+ return ret; - } - - @SideOnly(Side.CLIENT) diff --git a/patches_old/minecraft/net/minecraft/stats/RecipeBookServer.java.patch b/patches_old/minecraft/net/minecraft/stats/RecipeBookServer.java.patch deleted file mode 100644 index f795cc5e4..000000000 --- a/patches_old/minecraft/net/minecraft/stats/RecipeBookServer.java.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/stats/RecipeBookServer.java -+++ ../src-work/minecraft/net/minecraft/stats/RecipeBookServer.java -@@ -55,7 +55,7 @@ - - private void func_194081_a(SPacketRecipeBook.State p_194081_1_, EntityPlayerMP p_194081_2_, List p_194081_3_) - { -- p_194081_2_.field_71135_a.func_147359_a(new SPacketRecipeBook(p_194081_1_, p_194081_3_, Collections.emptyList(), this.field_192818_b, this.field_192819_c)); -+ net.minecraftforge.common.ForgeHooks.sendRecipeBook(p_194081_2_.field_71135_a, p_194081_1_, p_194081_3_, Collections.emptyList(), this.field_192818_b, this.field_192819_c); - } - - public NBTTagCompound func_192824_e() -@@ -147,6 +147,6 @@ - - public void func_192826_c(EntityPlayerMP p_192826_1_) - { -- p_192826_1_.field_71135_a.func_147359_a(new SPacketRecipeBook(SPacketRecipeBook.State.INIT, this.func_194079_d(), this.func_194080_e(), this.field_192818_b, this.field_192819_c)); -+ net.minecraftforge.common.ForgeHooks.sendRecipeBook(p_192826_1_.field_71135_a, SPacketRecipeBook.State.INIT, this.func_194079_d(), this.func_194080_e(), this.field_192818_b, this.field_192819_c); - } - } diff --git a/patches_old/minecraft/net/minecraft/stats/StatList.java.patch b/patches_old/minecraft/net/minecraft/stats/StatList.java.patch deleted file mode 100644 index efabe0caf..000000000 --- a/patches_old/minecraft/net/minecraft/stats/StatList.java.patch +++ /dev/null @@ -1,138 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/stats/StatList.java -+++ ../src-work/minecraft/net/minecraft/stats/StatList.java -@@ -162,7 +162,7 @@ - } - } - -- func_75924_a(field_188066_af); -+ replaceAllSimilarBlocks(field_188066_af, true); - } - - private static void func_151181_c() -@@ -184,7 +184,7 @@ - } - } - -- func_75924_a(field_188065_ae); -+ replaceAllSimilarBlocks(field_188065_ae, false); - } - - private static void func_75925_c() -@@ -208,7 +208,7 @@ - } - } - -- func_75924_a(field_75929_E); -+ replaceAllSimilarBlocks(field_75929_E, true); - } - - private static void func_151179_e() -@@ -227,7 +227,7 @@ - } - } - -- func_75924_a(field_75930_F); -+ replaceAllSimilarBlocks(field_75930_F, true); - } - - private static void func_188054_f() -@@ -247,7 +247,7 @@ - } - } - -- func_75924_a(field_75930_F); -+ replaceAllSimilarBlocks(field_75930_F, true); - } - - private static String func_180204_a(Item p_180204_0_) -@@ -256,28 +256,35 @@ - return resourcelocation != null ? resourcelocation.toString().replace(':', '.') : null; - } - -- private static void func_75924_a(StatBase[] p_75924_0_) -+ private static void replaceAllSimilarBlocks(StatBase[] p_75924_0_, boolean useItemIds) - { -- func_151180_a(p_75924_0_, Blocks.field_150355_j, Blocks.field_150358_i); -- func_151180_a(p_75924_0_, Blocks.field_150353_l, Blocks.field_150356_k); -- func_151180_a(p_75924_0_, Blocks.field_150428_aP, Blocks.field_150423_aK); -- func_151180_a(p_75924_0_, Blocks.field_150470_am, Blocks.field_150460_al); -- func_151180_a(p_75924_0_, Blocks.field_150439_ay, Blocks.field_150450_ax); -- func_151180_a(p_75924_0_, Blocks.field_150416_aS, Blocks.field_150413_aR); -- func_151180_a(p_75924_0_, Blocks.field_150455_bV, Blocks.field_150441_bU); -- func_151180_a(p_75924_0_, Blocks.field_150429_aA, Blocks.field_150437_az); -- func_151180_a(p_75924_0_, Blocks.field_150374_bv, Blocks.field_150379_bu); -- func_151180_a(p_75924_0_, Blocks.field_150334_T, Blocks.field_150333_U); -- func_151180_a(p_75924_0_, Blocks.field_150373_bw, Blocks.field_150376_bx); -- func_151180_a(p_75924_0_, Blocks.field_180388_cO, Blocks.field_180389_cP); -- func_151180_a(p_75924_0_, Blocks.field_150349_c, Blocks.field_150346_d); -- func_151180_a(p_75924_0_, Blocks.field_150458_ak, Blocks.field_150346_d); -+ mergeStatBases(p_75924_0_, Blocks.field_150355_j, Blocks.field_150358_i, useItemIds); -+ mergeStatBases(p_75924_0_, Blocks.field_150353_l, Blocks.field_150356_k, useItemIds); -+ mergeStatBases(p_75924_0_, Blocks.field_150428_aP, Blocks.field_150423_aK, useItemIds); -+ mergeStatBases(p_75924_0_, Blocks.field_150470_am, Blocks.field_150460_al, useItemIds); -+ mergeStatBases(p_75924_0_, Blocks.field_150439_ay, Blocks.field_150450_ax, useItemIds); -+ mergeStatBases(p_75924_0_, Blocks.field_150416_aS, Blocks.field_150413_aR, useItemIds); -+ mergeStatBases(p_75924_0_, Blocks.field_150455_bV, Blocks.field_150441_bU, useItemIds); -+ mergeStatBases(p_75924_0_, Blocks.field_150429_aA, Blocks.field_150437_az, useItemIds); -+ mergeStatBases(p_75924_0_, Blocks.field_150374_bv, Blocks.field_150379_bu, useItemIds); -+ mergeStatBases(p_75924_0_, Blocks.field_150334_T, Blocks.field_150333_U, useItemIds); -+ mergeStatBases(p_75924_0_, Blocks.field_150373_bw, Blocks.field_150376_bx, useItemIds); -+ mergeStatBases(p_75924_0_, Blocks.field_180388_cO, Blocks.field_180389_cP, useItemIds); -+ mergeStatBases(p_75924_0_, Blocks.field_150349_c, Blocks.field_150346_d, useItemIds); -+ mergeStatBases(p_75924_0_, Blocks.field_150458_ak, Blocks.field_150346_d, useItemIds); - } - -- private static void func_151180_a(StatBase[] p_151180_0_, Block p_151180_1_, Block p_151180_2_) -+ private static void mergeStatBases(StatBase[] p_151180_0_, Block p_151180_1_, Block p_151180_2_, boolean useItemIds) - { -- int i = Block.func_149682_b(p_151180_1_); -- int j = Block.func_149682_b(p_151180_2_); -+ int i; -+ int j; -+ if (useItemIds) { -+ i = Item.func_150891_b(Item.func_150898_a(p_151180_1_)); -+ j = Item.func_150891_b(Item.func_150898_a(p_151180_2_)); -+ } else { -+ i = Block.func_149682_b(p_151180_1_); -+ j = Block.func_149682_b(p_151180_2_); -+ } - - if (p_151180_0_[i] != null && p_151180_0_[j] == null) - { -@@ -309,4 +316,36 @@ - { - return field_188093_a.get(p_151177_0_); - } -+ -+ @Deprecated //MODDER DO NOT CALL THIS ITS JUST A EVENT CALLBACK FOR FORGE -+ public static void reinit() -+ { -+ field_188093_a.clear(); -+ field_188094_c.clear(); -+ field_188095_d.clear(); -+ field_188096_e.clear(); -+ -+ for (StatBase[] sb : new StatBase[][]{field_188065_ae, field_188066_af, field_75929_E, field_75930_F, field_188067_ai, field_188068_aj}) -+ { -+ for (int x = 0; x < sb.length; x++) -+ { -+ if (sb[x] != null) -+ { -+ field_75940_b.remove(sb[x]); -+ sb[x] = null; -+ } -+ } -+ } -+ List unknown = Lists.newArrayList(field_75940_b); -+ field_75940_b.clear(); -+ -+ for (StatBase b : unknown) -+ b.func_75971_g(); -+ -+ func_151181_c(); -+ func_75925_c(); -+ func_151179_e(); -+ func_75918_d(); -+ func_188054_f(); -+ } - } diff --git a/patches_old/minecraft/net/minecraft/village/Village.java.patch b/patches_old/minecraft/net/minecraft/village/Village.java.patch deleted file mode 100644 index b435446fb..000000000 --- a/patches_old/minecraft/net/minecraft/village/Village.java.patch +++ /dev/null @@ -1,209 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/village/Village.java -+++ ../src-work/minecraft/net/minecraft/village/Village.java -@@ -26,7 +26,7 @@ - import net.minecraft.util.math.Vec3d; - import net.minecraft.world.World; - --public class Village -+public class Village implements net.minecraftforge.common.capabilities.ICapabilitySerializable - { - private World field_75586_a; - private final List field_75584_b = Lists.newArrayList(); -@@ -37,17 +37,19 @@ - private int field_75581_g; - private int field_75588_h; - private int field_82694_i; -- private final Map field_82693_j = Maps.newHashMap(); -+ private final Map field_82693_j = Maps.newHashMap(); - private final List field_75589_i = Lists.newArrayList(); - private int field_75587_j; - - public Village() - { -+ this.capabilities = net.minecraftforge.event.ForgeEventFactory.gatherCapabilities(this); - } - - public Village(World p_i1675_1_) - { - this.field_75586_a = p_i1675_1_; -+ this.capabilities = net.minecraftforge.event.ForgeEventFactory.gatherCapabilities(this); - } - - public void func_82691_a(World p_82691_1_) -@@ -310,11 +312,11 @@ - double d0 = Double.MAX_VALUE; - EntityPlayer entityplayer = null; - -- for (String s : this.field_82693_j.keySet()) -+ for (UUID s : this.field_82693_j.keySet()) - { -- if (this.func_82687_d(s)) -+ if (this.isPlayerReputationTooLow(s)) - { -- EntityPlayer entityplayer1 = this.field_75586_a.func_72924_a(s); -+ EntityPlayer entityplayer1 = this.field_75586_a.func_152378_a(s); - - if (entityplayer1 != null) - { -@@ -362,6 +364,7 @@ - villagedoorinfo.func_75466_d(); - } - -+ if (field_75586_a.func_175667_e(villagedoorinfo.func_179852_d())) // Forge: check that the door block is loaded to avoid loading chunks - if (!this.func_179860_f(villagedoorinfo.func_179852_d()) || Math.abs(this.field_75581_g - villagedoorinfo.func_75473_b()) > 1200) - { - this.field_75585_c = this.field_75585_c.func_177973_b(villagedoorinfo.func_179852_d()); -@@ -415,25 +418,51 @@ - } - } - -+ @Deprecated //Hasn't worked since 1.9, use UUID version below. - public int func_82684_a(String p_82684_1_) - { -+ return this.getPlayerReputation(findUUID(p_82684_1_)); -+ } -+ -+ public int getPlayerReputation(UUID p_82684_1_) -+ { - Integer integer = this.field_82693_j.get(p_82684_1_); - return integer == null ? 0 : integer.intValue(); - } - -+ private UUID findUUID(String name) -+ { -+ if (this.field_75586_a == null || this.field_75586_a.func_73046_m() == null) -+ return EntityPlayer.func_175147_b(name); -+ GameProfile profile = this.field_75586_a.func_73046_m().func_152358_ax().func_152655_a(name); -+ return profile == null ? EntityPlayer.func_175147_b(name) : profile.getId(); -+ } -+ -+ @Deprecated //Hasn't worked since 1.9, use UUID version below. - public int func_82688_a(String p_82688_1_, int p_82688_2_) - { -- int i = this.func_82684_a(p_82688_1_); -+ return this.modifyPlayerReputation(findUUID(p_82688_1_), p_82688_2_); -+ } -+ -+ public int modifyPlayerReputation(UUID p_82688_1_, int p_82688_2_) -+ { -+ int i = this.getPlayerReputation(p_82688_1_); - int j = MathHelper.func_76125_a(i + p_82688_2_, -30, 10); - this.field_82693_j.put(p_82688_1_, Integer.valueOf(j)); - return j; - } - -+ @Deprecated //Hasn't worked since 1.9, use UUID version below. - public boolean func_82687_d(String p_82687_1_) - { -- return this.func_82684_a(p_82687_1_) <= -15; -+ return this.isPlayerReputationTooLow(findUUID(p_82687_1_)); - } - -+ public boolean isPlayerReputationTooLow(UUID uuid) -+ { -+ return this.getPlayerReputation(uuid) <= -15; -+ } -+ - public void func_82690_a(NBTTagCompound p_82690_1_) - { - this.field_75588_h = p_82690_1_.func_74762_e("PopSize"); -@@ -459,21 +488,17 @@ - { - NBTTagCompound nbttagcompound1 = nbttaglist1.func_150305_b(j); - -- if (nbttagcompound1.func_74764_b("UUID") && this.field_75586_a != null && this.field_75586_a.func_73046_m() != null) -+ if (nbttagcompound1.func_74764_b("UUID")) - { -- PlayerProfileCache playerprofilecache = this.field_75586_a.func_73046_m().func_152358_ax(); -- GameProfile gameprofile = playerprofilecache.func_152652_a(UUID.fromString(nbttagcompound1.func_74779_i("UUID"))); -- -- if (gameprofile != null) -- { -- this.field_82693_j.put(gameprofile.getName(), Integer.valueOf(nbttagcompound1.func_74762_e("S"))); -- } -+ this.field_82693_j.put(UUID.fromString(nbttagcompound1.func_74779_i("UUID")), Integer.valueOf(nbttagcompound1.func_74762_e("S"))); - } - else - { -- this.field_82693_j.put(nbttagcompound1.func_74779_i("Name"), Integer.valueOf(nbttagcompound1.func_74762_e("S"))); -+ //World is never set here, so this will always be offline UUIDs, sadly there is no way to convert this. -+ this.field_82693_j.put(findUUID(nbttagcompound1.func_74779_i("Name")), Integer.valueOf(nbttagcompound1.func_74762_e("S"))); - } - } -+ if (this.capabilities != null && p_82690_1_.func_74764_b("ForgeCaps")) this.capabilities.deserializeNBT(p_82690_1_.func_74775_l("ForgeCaps")); - } - - public void func_82689_b(NBTTagCompound p_82689_1_) -@@ -507,18 +532,14 @@ - p_82689_1_.func_74782_a("Doors", nbttaglist); - NBTTagList nbttaglist1 = new NBTTagList(); - -- for (String s : this.field_82693_j.keySet()) -+ for (UUID s : this.field_82693_j.keySet()) - { - NBTTagCompound nbttagcompound1 = new NBTTagCompound(); -- PlayerProfileCache playerprofilecache = this.field_75586_a.func_73046_m().func_152358_ax(); - - try - { -- GameProfile gameprofile = playerprofilecache.func_152655_a(s); -- -- if (gameprofile != null) - { -- nbttagcompound1.func_74778_a("UUID", gameprofile.getId().toString()); -+ nbttagcompound1.func_74778_a("UUID", s.toString()); - nbttagcompound1.func_74768_a("S", ((Integer)this.field_82693_j.get(s)).intValue()); - nbttaglist1.func_74742_a(nbttagcompound1); - } -@@ -530,6 +551,7 @@ - } - - p_82689_1_.func_74782_a("Players", nbttaglist1); -+ if (this.capabilities != null) p_82689_1_.func_74782_a("ForgeCaps", this.capabilities.serializeNBT()); - } - - public void func_82692_h() -@@ -544,9 +566,9 @@ - - public void func_82683_b(int p_82683_1_) - { -- for (String s : this.field_82693_j.keySet()) -+ for (UUID s : this.field_82693_j.keySet()) - { -- this.func_82688_a(s, p_82683_1_); -+ this.modifyPlayerReputation(s, p_82683_1_); - } - } - -@@ -561,4 +583,31 @@ - this.field_75590_b = p_i1674_3_; - } - } -+ -+ /* ======================================== FORGE START =====================================*/ -+ private net.minecraftforge.common.capabilities.CapabilityDispatcher capabilities; -+ public boolean hasCapability(net.minecraftforge.common.capabilities.Capability capability, @Nullable net.minecraft.util.EnumFacing facing) -+ { -+ return capabilities == null ? false : capabilities.hasCapability(capability, facing); -+ } -+ -+ @Nullable -+ public T getCapability(net.minecraftforge.common.capabilities.Capability capability, @Nullable net.minecraft.util.EnumFacing facing) -+ { -+ return capabilities == null ? null : capabilities.getCapability(capability, facing); -+ } -+ -+ public void deserializeNBT(NBTTagCompound nbt) -+ { -+ this.func_82690_a(nbt);; -+ } -+ -+ public NBTTagCompound serializeNBT() -+ { -+ NBTTagCompound ret = new NBTTagCompound(); -+ this.func_82689_b(ret); -+ return ret; -+ } -+ -+ /* ========================================= FORGE END ======================================*/ - } diff --git a/patches_old/minecraft/net/minecraft/village/VillageCollection.java.patch b/patches_old/minecraft/net/minecraft/village/VillageCollection.java.patch deleted file mode 100644 index 41811b9f4..000000000 --- a/patches_old/minecraft/net/minecraft/village/VillageCollection.java.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/village/VillageCollection.java -+++ ../src-work/minecraft/net/minecraft/village/VillageCollection.java -@@ -151,6 +151,7 @@ - - private void func_180609_b(BlockPos p_180609_1_) - { -+ if (!this.field_75556_a.func_175697_a(p_180609_1_, 16)) return; // Forge: prevent loading unloaded chunks when checking for doors - int i = 16; - int j = 4; - int k = 16; diff --git a/patches_old/minecraft/net/minecraft/server/network/NetHandlerLoginServer.java.patch b/patches_old_unknown/NetHandlerLoginServer.java.patch similarity index 68% rename from patches_old/minecraft/net/minecraft/server/network/NetHandlerLoginServer.java.patch rename to patches_old_unknown/NetHandlerLoginServer.java.patch index 2c3ee93c0..8feba13ad 100644 --- a/patches_old/minecraft/net/minecraft/server/network/NetHandlerLoginServer.java.patch +++ b/patches_old_unknown/NetHandlerLoginServer.java.patch @@ -17,13 +17,4 @@ + net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.fmlServerHandshake(this.field_147327_f.func_184103_al(), this.field_147333_a, this.field_147327_f.func_184103_al().func_148545_a(this.field_147337_i)); } } - } -@@ -177,7 +177,7 @@ - this.field_147335_k = p_147315_1_.func_149300_a(privatekey); - this.field_147328_g = NetHandlerLoginServer.LoginState.AUTHENTICATING; - this.field_147333_a.func_150727_a(this.field_147335_k); -- (new Thread("User Authenticator #" + field_147331_b.incrementAndGet()) -+ (new Thread(net.minecraftforge.fml.common.thread.SidedThreadGroups.SERVER, "User Authenticator #" + field_147331_b.incrementAndGet()) - { - public void run() - { + } \ No newline at end of file diff --git a/patches_old/minecraft/net/minecraft/network/NetworkManager.java.patch b/patches_old_unknown/NetworkManager.java.patch similarity index 59% rename from patches_old/minecraft/net/minecraft/network/NetworkManager.java.patch rename to patches_old_unknown/NetworkManager.java.patch index 7145a3147..9b89bd2cd 100644 --- a/patches_old/minecraft/net/minecraft/network/NetworkManager.java.patch +++ b/patches_old_unknown/NetworkManager.java.patch @@ -1,17 +1,5 @@ --- ../src-base/minecraft/net/minecraft/network/NetworkManager.java +++ ../src-work/minecraft/net/minecraft/network/NetworkManager.java -@@ -88,6 +88,11 @@ - this.field_179294_g = p_i46004_1_; - } - -+ public EnumPacketDirection getDirection() -+ { -+ return this.field_179294_g; -+ } -+ - public void channelActive(ChannelHandlerContext p_channelActive_1_) throws Exception - { - super.channelActive(p_channelActive_1_); @@ -204,7 +209,7 @@ final EnumConnectionState enumconnectionstate = EnumConnectionState.func_150752_a(p_150732_1_); final EnumConnectionState enumconnectionstate1 = (EnumConnectionState)this.field_150746_k.attr(field_150739_c).get(); @@ -38,24 +26,4 @@ + if (enumconnectionstate != enumconnectionstate1 && !( p_150732_1_ instanceof net.minecraftforge.fml.common.network.internal.FMLProxyPacket)) { NetworkManager.this.func_150723_a(enumconnectionstate); - } -@@ -308,6 +313,7 @@ - @SideOnly(Side.CLIENT) - public static NetworkManager func_181124_a(InetAddress p_181124_0_, int p_181124_1_, boolean p_181124_2_) - { -+ if (p_181124_0_ instanceof java.net.Inet6Address) System.setProperty("java.net.preferIPv4Stack", "false"); - final NetworkManager networkmanager = new NetworkManager(EnumPacketDirection.CLIENTBOUND); - Class oclass; - LazyLoadBase lazyloadbase; -@@ -454,6 +460,11 @@ - } - } - -+ public Channel channel() -+ { -+ return field_150746_k; -+ } -+ - static class InboundHandlerTuplePacketListener - { - private final Packet field_150774_a; + } \ No newline at end of file diff --git a/patches_old_unknown/PlayerList.java.patch b/patches_old_unknown/PlayerList.java.patch new file mode 100644 index 000000000..67d85c26d --- /dev/null +++ b/patches_old_unknown/PlayerList.java.patch @@ -0,0 +1,21 @@ +--- ../src-base/minecraft/net/minecraft/server/management/PlayerList.java ++++ ../src-work/minecraft/net/minecraft/server/management/PlayerList.java +@@ -106,7 +106,7 @@ + this.field_72405_c = 8; + } + +- public void func_72355_a(NetworkManager p_72355_1_, EntityPlayerMP p_72355_2_) ++ public void initializeConnectionToPlayer(NetworkManager p_72355_1_, EntityPlayerMP p_72355_2_, NetHandlerPlayServer nethandlerplayserver) + { + GameProfile gameprofile = p_72355_2_.func_146103_bH(); + PlayerProfileCache playerprofilecache = this.field_72400_f.func_152358_ax(); +@@ -127,8 +138,9 @@ + WorldServer worldserver = this.field_72400_f.func_71218_a(p_72355_2_.field_71093_bK); + WorldInfo worldinfo = worldserver.func_72912_H(); + this.func_72381_a(p_72355_2_, (EntityPlayerMP)null, worldserver); +- NetHandlerPlayServer nethandlerplayserver = new NetHandlerPlayServer(this.field_72400_f, p_72355_1_, p_72355_2_); ++ p_72355_2_.field_71135_a = nethandlerplayserver; ++ net.minecraftforge.fml.common.FMLCommonHandler.instance().fireServerConnectionEvent(p_72355_1_); + nethandlerplayserver.func_147359_a(new SPacketCustomPayload("MC|Brand", (new PacketBuffer(Unpooled.buffer())).func_180714_a(this.func_72365_p().getServerModName()))); + nethandlerplayserver.func_147359_a(new SPacketServerDifficulty(worldinfo.func_176130_y(), worldinfo.func_176123_z())); + nethandlerplayserver.func_147359_a(new SPacketPlayerAbilities(p_72355_2_.field_71075_bZ)); diff --git a/src/main/java/net/minecraftforge/common/ForgeHooks.java b/src/main/java/net/minecraftforge/common/ForgeHooks.java index 1b36e23f7..405d6660f 100644 --- a/src/main/java/net/minecraftforge/common/ForgeHooks.java +++ b/src/main/java/net/minecraftforge/common/ForgeHooks.java @@ -19,31 +19,21 @@ package net.minecraftforge.common; -import java.io.BufferedReader; -import java.io.IOException; import java.lang.reflect.Field; import java.net.URI; import java.net.URISyntaxException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Deque; import java.util.HashSet; import java.util.List; -import java.util.Map; -import java.util.Objects; import java.util.Random; import java.util.Set; -import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Function; import java.util.function.Predicate; import java.util.regex.Matcher; import java.util.regex.Pattern; -import java.util.stream.Collectors; - import com.google.common.base.Throwables; import com.google.common.collect.Lists; import com.google.common.collect.Queues; @@ -54,10 +44,7 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParseException; import net.minecraft.advancements.Advancement; -import net.minecraft.advancements.AdvancementManager; import net.minecraft.block.Block; -import net.minecraft.block.BlockFarmland; -import net.minecraft.block.material.Material; import net.minecraft.block.state.BlockWorldState; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; @@ -72,17 +59,13 @@ import net.minecraft.entity.item.EntityMinecartContainer; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.entity.projectile.EntityThrowable; import net.minecraft.fluid.IFluidState; import net.minecraft.init.Blocks; import net.minecraft.init.Fluids; -import net.minecraft.init.Items; import net.minecraft.inventory.ContainerRepair; import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.Item; import net.minecraft.item.ItemAxe; -import net.minecraft.item.ItemBucket; import net.minecraft.item.ItemEnchantedBook; import net.minecraft.item.ItemPickaxe; import net.minecraft.item.ItemPotion; @@ -90,21 +73,13 @@ import net.minecraft.item.ItemSpade; import net.minecraft.item.ItemSpawnEgg; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemTippedArrow; -import net.minecraft.item.ItemUseContext; -import net.minecraft.item.crafting.IRecipe; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.network.NetHandlerPlayServer; import net.minecraft.network.Packet; import net.minecraft.network.play.server.SPacketBlockChange; -import net.minecraft.network.play.server.SPacketRecipeBook; -import net.minecraft.network.play.server.SPacketRecipeBook.State; import net.minecraft.potion.PotionType; import net.minecraft.potion.PotionUtils; -import net.minecraft.resources.IResource; -import net.minecraft.resources.IResourceManager; -import net.minecraft.stats.StatList; -import net.minecraft.tags.ItemTags; import net.minecraft.tags.Tag; import net.minecraft.tileentity.MobSpawnerBaseLogic; import net.minecraft.tileentity.TileEntity; @@ -113,7 +88,6 @@ import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.JsonUtils; -import net.minecraft.util.NonNullList; import net.minecraft.util.ResourceLocation; import net.minecraft.util.WeightedRandom; import net.minecraft.util.math.AxisAlignedBB; @@ -135,8 +109,6 @@ import net.minecraft.world.storage.loot.LootEntry; import net.minecraft.world.storage.loot.LootTable; import net.minecraft.world.storage.loot.LootTableManager; import net.minecraft.world.storage.loot.conditions.LootCondition; -import net.minecraftforge.common.crafting.CraftingHelper; -import net.minecraftforge.common.util.BlockSnapshot; import net.minecraftforge.event.AnvilUpdateEvent; import net.minecraftforge.event.DifficultyChangeEvent; import net.minecraftforge.event.ForgeEventFactory; @@ -163,22 +135,10 @@ import net.minecraftforge.event.entity.player.AdvancementEvent; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.event.world.NoteBlockEvent; import net.minecraftforge.eventbus.api.Event.Result; -import net.minecraftforge.fluids.IFluidBlock; -import net.minecraftforge.fml.ModContainer; -import net.minecraftforge.fml.ModList; -import net.minecraftforge.fml.network.ConnectionType; -import net.minecraftforge.fml.loading.moddiscovery.ModFile; -import net.minecraftforge.fml.loading.moddiscovery.ModFileInfo; -import net.minecraftforge.fml.network.NetworkHooks; import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.IForgeRegistry; -import net.minecraftforge.registries.RegistryManager; - import javax.annotation.Nonnull; import javax.annotation.Nullable; -import org.apache.commons.io.FilenameUtils; -import org.apache.commons.io.IOUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Marker; @@ -1026,23 +986,6 @@ public class ForgeHooks return null; } -/* TODO this should be unnecessary now? - public static void sendRecipeBook(NetHandlerPlayServer connection, State state, List recipes, List display, boolean isGuiOpen, boolean isFilteringCraftable) - { - NetworkDispatcher disp = NetworkDispatcher.get(connection.getNetworkManager()); - //Not sure how it could ever be null, but screw it lets protect against it. Could Error the client but we dont care if they are asking for this stuff in the wrong state! - ConnectionType type = disp == null || disp.getConnectionType() == null ? ConnectionType.MODDED : disp.getConnectionType(); - if (type == ConnectionType.VANILLA) - { - IForgeRegistry vanilla = RegistryManager.VANILLA.getRegistry(IRecipe.class); - recipes = recipes.stream().filter(vanilla::containsValue).collect(Collectors.toList()); - display = display.stream().filter(vanilla::containsValue).collect(Collectors.toList()); - } - - if (!recipes.isEmpty() || !display.isEmpty()) - connection.sendPacket(new SPacketRecipeBook(state, recipes, display, isGuiOpen, isFilteringCraftable)); - } -*/ public static void onAdvancement(EntityPlayerMP player, Advancement advancement) { MinecraftForge.EVENT_BUS.post(new AdvancementEvent(player, advancement)); diff --git a/src/main/java/net/minecraftforge/common/ForgeMod.java b/src/main/java/net/minecraftforge/common/ForgeMod.java index 54e61c6c0..4231e480b 100644 --- a/src/main/java/net/minecraftforge/common/ForgeMod.java +++ b/src/main/java/net/minecraftforge/common/ForgeMod.java @@ -130,7 +130,7 @@ public class ForgeMod implements WorldPersistenceHooks.WorldPersistenceHook { universalBucket = new UniversalBucket(); universalBucket.setUnlocalizedName("forge.bucketFilled"); - event.getRegistry().register(universalBucket.setRegistryName(ForgeVersion.MOD_ID, "bucketFilled")); + event.getRegistry().register(universalBucket.setRegistryName(ForgeVersion.MOD_ID, "bucket_filled")); MinecraftForge.EVENT_BUS.register(universalBucket); } } diff --git a/src/main/java/net/minecraftforge/common/crafting/IngredientNBT.java b/src/main/java/net/minecraftforge/common/crafting/IngredientNBT.java index d6e23f0e8..7d37023b9 100644 --- a/src/main/java/net/minecraftforge/common/crafting/IngredientNBT.java +++ b/src/main/java/net/minecraftforge/common/crafting/IngredientNBT.java @@ -44,7 +44,7 @@ public class IngredientNBT extends Ingredient if (input == null) return false; //Can't use areItemStacksEqualUsingNBTShareTag because it compares stack size as well - return this.stack.getItem() == input.getItem() && this.stack.getDamage() == input.getDamage() && ItemStack.areItemStackShareTagsEqual(this.stack, input); + return this.stack.getItem() == input.getItem() && this.stack.getDamage() == input.getDamage() && this.stack.areShareTagsEqual(input); } @Override diff --git a/src/main/java/net/minecraftforge/common/extensions/IForgeItem.java b/src/main/java/net/minecraftforge/common/extensions/IForgeItem.java index b92df4631..3209010d7 100644 --- a/src/main/java/net/minecraftforge/common/extensions/IForgeItem.java +++ b/src/main/java/net/minecraftforge/common/extensions/IForgeItem.java @@ -121,15 +121,18 @@ public interface IForgeItem * behavior client side! * * Note that this will sometimes be applied multiple times, the following MUST - * be supported: Item item = stack.getItem(); NBTTagCompound nbtShare1 = - * item.getNBTShareTag(stack); stack.setTagCompound(nbtShare1); NBTTagCompound - * nbtShare2 = item.getNBTShareTag(stack); assert nbtShare1.equals(nbtShare2); + * be supported: + * Item item = stack.getItem(); + * NBTTagCompound nbtShare1 = item.getNBTShareTag(stack); + * stack.setTagCompound(nbtShare1); + * NBTTagCompound nbtShare2 = item.getNBTShareTag(stack); + * assert nbtShare1.equals(nbtShare2); * * @param stack The stack to send the NBT tag for * @return The NBT tag */ @Nullable - default NBTTagCompound getNBTShareTag(ItemStack stack) + default NBTTagCompound getShareTag(ItemStack stack) { return stack.getTag(); } @@ -141,7 +144,7 @@ public interface IForgeItem * @param stack The stack that received NBT * @param nbt Received NBT, can be null */ - default void readNBTShareTag(ItemStack stack, @Nullable NBTTagCompound nbt) + default void readShareTag(ItemStack stack, @Nullable NBTTagCompound nbt) { stack.setTag(nbt); } diff --git a/src/main/java/net/minecraftforge/common/extensions/IForgeItemStack.java b/src/main/java/net/minecraftforge/common/extensions/IForgeItemStack.java index 078454e14..2029a72b8 100644 --- a/src/main/java/net/minecraftforge/common/extensions/IForgeItemStack.java +++ b/src/main/java/net/minecraftforge/common/extensions/IForgeItemStack.java @@ -355,4 +355,80 @@ public interface IForgeItemStack extends ICapabilitySerializable { return getStack().getItem().onDroppedByPlayer(getStack(), player); } + + /** + * Get the NBT data to be sent to the client. The Item can control what data is kept in the tag. + * + * Note that this will sometimes be applied multiple times, the following MUST + * be supported: + * Item item = stack.getItem(); + * NBTTagCompound nbtShare1 = item.getNBTShareTag(stack); + * stack.setTagCompound(nbtShare1); + * NBTTagCompound nbtShare2 = item.getNBTShareTag(stack); + * assert nbtShare1.equals(nbtShare2); + * + * @return The NBT tag + */ + @Nullable + default NBTTagCompound getShareTag() + { + return getStack().getItem().getShareTag(getStack()); + } + + /** + * Override this method to decide what to do with the NBT data received from + * getNBTShareTag(). + * + * @param stack The stack that received NBT + * @param nbt Received NBT, can be null + */ + default void readShareTag(@Nullable NBTTagCompound nbt) + { + getStack().getItem().readShareTag(getStack(), nbt); + } + + /** + * + * Should this item, when held, allow sneak-clicks to pass through to the underlying block? + * + * @param world The world + * @param pos Block position in world + * @param player The Player that is wielding the item + * @return + */ + default boolean doesSneakBypassUse(net.minecraft.world.IWorldReader world, BlockPos pos, EntityPlayer player) + { + return getStack().isEmpty() || getStack().getItem().doesSneakBypassUse(getStack(), world, pos, player); + } + + /** + * Modeled after ItemStack.areItemStackTagsEqual + * Uses Item.getNBTShareTag for comparison instead of NBT and capabilities. + * Only used for comparing itemStacks that were transferred from server to client using Item.getNBTShareTag. + */ + default boolean areShareTagsEqual(ItemStack other) + { + NBTTagCompound shareTagA = getStack().getShareTag(); + NBTTagCompound shareTagB = other.getShareTag(); + if (shareTagA == null) + return shareTagB == null; + else + return shareTagB != null && shareTagA.equals(shareTagB); + } + + /** + * Determines if the ItemStack is equal to the other item stack, including Item, Count, and NBT. + * + * @param other The other stack + * @param limitTags True to use shareTag False to use full NBT tag + * @return true if equals + */ + default boolean equals(ItemStack other, boolean limitTags) + { + if (getStack().isEmpty()) + return other.isEmpty(); + else + return !other.isEmpty() && getStack().getCount() == other.getCount() && getStack().getItem() == other.getItem() && + (limitTags ? getStack().areShareTagsEqual(other) : ItemStack.areItemStackTagsEqual(getStack(), other)); + } } diff --git a/src/main/java/net/minecraftforge/common/util/PacketUtil.java b/src/main/java/net/minecraftforge/common/util/PacketUtil.java deleted file mode 100644 index 11978b7fe..000000000 --- a/src/main/java/net/minecraftforge/common/util/PacketUtil.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Minecraft Forge - * Copyright (c) 2016-2018. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation version 2.1 - * of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -package net.minecraftforge.common.util; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.PacketBuffer; - -public class PacketUtil -{ - private PacketUtil() {} - - /** - * Most ItemStack serialization is Server to Client, and must go through PacketBuffer.writeItemStack which uses Item.getNBTShareTag. - * One exception is items from the creative menu, which must be sent from Client to Server with their full NBT. - *
- * This method matches PacketBuffer.writeItemStack but without the Item.getNBTShareTag patch. - * It is compatible with PacketBuffer.readItemStack. - */ - public static void writeItemStackFromClientToServer(PacketBuffer buffer, ItemStack stack) - { - if (stack.isEmpty()) - { - buffer.writeShort(-1); - } - else - { - buffer.writeShort(Item.getIdFromItem(stack.getItem())); - buffer.writeByte(stack.getCount()); - NBTTagCompound nbttagcompound = null; - - if (stack.getItem().isDamageable() || stack.getItem().getShareTag()) - { - nbttagcompound = stack.getTag(); - } - - buffer.writeCompoundTag(nbttagcompound); - } - } -} diff --git a/src/main/resources/forge.exc b/src/main/resources/forge.exc index b4ecf3b03..5265d4a8f 100644 --- a/src/main/resources/forge.exc +++ b/src/main/resources/forge.exc @@ -10,10 +10,8 @@ net/minecraft/entity/Entity.changeDimension(ILnet/minecraftforge/common/util/ITe #net/minecraft/entity/item/EntityMinecartContainer.changeDimension(ILnet/minecraftforge/common/util/ITeleporter;)Lnet/minecraft/entity/Entity;=|p_184204_1_,teleporter #net/minecraft/entity/player/EntityPlayerMP.changeDimension(ILnet/minecraftforge/common/util/ITeleporter;)Lnet/minecraft/entity/Entity;=|p_184204_1_,teleporter net/minecraft/entity/player/EntityPlayer.getDigSpeed(Lnet/minecraft/block/state/IBlockState;Lnet/minecraft/util/math/BlockPos;)F=|p_184813_1_,pos -#net/minecraft/server/management/PlayerList.transferPlayerToDimension(Lnet/minecraft/entity/player/EntityPlayerMP;ILnet/minecraft/world/Teleporter;)V=|p_187242_1_,p_187242_2_,teleporter -#net/minecraft/server/management/PlayerList.transferPlayerToDimension(Lnet/minecraft/entity/player/EntityPlayerMP;ILnet/minecraftforge/common/util/ITeleporter;)V=|p_187242_1_,p_187242_2_,teleporter -#net/minecraft/server/management/PlayerList.transferEntityToWorld(Lnet/minecraft/entity/Entity;ILnet/minecraft/world/WorldServer;Lnet/minecraft/world/WorldServer;Lnet/minecraft/world/Teleporter;)V=|p_82448_1_,p_82448_2_,p_82448_3_,p_82448_4_,teleporter -#net/minecraft/server/management/PlayerList.transferEntityToWorld(Lnet/minecraft/entity/Entity;ILnet/minecraft/world/WorldServer;Lnet/minecraft/world/WorldServer;Lnet/minecraftforge/common/util/ITeleporter;)V=|p_82448_1_,p_82448_2_,p_82448_3_,p_82448_4_,teleporter +net/minecraft/server/management/PlayerList.changePlayerDimension(Lnet/minecraft/entity/player/EntityPlayerMP;ILnet/minecraftforge/common/util/ITeleporter;)V=|p_187242_1_,p_187242_2_,teleporter +net/minecraft/server/management/PlayerList.transferEntityToWorld(Lnet/minecraft/entity/Entity;ILnet/minecraft/world/WorldServer;Lnet/minecraft/world/WorldServer;Lnet/minecraftforge/common/util/ITeleporter;)V=|p_82448_1_,p_82448_2_,p_82448_3_,p_82448_4_,teleporter #net/minecraft/world/World.getBiomeGenForCoordsBody(II)Lnet/minecraft/world/biome/Biome;=|p_72807_1_,p_72807_2_ #net/minecraft/world/World.getSunBrightnessFactor(F)F=|p_72967_1_ @@ -91,3 +89,5 @@ net/minecraft/village/Village.modifyPlayerReputation(Ljava/util/UUID;I)I=|p_8268 #net/minecraft/client/audio/SoundManager.setListener(Lnet/minecraft/entity/Entity;F)V=|p_148615_1_,p_148615_2_ net/minecraft/item/ArmorMaterial.create(Ljava/lang/String;Ljava/lang/String;I[IILnet/minecraft/util/SoundEvent;FLjava/util/function/Supplier;)Lnet/minecraft/item/ArmorMaterial;=|name,p_i48533_3_,p_i48533_4_,p_i48533_5_,p_i48533_6_,p_i48533_7_,p_i48533_8_,p_i48533_9_ + +net/minecraft/network/PacketBuffer.writeItemStack(Lnet/minecraft/item/ItemStack;Z)Lnet/minecraft/network/PacketBuffer;=|p_150788_1_,limitedTag