2026-07-09 00:03:09 +08:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
|
|
From: MrHua269 <mrhua269@gmail.com>
|
|
|
|
|
Date: Wed, 8 Jul 2026 21:32:08 +0800
|
|
|
|
|
Subject: [PATCH] Entity portal-teleport speed fix
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
|
2026-07-18 19:48:30 +08:00
|
|
|
index c6434ff2e5c211887c2e98c8462a49e0e1cb5b21..d25b1c7d1347b2731cd12cdcea7190276913de49 100644
|
2026-07-09 00:03:09 +08:00
|
|
|
--- a/net/minecraft/server/level/ServerLevel.java
|
|
|
|
|
+++ b/net/minecraft/server/level/ServerLevel.java
|
2026-07-18 19:48:30 +08:00
|
|
|
@@ -1492,7 +1492,35 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
|
2026-07-09 00:03:09 +08:00
|
|
|
foliaProfiler.startTimer(timerId);
|
|
|
|
|
try {
|
|
|
|
|
// Folia end - profiler
|
2026-07-14 11:32:51 +08:00
|
|
|
+ // Shiroha start - Entity portal-teleport speed fix
|
2026-07-09 00:03:09 +08:00
|
|
|
if (isActive) { // Paper - EAR 2
|
2026-07-14 11:32:51 +08:00
|
|
|
+ if (!(entity instanceof Player) && entity.teleportTickType == 2) { // Shiroha - after portal compensate tick
|
2026-07-09 00:03:09 +08:00
|
|
|
+ entity.tick();
|
|
|
|
|
+ if (!ca.spottedleaf.moonrise.common.util.TickThread.isTickThreadFor(entity)) {
|
|
|
|
|
+ // removed from region while ticking
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (entity.handlePortal()) {
|
|
|
|
|
+ // portalled
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ entity.tick();
|
|
|
|
|
+ entity.teleportTickType = 0;
|
|
|
|
|
+ if (!ca.spottedleaf.moonrise.common.util.TickThread.isTickThreadFor(entity)) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (entity.handlePortal()) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
2026-07-14 11:32:51 +08:00
|
|
|
+ } else if (!(entity instanceof Player) && entity.teleportTickType == 1) { // Shiroha - portal teleport only
|
2026-07-09 00:03:09 +08:00
|
|
|
+ entity.teleportTickType++;
|
|
|
|
|
+ if (!ca.spottedleaf.moonrise.common.util.TickThread.isTickThreadFor(entity)) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (entity.handlePortal()) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
entity.tick();
|
|
|
|
|
// Folia start - region threading
|
|
|
|
|
if (!ca.spottedleaf.moonrise.common.util.TickThread.isTickThreadFor(entity)) {
|
2026-07-18 19:48:30 +08:00
|
|
|
@@ -1503,6 +1531,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
|
2026-07-09 00:03:09 +08:00
|
|
|
// portalled
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
+ }
|
2026-07-14 11:32:51 +08:00
|
|
|
+ // Shiroha end - Entity portal-teleport speed fix
|
2026-07-09 00:03:09 +08:00
|
|
|
// Folia end - region threading
|
|
|
|
|
} else {entity.inactiveTick();} // Paper - EAR 2
|
|
|
|
|
profiler.pop();
|
|
|
|
|
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
2026-07-18 19:48:30 +08:00
|
|
|
index a2b57f62b745dd21e215f919d335f14f5cb1706f..af3a85087d292d3782acf4c7d15fbfb9f749868d 100644
|
2026-07-09 00:03:09 +08:00
|
|
|
--- a/net/minecraft/world/entity/Entity.java
|
|
|
|
|
+++ b/net/minecraft/world/entity/Entity.java
|
|
|
|
|
@@ -387,6 +387,7 @@ public abstract class Entity
|
|
|
|
|
public long activatedTick = Integer.MIN_VALUE;
|
|
|
|
|
public boolean isTemporarilyActive;
|
|
|
|
|
public long activatedImmunityTick = Integer.MIN_VALUE;
|
2026-07-14 11:32:51 +08:00
|
|
|
+ public int teleportTickType = 0; // Shiroha - Entity portal-teleport speed fix
|
2026-07-09 00:03:09 +08:00
|
|
|
|
|
|
|
|
public void inactiveTick() {
|
|
|
|
|
}
|