From 7ac07ac07ac07ac07ac07ac07ac07ac07ac07ac0 Mon Sep 17 00:00:00 2001
From: willies952002 <admin@domnian.com>
Date: Wed, 29 Aug 2018 00:37:42 -0400
Subject: [PATCH] Implement Force-Loaded Chunk API


diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
index 7ac07ac07ac0..7ac07ac07ac0 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().isForceLoaded(this.x, this.z);
+    }
+
+    @Override
+    public void setForceLoaded(boolean force) {
+        getHandle().getWorld().setForceLoaded(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 7ac07ac07ac0..7ac07ac07ac0 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -590,6 +590,12 @@ public class CraftWorld implements World {
         return getChunkAt(location.getBlockX() >> 4, location.getBlockZ() >> 4);
     }
 
+    // Paper start
+    public boolean isChunkForceLoaded(int x, int z) {
+        return this.isChunkGenerated(x, z) && this.getHandle().isForceLoaded(x, z);
+    }
+    // Paper end
+
     public ChunkGenerator getGenerator() {
         return generator;
     }
-- 
2.19.1