From d65b12ae787392f731c70066433a5e490ca9771d Mon Sep 17 00:00:00 2001 From: IzzelAliz Date: Mon, 25 Jan 2021 23:03:24 +0800 Subject: [PATCH] Fix teleport/respawn across world NPE (#130 #133) --- .../mixin/core/network/play/ServerPlayNetHandlerMixin.java | 4 +++- .../common/mixin/core/world/server/ServerWorldMixin.java | 5 ----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/play/ServerPlayNetHandlerMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/play/ServerPlayNetHandlerMixin.java index 8040ea8a..0b596a12 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/play/ServerPlayNetHandlerMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/play/ServerPlayNetHandlerMixin.java @@ -393,7 +393,9 @@ public abstract class ServerPlayNetHandlerMixin implements ServerPlayNetHandlerB at = @At(value = "FIELD", shift = At.Shift.AFTER, target = "Lnet/minecraft/network/play/ServerPlayNetHandler;targetPos:Lnet/minecraft/util/math/vector/Vector3d;"), slice = @Slice(from = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/ServerPlayerEntity;isInvulnerableDimensionChange()Z"))) private void arclight$updateLoc(CConfirmTeleportPacket packetIn, CallbackInfo ci) { - this.player.getServerWorld().getChunkProvider().updatePlayerPosition(this.player); + if (((ServerPlayerEntityBridge) this.player).bridge$isValid()) { + this.player.getServerWorld().getChunkProvider().updatePlayerPosition(this.player); + } } @Inject(method = "processConfirmTeleport", cancellable = true, at = @At(value = "FIELD", target = "Lnet/minecraft/network/play/ServerPlayNetHandler;teleportId:I")) diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/server/ServerWorldMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/server/ServerWorldMixin.java index 637b9b60..8a4e6e1e 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/server/ServerWorldMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/server/ServerWorldMixin.java @@ -254,11 +254,6 @@ public abstract class ServerWorldMixin extends WorldMixin implements ServerWorld } } - @Inject(method = "removeEntityComplete", remap = false, at = @At("RETURN")) - public void arclight$invalidateEntity(Entity entityIn, boolean keepData, CallbackInfo ci) { - ((EntityBridge) entityIn).bridge$setValid(false); - } - private transient boolean arclight$force; @Redirect(method = "spawnParticle(Lnet/minecraft/particles/IParticleData;DDDIDDDD)I", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/server/ServerWorld;sendPacketWithinDistance(Lnet/minecraft/entity/player/ServerPlayerEntity;ZDDDLnet/minecraft/network/IPacket;)Z"))