Rework and fix spector teleportation fix

This commit is contained in:
M2ke4U
2023-11-27 21:13:13 +08:00
parent fc7212133f
commit 025f90a764

View File

@@ -25,7 +25,7 @@ index d032786938db9725e1be72dae63a1387bcb69d79..08536bd5bbea3a9bb9d4c6212d361570
if (tpsbarEnabled){ if (tpsbarEnabled){
initTpsbar(); initTpsbar();
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index 97bfb92e52c3c5ef1cd22afe2b97c204eb45025a..d0ceec72b56741b35cc090e7c9d2c642b8709449 100644 index 97bfb92e52c3c5ef1cd22afe2b97c204eb45025a..710e87e388095f28af4983a04cb89ddb6be61986 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -18,6 +18,9 @@ import java.util.Optional; @@ -18,6 +18,9 @@ import java.util.Optional;
@@ -38,22 +38,41 @@ index 97bfb92e52c3c5ef1cd22afe2b97c204eb45025a..d0ceec72b56741b35cc090e7c9d2c642
import net.minecraft.BlockUtil; import net.minecraft.BlockUtil;
import net.minecraft.ChatFormatting; import net.minecraft.ChatFormatting;
import net.minecraft.CrashReport; import net.minecraft.CrashReport;
@@ -835,26 +838,54 @@ public class ServerPlayer extends Player { @@ -835,18 +838,7 @@ public class ServerPlayer extends Player {
Entity entity = this.getCamera(); Entity entity = this.getCamera();
+ boolean shouldTickRemainingThisThread = true;//Luminol - Fix spector camera - if (entity != this) {
if (entity != this) { - if (entity.isAlive()) {
if (entity.isAlive()) {
- this.absMoveTo(entity.getX(), entity.getY(), entity.getZ(), entity.getYRot(), entity.getXRot()); - this.absMoveTo(entity.getX(), entity.getY(), entity.getZ(), entity.getYRot(), entity.getXRot());
- this.serverLevel().getChunkSource().move(this); - this.serverLevel().getChunkSource().move(this);
- if (this.wantsToStopRiding()) { - if (this.wantsToStopRiding()) {
- this.setCamera(this); - this.setCamera(this);
- }
- } else {
- this.setCamera(this);
- }
- }
-
+ //Luminol - move up
CriteriaTriggers.TICK.trigger(this);
if (this.levitationStartPos != null) {
CriteriaTriggers.LEVITATION.trigger(this, this.levitationStartPos, this.tickCount - this.levitationStartTime);
@@ -855,6 +847,38 @@ public class ServerPlayer extends Player {
this.trackStartFallingPosition();
this.trackEnteredOrExitedLavaOnVehicle();
this.advancements.flushDirty(this);
+
+ if (entity != this) {
+ if (entity.isAlive()) {
+ //Luminol start - Fix spector camera + //Luminol start - Fix spector camera
+ if (TickThread.isTickThreadFor(entity) || !LuminolConfig.fixSpectorTeleportFolia){ + if (TickThread.isTickThreadFor(entity) || !LuminolConfig.fixSpectorTeleportFolia){
+ this.absMoveTo(entity.getX(), entity.getY(), entity.getZ(), entity.getYRot(), entity.getXRot()); + this.absMoveTo(entity.getX(), entity.getY(), entity.getZ(), entity.getYRot(), entity.getXRot());
+ this.serverLevel().getChunkSource().move(this);
+ if (this.wantsToStopRiding()) {
+ this.setCamera(this);
+ }
+ }else{ + }else{
+ shouldTickRemainingThisThread = false;
+ this.teleportAsync( + this.teleportAsync(
+ ((ServerLevel) entity.level()), + ((ServerLevel) entity.level()),
+ entity.position, + entity.position,
@@ -67,39 +86,13 @@ index 97bfb92e52c3c5ef1cd22afe2b97c204eb45025a..d0ceec72b56741b35cc090e7c9d2c642
+ if (this.wantsToStopRiding()) { + if (this.wantsToStopRiding()) {
+ this.setCamera(this); + this.setCamera(this);
+ } + }
+ CriteriaTriggers.TICK.trigger(this);
+ if (this.levitationStartPos != null) {
+ CriteriaTriggers.LEVITATION.trigger(this, this.levitationStartPos, this.tickCount - this.levitationStartTime);
+ }
+
+ this.trackStartFallingPosition();
+ this.trackEnteredOrExitedLavaOnVehicle();
+ this.advancements.flushDirty(this);
+ } + }
+ ); + );
} + }
+ //Luminol end + //Luminol end
} else { + } else {
this.setCamera(this); + this.setCamera(this);
}
}
- CriteriaTriggers.TICK.trigger(this);
- if (this.levitationStartPos != null) {
- CriteriaTriggers.LEVITATION.trigger(this, this.levitationStartPos, this.tickCount - this.levitationStartTime);
- }
+ if (shouldTickRemainingThisThread){ //Luminol - Fix spector camera
+ CriteriaTriggers.TICK.trigger(this);
+ if (this.levitationStartPos != null) {
+ CriteriaTriggers.LEVITATION.trigger(this, this.levitationStartPos, this.tickCount - this.levitationStartTime);
+ } + }
- this.trackStartFallingPosition();
- this.trackEnteredOrExitedLavaOnVehicle();
- this.advancements.flushDirty(this);
+ this.trackStartFallingPosition();
+ this.trackEnteredOrExitedLavaOnVehicle();
+ this.advancements.flushDirty(this);
+ } + }
} }