Skip to content

Commit 409a06a

Browse files
committed
Teleport to owner async
1 parent a6cd1e7 commit 409a06a

2 files changed

Lines changed: 46 additions & 3 deletions

File tree

patches/server/0010-Add-task-scheduling-API.patch

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ Subject: [PATCH] Add task scheduling API
66

77
diff --git a/src/main/java/io/multipaper/shreddedpaper/ShreddedPaper.java b/src/main/java/io/multipaper/shreddedpaper/ShreddedPaper.java
88
new file mode 100644
9-
index 0000000000000000000000000000000000000000..fd36882c99720cc04c72d30f18a943e2e70e0e99
9+
index 0000000000000000000000000000000000000000..2cbe8b4810b0198c0b00c8215c5e076ffd8d454e
1010
--- /dev/null
1111
+++ b/src/main/java/io/multipaper/shreddedpaper/ShreddedPaper.java
12-
@@ -0,0 +1,78 @@
12+
@@ -0,0 +1,86 @@
1313
+package io.multipaper.shreddedpaper;
1414
+
1515
+import io.multipaper.shreddedpaper.threading.ShreddedPaperRegionScheduler;
@@ -69,7 +69,15 @@ index 0000000000000000000000000000000000000000..fd36882c99720cc04c72d30f18a943e2
6969
+
7070
+ public static void ensureSync(Entity entity1, ServerLevel serverLevel2, ChunkPos chunkPos2, Runnable runnable) {
7171
+ if (!isSync((ServerLevel) entity1.level(), entity1.chunkPosition()) || !isSync(serverLevel2, chunkPos2)) {
72-
+ runSync((ServerLevel) entity1.level(), entity1.chunkPosition(), serverLevel2, chunkPos2, () -> ensureSync(entity1, serverLevel2, chunkPos2, runnable)); // Entity may have moved since, ensure still sync);
72+
+ runSync((ServerLevel) entity1.level(), entity1.chunkPosition(), serverLevel2, chunkPos2, () -> ensureSync(entity1, serverLevel2, chunkPos2, runnable)); // Entity may have moved since, ensure still sync
73+
+ } else {
74+
+ runnable.run();
75+
+ }
76+
+ }
77+
+
78+
+ public static void ensureSync(Entity entity1, Entity entity2, Runnable runnable) {
79+
+ if (!isSync((ServerLevel) entity1.level(), entity1.chunkPosition()) || !isSync((ServerLevel) entity2.level(), entity2.chunkPosition())) {
80+
+ runSync((ServerLevel) entity1.level(), entity1.chunkPosition(), (ServerLevel) entity2.level(), entity2.chunkPosition(), () -> ensureSync(entity1, entity2, runnable)); // Entity may have moved since, ensure still sync
7381
+ } else {
7482
+ runnable.run();
7583
+ }
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2+
From: PureGero <puregero@gmail.com>
3+
Date: Tue, 6 Jan 2026 21:39:18 +0900
4+
Subject: [PATCH] Teleport to owner async
5+
6+
7+
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/FollowOwnerGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/FollowOwnerGoal.java
8+
index edd29c2f4d0151d512618115a8fb4b7423171491..36578973cf0066648d1c392a0fb760e5270eed2c 100644
9+
--- a/src/main/java/net/minecraft/world/entity/ai/goal/FollowOwnerGoal.java
10+
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/FollowOwnerGoal.java
11+
@@ -1,6 +1,8 @@
12+
package net.minecraft.world.entity.ai.goal;
13+
14+
import java.util.EnumSet;
15+
+
16+
+import io.multipaper.shreddedpaper.ShreddedPaper;
17+
import net.minecraft.core.BlockPos;
18+
import net.minecraft.world.entity.Entity;
19+
import net.minecraft.world.entity.LivingEntity;
20+
@@ -107,6 +109,7 @@ public class FollowOwnerGoal extends Goal {
21+
}
22+
23+
private void teleportToOwner() {
24+
+ ShreddedPaper.ensureSync(this.tamable, owner, () -> { // ShreddedPaper - run on this and owner's thread
25+
BlockPos blockposition = this.owner.blockPosition();
26+
27+
for (int i = 0; i < 10; ++i) {
28+
@@ -119,6 +122,7 @@ public class FollowOwnerGoal extends Goal {
29+
return;
30+
}
31+
}
32+
+ }); // ShreddedPaper - run on this and owner's thread
33+
34+
}
35+

0 commit comments

Comments
 (0)