Skip to content

Commit ddc9750

Browse files
committed
Fix #50: Run potential job site access on poi thread
1 parent ef75362 commit ddc9750

2 files changed

Lines changed: 45 additions & 0 deletions

File tree

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
--- a/net/minecraft/world/entity/ai/behavior/GoToPotentialJobSite.java
2+
+++ b/net/minecraft/world/entity/ai/behavior/GoToPotentialJobSite.java
3+
@@ -2,6 +_,8 @@
4+
5+
import com.google.common.collect.ImmutableMap;
6+
import java.util.Optional;
7+
+
8+
+import io.multipaper.shreddedpaper.ShreddedPaper;
9+
import net.minecraft.core.BlockPos;
10+
import net.minecraft.core.GlobalPos;
11+
import net.minecraft.server.level.ServerLevel;
12+
@@ -45,12 +_,14 @@
13+
BlockPos blockPos = globalPos.pos();
14+
ServerLevel level1 = level.getServer().getLevel(globalPos.dimension());
15+
if (level1 != null) {
16+
+ ShreddedPaper.ensureSync(level, blockPos, () -> { // ShreddedPaper - run on poi's region
17+
PoiManager poiManager = level1.getPoiManager();
18+
if (poiManager.exists(blockPos, holder -> true)) {
19+
poiManager.release(blockPos);
20+
}
21+
22+
level.debugSynchronizers().updatePoi(blockPos);
23+
+ }); // ShreddedPaper - run on poi's region
24+
}
25+
});
26+
entity.getBrain().eraseMemory(MemoryModuleType.POTENTIAL_JOB_SITE);
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
--- a/net/minecraft/world/entity/ai/behavior/YieldJobSite.java
2+
+++ b/net/minecraft/world/entity/ai/behavior/YieldJobSite.java
3+
@@ -2,6 +_,8 @@
4+
5+
import java.util.List;
6+
import java.util.Optional;
7+
+
8+
+import ca.spottedleaf.moonrise.common.util.TickThread;
9+
import net.minecraft.core.BlockPos;
10+
import net.minecraft.core.GlobalPos;
11+
import net.minecraft.core.Holder;
12+
@@ -33,6 +_,7 @@
13+
return false;
14+
} else {
15+
BlockPos blockPos = instance.<GlobalPos>get(potentialJobSite).pos();
16+
+ if (!TickThread.isTickThreadFor(level, blockPos)) return true; // ShreddedPaper - don't run outside poi region
17+
Optional<Holder<PoiType>> type = level.getPoiManager().getType(blockPos);
18+
if (type.isEmpty()) {
19+
return true;

0 commit comments

Comments
 (0)