From aeb68e9ba0a31693c084fead28c2c47ce29013e6 Mon Sep 17 00:00:00 2001 From: James McCulloch Date: Wed, 24 May 2023 22:24:03 +1000 Subject: [PATCH] Fake player portal fix (#1724) * fake-player-portal-fix: * Fix the teleport fix, so it doesn't crash when bots go through nether portals (Fixes #1712) * fake-player-portal-fix: * Re-implement fix for #1190 * Without causing #1712 * Just move the bot on the chunkmap directly. --- .../ServerGamePacketListenerImplAccessor.java | 11 ----------- .../patches/NetHandlerPlayServerFake.java | 18 +++--------------- src/main/resources/carpet.mixins.json | 1 - 3 files changed, 3 insertions(+), 27 deletions(-) delete mode 100644 src/main/java/carpet/mixins/ServerGamePacketListenerImplAccessor.java diff --git a/src/main/java/carpet/mixins/ServerGamePacketListenerImplAccessor.java b/src/main/java/carpet/mixins/ServerGamePacketListenerImplAccessor.java deleted file mode 100644 index b199fe8e..00000000 --- a/src/main/java/carpet/mixins/ServerGamePacketListenerImplAccessor.java +++ /dev/null @@ -1,11 +0,0 @@ -package carpet.mixins; - -import net.minecraft.server.network.ServerGamePacketListenerImpl; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(ServerGamePacketListenerImpl.class) -public interface ServerGamePacketListenerImplAccessor { - @Accessor("awaitingTeleport") - public int getAwaitingTeleport(); -} diff --git a/src/main/java/carpet/patches/NetHandlerPlayServerFake.java b/src/main/java/carpet/patches/NetHandlerPlayServerFake.java index 16f583c9..a8e5b852 100644 --- a/src/main/java/carpet/patches/NetHandlerPlayServerFake.java +++ b/src/main/java/carpet/patches/NetHandlerPlayServerFake.java @@ -1,12 +1,9 @@ package carpet.patches; -import carpet.mixins.ServerGamePacketListenerImplAccessor; import net.minecraft.network.Connection; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.contents.TranslatableContents; import net.minecraft.network.protocol.Packet; -import net.minecraft.network.protocol.game.ServerboundAcceptTeleportationPacket; -import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket; import net.minecraft.server.MinecraftServer; import net.minecraft.server.network.ServerGamePacketListenerImpl; import net.minecraft.world.entity.RelativeMovement; @@ -32,23 +29,14 @@ public class NetHandlerPlayServerFake extends ServerGamePacketListenerImpl ((EntityPlayerMPFake) player).kill(message); } } - private boolean hasSpawned = false; @Override public void teleport(double d, double e, double f, float g, float h, Set set) { super.teleport(d, e, f, g, h, set); - - handleAcceptTeleportPacket( - new ServerboundAcceptTeleportationPacket( ((ServerGamePacketListenerImplAccessor)this).getAwaitingTeleport() ) - ); - - if (!hasSpawned) { - hasSpawned = true; - } else { - handleMovePlayer( - new ServerboundMovePlayerPacket.PosRot(player.getX(), player.getY(), player.getZ(), player.getYRot(), player.getXRot(), false) - ); + if (player.serverLevel().getPlayerByUUID(player.getUUID()) != null) { + resetPosition(); + player.serverLevel().getChunkSource().move(player); } } diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index 936e8c0a..c6af4fd6 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -8,7 +8,6 @@ "MobCategory_spawnMixin", "Commands_customCommandsMixin", "ServerGamePacketListenerImplMixin", - "ServerGamePacketListenerImplAccessor", "PerfCommand_permissionMixin", "FillCommandMixin",