Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-16 19:40:07 +01:00
7438edc9a1
This adds a new Future based, Consumer<Chunk> based, and ability to control whether or not to generate to the Async Chunk API. Until Async Chunks merges, these API's are still synchronous, but this commit will allow plugins to start using the API's in use with the Async Chunks beta.
60 Zeilen
2.5 KiB
Diff
60 Zeilen
2.5 KiB
Diff
From 7a5dbc00ebc5103326157c6a22529554e6fca3a6 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/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
|
index 650e605b5b..2ff8536d59 100644
|
|
--- a/src/main/java/net/minecraft/server/World.java
|
|
+++ b/src/main/java/net/minecraft/server/World.java
|
|
@@ -3023,6 +3023,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 99d8199996..f8ef782f14 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
@@ -600,6 +600,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
|
|
|