diff --git a/pom.xml b/pom.xml
index 3193a6fae..96209f160 100644
--- a/pom.xml
+++ b/pom.xml
@@ -68,7 +68,7 @@
2.0.9
3.12.8
- 1.17-R0.1-SNAPSHOT
+ 1.18-R0.1-SNAPSHOT
1.16.5-R0.1-SNAPSHOT
@@ -83,7 +83,7 @@
-LOCAL
- 1.18.1
+ 1.19.0
bentobox-world
https://sonarcloud.io
diff --git a/src/main/java/world/bentobox/bentobox/api/commands/admin/range/AdminRangeDisplayCommand.java b/src/main/java/world/bentobox/bentobox/api/commands/admin/range/AdminRangeDisplayCommand.java
index 0b8e726b2..8e0bed0b2 100644
--- a/src/main/java/world/bentobox/bentobox/api/commands/admin/range/AdminRangeDisplayCommand.java
+++ b/src/main/java/world/bentobox/bentobox/api/commands/admin/range/AdminRangeDisplayCommand.java
@@ -9,6 +9,8 @@ import org.bukkit.Color;
import org.bukkit.Location;
import org.bukkit.Particle;
+import com.google.common.base.Enums;
+
import world.bentobox.bentobox.api.commands.CompositeCommand;
import world.bentobox.bentobox.api.user.User;
import world.bentobox.bentobox.database.objects.Island;
@@ -22,6 +24,8 @@ public class AdminRangeDisplayCommand extends CompositeCommand {
private static final String DISPLAY = "display";
private static final String SHOW = "show";
private static final String HIDE = "hide";
+ // Since 1.18, the Particle.BARRIER was replaced by BLOCK_MARKER
+ private static final Particle BARRIER = Enums.getIfPresent(Particle.class, "BARRIER").or(Enums.getIfPresent(Particle.class, "BLOCK_MARKER").or(Particle.LAVA));
// Map of users to which ranges must be displayed
private final Map displayRanges = new HashMap<>();
@@ -46,15 +50,15 @@ public class AdminRangeDisplayCommand extends CompositeCommand {
if (!displayRanges.containsKey(user)) {
switch (label) {
- case DISPLAY, SHOW -> showZones(user);
- case HIDE -> user.sendMessage("commands.admin.range.display.already-off");
- default -> showHelp(this, user);
+ case DISPLAY, SHOW -> showZones(user);
+ case HIDE -> user.sendMessage("commands.admin.range.display.already-off");
+ default -> showHelp(this, user);
}
} else {
switch (label) {
- case DISPLAY, HIDE -> hideZones(user);
- case SHOW -> user.sendMessage("commands.admin.range.display.already-on");
- default -> showHelp(this, user);
+ case DISPLAY, HIDE -> hideZones(user);
+ case SHOW -> user.sendMessage("commands.admin.range.display.already-on");
+ default -> showHelp(this, user);
}
}
@@ -71,7 +75,7 @@ public class AdminRangeDisplayCommand extends CompositeCommand {
getIslands().getIslandAt(user.getLocation()).ifPresent(island -> {
// Draw the island protected area
- drawZone(user, Particle.BARRIER, null, island, island.getProtectionRange());
+ drawZone(user, BARRIER, null, island, island.getProtectionRange());
// Draw the default protected area if island protected zone is different
if (island.getProtectionRange() != getPlugin().getIWM().getIslandProtectionRange(getWorld())) {
diff --git a/src/main/java/world/bentobox/bentobox/listeners/BlockEndDragon.java b/src/main/java/world/bentobox/bentobox/listeners/BlockEndDragon.java
index 47819492c..53143b804 100644
--- a/src/main/java/world/bentobox/bentobox/listeners/BlockEndDragon.java
+++ b/src/main/java/world/bentobox/bentobox/listeners/BlockEndDragon.java
@@ -39,12 +39,12 @@ public class BlockEndDragon implements Listener {
World w = location.getWorld();
if (w == null || !plugin.getIWM().isIslandEnd(w)
|| !Flags.REMOVE_END_EXIT_ISLAND.isSetForWorld(w)
- || w.getBlockAt(0, 255, 0).getType().equals(Material.END_PORTAL)) {
+ || w.getBlockAt(0, w.getMaxHeight() - 1, 0).getType().equals(Material.END_PORTAL)) {
return;
}
// Setting a End Portal at the top will trick dragon legacy check.
- w.getBlockAt(0, 255, 0).setType(Material.END_PORTAL, false);
+ w.getBlockAt(0, w.getMaxHeight() - 1, 0).setType(Material.END_PORTAL, false);
}
/**
@@ -68,9 +68,9 @@ public class BlockEndDragon implements Listener {
}
private boolean testBlock(Block block) {
- return block.getY() == 255
- && block.getX() == 0
+ return block.getX() == 0
&& block.getZ() == 0
+ && block.getY() == block.getWorld().getMaxHeight() - 1
&& block.getWorld().getEnvironment().equals(Environment.THE_END)
&& Flags.REMOVE_END_EXIT_ISLAND.isSetForWorld(block.getWorld())
&& plugin.getIWM().inWorld(block.getWorld())
diff --git a/src/main/java/world/bentobox/bentobox/nms/v1_17_R1/NMSHandler.java b/src/main/java/world/bentobox/bentobox/nms/v1_18_R1/NMSHandler.java
similarity index 73%
rename from src/main/java/world/bentobox/bentobox/nms/v1_17_R1/NMSHandler.java
rename to src/main/java/world/bentobox/bentobox/nms/v1_18_R1/NMSHandler.java
index 7d807f559..f0585bde3 100644
--- a/src/main/java/world/bentobox/bentobox/nms/v1_17_R1/NMSHandler.java
+++ b/src/main/java/world/bentobox/bentobox/nms/v1_18_R1/NMSHandler.java
@@ -1,10 +1,10 @@
-package world.bentobox.bentobox.nms.v1_17_R1;
+package world.bentobox.bentobox.nms.v1_18_R1;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
-import org.bukkit.craftbukkit.v1_17_R1.CraftWorld;
-import org.bukkit.craftbukkit.v1_17_R1.block.data.CraftBlockData;
+import org.bukkit.craftbukkit.v1_18_R1.CraftWorld;
+import org.bukkit.craftbukkit.v1_18_R1.block.data.CraftBlockData;
import net.minecraft.core.BlockPosition;
import net.minecraft.world.level.World;
@@ -21,11 +21,11 @@ public class NMSHandler implements NMSAbstraction {
public void setBlockInNativeChunk(org.bukkit.Chunk chunk, int x, int y, int z, BlockData blockData, boolean applyPhysics) {
CraftBlockData craft = (CraftBlockData) blockData;
World nmsWorld = ((CraftWorld) chunk.getWorld()).getHandle();
- Chunk nmsChunk = nmsWorld.getChunkAt(chunk.getX(), chunk.getZ());
+ Chunk nmsChunk = nmsWorld.d(chunk.getX(), chunk.getZ());
BlockPosition bp = new BlockPosition((chunk.getX() << 4) + x, y, (chunk.getZ() << 4) + z);
// Setting the block to air before setting to another state prevents some console errors
- nmsChunk.setType(bp, AIR, applyPhysics, true);
- nmsChunk.setType(bp, craft.getState(), applyPhysics, true);
+ nmsChunk.a(bp, AIR, applyPhysics);
+ nmsChunk.a(bp, craft.getState(), applyPhysics);
}
}
\ No newline at end of file
diff --git a/src/main/java/world/bentobox/bentobox/versions/ServerCompatibility.java b/src/main/java/world/bentobox/bentobox/versions/ServerCompatibility.java
index d29b4b849..e5e17747b 100644
--- a/src/main/java/world/bentobox/bentobox/versions/ServerCompatibility.java
+++ b/src/main/java/world/bentobox/bentobox/versions/ServerCompatibility.java
@@ -176,16 +176,21 @@ public class ServerCompatibility {
/**
* @since 1.16.0
*/
- V1_16_5(Compatibility.INCOMPATIBLE),
+ V1_16_5(Compatibility.NOT_SUPPORTED),
/**
* @since 1.17.0
*/
- V1_17(Compatibility.COMPATIBLE),
+ V1_17(Compatibility.NOT_SUPPORTED),
/**
* @since 1.17.1
*/
- V1_17_1(Compatibility.COMPATIBLE)
+ V1_17_1(Compatibility.SUPPORTED),
+ /**
+ * @since 1.18.0
+ */
+ V1_18(Compatibility.COMPATIBLE),
+
;
private final Compatibility compatibility;
diff --git a/src/test/java/world/bentobox/bentobox/listeners/BlockEndDragonTest.java b/src/test/java/world/bentobox/bentobox/listeners/BlockEndDragonTest.java
index 11ad13ffb..3d41bcd81 100644
--- a/src/test/java/world/bentobox/bentobox/listeners/BlockEndDragonTest.java
+++ b/src/test/java/world/bentobox/bentobox/listeners/BlockEndDragonTest.java
@@ -96,6 +96,7 @@ public class BlockEndDragonTest {
when(block.getZ()).thenReturn(0);
when(block.getWorld()).thenReturn(world);
when(world.getBlockAt(anyInt(), anyInt(), anyInt())).thenReturn(block);
+ when(world.getMaxHeight()).thenReturn(256);
when(world.getEnvironment()).thenReturn(Environment.THE_END);
// Player
UUID uuid = UUID.randomUUID();