From 1e714f533e5ec45ad8afd9da552948fd1324fe33 Mon Sep 17 00:00:00 2001 From: willies952002 Date: Wed, 29 Aug 2018 00:37:42 -0400 Subject: [PATCH] Implement Force-Loaded Chunk API diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java index b75ed5028d..15df2b44af 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -3017,6 +3017,7 @@ public abstract class World implements IEntityAccess, GeneratorAccess, IIBlockAc return forcedchunk != null && forcedchunk.a().contains(ChunkCoordIntPair.a(i, j)); } + public boolean setForcedChunk(int i, int j, boolean flag) { return b(i, j, flag); } // Paper - OBFHELPER public boolean b(int i, int j, boolean flag) { String s = "chunks"; ForcedChunk forcedchunk = (ForcedChunk) this.a(this.worldProvider.getDimensionManager(), ForcedChunk::new, "chunks"); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java index 12c6d850d2..55394e0c15 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java @@ -289,6 +289,18 @@ public class CraftChunk implements Chunk { Preconditions.checkArgument(0 <= z && z <= 15, "z out of range (expected 0-15, got %s)", z); } + // Paper start - Force-Loaded Chunk API + @Override + public boolean isForceLoaded() { + return getHandle().getWorld().isForcedChunk(this.x, this.z); + } + + @Override + public void setForceLoaded(boolean force) { + getHandle().getWorld().setForcedChunk(this.x, this.z, force); + } + // Paper end + static { Arrays.fill(emptySkyLight, (byte) 0xFF); } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java index 1ccf2a7609..755d2632fd 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -609,6 +609,10 @@ public class CraftWorld implements World { public boolean isChunkGenerated(int x, int z) { return this.getHandle().getChunkProviderServer().isChunkGenerated(x, z); } + + public boolean isChunkForceLoaded(int x, int z) { + return this.isChunkGenerated(x, z) && this.getHandle().isForcedChunk(x, z); + } // Paper end public ChunkGenerator getGenerator() { -- 2.19.0