From 296baf0e8146fac28b8a17ade20a3d16de1fd78f Mon Sep 17 00:00:00 2001 From: TheMeinerLP Date: Sun, 18 Jun 2023 15:02:12 +0200 Subject: [PATCH] Add folia workaround --- .../v1_19_R3/PaperweightPlatformAdapter.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/worldedit-bukkit/adapters/adapter-1_19_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_19_R3/PaperweightPlatformAdapter.java b/worldedit-bukkit/adapters/adapter-1_19_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_19_R3/PaperweightPlatformAdapter.java index 4d2eef65b..ca88f9c18 100644 --- a/worldedit-bukkit/adapters/adapter-1_19_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_19_R3/PaperweightPlatformAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1_19_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_19_R3/PaperweightPlatformAdapter.java @@ -119,9 +119,20 @@ public final class PaperweightPlatformAdapter extends NMSAdapter { private static Field LEVEL_CHUNK_ENTITIES; private static Field SERVER_LEVEL_ENTITY_MANAGER; + private static boolean FOLIA_SUPPORT; + static { final MethodHandles.Lookup lookup = MethodHandles.lookup(); try { + boolean isFolia = false; + try { + // Assume API is present + Class.forName("io.papermc.paper.threadedregions.scheduler.EntityScheduler"); + isFolia = true; + } catch (Exception unused) { + + } + FOLIA_SUPPORT = isFolia; fieldData = PalettedContainer.class.getDeclaredField(Refraction.pickName("data", "d")); fieldData.setAccessible(true); @@ -263,7 +274,9 @@ public final class PaperweightPlatformAdapter extends NMSAdapter { } else { LevelChunk nmsChunk = serverLevel.getChunkSource().getChunkAtIfCachedImmediately(chunkX, chunkZ); if (nmsChunk != null) { - addTicket(serverLevel, chunkX, chunkZ); + if(!FOLIA_SUPPORT) {// TODO: Dirty folia workaround - Needs be discussed with FAWE members + addTicket(serverLevel, chunkX, chunkZ); + } return nmsChunk; } nmsChunk = serverLevel.getChunkSource().getChunkAtIfLoadedImmediately(chunkX, chunkZ); @@ -277,6 +290,12 @@ public final class PaperweightPlatformAdapter extends NMSAdapter { } CompletableFuture future = serverLevel.getWorld().getChunkAtAsync(chunkX, chunkZ, true, true); try { + /* + CraftChunk chunk = (CraftChunk) future.get(); + if(!FOLIA_SUPPORT) {// TODO: Dirty folia workaround - Needs be discussed with FAWE members + addTicket(serverLevel, chunkX, chunkZ); + } + */ CraftChunk chunk; try { chunk = (CraftChunk) future.get(10, TimeUnit.SECONDS);