Yatopia/patches/server/0038-Load-also-the-chunk-that-you-re-teleporting-to.patch
Ivan Pekov 755f429c32
Patch port changes
Dropped some patches from purpur, added 2 patches from purpur.
Readded hopper optimizations from origami.
2020-10-04 18:43:50 +03:00

42 lines
2.8 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Ivan Pekov <ivan@mrivanplays.com>
Date: Wed, 26 Aug 2020 21:01:33 +0300
Subject: [PATCH] Load also the chunk that you're teleporting to
Fixes Tuinity-178
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index a991fb7b6123ebcf7b6e42f8cdd2f3377ab14970..be8da6114ad905602dd8e50a36f9ca824f5c4912 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -225,7 +225,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
return true;
}
- public final void loadChunksForMoveAsync(AxisAlignedBB axisalignedbb, double toX, double toZ,
+ public final void loadChunksForMoveAsync(AxisAlignedBB axisalignedbb, int toX, int toZ, // Yatopia
java.util.function.Consumer<List<IChunkAccess>> onLoad) {
if (Thread.currentThread() != this.serverThread) {
this.getChunkProvider().serverThreadQueue.execute(() -> {
@@ -282,6 +282,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
chunkProvider.getChunkAtAsynchronously(cx, cz, ChunkStatus.FULL, true, false, consumer);
}
}
+ chunkProvider.getChunkAtAsynchronously(toX >> 4, toZ >> 4, ChunkStatus.FULL, true, false, consumer); // Yatopia
}
// Tuinity end
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index 704d0000011668ecd9d048f35298658f2978d0f3..67e98634885a917f93c0c1accf2378f8efb608b6 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -545,7 +545,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
net.minecraft.server.WorldServer world = ((CraftWorld)locationClone.getWorld()).getHandle();
java.util.concurrent.CompletableFuture<Boolean> ret = new java.util.concurrent.CompletableFuture<>();
- world.loadChunksForMoveAsync(getHandle().getBoundingBoxAt(locationClone.getX(), locationClone.getY(), locationClone.getZ()), location.getX(), location.getZ(), (list) -> {
+ world.loadChunksForMoveAsync(getHandle().getBoundingBoxAt(locationClone.getX(), locationClone.getY(), locationClone.getZ()), location.getBlockX(), location.getBlockZ(), (list) -> { // Yatopia
net.minecraft.server.ChunkProviderServer chunkProviderServer = world.getChunkProvider();
for (net.minecraft.server.IChunkAccess chunk : list) {
chunkProviderServer.addTicketAtLevel(net.minecraft.server.TicketType.POST_TELEPORT, chunk.getPos(), 33, CraftEntity.this.getEntityId());