diff --git a/build-logic/src/main/kotlin/buildlogic.adapter.gradle.kts b/build-logic/src/main/kotlin/buildlogic.adapter.gradle.kts index 5a4e4ad7e2..6e1f0ee391 100644 --- a/build-logic/src/main/kotlin/buildlogic.adapter.gradle.kts +++ b/build-logic/src/main/kotlin/buildlogic.adapter.gradle.kts @@ -19,24 +19,18 @@ repositories { maven { name = "PaperMC" url = uri("https://repo.papermc.io/repository/maven-public/") - content { - // excludeModule("io.papermc.paper", "dev-bundle") - } } maven { name = "EngineHub Repository" url = uri("https://maven.enginehub.org/repo/") content { - // excludeModule("io.papermc.paper", "dev-bundle") + excludeModule("net.fabricmc", "yarn") } } -/* maven { + maven { name = "IntellectualSites" - url = uri("https://repo.intellectualsites.dev/repository/paper-dev-bundles/") - content { - // includeModule("io.papermc.paper", "dev-bundle") - } - }*/ + url = uri("https://repo.intellectualsites.dev/repository/maven-all/") + } mavenCentral() afterEvaluate { killNonEngineHubRepositories() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ea4773d45b..9fd122e1be 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -33,7 +33,6 @@ jlibnoise = "1.0.0" jchronic = "0.2.4a" lz4-java = "1.11.1" commons-cli = "1.11.0" -paperLib = "1.0.8" paster = "1.1.7" vault = "1.7.1" serverlib = "2.3.7" @@ -106,7 +105,6 @@ jlibnoise = { group = "com.sk89q.lib", name = "jlibnoise", version.ref = "jlibno jchronic = { group = "com.sk89q", name = "jchronic", version.ref = "jchronic" } lz4Java = { group = "at.yawk.lz4", name = "lz4-java", version.ref = "lz4-java" } commonsCli = { group = "commons-cli", name = "commons-cli", version.ref = "commons-cli" } -paperLib = { group = "io.papermc", name = "paperlib", version.ref = "paperLib" } adventureApi = { group = "net.kyori", name = "adventure-api", version.ref = "adventure" } adventureMiniMessage = { group = "net.kyori", name = "adventure-text-minimessage", version.ref = "adventure" } paster = { group = "com.intellectualsites.paster", name = "Paster", version.ref = "paster" } diff --git a/worldedit-bukkit/adapters/adapter-1_21/build.gradle.kts b/worldedit-bukkit/adapters/adapter-1_21/build.gradle.kts index 92fb1dc97c..0dd0b514e3 100644 --- a/worldedit-bukkit/adapters/adapter-1_21/build.gradle.kts +++ b/worldedit-bukkit/adapters/adapter-1_21/build.gradle.kts @@ -8,5 +8,4 @@ plugins { dependencies { // url=https://repo.papermc.io/service/rest/repository/browse/maven-public/io/papermc/paper/dev-bundle/1.21.1-R0.1-SNAPSHOT/ the().paperDevBundle("1.21.1-R0.1-20250328.161643-128") - compileOnly(libs.paperLib) } diff --git a/worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightFaweAdapter.java b/worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightFaweAdapter.java index e6a542a607..e14c8f0e46 100644 --- a/worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightFaweAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightFaweAdapter.java @@ -2,6 +2,7 @@ import com.fastasyncworldedit.bukkit.adapter.FaweAdapter; import com.fastasyncworldedit.bukkit.adapter.NMSRelighterFactory; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.entity.LazyBaseEntity; import com.fastasyncworldedit.core.extent.processor.PlacementStateProcessor; @@ -56,7 +57,6 @@ import com.sk89q.worldedit.world.generation.TreeType; import com.sk89q.worldedit.world.item.ItemType; import com.sk89q.worldedit.world.registry.BlockMaterial; -import io.papermc.lib.PaperLib; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; @@ -885,7 +885,7 @@ public Iterable getRegisteredBiomes() { @Override public RelighterFactory getRelighterFactory() { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return new PaperweightStarlightRelighterFactory(); } else { return new NMSRelighterFactory(); @@ -917,7 +917,7 @@ public PlacementStateProcessor getPlatformPlacementProcessor(Extent extent, Bloc } private boolean wasAccessibleSinceLastSave(ChunkHolder holder) { - if (PaperLib.isPaper()) { // Papers new chunk system has no related replacement - therefor we assume true. + if (PaperSupport.isPaper()) { // Papers new chunk system has no related replacement - therefor we assume true. return true; } try { diff --git a/worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightGetBlocks.java b/worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightGetBlocks.java index a434387799..77a5d4614d 100644 --- a/worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightGetBlocks.java +++ b/worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightGetBlocks.java @@ -3,6 +3,7 @@ import com.fastasyncworldedit.bukkit.adapter.AbstractBukkitGetBlocks; import com.fastasyncworldedit.bukkit.adapter.DelegateSemaphore; import com.fastasyncworldedit.bukkit.adapter.NativeEntityFunctionSet; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.Fawe; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.configuration.Settings; @@ -27,7 +28,6 @@ import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.biome.BiomeTypes; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import io.papermc.paper.event.block.BeaconDeactivatedEvent; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; @@ -361,7 +361,7 @@ protected > T internalCall( int ordinal = set.getBlock(lx, ly, lz).getOrdinal(); if (ordinal != BlockTypesCache.ReservedIDs.__RESERVED__) { BlockEntity tile = entry.getValue(); - if (PaperLib.isPaper() && tile instanceof BeaconBlockEntity) { + if (PaperSupport.isPaper() && tile instanceof BeaconBlockEntity) { if (beacons == null) { beacons = new ArrayList<>(); } @@ -691,7 +691,7 @@ protected > T internalCall( if (!set.getSideEffectSet().shouldApply(SideEffect.ENTITY_EVENTS)) { entity.spawnReason = CreatureSpawnEvent.SpawnReason.CUSTOM; entity.generation = false; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { if (!nmsWorld.moonrise$getEntityLookup().addNewEntity(entity)) { onError.run(); } diff --git a/worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightGetBlocks_Copy.java b/worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightGetBlocks_Copy.java index 87c7fbab7e..999b4c79b5 100644 --- a/worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightGetBlocks_Copy.java +++ b/worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightGetBlocks_Copy.java @@ -1,5 +1,6 @@ package com.sk89q.worldedit.bukkit.adapter.impl.fawe.v1_21_R1; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.extent.processor.heightmap.HeightMapType; import com.fastasyncworldedit.core.nbt.FaweCompoundTag; import com.fastasyncworldedit.core.queue.IBlocks; @@ -16,7 +17,6 @@ import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import net.minecraft.core.Holder; import net.minecraft.nbt.Tag; import net.minecraft.server.dedicated.DedicatedServer; @@ -197,7 +197,7 @@ protected void storeBiomes(int layer, PalettedContainerRO> biomeDa biomes[layer] = new Holder[64]; } if (biomeData instanceof PalettedContainer> palettedContainer) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { for (int i = 0; i < 64; i++) { biomes[layer][i] = palettedContainer.get(i); // Only public on paper } diff --git a/worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightPlatformAdapter.java b/worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightPlatformAdapter.java index f91810ead5..8664238eff 100644 --- a/worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightPlatformAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1_21/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_R1/PaperweightPlatformAdapter.java @@ -5,6 +5,7 @@ import com.fastasyncworldedit.bukkit.adapter.CachedBukkitAdapter; import com.fastasyncworldedit.bukkit.adapter.DelegateSemaphore; import com.fastasyncworldedit.bukkit.adapter.NMSAdapter; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.Fawe; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.math.BitArrayUnstretched; @@ -19,7 +20,6 @@ import com.sk89q.worldedit.world.biome.BiomeTypes; import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; import net.minecraft.core.IdMap; @@ -153,7 +153,7 @@ public final class PaperweightPlatformAdapter extends NMSAdapter { getVisibleChunkIfPresent.setAccessible(true); methodGetVisibleChunk = lookup.unreflect(getVisibleChunkIfPresent); - if (!PaperLib.isPaper()) { + if (!PaperSupport.isPaper()) { fieldThreadingDetector = PalettedContainer.class.getDeclaredField(Refraction.pickName("threadingDetector", "f")); fieldThreadingDetector.setAccessible(true); fieldLock = ThreadingDetector.class.getDeclaredField(Refraction.pickName("lock", "c")); @@ -223,7 +223,7 @@ static boolean setSectionAtomic( ThreadLocal.withInitial(() -> new DelegateSemaphore(1, null)); static DelegateSemaphore applyLock(LevelChunkSection section) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return SEMAPHORE_THREAD_LOCAL.get(); } try { @@ -251,19 +251,19 @@ public static CompletableFuture ensureLoaded(ServerLevel serverLevel if (levelChunk != null) { return CompletableFuture.completedFuture(levelChunk); } - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { CompletableFuture future = serverLevel - .getWorld() - .getChunkAtAsync(chunkX, chunkZ, true, true) - .thenApply(chunk -> { - addTicket(serverLevel, chunkX, chunkZ); - try { - return toLevelChunk(chunk); - } catch (Throwable e) { - LOGGER.error("Could not asynchronously load chunk at {},{}", chunkX, chunkZ, e); - return null; - } - }); + .getWorld() + .getChunkAtAsync(chunkX, chunkZ, true, true) + .thenApply(chunk -> { + addTicket(serverLevel, chunkX, chunkZ); + try { + return toLevelChunk(chunk); + } catch (Throwable e) { + LOGGER.error("Could not asynchronously load chunk at {},{}", chunkX, chunkZ, e); + return null; + } + }); try { if (!future.isCompletedExceptionally() || (future.isDone() && future.get() != null)) { return future; @@ -272,10 +272,10 @@ public static CompletableFuture ensureLoaded(ServerLevel serverLevel LOGGER.error("Asynchronous chunk load at {},{} exceptionally completed immediately", chunkX, chunkZ, t); } catch (InterruptedException | ExecutionException e) { LOGGER.error( - "Unexpected error when getting completed future at chunk {},{}. Returning to default.", - chunkX, - chunkZ, - e + "Unexpected error when getting completed future at chunk {},{}. Returning to default.", + chunkX, + chunkZ, + e ); } } @@ -287,7 +287,7 @@ private static LevelChunk toLevelChunk(Chunk chunk) { } public static @Nullable LevelChunk getChunkImmediatelyAsync(ServerLevel serverLevel, int chunkX, int chunkZ) { - if (!PaperLib.isPaper()) { + if (!PaperSupport.isPaper()) { LevelChunk nmsChunk = serverLevel.getChunkSource().getChunk(chunkX, chunkZ, false); if (nmsChunk != null) { return nmsChunk; @@ -339,7 +339,7 @@ public static void sendChunk(IntPair pair, ServerLevel nmsWorld, int chunkX, int } ChunkPos coordIntPair = new ChunkPos(chunkX, chunkZ); LevelChunk levelChunk; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { // getChunkAtIfLoadedImmediately is paper only levelChunk = nmsWorld.getChunkSource().getChunkAtIfLoadedImmediately(chunkX, chunkZ); } else { @@ -356,21 +356,21 @@ public static void sendChunk(IntPair pair, ServerLevel nmsWorld, int chunkX, int MinecraftServer.getServer().execute(() -> { try { ClientboundLevelChunkWithLightPacket packet; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { packet = new ClientboundLevelChunkWithLightPacket( - levelChunk, - nmsWorld.getChunkSource().getLightEngine(), - null, - null, - false // last false is to not bother with x-ray + levelChunk, + nmsWorld.getChunkSource().getLightEngine(), + null, + null, + false // last false is to not bother with x-ray ); } else { // deprecated on paper - deprecation suppressed packet = new ClientboundLevelChunkWithLightPacket( - levelChunk, - nmsWorld.getChunkSource().getLightEngine(), - null, - null + levelChunk, + nmsWorld.getChunkSource().getLightEngine(), + null, + null ); } nearbyPlayers(nmsWorld, coordIntPair).forEach(p -> p.connection.send(packet)); @@ -655,10 +655,10 @@ static void removeBeacon(BlockEntity beacon, LevelChunk levelChunk) { } static List getEntities(LevelChunk chunk) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return Optional.ofNullable(chunk.level - .moonrise$getEntityLookup() - .getChunk(chunk.locX, chunk.locZ)).map(c -> { + .moonrise$getEntityLookup() + .getChunk(chunk.locX, chunk.locZ)).map(c -> { try { //noinspection unchecked return (List) PAPER_CHUNK_GEN_ALL_ENTITIES.invoke(c); diff --git a/worldedit-bukkit/adapters/adapter-1_21_11/build.gradle.kts b/worldedit-bukkit/adapters/adapter-1_21_11/build.gradle.kts index 4e9dcdda20..5a8208563c 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_11/build.gradle.kts +++ b/worldedit-bukkit/adapters/adapter-1_21_11/build.gradle.kts @@ -7,5 +7,4 @@ plugins { dependencies { // https://repo.papermc.io/service/rest/repository/browse/maven-public/io/papermc/paper/dev-bundle/ the().paperDevBundle("1.21.11-R0.1-20260310.030221-86") - compileOnly(libs.paperLib) } diff --git a/worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightFaweAdapter.java b/worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightFaweAdapter.java index c9bc10e856..e847b65789 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightFaweAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightFaweAdapter.java @@ -2,6 +2,7 @@ import com.fastasyncworldedit.bukkit.adapter.FaweAdapter; import com.fastasyncworldedit.bukkit.adapter.NMSRelighterFactory; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.entity.LazyBaseEntity; import com.fastasyncworldedit.core.extent.processor.PlacementStateProcessor; @@ -54,7 +55,6 @@ import com.sk89q.worldedit.world.generation.TreeType; import com.sk89q.worldedit.world.item.ItemType; import com.sk89q.worldedit.world.registry.BlockMaterial; -import io.papermc.lib.PaperLib; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; @@ -854,7 +854,7 @@ public Iterable getRegisteredBiomes() { @Override public RelighterFactory getRelighterFactory() { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return new PaperweightStarlightRelighterFactory(); } else { return new NMSRelighterFactory(); @@ -886,7 +886,7 @@ public PlacementStateProcessor getPlatformPlacementProcessor(Extent extent, Bloc } private boolean wasAccessibleSinceLastSave(ChunkHolder holder) { - if (PaperLib.isPaper()) { // Papers new chunk system has no related replacement - therefor we assume true. + if (PaperSupport.isPaper()) { // Papers new chunk system has no related replacement - therefor we assume true. return true; } try { diff --git a/worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightGetBlocks.java b/worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightGetBlocks.java index 15f6350617..9baf25ca48 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightGetBlocks.java +++ b/worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightGetBlocks.java @@ -3,6 +3,7 @@ import com.fastasyncworldedit.bukkit.adapter.AbstractBukkitGetBlocks; import com.fastasyncworldedit.bukkit.adapter.DelegateSemaphore; import com.fastasyncworldedit.bukkit.adapter.NativeEntityFunctionSet; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.configuration.Settings; import com.fastasyncworldedit.core.extent.processor.heightmap.HeightMapType; @@ -24,7 +25,6 @@ import com.sk89q.worldedit.util.formatting.text.TextComponent; import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import io.papermc.paper.event.block.BeaconDeactivatedEvent; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; @@ -358,7 +358,7 @@ protected > T internalCall( int ordinal = set.getBlock(lx, ly, lz).getOrdinal(); if (ordinal != BlockTypesCache.ReservedIDs.__RESERVED__) { BlockEntity tile = entry.getValue(); - if (PaperLib.isPaper() && tile instanceof BeaconBlockEntity) { + if (PaperSupport.isPaper() && tile instanceof BeaconBlockEntity) { if (beacons == null) { beacons = new ArrayList<>(); } @@ -681,7 +681,7 @@ protected > T internalCall( if (!set.getSideEffectSet().shouldApply(SideEffect.ENTITY_EVENTS)) { entity.spawnReason = CreatureSpawnEvent.SpawnReason.CUSTOM; entity.generation = false; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { if (!nmsWorld.moonrise$getEntityLookup().addNewEntity(entity, false)) { onError.run(); } diff --git a/worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightGetBlocks_Copy.java b/worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightGetBlocks_Copy.java index 9d053ed559..2286396ddc 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightGetBlocks_Copy.java +++ b/worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightGetBlocks_Copy.java @@ -1,5 +1,6 @@ package com.sk89q.worldedit.bukkit.adapter.impl.fawe.v1_21_11; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.extent.processor.heightmap.HeightMapType; import com.fastasyncworldedit.core.nbt.FaweCompoundTag; import com.fastasyncworldedit.core.queue.IBlocks; @@ -8,17 +9,13 @@ import com.fastasyncworldedit.core.queue.IChunkSet; import com.fastasyncworldedit.core.queue.IQueueExtent; import com.fastasyncworldedit.core.util.NbtUtils; -import com.sk89q.worldedit.bukkit.WorldEditPlugin; -import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter; import com.sk89q.worldedit.internal.util.LogManagerCompat; import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import net.minecraft.core.Holder; -import net.minecraft.nbt.Tag; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.biome.Biome; @@ -193,7 +190,7 @@ protected void storeBiomes(int layer, PalettedContainerRO> biomeDa biomes[layer] = new Holder[64]; } if (biomeData instanceof PalettedContainer> palettedContainer) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { for (int i = 0; i < 64; i++) { biomes[layer][i] = palettedContainer.get(i); // Only public on paper } @@ -201,7 +198,7 @@ protected void storeBiomes(int layer, PalettedContainerRO> biomeDa try { for (int i = 0; i < 64; i++) { biomes[layer][i] = - (Holder) PaperweightPlatformAdapter.PALETTED_CONTAINER_GET.invoke(palettedContainer, i); + (Holder) PaperweightPlatformAdapter.PALETTED_CONTAINER_GET.invoke(palettedContainer, i); } } catch (Throwable e) { throw new RuntimeException(e); diff --git a/worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightPlatformAdapter.java b/worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightPlatformAdapter.java index a2c9261d5a..f9d79c10b8 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightPlatformAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightPlatformAdapter.java @@ -5,6 +5,7 @@ import com.fastasyncworldedit.bukkit.adapter.CachedBukkitAdapter; import com.fastasyncworldedit.bukkit.adapter.DelegateSemaphore; import com.fastasyncworldedit.bukkit.adapter.NMSAdapter; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.Fawe; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.math.BitArrayUnstretched; @@ -19,7 +20,6 @@ import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.biome.BiomeTypes; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; import net.minecraft.core.IdMap; @@ -41,6 +41,7 @@ import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.chunk.LevelChunk; import net.minecraft.world.level.chunk.LevelChunkSection; import net.minecraft.world.level.chunk.PalettedContainer; @@ -123,10 +124,10 @@ public final class PaperweightPlatformAdapter extends NMSAdapter { fieldPalette.setAccessible(true); //noinspection JavaLangInvokeHandleSignature - method is obfuscated - palettedContainerUnpackSpigot = PaperLib.isPaper() ? null : lookup.findStatic( - PalettedContainer.class, - "a", // unpack - MethodType.methodType(DataResult.class, Strategy.class, PalettedContainerRO.PackedData.class) + palettedContainerUnpackSpigot = PaperSupport.isPaper() ? null : lookup.findStatic( + PalettedContainer.class, + "a", // unpack + MethodType.methodType(DataResult.class, Strategy.class, PalettedContainerRO.PackedData.class) ); fieldTickingFluidCount = LevelChunkSection.class.getDeclaredField(Refraction.pickName( @@ -155,7 +156,7 @@ public final class PaperweightPlatformAdapter extends NMSAdapter { getVisibleChunkIfPresent.setAccessible(true); methodGetVisibleChunk = lookup.unreflect(getVisibleChunkIfPresent); - if (!PaperLib.isPaper()) { + if (!PaperSupport.isPaper()) { fieldThreadingDetector = PalettedContainer.class.getDeclaredField(Refraction.pickName("threadingDetector", "d")); fieldThreadingDetector.setAccessible(true); fieldLock = ThreadingDetector.class.getDeclaredField(Refraction.pickName("lock", "c")); @@ -232,7 +233,7 @@ static boolean setSectionAtomic( ThreadLocal.withInitial(() -> new DelegateSemaphore(1, null)); static DelegateSemaphore applyLock(LevelChunkSection section) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return SEMAPHORE_THREAD_LOCAL.get(); } try { @@ -260,19 +261,19 @@ public static CompletableFuture ensureLoaded(ServerLevel serverLevel if (levelChunk != null) { return CompletableFuture.completedFuture(levelChunk); } - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { CompletableFuture future = serverLevel - .getWorld() - .getChunkAtAsync(chunkX, chunkZ, true, true) - .thenApply(chunk -> { - addTicket(serverLevel, chunkX, chunkZ); - try { - return toLevelChunk(chunk); - } catch (Throwable e) { - LOGGER.error("Could not asynchronously load chunk at {},{}", chunkX, chunkZ, e); - return null; - } - }); + .getWorld() + .getChunkAtAsync(chunkX, chunkZ, true, true) + .thenApply(chunk -> { + addTicket(serverLevel, chunkX, chunkZ); + try { + return toLevelChunk(chunk); + } catch (Throwable e) { + LOGGER.error("Could not asynchronously load chunk at {},{}", chunkX, chunkZ, e); + return null; + } + }); try { if (!future.isCompletedExceptionally() || (future.isDone() && future.get() != null)) { return future; @@ -281,10 +282,10 @@ public static CompletableFuture ensureLoaded(ServerLevel serverLevel LOGGER.error("Asynchronous chunk load at {},{} exceptionally completed immediately", chunkX, chunkZ, t); } catch (InterruptedException | ExecutionException e) { LOGGER.error( - "Unexpected error when getting completed future at chunk {},{}. Returning to default.", - chunkX, - chunkZ, - e + "Unexpected error when getting completed future at chunk {},{}. Returning to default.", + chunkX, + chunkZ, + e ); } } @@ -296,7 +297,7 @@ private static LevelChunk toLevelChunk(Chunk chunk) { } public static @Nullable LevelChunk getChunkImmediatelyAsync(ServerLevel serverLevel, int chunkX, int chunkZ) { - if (!PaperLib.isPaper()) { + if (!PaperSupport.isPaper()) { LevelChunk nmsChunk = serverLevel.getChunkSource().getChunk(chunkX, chunkZ, false); if (nmsChunk != null) { return nmsChunk; @@ -347,7 +348,7 @@ public static void sendChunk(IntPair pair, ServerLevel nmsWorld, int chunkX, int return; } LevelChunk levelChunk; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { // getChunkAtIfLoadedImmediately is paper only levelChunk = nmsWorld.getChunkSource().getChunkAtIfLoadedImmediately(chunkX, chunkZ); } else { @@ -365,21 +366,21 @@ public static void sendChunk(IntPair pair, ServerLevel nmsWorld, int chunkX, int try { ChunkPos pos = levelChunk.getPos(); ClientboundLevelChunkWithLightPacket packet; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { packet = new ClientboundLevelChunkWithLightPacket( - levelChunk, - nmsWorld.getLightEngine(), - null, - null, - false // last false is to not bother with x-ray + levelChunk, + nmsWorld.getLightEngine(), + null, + null, + false // last false is to not bother with x-ray ); } else { // deprecated on paper - deprecation suppressed packet = new ClientboundLevelChunkWithLightPacket( - levelChunk, - nmsWorld.getLightEngine(), - null, - null + levelChunk, + nmsWorld.getLightEngine(), + null, + null ); } nearbyPlayers(nmsWorld, pos).forEach(p -> p.connection.send(packet)); @@ -457,12 +458,12 @@ public static LevelChunkSection newChunkSection( // Create palette with data var packedData = new PalettedContainerRO.PackedData<>(palette, Optional.ofNullable(bits)); DataResult> result; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { result = PalettedContainer.unpack(strategy, packedData, Blocks.AIR.defaultBlockState(), null); } else { //noinspection unchecked - result = (DataResult>) - palettedContainerUnpackSpigot.invokeExact(strategy, packedData); + result = (DataResult>) + palettedContainerUnpackSpigot.invokeExact(strategy, packedData); } if (biomes == null) { biomes = PalettedContainerFactory.create(registryAccess).createForBiomes(); @@ -533,18 +534,18 @@ public static PalettedContainer> getBiomePalettedContainer( palette, Optional.of(LongStream.of(new long[arrayLength])), bitsPerEntry ); DataResult>> result; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { result = PalettedContainer.unpack( - strategy, - packedData, - biomeRegistry.byIdOrThrow(adapter.getInternalBiomeId(BiomeTypes.PLAINS)), - null + strategy, + packedData, + biomeRegistry.byIdOrThrow(adapter.getInternalBiomeId(BiomeTypes.PLAINS)), + null ); } else { try { //noinspection unchecked result = (DataResult>>) - palettedContainerUnpackSpigot.invokeExact(strategy, packedData); + palettedContainerUnpackSpigot.invokeExact(strategy, packedData); } catch (Throwable e) { throw new RuntimeException("Failed to create biome palette for Spigot", e); } @@ -607,10 +608,10 @@ static void removeBeacon(BlockEntity beacon, LevelChunk levelChunk) { } static List getEntities(LevelChunk chunk) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return Optional.ofNullable(chunk.level - .moonrise$getEntityLookup() - .getChunk(chunk.locX, chunk.locZ)).map(ChunkEntitySlices::getAllEntities).orElse(Collections.emptyList()); + .moonrise$getEntityLookup() + .getChunk(chunk.locX, chunk.locZ)).map(ChunkEntitySlices::getAllEntities).orElse(Collections.emptyList()); } try { //noinspection unchecked diff --git a/worldedit-bukkit/adapters/adapter-1_21_4/build.gradle.kts b/worldedit-bukkit/adapters/adapter-1_21_4/build.gradle.kts index 8e2d3c2036..8d263bc13f 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_4/build.gradle.kts +++ b/worldedit-bukkit/adapters/adapter-1_21_4/build.gradle.kts @@ -8,5 +8,4 @@ plugins { dependencies { // url=https://repo.papermc.io/service/rest/repository/browse/maven-public/io/papermc/paper/dev-bundle/1.21.4-R0.1-SNAPSHOT/ the().paperDevBundle("1.21.4-R0.1-20250609.101859-227") - compileOnly(libs.paperLib) } diff --git a/worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightFaweAdapter.java b/worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightFaweAdapter.java index 5aeba33a96..e7bfda7e58 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightFaweAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightFaweAdapter.java @@ -2,6 +2,7 @@ import com.fastasyncworldedit.bukkit.adapter.FaweAdapter; import com.fastasyncworldedit.bukkit.adapter.NMSRelighterFactory; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.entity.LazyBaseEntity; import com.fastasyncworldedit.core.extent.processor.PlacementStateProcessor; @@ -54,7 +55,6 @@ import com.sk89q.worldedit.world.generation.TreeType; import com.sk89q.worldedit.world.item.ItemType; import com.sk89q.worldedit.world.registry.BlockMaterial; -import io.papermc.lib.PaperLib; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; @@ -860,7 +860,7 @@ public Iterable getRegisteredBiomes() { @Override public RelighterFactory getRelighterFactory() { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return new PaperweightStarlightRelighterFactory(); } else { return new NMSRelighterFactory(); @@ -892,7 +892,7 @@ public PlacementStateProcessor getPlatformPlacementProcessor(Extent extent, Bloc } private boolean wasAccessibleSinceLastSave(ChunkHolder holder) { - if (PaperLib.isPaper()) { // Papers new chunk system has no related replacement - therefor we assume true. + if (PaperSupport.isPaper()) { // Papers new chunk system has no related replacement - therefor we assume true. return true; } try { diff --git a/worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightGetBlocks.java b/worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightGetBlocks.java index b72ee7c41d..dc3ef52b55 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightGetBlocks.java +++ b/worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightGetBlocks.java @@ -3,6 +3,7 @@ import com.fastasyncworldedit.bukkit.adapter.AbstractBukkitGetBlocks; import com.fastasyncworldedit.bukkit.adapter.DelegateSemaphore; import com.fastasyncworldedit.bukkit.adapter.NativeEntityFunctionSet; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.configuration.Settings; import com.fastasyncworldedit.core.extent.processor.heightmap.HeightMapType; @@ -25,7 +26,6 @@ import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.biome.BiomeTypes; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import io.papermc.paper.event.block.BeaconDeactivatedEvent; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; @@ -359,7 +359,7 @@ protected > T internalCall( int ordinal = set.getBlock(lx, ly, lz).getOrdinal(); if (ordinal != BlockTypesCache.ReservedIDs.__RESERVED__) { BlockEntity tile = entry.getValue(); - if (PaperLib.isPaper() && tile instanceof BeaconBlockEntity) { + if (PaperSupport.isPaper() && tile instanceof BeaconBlockEntity) { if (beacons == null) { beacons = new ArrayList<>(); } @@ -676,7 +676,7 @@ protected > T internalCall( if (!set.getSideEffectSet().shouldApply(SideEffect.ENTITY_EVENTS)) { entity.spawnReason = CreatureSpawnEvent.SpawnReason.CUSTOM; entity.generation = false; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { if (!nmsWorld.moonrise$getEntityLookup().addNewEntity(entity, false)) { onError.run(); } diff --git a/worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightGetBlocks_Copy.java b/worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightGetBlocks_Copy.java index 95898157fa..ada6804be4 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightGetBlocks_Copy.java +++ b/worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightGetBlocks_Copy.java @@ -1,5 +1,6 @@ package com.sk89q.worldedit.bukkit.adapter.impl.fawe.v1_21_4; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.extent.processor.heightmap.HeightMapType; import com.fastasyncworldedit.core.nbt.FaweCompoundTag; import com.fastasyncworldedit.core.queue.IBlocks; @@ -16,7 +17,6 @@ import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import net.minecraft.core.Holder; import net.minecraft.nbt.Tag; import net.minecraft.server.dedicated.DedicatedServer; @@ -197,7 +197,7 @@ protected void storeBiomes(int layer, PalettedContainerRO> biomeDa biomes[layer] = new Holder[64]; } if (biomeData instanceof PalettedContainer> palettedContainer) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { for (int i = 0; i < 64; i++) { biomes[layer][i] = palettedContainer.get(i); // Only public on paper } @@ -205,7 +205,7 @@ protected void storeBiomes(int layer, PalettedContainerRO> biomeDa try { for (int i = 0; i < 64; i++) { biomes[layer][i] = (Holder) PaperweightPlatformAdapter.PALETTED_CONTAINER_GET - .invoke(palettedContainer, i); + .invoke(palettedContainer, i); } } catch (Throwable e) { throw new RuntimeException(e); diff --git a/worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightPlatformAdapter.java b/worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightPlatformAdapter.java index 9dee48ebb7..03880108aa 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightPlatformAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightPlatformAdapter.java @@ -5,6 +5,7 @@ import com.fastasyncworldedit.bukkit.adapter.CachedBukkitAdapter; import com.fastasyncworldedit.bukkit.adapter.DelegateSemaphore; import com.fastasyncworldedit.bukkit.adapter.NMSAdapter; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.Fawe; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.math.BitArrayUnstretched; @@ -19,7 +20,6 @@ import com.sk89q.worldedit.world.biome.BiomeTypes; import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; import net.minecraft.core.IdMap; @@ -147,7 +147,7 @@ public final class PaperweightPlatformAdapter extends NMSAdapter { getVisibleChunkIfPresent.setAccessible(true); methodGetVisibleChunk = lookup.unreflect(getVisibleChunkIfPresent); - if (!PaperLib.isPaper()) { + if (!PaperSupport.isPaper()) { fieldThreadingDetector = PalettedContainer.class.getDeclaredField(Refraction.pickName("threadingDetector", "f")); fieldThreadingDetector.setAccessible(true); fieldLock = ThreadingDetector.class.getDeclaredField(Refraction.pickName("lock", "c")); @@ -209,7 +209,7 @@ static boolean setSectionAtomic( ThreadLocal.withInitial(() -> new DelegateSemaphore(1, null)); static DelegateSemaphore applyLock(LevelChunkSection section) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return SEMAPHORE_THREAD_LOCAL.get(); } try { @@ -237,7 +237,7 @@ public static CompletableFuture ensureLoaded(ServerLevel serverLevel if (levelChunk != null) { return CompletableFuture.completedFuture(levelChunk); } - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { CompletableFuture future = serverLevel .getWorld() .getChunkAtAsync(chunkX, chunkZ, true, true) @@ -273,7 +273,7 @@ private static LevelChunk toLevelChunk(Chunk chunk) { } public static @Nullable LevelChunk getChunkImmediatelyAsync(ServerLevel serverLevel, int chunkX, int chunkZ) { - if (!PaperLib.isPaper()) { + if (!PaperSupport.isPaper()) { LevelChunk nmsChunk = serverLevel.getChunkSource().getChunk(chunkX, chunkZ, false); if (nmsChunk != null) { return nmsChunk; @@ -324,7 +324,7 @@ public static void sendChunk(IntPair pair, ServerLevel nmsWorld, int chunkX, int return; } LevelChunk levelChunk; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { // getChunkAtIfLoadedImmediately is paper only levelChunk = nmsWorld.getChunkSource().getChunkAtIfLoadedImmediately(chunkX, chunkZ); } else { @@ -342,7 +342,7 @@ public static void sendChunk(IntPair pair, ServerLevel nmsWorld, int chunkX, int try { ChunkPos pos = levelChunk.getPos(); ClientboundLevelChunkWithLightPacket packet; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { packet = new ClientboundLevelChunkWithLightPacket( levelChunk, nmsWorld.getLightEngine(), @@ -641,7 +641,7 @@ static void removeBeacon(BlockEntity beacon, LevelChunk levelChunk) { } static List getEntities(LevelChunk chunk) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return Optional.ofNullable(chunk.level .moonrise$getEntityLookup() .getChunk(chunk.locX, chunk.locZ)).map(ChunkEntitySlices::getAllEntities).orElse(Collections.emptyList()); diff --git a/worldedit-bukkit/adapters/adapter-1_21_5/build.gradle.kts b/worldedit-bukkit/adapters/adapter-1_21_5/build.gradle.kts index c3abf5b7bc..70727ae1c9 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_5/build.gradle.kts +++ b/worldedit-bukkit/adapters/adapter-1_21_5/build.gradle.kts @@ -7,5 +7,4 @@ plugins { dependencies { // https://repo.papermc.io/service/rest/repository/browse/maven-public/io/papermc/paper/dev-bundle/ the().paperDevBundle("1.21.5-R0.1-20250618.110345-108") - compileOnly(libs.paperLib) } diff --git a/worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightFaweAdapter.java b/worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightFaweAdapter.java index 9db33d44a3..5fb25c4e70 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightFaweAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightFaweAdapter.java @@ -2,6 +2,7 @@ import com.fastasyncworldedit.bukkit.adapter.FaweAdapter; import com.fastasyncworldedit.bukkit.adapter.NMSRelighterFactory; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.entity.LazyBaseEntity; import com.fastasyncworldedit.core.extent.processor.PlacementStateProcessor; @@ -55,7 +56,6 @@ import com.sk89q.worldedit.world.generation.TreeType; import com.sk89q.worldedit.world.item.ItemType; import com.sk89q.worldedit.world.registry.BlockMaterial; -import io.papermc.lib.PaperLib; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; @@ -859,7 +859,7 @@ public Iterable getRegisteredBiomes() { @Override public RelighterFactory getRelighterFactory() { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return new PaperweightStarlightRelighterFactory(); } else { return new NMSRelighterFactory(); @@ -891,7 +891,7 @@ public PlacementStateProcessor getPlatformPlacementProcessor(Extent extent, Bloc } private boolean wasAccessibleSinceLastSave(ChunkHolder holder) { - if (PaperLib.isPaper()) { // Papers new chunk system has no related replacement - therefor we assume true. + if (PaperSupport.isPaper()) { // Papers new chunk system has no related replacement - therefor we assume true. return true; } try { diff --git a/worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightGetBlocks.java b/worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightGetBlocks.java index 71081abc14..d10c02b550 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightGetBlocks.java +++ b/worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightGetBlocks.java @@ -3,6 +3,7 @@ import com.fastasyncworldedit.bukkit.adapter.AbstractBukkitGetBlocks; import com.fastasyncworldedit.bukkit.adapter.DelegateSemaphore; import com.fastasyncworldedit.bukkit.adapter.NativeEntityFunctionSet; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.configuration.Settings; import com.fastasyncworldedit.core.extent.processor.heightmap.HeightMapType; @@ -25,7 +26,6 @@ import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.biome.BiomeTypes; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import io.papermc.paper.event.block.BeaconDeactivatedEvent; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; @@ -359,7 +359,7 @@ protected > T internalCall( int ordinal = set.getBlock(lx, ly, lz).getOrdinal(); if (ordinal != BlockTypesCache.ReservedIDs.__RESERVED__) { BlockEntity tile = entry.getValue(); - if (PaperLib.isPaper() && tile instanceof BeaconBlockEntity) { + if (PaperSupport.isPaper() && tile instanceof BeaconBlockEntity) { if (beacons == null) { beacons = new ArrayList<>(); } @@ -676,7 +676,7 @@ protected > T internalCall( if (!set.getSideEffectSet().shouldApply(SideEffect.ENTITY_EVENTS)) { entity.spawnReason = CreatureSpawnEvent.SpawnReason.CUSTOM; entity.generation = false; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { if (!nmsWorld.moonrise$getEntityLookup().addNewEntity(entity, false)) { onError.run(); } diff --git a/worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightGetBlocks_Copy.java b/worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightGetBlocks_Copy.java index a8d4ec820d..0e45721b6f 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightGetBlocks_Copy.java +++ b/worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightGetBlocks_Copy.java @@ -1,5 +1,6 @@ package com.sk89q.worldedit.bukkit.adapter.impl.fawe.v1_21_5; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.extent.processor.heightmap.HeightMapType; import com.fastasyncworldedit.core.nbt.FaweCompoundTag; import com.fastasyncworldedit.core.queue.IBlocks; @@ -16,7 +17,6 @@ import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import net.minecraft.core.Holder; import net.minecraft.nbt.Tag; import net.minecraft.server.dedicated.DedicatedServer; @@ -197,7 +197,7 @@ protected void storeBiomes(int layer, PalettedContainerRO> biomeDa biomes[layer] = new Holder[64]; } if (biomeData instanceof PalettedContainer> palettedContainer) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { for (int i = 0; i < 64; i++) { biomes[layer][i] = palettedContainer.get(i); // Only public on paper } @@ -205,7 +205,7 @@ protected void storeBiomes(int layer, PalettedContainerRO> biomeDa try { for (int i = 0; i < 64; i++) { biomes[layer][i] = (Holder) PaperweightPlatformAdapter.PALETTED_CONTAINER_GET - .invoke(palettedContainer, i); + .invoke(palettedContainer, i); } } catch (Throwable e) { throw new RuntimeException(e); diff --git a/worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightPlatformAdapter.java b/worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightPlatformAdapter.java index 5c09c212d9..e1a11c1405 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightPlatformAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightPlatformAdapter.java @@ -5,6 +5,7 @@ import com.fastasyncworldedit.bukkit.adapter.CachedBukkitAdapter; import com.fastasyncworldedit.bukkit.adapter.DelegateSemaphore; import com.fastasyncworldedit.bukkit.adapter.NMSAdapter; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.Fawe; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.math.BitArrayUnstretched; @@ -19,7 +20,6 @@ import com.sk89q.worldedit.world.biome.BiomeTypes; import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; import net.minecraft.core.IdMap; @@ -146,7 +146,7 @@ public final class PaperweightPlatformAdapter extends NMSAdapter { getVisibleChunkIfPresent.setAccessible(true); methodGetVisibleChunk = lookup.unreflect(getVisibleChunkIfPresent); - if (!PaperLib.isPaper()) { + if (!PaperSupport.isPaper()) { fieldThreadingDetector = PalettedContainer.class.getDeclaredField(Refraction.pickName("threadingDetector", "f")); fieldThreadingDetector.setAccessible(true); fieldLock = ThreadingDetector.class.getDeclaredField(Refraction.pickName("lock", "c")); @@ -208,7 +208,7 @@ static boolean setSectionAtomic( ThreadLocal.withInitial(() -> new DelegateSemaphore(1, null)); static DelegateSemaphore applyLock(LevelChunkSection section) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return SEMAPHORE_THREAD_LOCAL.get(); } try { @@ -236,19 +236,19 @@ public static CompletableFuture ensureLoaded(ServerLevel serverLevel if (levelChunk != null) { return CompletableFuture.completedFuture(levelChunk); } - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { CompletableFuture future = serverLevel - .getWorld() - .getChunkAtAsync(chunkX, chunkZ, true, true) - .thenApply(chunk -> { - addTicket(serverLevel, chunkX, chunkZ); - try { - return toLevelChunk(chunk); - } catch (Throwable e) { - LOGGER.error("Could not asynchronously load chunk at {},{}", chunkX, chunkZ, e); - return null; - } - }); + .getWorld() + .getChunkAtAsync(chunkX, chunkZ, true, true) + .thenApply(chunk -> { + addTicket(serverLevel, chunkX, chunkZ); + try { + return toLevelChunk(chunk); + } catch (Throwable e) { + LOGGER.error("Could not asynchronously load chunk at {},{}", chunkX, chunkZ, e); + return null; + } + }); try { if (!future.isCompletedExceptionally() || (future.isDone() && future.get() != null)) { return future; @@ -257,10 +257,10 @@ public static CompletableFuture ensureLoaded(ServerLevel serverLevel LOGGER.error("Asynchronous chunk load at {},{} exceptionally completed immediately", chunkX, chunkZ, t); } catch (InterruptedException | ExecutionException e) { LOGGER.error( - "Unexpected error when getting completed future at chunk {},{}. Returning to default.", - chunkX, - chunkZ, - e + "Unexpected error when getting completed future at chunk {},{}. Returning to default.", + chunkX, + chunkZ, + e ); } } @@ -272,7 +272,7 @@ private static LevelChunk toLevelChunk(Chunk chunk) { } public static @Nullable LevelChunk getChunkImmediatelyAsync(ServerLevel serverLevel, int chunkX, int chunkZ) { - if (!PaperLib.isPaper()) { + if (!PaperSupport.isPaper()) { LevelChunk nmsChunk = serverLevel.getChunkSource().getChunk(chunkX, chunkZ, false); if (nmsChunk != null) { return nmsChunk; @@ -323,7 +323,7 @@ public static void sendChunk(IntPair pair, ServerLevel nmsWorld, int chunkX, int return; } LevelChunk levelChunk; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { // getChunkAtIfLoadedImmediately is paper only levelChunk = nmsWorld.getChunkSource().getChunkAtIfLoadedImmediately(chunkX, chunkZ); } else { @@ -341,21 +341,21 @@ public static void sendChunk(IntPair pair, ServerLevel nmsWorld, int chunkX, int try { ChunkPos pos = levelChunk.getPos(); ClientboundLevelChunkWithLightPacket packet; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { packet = new ClientboundLevelChunkWithLightPacket( - levelChunk, - nmsWorld.getLightEngine(), - null, - null, - false // last false is to not bother with x-ray + levelChunk, + nmsWorld.getLightEngine(), + null, + null, + false // last false is to not bother with x-ray ); } else { // deprecated on paper - deprecation suppressed packet = new ClientboundLevelChunkWithLightPacket( - levelChunk, - nmsWorld.getLightEngine(), - null, - null + levelChunk, + nmsWorld.getLightEngine(), + null, + null ); } nearbyPlayers(nmsWorld, pos).forEach(p -> p.connection.send(packet)); @@ -640,10 +640,10 @@ static void removeBeacon(BlockEntity beacon, LevelChunk levelChunk) { } static List getEntities(LevelChunk chunk) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return Optional.ofNullable(chunk.level - .moonrise$getEntityLookup() - .getChunk(chunk.locX, chunk.locZ)).map(ChunkEntitySlices::getAllEntities).orElse(Collections.emptyList()); + .moonrise$getEntityLookup() + .getChunk(chunk.locX, chunk.locZ)).map(ChunkEntitySlices::getAllEntities).orElse(Collections.emptyList()); } try { return getEntitySectionManager(chunk.level).getEntities(chunk.getPos()); diff --git a/worldedit-bukkit/adapters/adapter-1_21_6/build.gradle.kts b/worldedit-bukkit/adapters/adapter-1_21_6/build.gradle.kts index 4b156b4837..924b3c520a 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_6/build.gradle.kts +++ b/worldedit-bukkit/adapters/adapter-1_21_6/build.gradle.kts @@ -7,5 +7,4 @@ plugins { dependencies { // https://repo.papermc.io/service/rest/repository/browse/maven-public/io/papermc/paper/dev-bundle/ the().paperDevBundle("1.21.8-R0.1-20250829.204528-51") - compileOnly(libs.paperLib) } diff --git a/worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightFaweAdapter.java b/worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightFaweAdapter.java index a09c96b7a8..c9ff91358e 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightFaweAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightFaweAdapter.java @@ -2,6 +2,7 @@ import com.fastasyncworldedit.bukkit.adapter.FaweAdapter; import com.fastasyncworldedit.bukkit.adapter.NMSRelighterFactory; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.entity.LazyBaseEntity; import com.fastasyncworldedit.core.extent.processor.PlacementStateProcessor; @@ -55,7 +56,6 @@ import com.sk89q.worldedit.world.generation.TreeType; import com.sk89q.worldedit.world.item.ItemType; import com.sk89q.worldedit.world.registry.BlockMaterial; -import io.papermc.lib.PaperLib; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; @@ -878,7 +878,7 @@ public Iterable getRegisteredBiomes() { @Override public RelighterFactory getRelighterFactory() { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return new PaperweightStarlightRelighterFactory(); } else { return new NMSRelighterFactory(); @@ -910,7 +910,7 @@ public PlacementStateProcessor getPlatformPlacementProcessor(Extent extent, Bloc } private boolean wasAccessibleSinceLastSave(ChunkHolder holder) { - if (PaperLib.isPaper()) { // Papers new chunk system has no related replacement - therefor we assume true. + if (PaperSupport.isPaper()) { // Papers new chunk system has no related replacement - therefor we assume true. return true; } try { diff --git a/worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightGetBlocks.java b/worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightGetBlocks.java index ae95fd8dec..7d82c9e3f1 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightGetBlocks.java +++ b/worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightGetBlocks.java @@ -3,6 +3,7 @@ import com.fastasyncworldedit.bukkit.adapter.AbstractBukkitGetBlocks; import com.fastasyncworldedit.bukkit.adapter.DelegateSemaphore; import com.fastasyncworldedit.bukkit.adapter.NativeEntityFunctionSet; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.configuration.Settings; import com.fastasyncworldedit.core.extent.processor.heightmap.HeightMapType; @@ -25,7 +26,6 @@ import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.biome.BiomeTypes; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import io.papermc.paper.event.block.BeaconDeactivatedEvent; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; @@ -363,7 +363,7 @@ protected > T internalCall( int ordinal = set.getBlock(lx, ly, lz).getOrdinal(); if (ordinal != BlockTypesCache.ReservedIDs.__RESERVED__) { BlockEntity tile = entry.getValue(); - if (PaperLib.isPaper() && tile instanceof BeaconBlockEntity) { + if (PaperSupport.isPaper() && tile instanceof BeaconBlockEntity) { if (beacons == null) { beacons = new ArrayList<>(); } @@ -682,7 +682,7 @@ protected > T internalCall( if (!set.getSideEffectSet().shouldApply(SideEffect.ENTITY_EVENTS)) { entity.spawnReason = CreatureSpawnEvent.SpawnReason.CUSTOM; entity.generation = false; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { if (!nmsWorld.moonrise$getEntityLookup().addNewEntity(entity, false)) { onError.run(); } diff --git a/worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightGetBlocks_Copy.java b/worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightGetBlocks_Copy.java index db4fe55939..c62b8e50af 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightGetBlocks_Copy.java +++ b/worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightGetBlocks_Copy.java @@ -1,5 +1,6 @@ package com.sk89q.worldedit.bukkit.adapter.impl.fawe.v1_21_6; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.extent.processor.heightmap.HeightMapType; import com.fastasyncworldedit.core.nbt.FaweCompoundTag; import com.fastasyncworldedit.core.queue.IBlocks; @@ -16,7 +17,6 @@ import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import net.minecraft.core.Holder; import net.minecraft.nbt.Tag; import net.minecraft.server.level.ServerLevel; @@ -201,7 +201,7 @@ protected void storeBiomes(int layer, PalettedContainerRO> biomeDa biomes[layer] = new Holder[64]; } if (biomeData instanceof PalettedContainer> palettedContainer) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { for (int i = 0; i < 64; i++) { biomes[layer][i] = palettedContainer.get(i); // Only public on paper } @@ -209,7 +209,7 @@ protected void storeBiomes(int layer, PalettedContainerRO> biomeDa try { for (int i = 0; i < 64; i++) { biomes[layer][i] = (Holder) PaperweightPlatformAdapter.PALETTED_CONTAINER_GET - .invoke(palettedContainer, i); + .invoke(palettedContainer, i); } } catch (Throwable e) { throw new RuntimeException(e); diff --git a/worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightPlatformAdapter.java b/worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightPlatformAdapter.java index 8f4693c19a..d2270b4984 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightPlatformAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightPlatformAdapter.java @@ -5,6 +5,7 @@ import com.fastasyncworldedit.bukkit.adapter.CachedBukkitAdapter; import com.fastasyncworldedit.bukkit.adapter.DelegateSemaphore; import com.fastasyncworldedit.bukkit.adapter.NMSAdapter; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.Fawe; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.math.BitArrayUnstretched; @@ -19,7 +20,6 @@ import com.sk89q.worldedit.world.biome.BiomeTypes; import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; import net.minecraft.core.IdMap; @@ -152,7 +152,7 @@ public final class PaperweightPlatformAdapter extends NMSAdapter { getVisibleChunkIfPresent.setAccessible(true); methodGetVisibleChunk = lookup.unreflect(getVisibleChunkIfPresent); - if (!PaperLib.isPaper()) { + if (!PaperSupport.isPaper()) { fieldThreadingDetector = PalettedContainer.class.getDeclaredField(Refraction.pickName("threadingDetector", "f")); fieldThreadingDetector.setAccessible(true); fieldLock = ThreadingDetector.class.getDeclaredField(Refraction.pickName("lock", "c")); @@ -237,7 +237,7 @@ static boolean setSectionAtomic( ThreadLocal.withInitial(() -> new DelegateSemaphore(1, null)); static DelegateSemaphore applyLock(LevelChunkSection section) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return SEMAPHORE_THREAD_LOCAL.get(); } try { @@ -265,19 +265,19 @@ public static CompletableFuture ensureLoaded(ServerLevel serverLevel if (levelChunk != null) { return CompletableFuture.completedFuture(levelChunk); } - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { CompletableFuture future = serverLevel - .getWorld() - .getChunkAtAsync(chunkX, chunkZ, true, true) - .thenApply(chunk -> { - addTicket(serverLevel, chunkX, chunkZ); - try { - return toLevelChunk(chunk); - } catch (Throwable e) { - LOGGER.error("Could not asynchronously load chunk at {},{}", chunkX, chunkZ, e); - return null; - } - }); + .getWorld() + .getChunkAtAsync(chunkX, chunkZ, true, true) + .thenApply(chunk -> { + addTicket(serverLevel, chunkX, chunkZ); + try { + return toLevelChunk(chunk); + } catch (Throwable e) { + LOGGER.error("Could not asynchronously load chunk at {},{}", chunkX, chunkZ, e); + return null; + } + }); try { if (!future.isCompletedExceptionally() || (future.isDone() && future.get() != null)) { return future; @@ -286,10 +286,10 @@ public static CompletableFuture ensureLoaded(ServerLevel serverLevel LOGGER.error("Asynchronous chunk load at {},{} exceptionally completed immediately", chunkX, chunkZ, t); } catch (InterruptedException | ExecutionException e) { LOGGER.error( - "Unexpected error when getting completed future at chunk {},{}. Returning to default.", - chunkX, - chunkZ, - e + "Unexpected error when getting completed future at chunk {},{}. Returning to default.", + chunkX, + chunkZ, + e ); } } @@ -301,7 +301,7 @@ private static LevelChunk toLevelChunk(Chunk chunk) { } public static @Nullable LevelChunk getChunkImmediatelyAsync(ServerLevel serverLevel, int chunkX, int chunkZ) { - if (!PaperLib.isPaper()) { + if (!PaperSupport.isPaper()) { LevelChunk nmsChunk = serverLevel.getChunkSource().getChunk(chunkX, chunkZ, false); if (nmsChunk != null) { return nmsChunk; @@ -352,7 +352,7 @@ public static void sendChunk(IntPair pair, ServerLevel nmsWorld, int chunkX, int return; } LevelChunk levelChunk; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { // getChunkAtIfLoadedImmediately is paper only levelChunk = nmsWorld.getChunkSource().getChunkAtIfLoadedImmediately(chunkX, chunkZ); } else { @@ -370,21 +370,21 @@ public static void sendChunk(IntPair pair, ServerLevel nmsWorld, int chunkX, int try { ChunkPos pos = levelChunk.getPos(); ClientboundLevelChunkWithLightPacket packet; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { packet = new ClientboundLevelChunkWithLightPacket( - levelChunk, - nmsWorld.getLightEngine(), - null, - null, - false // last false is to not bother with x-ray + levelChunk, + nmsWorld.getLightEngine(), + null, + null, + false // last false is to not bother with x-ray ); } else { // deprecated on paper - deprecation suppressed packet = new ClientboundLevelChunkWithLightPacket( - levelChunk, - nmsWorld.getLightEngine(), - null, - null + levelChunk, + nmsWorld.getLightEngine(), + null, + null ); } nearbyPlayers(nmsWorld, pos).forEach(p -> p.connection.send(packet)); @@ -669,10 +669,10 @@ static void removeBeacon(BlockEntity beacon, LevelChunk levelChunk) { } static List getEntities(LevelChunk chunk) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return Optional.ofNullable(chunk.level - .moonrise$getEntityLookup() - .getChunk(chunk.locX, chunk.locZ)).map(ChunkEntitySlices::getAllEntities).orElse(Collections.emptyList()); + .moonrise$getEntityLookup() + .getChunk(chunk.locX, chunk.locZ)).map(ChunkEntitySlices::getAllEntities).orElse(Collections.emptyList()); } try { return getEntitySectionManager(chunk.level).getEntities(chunk.getPos()); diff --git a/worldedit-bukkit/adapters/adapter-1_21_9/build.gradle.kts b/worldedit-bukkit/adapters/adapter-1_21_9/build.gradle.kts index c7cc191e4a..2752f38935 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_9/build.gradle.kts +++ b/worldedit-bukkit/adapters/adapter-1_21_9/build.gradle.kts @@ -7,5 +7,4 @@ plugins { dependencies { // https://repo.papermc.io/service/rest/repository/browse/maven-public/io/papermc/paper/dev-bundle/ the().paperDevBundle("1.21.10-R0.1-20251007.183616-3") - compileOnly(libs.paperLib) } diff --git a/worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightFaweAdapter.java b/worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightFaweAdapter.java index e39b875476..1131741e0a 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightFaweAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightFaweAdapter.java @@ -2,6 +2,7 @@ import com.fastasyncworldedit.bukkit.adapter.FaweAdapter; import com.fastasyncworldedit.bukkit.adapter.NMSRelighterFactory; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.entity.LazyBaseEntity; import com.fastasyncworldedit.core.extent.processor.PlacementStateProcessor; @@ -55,7 +56,6 @@ import com.sk89q.worldedit.world.generation.TreeType; import com.sk89q.worldedit.world.item.ItemType; import com.sk89q.worldedit.world.registry.BlockMaterial; -import io.papermc.lib.PaperLib; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; @@ -871,7 +871,7 @@ public Iterable getRegisteredBiomes() { @Override public RelighterFactory getRelighterFactory() { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return new PaperweightStarlightRelighterFactory(); } else { return new NMSRelighterFactory(); @@ -903,7 +903,7 @@ public PlacementStateProcessor getPlatformPlacementProcessor(Extent extent, Bloc } private boolean wasAccessibleSinceLastSave(ChunkHolder holder) { - if (PaperLib.isPaper()) { // Papers new chunk system has no related replacement - therefor we assume true. + if (PaperSupport.isPaper()) { // Papers new chunk system has no related replacement - therefor we assume true. return true; } try { diff --git a/worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightGetBlocks.java b/worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightGetBlocks.java index e9c051477e..bad5001f0f 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightGetBlocks.java +++ b/worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightGetBlocks.java @@ -3,6 +3,7 @@ import com.fastasyncworldedit.bukkit.adapter.AbstractBukkitGetBlocks; import com.fastasyncworldedit.bukkit.adapter.DelegateSemaphore; import com.fastasyncworldedit.bukkit.adapter.NativeEntityFunctionSet; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.configuration.Settings; import com.fastasyncworldedit.core.extent.processor.heightmap.HeightMapType; @@ -24,7 +25,6 @@ import com.sk89q.worldedit.util.formatting.text.TextComponent; import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import io.papermc.paper.event.block.BeaconDeactivatedEvent; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; @@ -362,7 +362,7 @@ protected > T internalCall( int ordinal = set.getBlock(lx, ly, lz).getOrdinal(); if (ordinal != BlockTypesCache.ReservedIDs.__RESERVED__) { BlockEntity tile = entry.getValue(); - if (PaperLib.isPaper() && tile instanceof BeaconBlockEntity) { + if (PaperSupport.isPaper() && tile instanceof BeaconBlockEntity) { if (beacons == null) { beacons = new ArrayList<>(); } @@ -686,7 +686,7 @@ protected > T internalCall( if (!set.getSideEffectSet().shouldApply(SideEffect.ENTITY_EVENTS)) { entity.spawnReason = CreatureSpawnEvent.SpawnReason.CUSTOM; entity.generation = false; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { if (!nmsWorld.moonrise$getEntityLookup().addNewEntity(entity, false)) { onError.run(); } diff --git a/worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightGetBlocks_Copy.java b/worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightGetBlocks_Copy.java index 881cbb0eff..28f6ac23f3 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightGetBlocks_Copy.java +++ b/worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightGetBlocks_Copy.java @@ -1,5 +1,6 @@ package com.sk89q.worldedit.bukkit.adapter.impl.fawe.v1_21_9; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.extent.processor.heightmap.HeightMapType; import com.fastasyncworldedit.core.nbt.FaweCompoundTag; import com.fastasyncworldedit.core.queue.IBlocks; @@ -16,7 +17,6 @@ import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import net.minecraft.core.Holder; import net.minecraft.nbt.Tag; import net.minecraft.server.level.ServerLevel; @@ -201,7 +201,7 @@ protected void storeBiomes(int layer, PalettedContainerRO> biomeDa biomes[layer] = new Holder[64]; } if (biomeData instanceof PalettedContainer> palettedContainer) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { for (int i = 0; i < 64; i++) { biomes[layer][i] = palettedContainer.get(i); // Only public on paper } @@ -209,7 +209,7 @@ protected void storeBiomes(int layer, PalettedContainerRO> biomeDa try { for (int i = 0; i < 64; i++) { biomes[layer][i] = - (Holder) PaperweightPlatformAdapter.PALETTED_CONTAINER_GET.invoke(palettedContainer, i); + (Holder) PaperweightPlatformAdapter.PALETTED_CONTAINER_GET.invoke(palettedContainer, i); } } catch (Throwable e) { throw new RuntimeException(e); diff --git a/worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightPlatformAdapter.java b/worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightPlatformAdapter.java index 3bbe8c7bad..972a0a3e5b 100644 --- a/worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightPlatformAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightPlatformAdapter.java @@ -6,6 +6,7 @@ import com.fastasyncworldedit.bukkit.adapter.DelegateSemaphore; import com.fastasyncworldedit.bukkit.adapter.NMSAdapter; import com.fastasyncworldedit.bukkit.util.MinecraftVersion; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.Fawe; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.math.BitArrayUnstretched; @@ -21,7 +22,6 @@ import com.sk89q.worldedit.world.biome.BiomeTypes; import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; import net.minecraft.core.IdMap; @@ -130,10 +130,10 @@ public final class PaperweightPlatformAdapter extends NMSAdapter { fieldPalette.setAccessible(true); //noinspection JavaLangInvokeHandleSignature - method is obfuscated - palettedContainerUnpackSpigot = PaperLib.isPaper() ? null : lookup.findStatic( - PalettedContainer.class, - "a", // unpack - MethodType.methodType(DataResult.class, Strategy.class, PalettedContainerRO.PackedData.class) + palettedContainerUnpackSpigot = PaperSupport.isPaper() ? null : lookup.findStatic( + PalettedContainer.class, + "a", // unpack + MethodType.methodType(DataResult.class, Strategy.class, PalettedContainerRO.PackedData.class) ); fieldTickingFluidCount = LevelChunkSection.class.getDeclaredField(Refraction.pickName( @@ -162,7 +162,7 @@ public final class PaperweightPlatformAdapter extends NMSAdapter { getVisibleChunkIfPresent.setAccessible(true); methodGetVisibleChunk = lookup.unreflect(getVisibleChunkIfPresent); - if (!PaperLib.isPaper()) { + if (!PaperSupport.isPaper()) { fieldThreadingDetector = PalettedContainer.class.getDeclaredField(Refraction.pickName("threadingDetector", "d")); fieldThreadingDetector.setAccessible(true); fieldLock = ThreadingDetector.class.getDeclaredField(Refraction.pickName("lock", "c")); @@ -247,7 +247,7 @@ static boolean setSectionAtomic( ThreadLocal.withInitial(() -> new DelegateSemaphore(1, null)); static DelegateSemaphore applyLock(LevelChunkSection section) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return SEMAPHORE_THREAD_LOCAL.get(); } try { @@ -275,19 +275,19 @@ public static CompletableFuture ensureLoaded(ServerLevel serverLevel if (levelChunk != null) { return CompletableFuture.completedFuture(levelChunk); } - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { CompletableFuture future = serverLevel - .getWorld() - .getChunkAtAsync(chunkX, chunkZ, true, true) - .thenApply(chunk -> { - addTicket(serverLevel, chunkX, chunkZ); - try { - return toLevelChunk(chunk); - } catch (Throwable e) { - LOGGER.error("Could not asynchronously load chunk at {},{}", chunkX, chunkZ, e); - return null; - } - }); + .getWorld() + .getChunkAtAsync(chunkX, chunkZ, true, true) + .thenApply(chunk -> { + addTicket(serverLevel, chunkX, chunkZ); + try { + return toLevelChunk(chunk); + } catch (Throwable e) { + LOGGER.error("Could not asynchronously load chunk at {},{}", chunkX, chunkZ, e); + return null; + } + }); try { if (!future.isCompletedExceptionally() || (future.isDone() && future.get() != null)) { return future; @@ -296,10 +296,10 @@ public static CompletableFuture ensureLoaded(ServerLevel serverLevel LOGGER.error("Asynchronous chunk load at {},{} exceptionally completed immediately", chunkX, chunkZ, t); } catch (InterruptedException | ExecutionException e) { LOGGER.error( - "Unexpected error when getting completed future at chunk {},{}. Returning to default.", - chunkX, - chunkZ, - e + "Unexpected error when getting completed future at chunk {},{}. Returning to default.", + chunkX, + chunkZ, + e ); } } @@ -311,7 +311,7 @@ private static LevelChunk toLevelChunk(Chunk chunk) { } public static @Nullable LevelChunk getChunkImmediatelyAsync(ServerLevel serverLevel, int chunkX, int chunkZ) { - if (!PaperLib.isPaper()) { + if (!PaperSupport.isPaper()) { LevelChunk nmsChunk = serverLevel.getChunkSource().getChunk(chunkX, chunkZ, false); if (nmsChunk != null) { return nmsChunk; @@ -362,7 +362,7 @@ public static void sendChunk(IntPair pair, ServerLevel nmsWorld, int chunkX, int return; } LevelChunk levelChunk; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { // getChunkAtIfLoadedImmediately is paper only levelChunk = nmsWorld.getChunkSource().getChunkAtIfLoadedImmediately(chunkX, chunkZ); } else { @@ -380,21 +380,21 @@ public static void sendChunk(IntPair pair, ServerLevel nmsWorld, int chunkX, int try { ChunkPos pos = levelChunk.getPos(); ClientboundLevelChunkWithLightPacket packet; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { packet = new ClientboundLevelChunkWithLightPacket( - levelChunk, - nmsWorld.getLightEngine(), - null, - null, - false // last false is to not bother with x-ray + levelChunk, + nmsWorld.getLightEngine(), + null, + null, + false // last false is to not bother with x-ray ); } else { // deprecated on paper - deprecation suppressed packet = new ClientboundLevelChunkWithLightPacket( - levelChunk, - nmsWorld.getLightEngine(), - null, - null + levelChunk, + nmsWorld.getLightEngine(), + null, + null ); } nearbyPlayers(nmsWorld, pos).forEach(p -> p.connection.send(packet)); @@ -485,12 +485,12 @@ public static LevelChunkSection newChunkSection( // Create palette with data var packedData = new PalettedContainerRO.PackedData<>(palette, Optional.of(LongStream.of(bits)), bitsPerEntry); DataResult> result; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { result = PalettedContainer.unpack(strategy, packedData, Blocks.AIR.defaultBlockState(), null); } else { //noinspection unchecked result = (DataResult>) - palettedContainerUnpackSpigot.invokeExact(strategy, packedData); + palettedContainerUnpackSpigot.invokeExact(strategy, packedData); } if (biomes == null) { biomes = PalettedContainerFactory.create(registryAccess).createForBiomes(); @@ -553,12 +553,12 @@ public static LevelChunkSection newChunkSection1_21_10( // Create palette with data var packedData = new PalettedContainerRO.PackedData<>(palette, Optional.ofNullable(bits)); DataResult> result; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { result = PalettedContainer.unpack(strategy, packedData, Blocks.AIR.defaultBlockState(), null); } else { //noinspection unchecked result = (DataResult>) - palettedContainerUnpackSpigot.invokeExact(strategy, packedData); + palettedContainerUnpackSpigot.invokeExact(strategy, packedData); } if (biomes == null) { biomes = PalettedContainerFactory.create(registryAccess).createForBiomes(); @@ -629,18 +629,18 @@ public static PalettedContainer> getBiomePalettedContainer( palette, Optional.of(LongStream.of(new long[arrayLength])), bitsPerEntry ); DataResult>> result; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { result = PalettedContainer.unpack( - strategy, - packedData, - biomeRegistry.byIdOrThrow(adapter.getInternalBiomeId(BiomeTypes.PLAINS)), - null + strategy, + packedData, + biomeRegistry.byIdOrThrow(adapter.getInternalBiomeId(BiomeTypes.PLAINS)), + null ); } else { try { //noinspection unchecked result = (DataResult>>) - palettedContainerUnpackSpigot.invokeExact(strategy, packedData); + palettedContainerUnpackSpigot.invokeExact(strategy, packedData); } catch (Throwable e) { throw new RuntimeException("Failed to create biome palette for Spigot", e); } @@ -703,10 +703,10 @@ static void removeBeacon(BlockEntity beacon, LevelChunk levelChunk) { } static List getEntities(LevelChunk chunk) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return Optional.ofNullable(chunk.level - .moonrise$getEntityLookup() - .getChunk(chunk.locX, chunk.locZ)).map(ChunkEntitySlices::getAllEntities).orElse(Collections.emptyList()); + .moonrise$getEntityLookup() + .getChunk(chunk.locX, chunk.locZ)).map(ChunkEntitySlices::getAllEntities).orElse(Collections.emptyList()); } try { //noinspection unchecked diff --git a/worldedit-bukkit/adapters/adapter-26.1/build.gradle.kts b/worldedit-bukkit/adapters/adapter-26.1/build.gradle.kts index e5d0463352..be3d1a6918 100644 --- a/worldedit-bukkit/adapters/adapter-26.1/build.gradle.kts +++ b/worldedit-bukkit/adapters/adapter-26.1/build.gradle.kts @@ -7,5 +7,4 @@ plugins { dependencies { // https://artifactory.papermc.io/ui/native/universe/io/papermc/paper/dev-bundle/ the().paperDevBundle("26.1.2.build.+") - compileOnly(libs.paperLib) } diff --git a/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/PaperweightFaweAdapter.java b/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/PaperweightFaweAdapter.java index 03ab881743..64adb26f3e 100644 --- a/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/PaperweightFaweAdapter.java +++ b/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/PaperweightFaweAdapter.java @@ -2,6 +2,7 @@ import com.fastasyncworldedit.bukkit.adapter.FaweAdapter; import com.fastasyncworldedit.bukkit.adapter.NMSRelighterFactory; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.entity.LazyBaseEntity; import com.fastasyncworldedit.core.extent.processor.PlacementStateProcessor; @@ -23,14 +24,6 @@ import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter; import com.sk89q.worldedit.bukkit.adapter.impl.v26_1.PaperweightAdapter; -import com.sk89q.worldedit.bukkit.adapter.impl.fawe.v26_1.*; -import com.sk89q.worldedit.bukkit.adapter.impl.fawe.v26_1.FaweBlockStateListPopulator; -import com.sk89q.worldedit.bukkit.adapter.impl.fawe.v26_1.PaperweightFaweWorldNativeAccess; -import com.sk89q.worldedit.bukkit.adapter.impl.fawe.v26_1.PaperweightMapChunkUtil; -import com.sk89q.worldedit.bukkit.adapter.impl.fawe.v26_1.PaperweightPlacementStateProcessor; -import com.sk89q.worldedit.bukkit.adapter.impl.fawe.v26_1.PaperweightPlatformAdapter; -import com.sk89q.worldedit.bukkit.adapter.impl.fawe.v26_1.PaperweightPostProcessor; -import com.sk89q.worldedit.bukkit.adapter.impl.fawe.v26_1.PaperweightStarlightRelighterFactory; import com.sk89q.worldedit.bukkit.adapter.impl.fawe.v26_1.regen.PaperweightRegen; import com.sk89q.worldedit.bukkit.adapter.impl.v26_1.PaperweightBlockMaterial; import com.sk89q.worldedit.entity.BaseEntity; @@ -63,7 +56,6 @@ import com.sk89q.worldedit.world.generation.TreeType; import com.sk89q.worldedit.world.item.ItemType; import com.sk89q.worldedit.world.registry.BlockMaterial; -import io.papermc.lib.PaperLib; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; @@ -863,7 +855,7 @@ public Iterable getRegisteredBiomes() { @Override public RelighterFactory getRelighterFactory() { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return new PaperweightStarlightRelighterFactory(); } else { return new NMSRelighterFactory(); @@ -895,7 +887,7 @@ public PlacementStateProcessor getPlatformPlacementProcessor(Extent extent, Bloc } private boolean wasAccessibleSinceLastSave(ChunkHolder holder) { - if (PaperLib.isPaper()) { // Papers new chunk system has no related replacement - therefor we assume true. + if (PaperSupport.isPaper()) { // Papers new chunk system has no related replacement - therefor we assume true. return true; } try { diff --git a/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/PaperweightGetBlocks.java b/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/PaperweightGetBlocks.java index c52649ff60..7249e3ddd1 100644 --- a/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/PaperweightGetBlocks.java +++ b/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/PaperweightGetBlocks.java @@ -3,6 +3,7 @@ import com.fastasyncworldedit.bukkit.adapter.AbstractBukkitGetBlocks; import com.fastasyncworldedit.bukkit.adapter.DelegateSemaphore; import com.fastasyncworldedit.bukkit.adapter.NativeEntityFunctionSet; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.configuration.Settings; import com.fastasyncworldedit.core.extent.processor.heightmap.HeightMapType; @@ -17,9 +18,6 @@ import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldedit.bukkit.BukkitEntity; import com.sk89q.worldedit.bukkit.WorldEditPlugin; -import com.sk89q.worldedit.bukkit.adapter.impl.fawe.v26_1.PaperweightFaweAdapter; -import com.sk89q.worldedit.bukkit.adapter.impl.fawe.v26_1.PaperweightGetBlocks_Copy; -import com.sk89q.worldedit.bukkit.adapter.impl.fawe.v26_1.PaperweightPlatformAdapter; import com.sk89q.worldedit.internal.Constants; import com.sk89q.worldedit.internal.util.LogManagerCompat; import com.sk89q.worldedit.math.BlockVector3; @@ -27,7 +25,6 @@ import com.sk89q.worldedit.util.formatting.text.TextComponent; import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import io.papermc.paper.event.block.BeaconDeactivatedEvent; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; @@ -361,7 +358,7 @@ protected > T internalCall( int ordinal = set.getBlock(lx, ly, lz).getOrdinal(); if (ordinal != BlockTypesCache.ReservedIDs.__RESERVED__) { BlockEntity tile = entry.getValue(); - if (PaperLib.isPaper() && tile instanceof BeaconBlockEntity) { + if (PaperSupport.isPaper() && tile instanceof BeaconBlockEntity) { if (beacons == null) { beacons = new ArrayList<>(); } @@ -684,7 +681,7 @@ protected > T internalCall( if (!set.getSideEffectSet().shouldApply(SideEffect.ENTITY_EVENTS)) { entity.spawnReason = CreatureSpawnEvent.SpawnReason.CUSTOM; entity.generation = false; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { if (!nmsWorld.moonrise$getEntityLookup().addNewEntity(entity, false)) { onError.run(); } diff --git a/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/PaperweightGetBlocks_Copy.java b/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/PaperweightGetBlocks_Copy.java index 5e661823c9..e3effd6b66 100644 --- a/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/PaperweightGetBlocks_Copy.java +++ b/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/PaperweightGetBlocks_Copy.java @@ -1,5 +1,6 @@ package com.sk89q.worldedit.bukkit.adapter.impl.fawe.v26_1; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.extent.processor.heightmap.HeightMapType; import com.fastasyncworldedit.core.nbt.FaweCompoundTag; import com.fastasyncworldedit.core.queue.IBlocks; @@ -8,18 +9,13 @@ import com.fastasyncworldedit.core.queue.IChunkSet; import com.fastasyncworldedit.core.queue.IQueueExtent; import com.fastasyncworldedit.core.util.NbtUtils; -import com.sk89q.worldedit.bukkit.WorldEditPlugin; -import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter; -import com.sk89q.worldedit.bukkit.adapter.impl.fawe.v26_1.PaperweightPlatformAdapter; import com.sk89q.worldedit.internal.util.LogManagerCompat; import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import net.minecraft.core.Holder; -import net.minecraft.nbt.Tag; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.biome.Biome; @@ -194,7 +190,7 @@ protected void storeBiomes(int layer, PalettedContainerRO> biomeDa biomes[layer] = new Holder[64]; } if (biomeData instanceof PalettedContainer> palettedContainer) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { for (int i = 0; i < 64; i++) { biomes[layer][i] = palettedContainer.get(i); // Only public on paper } @@ -202,7 +198,7 @@ protected void storeBiomes(int layer, PalettedContainerRO> biomeDa try { for (int i = 0; i < 64; i++) { biomes[layer][i] = - (Holder) PaperweightPlatformAdapter.PALETTED_CONTAINER_GET.invoke(palettedContainer, i); + (Holder) PaperweightPlatformAdapter.PALETTED_CONTAINER_GET.invoke(palettedContainer, i); } } catch (Throwable e) { throw new RuntimeException(e); diff --git a/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/PaperweightPlatformAdapter.java b/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/PaperweightPlatformAdapter.java index 9a565f632e..fd0045d462 100644 --- a/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/PaperweightPlatformAdapter.java +++ b/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/PaperweightPlatformAdapter.java @@ -5,6 +5,7 @@ import com.fastasyncworldedit.bukkit.adapter.CachedBukkitAdapter; import com.fastasyncworldedit.bukkit.adapter.DelegateSemaphore; import com.fastasyncworldedit.bukkit.adapter.NMSAdapter; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.Fawe; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.math.BitArrayUnstretched; @@ -20,7 +21,6 @@ import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.biome.BiomeTypes; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; import net.minecraft.core.IdMap; @@ -42,6 +42,7 @@ import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.chunk.LevelChunk; import net.minecraft.world.level.chunk.LevelChunkSection; import net.minecraft.world.level.chunk.PalettedContainer; @@ -124,10 +125,10 @@ public final class PaperweightPlatformAdapter extends NMSAdapter { fieldPalette.setAccessible(true); //noinspection JavaLangInvokeHandleSignature - method is obfuscated - palettedContainerUnpackSpigot = PaperLib.isPaper() ? null : lookup.findStatic( - PalettedContainer.class, - "a", // unpack - MethodType.methodType(DataResult.class, Strategy.class, PalettedContainerRO.PackedData.class) + palettedContainerUnpackSpigot = PaperSupport.isPaper() ? null : lookup.findStatic( + PalettedContainer.class, + "a", // unpack + MethodType.methodType(DataResult.class, Strategy.class, PalettedContainerRO.PackedData.class) ); fieldTickingFluidCount = LevelChunkSection.class.getDeclaredField(Refraction.pickName( @@ -156,7 +157,7 @@ public final class PaperweightPlatformAdapter extends NMSAdapter { getVisibleChunkIfPresent.setAccessible(true); methodGetVisibleChunk = lookup.unreflect(getVisibleChunkIfPresent); - if (!PaperLib.isPaper()) { + if (!PaperSupport.isPaper()) { fieldThreadingDetector = PalettedContainer.class.getDeclaredField(Refraction.pickName("threadingDetector", "d")); fieldThreadingDetector.setAccessible(true); fieldLock = ThreadingDetector.class.getDeclaredField(Refraction.pickName("lock", "c")); @@ -233,7 +234,7 @@ static boolean setSectionAtomic( ThreadLocal.withInitial(() -> new DelegateSemaphore(1, null)); static DelegateSemaphore applyLock(LevelChunkSection section) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return SEMAPHORE_THREAD_LOCAL.get(); } try { @@ -261,19 +262,19 @@ public static CompletableFuture ensureLoaded(ServerLevel serverLevel if (levelChunk != null) { return CompletableFuture.completedFuture(levelChunk); } - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { CompletableFuture future = serverLevel - .getWorld() - .getChunkAtAsync(chunkX, chunkZ, true, true) - .thenApply(chunk -> { - addTicket(serverLevel, chunkX, chunkZ); - try { - return toLevelChunk(chunk); - } catch (Throwable e) { - LOGGER.error("Could not asynchronously load chunk at {},{}", chunkX, chunkZ, e); - return null; - } - }); + .getWorld() + .getChunkAtAsync(chunkX, chunkZ, true, true) + .thenApply(chunk -> { + addTicket(serverLevel, chunkX, chunkZ); + try { + return toLevelChunk(chunk); + } catch (Throwable e) { + LOGGER.error("Could not asynchronously load chunk at {},{}", chunkX, chunkZ, e); + return null; + } + }); try { if (!future.isCompletedExceptionally() || (future.isDone() && future.get() != null)) { return future; @@ -282,10 +283,10 @@ public static CompletableFuture ensureLoaded(ServerLevel serverLevel LOGGER.error("Asynchronous chunk load at {},{} exceptionally completed immediately", chunkX, chunkZ, t); } catch (InterruptedException | ExecutionException e) { LOGGER.error( - "Unexpected error when getting completed future at chunk {},{}. Returning to default.", - chunkX, - chunkZ, - e + "Unexpected error when getting completed future at chunk {},{}. Returning to default.", + chunkX, + chunkZ, + e ); } } @@ -297,7 +298,7 @@ private static LevelChunk toLevelChunk(Chunk chunk) { } public static @Nullable LevelChunk getChunkImmediatelyAsync(ServerLevel serverLevel, int chunkX, int chunkZ) { - if (!PaperLib.isPaper()) { + if (!PaperSupport.isPaper()) { LevelChunk nmsChunk = serverLevel.getChunkSource().getChunk(chunkX, chunkZ, false); if (nmsChunk != null) { return nmsChunk; @@ -348,7 +349,7 @@ public static void sendChunk(IntPair pair, ServerLevel nmsWorld, int chunkX, int return; } LevelChunk levelChunk; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { // getChunkAtIfLoadedImmediately is paper only levelChunk = nmsWorld.getChunkSource().getChunkAtIfLoadedImmediately(chunkX, chunkZ); } else { @@ -366,21 +367,21 @@ public static void sendChunk(IntPair pair, ServerLevel nmsWorld, int chunkX, int try { ChunkPos pos = levelChunk.getPos(); ClientboundLevelChunkWithLightPacket packet; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { packet = new ClientboundLevelChunkWithLightPacket( - levelChunk, - nmsWorld.getLightEngine(), - null, - null, - false // last false is to not bother with x-ray + levelChunk, + nmsWorld.getLightEngine(), + null, + null, + false // last false is to not bother with x-ray ); } else { // deprecated on paper - deprecation suppressed packet = new ClientboundLevelChunkWithLightPacket( - levelChunk, - nmsWorld.getLightEngine(), - null, - null + levelChunk, + nmsWorld.getLightEngine(), + null, + null ); } nearbyPlayers(nmsWorld, pos).forEach(p -> p.connection.send(packet)); @@ -458,12 +459,12 @@ public static LevelChunkSection newChunkSection( // Create palette with data var packedData = new PalettedContainerRO.PackedData<>(palette, Optional.ofNullable(bits)); DataResult> result; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { result = PalettedContainer.unpack(strategy, packedData, Blocks.AIR.defaultBlockState(), null); } else { //noinspection unchecked - result = (DataResult>) - palettedContainerUnpackSpigot.invokeExact(strategy, packedData); + result = (DataResult>) + palettedContainerUnpackSpigot.invokeExact(strategy, packedData); } if (biomes == null) { biomes = PalettedContainerFactory.create(registryAccess).createForBiomes(); @@ -534,18 +535,18 @@ public static PalettedContainer> getBiomePalettedContainer( palette, Optional.of(LongStream.of(new long[arrayLength])), bitsPerEntry ); DataResult>> result; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { result = PalettedContainer.unpack( - strategy, - packedData, - biomeRegistry.byIdOrThrow(adapter.getInternalBiomeId(BiomeTypes.PLAINS)), - null + strategy, + packedData, + biomeRegistry.byIdOrThrow(adapter.getInternalBiomeId(BiomeTypes.PLAINS)), + null ); } else { try { //noinspection unchecked result = (DataResult>>) - palettedContainerUnpackSpigot.invokeExact(strategy, packedData); + palettedContainerUnpackSpigot.invokeExact(strategy, packedData); } catch (Throwable e) { throw new RuntimeException("Failed to create biome palette for Spigot", e); } @@ -608,10 +609,10 @@ static void removeBeacon(BlockEntity beacon, LevelChunk levelChunk) { } static List getEntities(LevelChunk chunk) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return Optional.ofNullable(chunk.level - .moonrise$getEntityLookup() - .getChunk(chunk.locX, chunk.locZ)).map(ChunkEntitySlices::getAllEntities).orElse(Collections.emptyList()); + .moonrise$getEntityLookup() + .getChunk(chunk.locX, chunk.locZ)).map(ChunkEntitySlices::getAllEntities).orElse(Collections.emptyList()); } try { //noinspection unchecked diff --git a/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/regen/PaperweightRegen.java b/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/regen/PaperweightRegen.java index d188702857..79d9217687 100644 --- a/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/regen/PaperweightRegen.java +++ b/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/regen/PaperweightRegen.java @@ -1,6 +1,7 @@ package com.sk89q.worldedit.bukkit.adapter.impl.fawe.v26_1.regen; import com.fastasyncworldedit.bukkit.adapter.Regenerator; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.Fawe; import com.fastasyncworldedit.core.queue.IChunkCache; import com.fastasyncworldedit.core.queue.IChunkGet; @@ -13,7 +14,6 @@ import com.sk89q.worldedit.regions.Region; import com.sk89q.worldedit.util.io.file.SafeFiles; import com.sk89q.worldedit.world.RegenOptions; -import io.papermc.lib.PaperLib; import io.papermc.paper.world.PaperWorldLoader; import io.papermc.paper.world.saveddata.PaperWorldPDC; import net.minecraft.core.Holder; @@ -114,7 +114,7 @@ protected boolean prepare() { @Override protected boolean initNewWorld() throws Exception { - if (!PaperLib.isPaper()) { + if (!PaperSupport.isPaper()) { throw new UnsupportedOperationException("Regen requires Paper"); } diff --git a/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v26_1/PaperweightAdapter.java b/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v26_1/PaperweightAdapter.java index 7be01bec1f..9b566b75c7 100644 --- a/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v26_1/PaperweightAdapter.java +++ b/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v26_1/PaperweightAdapter.java @@ -19,6 +19,7 @@ package com.sk89q.worldedit.bukkit.adapter.impl.v26_1; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; @@ -66,7 +67,6 @@ import com.sk89q.worldedit.world.generation.StructureType; import com.sk89q.worldedit.world.generation.TreeType; import com.sk89q.worldedit.world.item.ItemType; -import io.papermc.lib.PaperLib; import io.papermc.paper.world.PaperWorldLoader; import io.papermc.paper.world.saveddata.PaperWorldPDC; import net.minecraft.SharedConstants; @@ -743,7 +743,7 @@ public boolean regenerate(World bukkitWorld, Region region, Extent extent, Regen } private void doRegen(World bukkitWorld, Region region, Extent extent, RegenOptions options) throws Exception { - if (!PaperLib.isPaper()) { + if (!PaperSupport.isPaper()) { throw new UnsupportedOperationException("Regen requires Paper"); } diff --git a/worldedit-bukkit/adapters/adapter-26.2/build.gradle.kts b/worldedit-bukkit/adapters/adapter-26.2/build.gradle.kts index b3df3d57eb..22f17fa769 100644 --- a/worldedit-bukkit/adapters/adapter-26.2/build.gradle.kts +++ b/worldedit-bukkit/adapters/adapter-26.2/build.gradle.kts @@ -12,7 +12,6 @@ configurations.named("testRuntimeClasspath") { dependencies { // https://artifactory.papermc.io/ui/native/universe/io/papermc/paper/dev-bundle/ the().paperDevBundle("26.2.build.+") - compileOnly(libs.paperLib) testRuntimeOnly(libs.snakeyaml) { because("Keep adapter tests on Bukkit's SnakeYaml while excluding LeafPile's conflicting transitive version") } diff --git a/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/PaperweightFaweAdapter.java b/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/PaperweightFaweAdapter.java index 93b6901223..e5716ab6d7 100644 --- a/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/PaperweightFaweAdapter.java +++ b/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/PaperweightFaweAdapter.java @@ -2,6 +2,7 @@ import com.fastasyncworldedit.bukkit.adapter.FaweAdapter; import com.fastasyncworldedit.bukkit.adapter.NMSRelighterFactory; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.entity.LazyBaseEntity; import com.fastasyncworldedit.core.extent.processor.PlacementStateProcessor; @@ -55,7 +56,6 @@ import com.sk89q.worldedit.world.generation.TreeType; import com.sk89q.worldedit.world.item.ItemType; import com.sk89q.worldedit.world.registry.BlockMaterial; -import io.papermc.lib.PaperLib; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; @@ -855,7 +855,7 @@ public Iterable getRegisteredBiomes() { @Override public RelighterFactory getRelighterFactory() { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return new PaperweightStarlightRelighterFactory(); } else { return new NMSRelighterFactory(); @@ -887,7 +887,7 @@ public PlacementStateProcessor getPlatformPlacementProcessor(Extent extent, Bloc } private boolean wasAccessibleSinceLastSave(ChunkHolder holder) { - if (PaperLib.isPaper()) { // Papers new chunk system has no related replacement - therefor we assume true. + if (PaperSupport.isPaper()) { // Papers new chunk system has no related replacement - therefor we assume true. return true; } try { diff --git a/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/PaperweightGetBlocks.java b/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/PaperweightGetBlocks.java index 53db83f1f4..a72e0109cc 100644 --- a/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/PaperweightGetBlocks.java +++ b/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/PaperweightGetBlocks.java @@ -3,6 +3,7 @@ import com.fastasyncworldedit.bukkit.adapter.AbstractBukkitGetBlocks; import com.fastasyncworldedit.bukkit.adapter.DelegateSemaphore; import com.fastasyncworldedit.bukkit.adapter.NativeEntityFunctionSet; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.configuration.Settings; import com.fastasyncworldedit.core.extent.processor.heightmap.HeightMapType; @@ -24,7 +25,6 @@ import com.sk89q.worldedit.util.formatting.text.TextComponent; import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import io.papermc.paper.event.block.BeaconDeactivatedEvent; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; @@ -360,7 +360,7 @@ protected > T internalCall( int ordinal = set.getBlock(lx, ly, lz).getOrdinal(); if (ordinal != BlockTypesCache.ReservedIDs.__RESERVED__) { BlockEntity tile = entry.getValue(); - if (PaperLib.isPaper() && tile instanceof BeaconBlockEntity) { + if (PaperSupport.isPaper() && tile instanceof BeaconBlockEntity) { if (beacons == null) { beacons = new ArrayList<>(); } @@ -686,7 +686,7 @@ protected > T internalCall( if (!set.getSideEffectSet().shouldApply(SideEffect.ENTITY_EVENTS)) { entity.spawnReason = CreatureSpawnEvent.SpawnReason.CUSTOM; entity.generation = false; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { if (!nmsWorld.moonrise$getEntityLookup().addNewEntity(entity, false)) { onError.run(); } diff --git a/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/PaperweightGetBlocks_Copy.java b/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/PaperweightGetBlocks_Copy.java index f43bc04fd9..be27a3d21b 100644 --- a/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/PaperweightGetBlocks_Copy.java +++ b/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/PaperweightGetBlocks_Copy.java @@ -1,5 +1,6 @@ package com.sk89q.worldedit.bukkit.adapter.impl.fawe.v26_2; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.extent.processor.heightmap.HeightMapType; import com.fastasyncworldedit.core.nbt.FaweCompoundTag; import com.fastasyncworldedit.core.queue.IBlocks; @@ -14,7 +15,6 @@ import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BlockState; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import net.minecraft.core.Holder; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity; @@ -190,7 +190,7 @@ protected void storeBiomes(int layer, PalettedContainerRO> biomeDa biomes[layer] = new Holder[64]; } if (biomeData instanceof PalettedContainer> palettedContainer) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { for (int i = 0; i < 64; i++) { biomes[layer][i] = palettedContainer.get(i); // Only public on paper } @@ -198,7 +198,7 @@ protected void storeBiomes(int layer, PalettedContainerRO> biomeDa try { for (int i = 0; i < 64; i++) { biomes[layer][i] = - (Holder) PaperweightPlatformAdapter.PALETTED_CONTAINER_GET.invoke(palettedContainer, i); + (Holder) PaperweightPlatformAdapter.PALETTED_CONTAINER_GET.invoke(palettedContainer, i); } } catch (Throwable e) { throw new RuntimeException(e); diff --git a/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/PaperweightPlatformAdapter.java b/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/PaperweightPlatformAdapter.java index 07b69195bb..ec306e9831 100644 --- a/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/PaperweightPlatformAdapter.java +++ b/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/PaperweightPlatformAdapter.java @@ -5,6 +5,7 @@ import com.fastasyncworldedit.bukkit.adapter.CachedBukkitAdapter; import com.fastasyncworldedit.bukkit.adapter.DelegateSemaphore; import com.fastasyncworldedit.bukkit.adapter.NMSAdapter; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.Fawe; import com.fastasyncworldedit.core.FaweCache; import com.fastasyncworldedit.core.math.BitArrayUnstretched; @@ -20,7 +21,6 @@ import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.biome.BiomeTypes; import com.sk89q.worldedit.world.block.BlockTypesCache; -import io.papermc.lib.PaperLib; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; import net.minecraft.core.IdMap; @@ -42,6 +42,7 @@ import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.chunk.LevelChunk; import net.minecraft.world.level.chunk.LevelChunkSection; import net.minecraft.world.level.chunk.PalettedContainer; @@ -124,10 +125,10 @@ public final class PaperweightPlatformAdapter extends NMSAdapter { fieldPalette.setAccessible(true); //noinspection JavaLangInvokeHandleSignature - method is obfuscated - palettedContainerUnpackSpigot = PaperLib.isPaper() ? null : lookup.findStatic( - PalettedContainer.class, - "a", // unpack - MethodType.methodType(DataResult.class, Strategy.class, PalettedContainerRO.PackedData.class) + palettedContainerUnpackSpigot = PaperSupport.isPaper() ? null : lookup.findStatic( + PalettedContainer.class, + "a", // unpack + MethodType.methodType(DataResult.class, Strategy.class, PalettedContainerRO.PackedData.class) ); fieldTickingFluidCount = LevelChunkSection.class.getDeclaredField(Refraction.pickName( @@ -156,7 +157,7 @@ public final class PaperweightPlatformAdapter extends NMSAdapter { getVisibleChunkIfPresent.setAccessible(true); methodGetVisibleChunk = lookup.unreflect(getVisibleChunkIfPresent); - if (!PaperLib.isPaper()) { + if (!PaperSupport.isPaper()) { fieldThreadingDetector = PalettedContainer.class.getDeclaredField(Refraction.pickName("threadingDetector", "d")); fieldThreadingDetector.setAccessible(true); fieldLock = ThreadingDetector.class.getDeclaredField(Refraction.pickName("lock", "c")); @@ -233,7 +234,7 @@ static boolean setSectionAtomic( ThreadLocal.withInitial(() -> new DelegateSemaphore(1, null)); static DelegateSemaphore applyLock(LevelChunkSection section) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return SEMAPHORE_THREAD_LOCAL.get(); } try { @@ -261,19 +262,19 @@ public static CompletableFuture ensureLoaded(ServerLevel serverLevel if (levelChunk != null) { return CompletableFuture.completedFuture(levelChunk); } - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { CompletableFuture future = serverLevel - .getWorld() - .getChunkAtAsync(chunkX, chunkZ, true, true) - .thenApply(chunk -> { - addTicket(serverLevel, chunkX, chunkZ); - try { - return toLevelChunk(chunk); - } catch (Throwable e) { - LOGGER.error("Could not asynchronously load chunk at {},{}", chunkX, chunkZ, e); - return null; - } - }); + .getWorld() + .getChunkAtAsync(chunkX, chunkZ, true, true) + .thenApply(chunk -> { + addTicket(serverLevel, chunkX, chunkZ); + try { + return toLevelChunk(chunk); + } catch (Throwable e) { + LOGGER.error("Could not asynchronously load chunk at {},{}", chunkX, chunkZ, e); + return null; + } + }); try { if (!future.isCompletedExceptionally() || (future.isDone() && future.get() != null)) { return future; @@ -282,10 +283,10 @@ public static CompletableFuture ensureLoaded(ServerLevel serverLevel LOGGER.error("Asynchronous chunk load at {},{} exceptionally completed immediately", chunkX, chunkZ, t); } catch (InterruptedException | ExecutionException e) { LOGGER.error( - "Unexpected error when getting completed future at chunk {},{}. Returning to default.", - chunkX, - chunkZ, - e + "Unexpected error when getting completed future at chunk {},{}. Returning to default.", + chunkX, + chunkZ, + e ); } } @@ -297,7 +298,7 @@ private static LevelChunk toLevelChunk(Chunk chunk) { } public static @Nullable LevelChunk getChunkImmediatelyAsync(ServerLevel serverLevel, int chunkX, int chunkZ) { - if (!PaperLib.isPaper()) { + if (!PaperSupport.isPaper()) { LevelChunk nmsChunk = serverLevel.getChunkSource().getChunk(chunkX, chunkZ, false); if (nmsChunk != null) { return nmsChunk; @@ -348,7 +349,7 @@ public static void sendChunk(IntPair pair, ServerLevel nmsWorld, int chunkX, int return; } LevelChunk levelChunk; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { // getChunkAtIfLoadedImmediately is paper only levelChunk = nmsWorld.getChunkSource().getChunkAtIfLoadedImmediately(chunkX, chunkZ); } else { @@ -366,21 +367,21 @@ public static void sendChunk(IntPair pair, ServerLevel nmsWorld, int chunkX, int try { ChunkPos pos = levelChunk.getPos(); ClientboundLevelChunkWithLightPacket packet; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { packet = new ClientboundLevelChunkWithLightPacket( - levelChunk, - nmsWorld.getLightEngine(), - null, - null, - false // last false is to not bother with x-ray + levelChunk, + nmsWorld.getLightEngine(), + null, + null, + false // last false is to not bother with x-ray ); } else { // deprecated on paper - deprecation suppressed packet = new ClientboundLevelChunkWithLightPacket( - levelChunk, - nmsWorld.getLightEngine(), - null, - null + levelChunk, + nmsWorld.getLightEngine(), + null, + null ); } nearbyPlayers(nmsWorld, pos).forEach(p -> p.connection.send(packet)); @@ -458,12 +459,12 @@ public static LevelChunkSection newChunkSection( // Create palette with data var packedData = new PalettedContainerRO.PackedData<>(palette, Optional.ofNullable(bits)); DataResult> result; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { result = PalettedContainer.unpack(strategy, packedData, Blocks.AIR.defaultBlockState(), null); } else { //noinspection unchecked - result = (DataResult>) - palettedContainerUnpackSpigot.invokeExact(strategy, packedData); + result = (DataResult>) + palettedContainerUnpackSpigot.invokeExact(strategy, packedData); } if (biomes == null) { biomes = PalettedContainerFactory.create(registryAccess).createForBiomes(); @@ -534,18 +535,18 @@ public static PalettedContainer> getBiomePalettedContainer( palette, Optional.of(LongStream.of(new long[arrayLength])), bitsPerEntry ); DataResult>> result; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { result = PalettedContainer.unpack( - strategy, - packedData, - biomeRegistry.byIdOrThrow(adapter.getInternalBiomeId(BiomeTypes.PLAINS)), - null + strategy, + packedData, + biomeRegistry.byIdOrThrow(adapter.getInternalBiomeId(BiomeTypes.PLAINS)), + null ); } else { try { //noinspection unchecked result = (DataResult>>) - palettedContainerUnpackSpigot.invokeExact(strategy, packedData); + palettedContainerUnpackSpigot.invokeExact(strategy, packedData); } catch (Throwable e) { throw new RuntimeException("Failed to create biome palette for Spigot", e); } @@ -606,10 +607,10 @@ static void removeBeacon(BlockEntity beacon, LevelChunk levelChunk) { } static List getEntities(LevelChunk chunk) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return Optional.ofNullable(chunk.getLevel() - .moonrise$getEntityLookup() - .getChunk(chunk.locX, chunk.locZ)).map(ChunkEntitySlices::getAllEntities).orElse(Collections.emptyList()); + .moonrise$getEntityLookup() + .getChunk(chunk.locX, chunk.locZ)).map(ChunkEntitySlices::getAllEntities).orElse(Collections.emptyList()); } try { //noinspection unchecked diff --git a/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/regen/PaperweightRegen.java b/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/regen/PaperweightRegen.java index 3546ca9526..2ddfcbd2a2 100644 --- a/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/regen/PaperweightRegen.java +++ b/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_2/regen/PaperweightRegen.java @@ -1,6 +1,7 @@ package com.sk89q.worldedit.bukkit.adapter.impl.fawe.v26_2.regen; import com.fastasyncworldedit.bukkit.adapter.Regenerator; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.Fawe; import com.fastasyncworldedit.core.queue.IChunkCache; import com.fastasyncworldedit.core.queue.IChunkGet; @@ -13,7 +14,6 @@ import com.sk89q.worldedit.regions.Region; import com.sk89q.worldedit.util.io.file.SafeFiles; import com.sk89q.worldedit.world.RegenOptions; -import io.papermc.lib.PaperLib; import io.papermc.paper.world.PaperWorldLoader; import io.papermc.paper.world.saveddata.PaperWorldPDC; import net.minecraft.core.Holder; @@ -115,7 +115,7 @@ protected boolean prepare() { @Override protected boolean initNewWorld() throws Exception { - if (!PaperLib.isPaper()) { + if (!PaperSupport.isPaper()) { throw new UnsupportedOperationException("Regen requires Paper"); } diff --git a/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v26_2/PaperweightAdapter.java b/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v26_2/PaperweightAdapter.java index 05b7fc8685..1a13badbfe 100644 --- a/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v26_2/PaperweightAdapter.java +++ b/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v26_2/PaperweightAdapter.java @@ -19,6 +19,7 @@ package com.sk89q.worldedit.bukkit.adapter.impl.v26_2; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; @@ -66,7 +67,6 @@ import com.sk89q.worldedit.world.generation.StructureType; import com.sk89q.worldedit.world.generation.TreeType; import com.sk89q.worldedit.world.item.ItemType; -import io.papermc.lib.PaperLib; import io.papermc.paper.world.PaperWorldLoader; import io.papermc.paper.world.saveddata.PaperWorldPDC; import net.minecraft.SharedConstants; @@ -748,7 +748,7 @@ public boolean regenerate(World bukkitWorld, Region region, Extent extent, Regen } private void doRegen(World bukkitWorld, Region region, Extent extent, RegenOptions options) throws Exception { - if (!PaperLib.isPaper()) { + if (!PaperSupport.isPaper()) { throw new UnsupportedOperationException("Regen requires Paper"); } diff --git a/worldedit-bukkit/build.gradle.kts b/worldedit-bukkit/build.gradle.kts index 7ea7bb7d4c..25dd26f9d4 100644 --- a/worldedit-bukkit/build.gradle.kts +++ b/worldedit-bukkit/build.gradle.kts @@ -94,7 +94,6 @@ dependencies { } localImplementation(libs.log4j.api) - implementation(libs.paperLib) compileOnly(libs.vault) { isTransitive = false } compileOnly(libs.dummypermscompat) { exclude("com.github.MilkBowl", "VaultAPI") @@ -218,9 +217,6 @@ tasks.withType().configureEach { include(dependency(libs.bstats.bukkit)) include(dependency(libs.bstats.base)) } - relocate("io.papermc.lib", "com.sk89q.worldedit.bukkit.paperlib") { - include(dependency("io.papermc:paperlib")) - } relocate("net.royawesome.jlibnoise", "com.sk89q.worldedit.jlibnoise") { include(dependency("com.sk89q.lib:jlibnoise")) } diff --git a/worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/FaweBukkit.java b/worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/FaweBukkit.java index 3614e3b0f1..8d3c6a0797 100644 --- a/worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/FaweBukkit.java +++ b/worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/FaweBukkit.java @@ -12,7 +12,7 @@ import com.fastasyncworldedit.bukkit.regions.WorldGuardFeature; import com.fastasyncworldedit.bukkit.util.BukkitTaskManager; import com.fastasyncworldedit.bukkit.util.ItemUtil; -import com.fastasyncworldedit.bukkit.util.image.BukkitImageViewer; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.FAWEPlatformAdapterImpl; import com.fastasyncworldedit.core.Fawe; import com.fastasyncworldedit.core.IFawe; @@ -30,7 +30,6 @@ import com.sk89q.worldedit.bukkit.BukkitPlayer; import com.sk89q.worldedit.extension.platform.Capability; import com.sk89q.worldedit.internal.util.LogManagerCompat; -import io.papermc.lib.PaperLib; import io.papermc.paper.datapack.Datapack; import org.apache.logging.log4j.Logger; import org.bukkit.Bukkit; @@ -41,7 +40,6 @@ import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.world.WorldLoadEvent; import org.bukkit.plugin.Plugin; -import org.bukkit.plugin.PluginManager; import java.io.File; import java.util.ArrayList; @@ -72,7 +70,7 @@ public FaweBukkit(Plugin plugin) { } catch (Throwable e) { LOGGER.error("Brush Listener Failed", e); } - if (PaperLib.isPaper() && Settings.settings().EXPERIMENTAL.DYNAMIC_CHUNK_RENDERING > 1) { + if (PaperSupport.isPaper() && Settings.settings().EXPERIMENTAL.DYNAMIC_CHUNK_RENDERING > 1) { new RenderListener(plugin); } } catch (final Throwable e) { @@ -157,7 +155,7 @@ public String getDebugInfo() { .append(" • Provides: ").append(p.getDescription().getProvides()).append("\n"); } int dataVersion = WorldEdit.getInstance().getPlatformManager().queryCapability(Capability.GAME_HOOKS).getDataVersion(); - if (dataVersion >= 2586 && PaperLib.isPaper()) { + if (dataVersion >= 2586 && PaperSupport.isPaper()) { Collection datapacks = Bukkit.getServer().getDatapackManager().getEnabledPacks(); msg.append("Enabled Datapacks (").append(datapacks.size()).append("):\n"); for (Datapack dp : datapacks) { @@ -273,7 +271,7 @@ public String getName(UUID uuid) { @Override public Preloader getPreloader(boolean initialise) { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { if (preloader == null && initialise) { return preloader = new AsyncPreloader(); } diff --git a/worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/util/MinecraftVersion.java b/worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/util/MinecraftVersion.java index ebff1b0043..e4fb834404 100644 --- a/worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/util/MinecraftVersion.java +++ b/worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/util/MinecraftVersion.java @@ -1,7 +1,6 @@ package com.fastasyncworldedit.bukkit.util; import com.google.common.collect.ComparisonChain; -import io.papermc.lib.PaperLib; import org.bukkit.Bukkit; import javax.annotation.Nonnull; @@ -73,7 +72,7 @@ private static MinecraftVersion detectMinecraftVersion() { int major; int minor; int release; - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { // Snapshots, pre-releases, release candidates have a space after the version. // Let's ignore that here String minecraftVersion = Bukkit.getMinecraftVersion().split(" ")[0]; diff --git a/worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/util/PaperSupport.java b/worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/util/PaperSupport.java new file mode 100644 index 0000000000..2ea1f45434 --- /dev/null +++ b/worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/util/PaperSupport.java @@ -0,0 +1,67 @@ +package com.fastasyncworldedit.bukkit.util; + +import org.bukkit.Chunk; +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.entity.Entity; +import org.bukkit.event.player.PlayerTeleportEvent; +import org.jetbrains.annotations.ApiStatus; + +import java.util.concurrent.CompletableFuture; + +/** + * Not for external use. May change at any point. + */ +@ApiStatus.Internal +public enum PaperSupport { + ; + public static final boolean PAPER; + + static { + PAPER = hasClass("com.destroystokyo.paper.PaperConfig") + || hasClass("io.papermc.paper.configuration.Configuration"); + } + + public static boolean isPaper() { + return PAPER; + } + + public static CompletableFuture teleportAsync(Entity entity, Location location) { + if (isPaper()) { + return entity.teleportAsync(location); + } + return CompletableFuture.completedFuture(entity.teleport(location)); + } + + public static CompletableFuture teleportAsync(Entity entity, Location location, PlayerTeleportEvent.TeleportCause cause) { + if (isPaper()) { + return entity.teleportAsync(location, cause); + } + return CompletableFuture.completedFuture(entity.teleport(location, cause)); + } + + public static CompletableFuture getChunkAtAsync(Location location) { + return getChunkAtAsync(location.getWorld(), location.getBlockX() >> 4, location.getBlockZ() >> 4, true); + } + + public static CompletableFuture getChunkAtAsync(World world, int cx, int cz, boolean gen) { + return getChunkAtAsync(world, cx, cz, gen, false); + } + + public static CompletableFuture getChunkAtAsync(World world, int cx, int cz, boolean gen, boolean urgent) { + if (isPaper()) { + return world.getChunkAtAsync(cx, cz, gen, urgent); + } else { + return CompletableFuture.completedFuture(world.getChunkAt(cx, cz)); + } + } + + private static boolean hasClass(String className) { + try { + Class.forName(className); + return true; + } catch (ClassNotFoundException e) { + return false; + } + } +} diff --git a/worldedit-bukkit/src/main/java/com/sk89q/bukkit/util/CommandRegistration.java b/worldedit-bukkit/src/main/java/com/sk89q/bukkit/util/CommandRegistration.java index c650975c33..1af6bd1728 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/bukkit/util/CommandRegistration.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/bukkit/util/CommandRegistration.java @@ -19,14 +19,13 @@ package com.sk89q.bukkit.util; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.sk89q.util.ReflectionUtil; -import io.papermc.lib.PaperLib; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandMap; import org.bukkit.command.PluginIdentifiableCommand; -import org.bukkit.command.SimpleCommandMap; import org.bukkit.plugin.Plugin; import java.util.ArrayList; @@ -97,7 +96,7 @@ public CommandMap getCommandMap() { return fallbackCommands; } - CommandMap commandMap = PaperLib.isPaper() ? Bukkit.getCommandMap() : ReflectionUtil.getField(plugin.getServer().getPluginManager(), "commandMap"); + CommandMap commandMap = PaperSupport.isPaper() ? Bukkit.getCommandMap() : ReflectionUtil.getField(plugin.getServer().getPluginManager(), "commandMap"); if (commandMap == null) { Bukkit.getServer().getLogger().severe(plugin.getDescription().getName() + ": Could not retrieve server CommandMap"); diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitServerInterface.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitServerInterface.java index 73a7421c34..2cda3877ac 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitServerInterface.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitServerInterface.java @@ -20,6 +20,7 @@ package com.sk89q.worldedit.bukkit; import com.fastasyncworldedit.bukkit.util.MinecraftVersion; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.configuration.Settings; import com.fastasyncworldedit.core.extent.processor.PlacementStateProcessor; import com.fastasyncworldedit.core.extent.processor.lighting.RelighterFactory; @@ -46,7 +47,6 @@ import com.sk89q.worldedit.util.lifecycle.Lifecycled; import com.sk89q.worldedit.world.DataFixer; import com.sk89q.worldedit.world.registry.Registries; -import io.papermc.lib.PaperLib; import org.apache.logging.log4j.Logger; import org.bukkit.Bukkit; import org.bukkit.Server; @@ -265,7 +265,7 @@ public Set getSupportedSideEffects() { @Override public long getTickCount() { - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { return Bukkit.getCurrentTick(); } return super.getTickCount(); diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java index 2ab596ed16..6a6419ef28 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java @@ -19,6 +19,7 @@ package com.sk89q.worldedit.bukkit; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.bukkit.util.WorldUnloadedException; import com.fastasyncworldedit.core.Fawe; import com.fastasyncworldedit.core.FaweCache; @@ -59,7 +60,6 @@ import com.sk89q.worldedit.world.generation.StructureType; import com.sk89q.worldedit.world.weather.WeatherType; import com.sk89q.worldedit.world.weather.WeatherTypes; -import io.papermc.lib.PaperLib; import org.apache.logging.log4j.Logger; import org.bukkit.Bukkit; import org.bukkit.Effect; @@ -292,13 +292,17 @@ public boolean clearContainerBlockContents(BlockVector3 pt) { } Block block = getWorld().getBlockAt(pt.x(), pt.y(), pt.z()); - BlockState state = PaperLib.getBlockState(block, false).getState(); - if (!(state instanceof InventoryHolder)) { + BlockState state; + if (PaperSupport.isPaper()) { + state = block.getState(false); + } else { + state = block.getState(); + } + if (!(state instanceof InventoryHolder chest)) { return false; } TaskManager.taskManager().sync(() -> { - InventoryHolder chest = (InventoryHolder) state; Inventory inven = chest.getInventory(); if (chest instanceof Chest) { inven = ((Chest) chest).getBlockInventory(); @@ -399,8 +403,8 @@ public void checkLoadedChunk(BlockVector3 pt) { int Z = pt.z() >> 4; if (Fawe.isMainThread()) { world.getChunkAt(X, Z); - } else if (PaperLib.isPaper()) { - PaperLib.getChunkAtAsync(world, X, Z, true); + } else if (PaperSupport.isPaper()) { + world.getChunkAtAsync(X, Z, true); } //FAWE end } @@ -677,12 +681,6 @@ public boolean useItem(BlockVector3 position, BaseItem item, Direction face) { return false; } - @Override - public boolean fullySupports3DBiomes() { - // Supports if API does and we're not in the overworld - return HAS_3D_BIOMES && getWorld().getEnvironment() != World.Environment.NORMAL || PaperLib.isVersion(18); - } - @SuppressWarnings("deprecation") @Override public BiomeType getBiome(BlockVector3 position) { diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java index cfdf36ad95..78e909744c 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java @@ -21,6 +21,7 @@ import com.fastasyncworldedit.bukkit.BukkitPermissionAttachmentManager; import com.fastasyncworldedit.bukkit.FaweBukkit; +import com.fastasyncworldedit.bukkit.util.PaperSupport; import com.fastasyncworldedit.core.Fawe; import com.fastasyncworldedit.core.util.UpdateNotification; import com.fastasyncworldedit.core.util.WEManager; @@ -36,7 +37,6 @@ import com.sk89q.worldedit.bukkit.adapter.AdapterLoadException; import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter; import com.sk89q.worldedit.bukkit.adapter.BukkitImplLoader; -import com.sk89q.worldedit.bukkit.adapter.Refraction; import com.sk89q.worldedit.event.platform.CommandEvent; import com.sk89q.worldedit.event.platform.CommandSuggestionEvent; import com.sk89q.worldedit.event.platform.PlatformReadyEvent; @@ -59,7 +59,6 @@ import com.sk89q.worldedit.world.gamemode.GameModes; import com.sk89q.worldedit.world.item.ItemCategory; import com.sk89q.worldedit.world.weather.WeatherTypes; -import io.papermc.lib.PaperLib; import org.apache.logging.log4j.Logger; import org.bstats.bukkit.Metrics; import org.bstats.charts.SimplePie; @@ -141,41 +140,28 @@ public void onLoad() { Objects.requireNonNull(attributes, "Could not retrieve manifest attributes"); final String type = attributes.getValue("FAWE-Plugin-Jar-Type"); Objects.requireNonNull(type, "Could not determine plugin jar type"); - if (PaperLib.isPaper()) { - if (PaperLib.getMinecraftVersion() < 20 || (PaperLib.getMinecraftVersion() == 20 && PaperLib.getMinecraftPatchVersion() < 5)) { - if (type.equals("mojang") && !Refraction.isMojangMapped()) { - throw new IllegalStateException( - """ - - ********************************************** - ** You are using the wrong FAWE jar for your Minecraft version. - ** Download the correct FAWE jar from Modrinth: https://modrinth.com/plugin/fastasyncworldedit/ - **********************************************""" - ); - } - } else if (PaperLib.getMinecraftVersion() > 20 || (PaperLib.getMinecraftVersion() == 20 && PaperLib.getMinecraftPatchVersion() >= 5)) { - if (type.equals("spigot")) { - LOGGER.warn( + if (PaperSupport.isPaper()) { + if (type.equals("spigot")) { + LOGGER.warn( """ - - ********************************************** - ** You are using the Spigot-mapped FAWE jar on a modern Paper version. - ** This will result in slower first-run times and wasted disk space from plugin remapping. - ** Download the Paper FAWE jar from Modrinth to avoid this: https://modrinth.com/plugin/fastasyncworldedit/ - **********************************************""" - ); - } + + ********************************************** + ** You are using the Spigot-mapped FAWE jar on a modern Paper version. + ** This will result in slower first-run times and wasted disk space from plugin remapping. + ** Download the Paper FAWE jar from Modrinth to avoid this: https://modrinth.com/plugin/fastasyncworldedit/ + **********************************************""" + ); } } else { if (type.equals("mojang")) { throw new IllegalStateException( - """ - - ********************************************** - ** You are attempting to run the Paper FAWE jar on a Spigot server. - ** Either switch to Paper (https://papermc.io), or download the correct FAWE jar for your platform - ** from Modrinth: https://modrinth.com/plugin/fastasyncworldedit/ - **********************************************""" + """ + + ********************************************** + ** You are attempting to run the Paper FAWE jar on a Spigot server. + ** Either switch to Paper (https://papermc.io), or download the correct FAWE jar for your platform + ** from Modrinth: https://modrinth.com/plugin/fastasyncworldedit/ + **********************************************""" ); } } @@ -256,7 +242,7 @@ public void onEnable() { // Now we can register events getServer().getPluginManager().registerEvents(new WorldEditListener(this), this); // register async tab complete, if available - if (PaperLib.isPaper()) { + if (PaperSupport.isPaper()) { getServer().getPluginManager().registerEvents(new AsyncTabCompleteListener(), this); }