From 7d86423744332e5dc7158facf101ee31d96a0b34 Mon Sep 17 00:00:00 2001 From: Christian Koop Date: Wed, 27 Mar 2024 19:47:18 +0100 Subject: [PATCH] fix: Wrap World#getMinHeight with fallback for older Minecraft versions The method did not exist *back then* and we still want to support Spigot 1.8.8 --- .../skyblock/blockscanner/BlockScanner.java | 5 +++-- .../craftaro/skyblock/utils/world/WorldUtil.java | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/craftaro/skyblock/utils/world/WorldUtil.java diff --git a/src/main/java/com/craftaro/skyblock/blockscanner/BlockScanner.java b/src/main/java/com/craftaro/skyblock/blockscanner/BlockScanner.java index 82dd1923..5f59f0e8 100644 --- a/src/main/java/com/craftaro/skyblock/blockscanner/BlockScanner.java +++ b/src/main/java/com/craftaro/skyblock/blockscanner/BlockScanner.java @@ -2,6 +2,7 @@ package com.craftaro.skyblock.blockscanner; import com.craftaro.core.compatibility.CompatibleMaterial; import com.craftaro.core.compatibility.ServerVersion; +import com.craftaro.skyblock.utils.world.WorldUtil; import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial; import com.craftaro.skyblock.SkyBlock; import com.craftaro.skyblock.island.Island; @@ -114,7 +115,7 @@ public final class BlockScanner extends BukkitRunnable { if (ignoreY) { startY = world.getMaxHeight(); } else { - startY = !ignoreLiquidsY && liquidSection.getBoolean("Enable") && !config.getBoolean("Island.Levelling.ScanLiquid") ? liquidSection.getInt("Height") + 1 : world.getMinHeight(); + startY = !ignoreLiquidsY && liquidSection.getBoolean("Enable") && !config.getBoolean("Island.Levelling.ScanLiquid") ? liquidSection.getInt("Height") + 1 : WorldUtil.getMinHeight(world); } for (List sub : parts) { @@ -148,7 +149,7 @@ public final class BlockScanner extends BukkitRunnable { if (this.island != null) { Location islandLocation = this.island.getLocation(worldManager.getIslandWorld(world), IslandEnvironment.ISLAND); - Location minLocation = new Location(world, islandLocation.getBlockX() - this.island.getRadius(), world.getMinHeight(), islandLocation.getBlockZ() - this.island.getRadius()); + Location minLocation = new Location(world, islandLocation.getBlockX() - this.island.getRadius(), WorldUtil.getMinHeight(world), islandLocation.getBlockZ() - this.island.getRadius()); Location maxLocation = new Location(world, islandLocation.getBlockX() + this.island.getRadius(), world.getMaxHeight(), islandLocation.getBlockZ() + this.island.getRadius()); int minX = Math.min(maxLocation.getBlockX(), minLocation.getBlockX()); diff --git a/src/main/java/com/craftaro/skyblock/utils/world/WorldUtil.java b/src/main/java/com/craftaro/skyblock/utils/world/WorldUtil.java new file mode 100644 index 00000000..33bbd7d5 --- /dev/null +++ b/src/main/java/com/craftaro/skyblock/utils/world/WorldUtil.java @@ -0,0 +1,16 @@ +package com.craftaro.skyblock.utils.world; + +import org.bukkit.World; + +public final class WorldUtil { + private WorldUtil() { + } + + public static int getMinHeight(World world) { + try { + return world.getMinHeight(); + } catch (NoSuchMethodError e) { + return 0; + } + } +}