From 0bb1551f37249f6841711dc44095d30c18cbd28c Mon Sep 17 00:00:00 2001 From: Kitt Date: Sun, 16 Nov 2025 18:51:40 -0800 Subject: [PATCH 1/9] Adding allow-midair-spawn and prevent-fall-damage options. --- .../wolfcraft/randomspawn/PlayerListener.java | 43 +++++++++++++++---- .../wolfcraft/randomspawn/RandomSpawn.java | 24 +++++------ .../wolfcraft/randomspawn/SpawnManager.java | 18 +++++--- src/main/resources/config.yml | 8 +++- 4 files changed, 67 insertions(+), 26 deletions(-) diff --git a/src/main/java/wolfcraft/randomspawn/PlayerListener.java b/src/main/java/wolfcraft/randomspawn/PlayerListener.java index 25f970f..57b78a7 100644 --- a/src/main/java/wolfcraft/randomspawn/PlayerListener.java +++ b/src/main/java/wolfcraft/randomspawn/PlayerListener.java @@ -1,5 +1,8 @@ package wolfcraft.randomspawn; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -7,21 +10,24 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerRespawnEvent; +import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.scheduler.BukkitRunnable; public class PlayerListener implements Listener { private final RandomSpawn plugin; private final SpawnManager spawnManager; - + private final Set fallingSpawnedPlayers; + public PlayerListener(RandomSpawn plugin, SpawnManager spawnManager) { this.plugin = plugin; this.spawnManager = spawnManager; + this.fallingSpawnedPlayers = new HashSet<>(); } - + @EventHandler(priority = EventPriority.HIGH) public void onPlayerJoin(PlayerJoinEvent event) { Player player = event.getPlayer(); - + // Only teleport on first join if (!player.hasPlayedBefore() && spawnManager.isFirstJoinEnabled()) { // Delay the teleport to ensure the player is fully loaded @@ -35,27 +41,48 @@ public void run() { }.runTaskLater(plugin, 5L); // 5 ticks = 0.25 seconds } } - + @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onPlayerRespawn(PlayerRespawnEvent event) { // Don't override if player has a bed or anchor respawn if (!event.isBedSpawn() && !event.isAnchorSpawn() && spawnManager.isRespawnOnDeathEnabled()) { Player player = event.getPlayer(); - + // Only apply to worlds that are enabled if (spawnManager.isWorldEnabled(player.getWorld().getName())) { Location randomLocation = spawnManager.getRandomSpawnLocation(player); - + if (randomLocation != null) { event.setRespawnLocation(randomLocation); + + // If fall damage prevention is enabled, add them to the list of potentially falling players + if (spawnManager.isPreventFallDamageEnabled()) { + fallingSpawnedPlayers.add(player.getUniqueId()); + } } } } } - + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onPlayerMove(PlayerMoveEvent event) { + Player player = event.getPlayer(); + UUID uuid = player.getUniqueId(); + + if (spawnManager.isPreventFallDamageEnabled() && + fallingSpawnedPlayers.contains(uuid) && + player.isOnGround()) { + // The player has fall damage prevention enabled, is currently falling after a spawn, + // but has now touched ground, so we need to negate the fall damage and remove them from the falling players list + player.setFallDistance(0f); + fallingSpawnedPlayers.remove(uuid); + } + } + } + private void teleportToRandomSpawn(Player player) { Location randomLocation = spawnManager.getRandomSpawnLocation(player); - + if (randomLocation != null) { player.teleport(randomLocation); } diff --git a/src/main/java/wolfcraft/randomspawn/RandomSpawn.java b/src/main/java/wolfcraft/randomspawn/RandomSpawn.java index 6cb335c..b379f61 100644 --- a/src/main/java/wolfcraft/randomspawn/RandomSpawn.java +++ b/src/main/java/wolfcraft/randomspawn/RandomSpawn.java @@ -14,27 +14,27 @@ public class RandomSpawn extends JavaPlugin { private FileConfiguration config; private SpawnManager spawnManager; private final String PREFIX = ChatColor.GOLD + "[RandomSpawn] " + ChatColor.RESET; - + @Override public void onEnable() { // Save default config if it doesn't exist saveDefaultConfig(); config = getConfig(); - + // Initialize spawn manager spawnManager = new SpawnManager(this); - + // Register event listeners getServer().getPluginManager().registerEvents(new PlayerListener(this, spawnManager), this); - + getLogger().info("RandomSpawn has been enabled!"); } - + @Override public void onDisable() { getLogger().info("RandomSpawn has been disabled!"); } - + @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { // Handle both command aliases: /rd and /random @@ -44,14 +44,14 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String showHelp(sender); return true; } - + if (args[0].equalsIgnoreCase("reload")) { // Check permission if (!sender.hasPermission("randomspawn.reload")) { sender.sendMessage(PREFIX + ChatColor.RED + "You don't have permission to use this command!"); return true; } - + // Reload config reloadConfig(); config = getConfig(); @@ -59,21 +59,21 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String sender.sendMessage(PREFIX + ChatColor.GREEN + "Configuration reloaded successfully!"); return true; } - + // Unknown argument, show help showHelp(sender); return true; } - + return false; } - + private void showHelp(CommandSender sender) { sender.sendMessage(ChatColor.YELLOW + "=== RandomSpawn Help ==="); sender.sendMessage(ChatColor.GOLD + "/rd reload " + ChatColor.WHITE + "- Reload the configuration"); sender.sendMessage(ChatColor.GOLD + "/random reload " + ChatColor.WHITE + "- Reload the configuration"); } - + public void reloadPluginConfig() { reloadConfig(); config = getConfig(); diff --git a/src/main/java/wolfcraft/randomspawn/SpawnManager.java b/src/main/java/wolfcraft/randomspawn/SpawnManager.java index ddeaedb..fc49c54 100644 --- a/src/main/java/wolfcraft/randomspawn/SpawnManager.java +++ b/src/main/java/wolfcraft/randomspawn/SpawnManager.java @@ -26,6 +26,8 @@ public class SpawnManager { private int zMin; private int zMax; private boolean forceGroundSpawn; + private boolean allowMidairSpawn; + private boolean preventFallDamage; private boolean enableFirstJoinSpawn; private boolean enableRespawnOnDeath; private int maxTries; @@ -49,6 +51,8 @@ public void reloadConfig() { zMin = config.getInt("spawn.z.min", -1000); zMax = config.getInt("spawn.z.max", 1000); forceGroundSpawn = config.getBoolean("spawn.force-ground-spawn", true); + allowMidairSpawn = config.getBoolean("spawn.allow-midair-spawn", false); + preventFallDamage = config.getBoolean("spawn.prevent-fall-damage", false); enableFirstJoinSpawn = config.getBoolean("events.first-join", true); enableRespawnOnDeath = config.getBoolean("events.respawn-on-death", true); maxTries = config.getInt("spawn.max-tries", 50); @@ -73,6 +77,10 @@ public boolean isRespawnOnDeathEnabled() { return enableRespawnOnDeath; } + public boolean isPreventFallDamageEnabled() { + return preventFallDamage; + } + public boolean isWorldEnabled(String worldName) { return enabledWorlds.contains(worldName); } @@ -134,8 +142,8 @@ private Location findSafeYPosition(Location location) { Block blockAbove = world.getBlockAt(x, y + 1, z); Block blockTwoAbove = world.getBlockAt(x, y + 2, z); - if (!block.getType().isAir() && - blockAbove.getType().isAir() && + if (!block.getType().isAir() && + blockAbove.getType().isAir() && blockTwoAbove.getType().isAir() && !block.isLiquid() && !isFatalBlock(block.getType().toString())) { @@ -157,9 +165,9 @@ private boolean isSafeLocation(Location location) { Block blockAbove = location.clone().add(0, 1, 0).getBlock(); if (!forceGroundSpawn) { - return block.getType().isAir() && + return block.getType().isAir() && blockAbove.getType().isAir() && - !blockBelow.getType().isAir() && + (!blockBelow.getType().isAir() || allowMidairSpawn) && !blockBelow.isLiquid() && !isFatalBlock(blockBelow.getType().toString()); } @@ -188,7 +196,7 @@ private void cacheLocation(String worldName, Location location) { locations.remove(locArray[random.nextInt(locArray.length)]); } } - + private int randomBetween(int min, int max) { if (min > max) { int temp = min; diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 6d438d6..49ec928 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -20,6 +20,13 @@ spawn: # If true, players will always spawn on the surface # This will disable the Y coordinate range setting above force-ground-spawn: true + + # If true, players can spawn in midair + # This might result in fall damage if prevent-fall-damage is false + allow-midair-spawn: false + + # If true, prevents fall damage from the player's first landing after being spawned + prevent-fall-damage: true # Maximum number of attempts to find a safe spawn location max-tries: 50 @@ -56,4 +63,3 @@ messages: prefix: "&6[RandomSpawn] &r" reload: "&aConfiguration reloaded successfully!" no-permission: "&cYou don't have permission to use this command!" - From c69eeeb0c0be5a53f01365dcd0cfe4b9b3f3b089 Mon Sep 17 00:00:00 2001 From: Kitt Date: Sun, 16 Nov 2025 18:52:03 -0800 Subject: [PATCH 2/9] Cleanup --- src/main/java/wolfcraft/randomspawn/PlayerListener.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/wolfcraft/randomspawn/PlayerListener.java b/src/main/java/wolfcraft/randomspawn/PlayerListener.java index 57b78a7..e352d19 100644 --- a/src/main/java/wolfcraft/randomspawn/PlayerListener.java +++ b/src/main/java/wolfcraft/randomspawn/PlayerListener.java @@ -55,7 +55,7 @@ public void onPlayerRespawn(PlayerRespawnEvent event) { if (randomLocation != null) { event.setRespawnLocation(randomLocation); - // If fall damage prevention is enabled, add them to the list of potentially falling players + // If fall damage prevention is enabled, add the player to the list of potentially falling players if (spawnManager.isPreventFallDamageEnabled()) { fallingSpawnedPlayers.add(player.getUniqueId()); } @@ -69,9 +69,7 @@ public void onPlayerMove(PlayerMoveEvent event) { Player player = event.getPlayer(); UUID uuid = player.getUniqueId(); - if (spawnManager.isPreventFallDamageEnabled() && - fallingSpawnedPlayers.contains(uuid) && - player.isOnGround()) { + if (spawnManager.isPreventFallDamageEnabled() && fallingSpawnedPlayers.contains(uuid) && player.isOnGround()) { // The player has fall damage prevention enabled, is currently falling after a spawn, // but has now touched ground, so we need to negate the fall damage and remove them from the falling players list player.setFallDistance(0f); From e7a89ad15e0ba965f71ec327e7b6221d850eebe5 Mon Sep 17 00:00:00 2001 From: Kitt Date: Sun, 16 Nov 2025 19:21:58 -0800 Subject: [PATCH 3/9] Centralized fall damage prevention check --- .../java/wolfcraft/randomspawn/PlayerListener.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/wolfcraft/randomspawn/PlayerListener.java b/src/main/java/wolfcraft/randomspawn/PlayerListener.java index e352d19..f661686 100644 --- a/src/main/java/wolfcraft/randomspawn/PlayerListener.java +++ b/src/main/java/wolfcraft/randomspawn/PlayerListener.java @@ -54,11 +54,7 @@ public void onPlayerRespawn(PlayerRespawnEvent event) { if (randomLocation != null) { event.setRespawnLocation(randomLocation); - - // If fall damage prevention is enabled, add the player to the list of potentially falling players - if (spawnManager.isPreventFallDamageEnabled()) { - fallingSpawnedPlayers.add(player.getUniqueId()); - } + setFallingPlayer(player); } } } @@ -83,6 +79,13 @@ private void teleportToRandomSpawn(Player player) { if (randomLocation != null) { player.teleport(randomLocation); + setFallingPlayer(player); + } + } + + private void setFallingPlayer(Playher player) { + if (spawnManager.isPreventFallDamageEnabled()) { + fallProtection.add(player.getUniqueId()); } } } From eed64a045e0b384798f458ad960b43c560739618 Mon Sep 17 00:00:00 2001 From: Kitt Date: Sun, 16 Nov 2025 19:23:10 -0800 Subject: [PATCH 4/9] Cleanup --- src/main/java/wolfcraft/randomspawn/PlayerListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/wolfcraft/randomspawn/PlayerListener.java b/src/main/java/wolfcraft/randomspawn/PlayerListener.java index f661686..c4a481f 100644 --- a/src/main/java/wolfcraft/randomspawn/PlayerListener.java +++ b/src/main/java/wolfcraft/randomspawn/PlayerListener.java @@ -83,7 +83,7 @@ private void teleportToRandomSpawn(Player player) { } } - private void setFallingPlayer(Playher player) { + private void setFallingPlayer(Player player) { if (spawnManager.isPreventFallDamageEnabled()) { fallProtection.add(player.getUniqueId()); } From b2aa831009c746b168862ed594ba0d8a40d3a631 Mon Sep 17 00:00:00 2001 From: Kitt Date: Sun, 16 Nov 2025 19:26:16 -0800 Subject: [PATCH 5/9] Cleanup --- src/main/java/wolfcraft/randomspawn/PlayerListener.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/wolfcraft/randomspawn/PlayerListener.java b/src/main/java/wolfcraft/randomspawn/PlayerListener.java index c4a481f..9429552 100644 --- a/src/main/java/wolfcraft/randomspawn/PlayerListener.java +++ b/src/main/java/wolfcraft/randomspawn/PlayerListener.java @@ -70,7 +70,6 @@ public void onPlayerMove(PlayerMoveEvent event) { // but has now touched ground, so we need to negate the fall damage and remove them from the falling players list player.setFallDistance(0f); fallingSpawnedPlayers.remove(uuid); - } } } From 360e6965e97d339dceb5d00890a45dc1e2bc0e3b Mon Sep 17 00:00:00 2001 From: Kitt Date: Sun, 16 Nov 2025 20:21:56 -0800 Subject: [PATCH 6/9] Adding transfer-to-server Option --- .../wolfcraft/randomspawn/PlayerListener.java | 15 ++++++++++++++- .../wolfcraft/randomspawn/RandomSpawn.java | 18 ++++++++++++++++++ .../wolfcraft/randomspawn/SpawnManager.java | 6 ++++++ src/main/resources/config.yml | 3 +++ 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/src/main/java/wolfcraft/randomspawn/PlayerListener.java b/src/main/java/wolfcraft/randomspawn/PlayerListener.java index 9429552..6c985ae 100644 --- a/src/main/java/wolfcraft/randomspawn/PlayerListener.java +++ b/src/main/java/wolfcraft/randomspawn/PlayerListener.java @@ -55,6 +55,19 @@ public void onPlayerRespawn(PlayerRespawnEvent event) { if (randomLocation != null) { event.setRespawnLocation(randomLocation); setFallingPlayer(player); + + // If configured, transfer the player to another server after respawn + if (spawnManager.getTransferServerName() != null && !spawnManager.getTransferServerName().isEmpty()) { + // Delay the transfer to ensure the player is fully respawned + new BukkitRunnable() { + @Override + public void run() { + if (player.isOnline()) { + plugin.transferPlayerToServer(player, spawnManager.getTransferServerName()); + } + } + }.runTaskLater(plugin, 5L); // 5 ticks = 0.25 seconds + } } } } @@ -84,7 +97,7 @@ private void teleportToRandomSpawn(Player player) { private void setFallingPlayer(Player player) { if (spawnManager.isPreventFallDamageEnabled()) { - fallProtection.add(player.getUniqueId()); + fallingSpawnedPlayers.add(player.getUniqueId()); } } } diff --git a/src/main/java/wolfcraft/randomspawn/RandomSpawn.java b/src/main/java/wolfcraft/randomspawn/RandomSpawn.java index b379f61..6340094 100644 --- a/src/main/java/wolfcraft/randomspawn/RandomSpawn.java +++ b/src/main/java/wolfcraft/randomspawn/RandomSpawn.java @@ -9,6 +9,8 @@ import java.util.Arrays; import java.util.List; +import com.google.common.io.ByteArrayDataOutput; +import com.google.common.io.ByteStreams; public class RandomSpawn extends JavaPlugin { private FileConfiguration config; @@ -27,6 +29,9 @@ public void onEnable() { // Register event listeners getServer().getPluginManager().registerEvents(new PlayerListener(this, spawnManager), this); + // Register BungeeCord channel + getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord"); + getLogger().info("RandomSpawn has been enabled!"); } @@ -79,4 +84,17 @@ public void reloadPluginConfig() { config = getConfig(); spawnManager.reloadConfig(); } + + public void transferPlayerToServer(Player player, String serverName) { + if (player == null || serverName == null || serverName.isEmpty()) return; + + try { + ByteArrayDataOutput out = ByteStreams.newDataOutput(); + out.writeUTF("Connect"); + out.writeUTF(serverName); + player.sendPluginMessage(this, "BungeeCord", out.toByteArray()); + } catch (NoClassDefFoundError | Exception e) { + getLogger().warning("Failed to send player to server '" + serverName + "': " + e.getMessage()); + } + } } diff --git a/src/main/java/wolfcraft/randomspawn/SpawnManager.java b/src/main/java/wolfcraft/randomspawn/SpawnManager.java index fc49c54..966b09c 100644 --- a/src/main/java/wolfcraft/randomspawn/SpawnManager.java +++ b/src/main/java/wolfcraft/randomspawn/SpawnManager.java @@ -31,6 +31,7 @@ public class SpawnManager { private boolean enableFirstJoinSpawn; private boolean enableRespawnOnDeath; private int maxTries; + private String transferServerName; private Set enabledWorlds; private Set fatalBlocks; @@ -55,6 +56,7 @@ public void reloadConfig() { preventFallDamage = config.getBoolean("spawn.prevent-fall-damage", false); enableFirstJoinSpawn = config.getBoolean("events.first-join", true); enableRespawnOnDeath = config.getBoolean("events.respawn-on-death", true); + transferServerName = config.getString("spawn.transfer-to-server", ""); maxTries = config.getInt("spawn.max-tries", 50); fatalBlocks = new HashSet<>(); for (String block : config.getStringList("fatal-blocks")) { @@ -85,6 +87,10 @@ public boolean isWorldEnabled(String worldName) { return enabledWorlds.contains(worldName); } + public String getTransferServerName() { + return transferServerName; + } + public Location getRandomSpawnLocation(Player player) { World world = player.getWorld(); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 49ec928..7252c6b 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -27,6 +27,9 @@ spawn: # If true, prevents fall damage from the player's first landing after being spawned prevent-fall-damage: true + + # If set, players will be transferred to the specified server after spawning (supports BungeeCord/Waterfall/Velocity) + transfer-to-server: '' # Maximum number of attempts to find a safe spawn location max-tries: 50 From b39437853df355adbba2bcd99d5b90bdb65e1d55 Mon Sep 17 00:00:00 2001 From: Kitt Date: Sun, 16 Nov 2025 20:45:37 -0800 Subject: [PATCH 7/9] Reverting accidental inclusions --- src/main/resources/config.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 7252c6b..d677e52 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -21,13 +21,6 @@ spawn: # This will disable the Y coordinate range setting above force-ground-spawn: true - # If true, players can spawn in midair - # This might result in fall damage if prevent-fall-damage is false - allow-midair-spawn: false - - # If true, prevents fall damage from the player's first landing after being spawned - prevent-fall-damage: true - # If set, players will be transferred to the specified server after spawning (supports BungeeCord/Waterfall/Velocity) transfer-to-server: '' From f35b2ca3be05f90902c4a3fa470978754af69bf1 Mon Sep 17 00:00:00 2001 From: Kitt Date: Sun, 16 Nov 2025 20:46:12 -0800 Subject: [PATCH 8/9] Reverting accidental inclusions --- .../wolfcraft/randomspawn/PlayerListener.java | 25 ------------------- .../wolfcraft/randomspawn/SpawnManager.java | 10 +------- 2 files changed, 1 insertion(+), 34 deletions(-) diff --git a/src/main/java/wolfcraft/randomspawn/PlayerListener.java b/src/main/java/wolfcraft/randomspawn/PlayerListener.java index 6c985ae..f5a759a 100644 --- a/src/main/java/wolfcraft/randomspawn/PlayerListener.java +++ b/src/main/java/wolfcraft/randomspawn/PlayerListener.java @@ -1,8 +1,5 @@ package wolfcraft.randomspawn; -import java.util.HashSet; -import java.util.Set; -import java.util.UUID; import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -10,7 +7,6 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerRespawnEvent; -import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.scheduler.BukkitRunnable; public class PlayerListener implements Listener { @@ -54,7 +50,6 @@ public void onPlayerRespawn(PlayerRespawnEvent event) { if (randomLocation != null) { event.setRespawnLocation(randomLocation); - setFallingPlayer(player); // If configured, transfer the player to another server after respawn if (spawnManager.getTransferServerName() != null && !spawnManager.getTransferServerName().isEmpty()) { @@ -73,31 +68,11 @@ public void run() { } } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onPlayerMove(PlayerMoveEvent event) { - Player player = event.getPlayer(); - UUID uuid = player.getUniqueId(); - - if (spawnManager.isPreventFallDamageEnabled() && fallingSpawnedPlayers.contains(uuid) && player.isOnGround()) { - // The player has fall damage prevention enabled, is currently falling after a spawn, - // but has now touched ground, so we need to negate the fall damage and remove them from the falling players list - player.setFallDistance(0f); - fallingSpawnedPlayers.remove(uuid); - } - } - private void teleportToRandomSpawn(Player player) { Location randomLocation = spawnManager.getRandomSpawnLocation(player); if (randomLocation != null) { player.teleport(randomLocation); - setFallingPlayer(player); - } - } - - private void setFallingPlayer(Player player) { - if (spawnManager.isPreventFallDamageEnabled()) { - fallingSpawnedPlayers.add(player.getUniqueId()); } } } diff --git a/src/main/java/wolfcraft/randomspawn/SpawnManager.java b/src/main/java/wolfcraft/randomspawn/SpawnManager.java index 966b09c..a7eeccc 100644 --- a/src/main/java/wolfcraft/randomspawn/SpawnManager.java +++ b/src/main/java/wolfcraft/randomspawn/SpawnManager.java @@ -26,8 +26,6 @@ public class SpawnManager { private int zMin; private int zMax; private boolean forceGroundSpawn; - private boolean allowMidairSpawn; - private boolean preventFallDamage; private boolean enableFirstJoinSpawn; private boolean enableRespawnOnDeath; private int maxTries; @@ -51,8 +49,6 @@ public void reloadConfig() { yMax = config.getInt("spawn.y.max", 128); zMin = config.getInt("spawn.z.min", -1000); zMax = config.getInt("spawn.z.max", 1000); - forceGroundSpawn = config.getBoolean("spawn.force-ground-spawn", true); - allowMidairSpawn = config.getBoolean("spawn.allow-midair-spawn", false); preventFallDamage = config.getBoolean("spawn.prevent-fall-damage", false); enableFirstJoinSpawn = config.getBoolean("events.first-join", true); enableRespawnOnDeath = config.getBoolean("events.respawn-on-death", true); @@ -79,10 +75,6 @@ public boolean isRespawnOnDeathEnabled() { return enableRespawnOnDeath; } - public boolean isPreventFallDamageEnabled() { - return preventFallDamage; - } - public boolean isWorldEnabled(String worldName) { return enabledWorlds.contains(worldName); } @@ -173,7 +165,7 @@ private boolean isSafeLocation(Location location) { if (!forceGroundSpawn) { return block.getType().isAir() && blockAbove.getType().isAir() && - (!blockBelow.getType().isAir() || allowMidairSpawn) && + !blockBelow.getType().isAir() && !blockBelow.isLiquid() && !isFatalBlock(blockBelow.getType().toString()); } From 993c1969e9bd19c3fdec14b9e19147bd2d8a2e20 Mon Sep 17 00:00:00 2001 From: Kitt Date: Sun, 16 Nov 2025 20:47:43 -0800 Subject: [PATCH 9/9] Reverting accidental inclusions --- src/main/java/wolfcraft/randomspawn/PlayerListener.java | 2 -- src/main/java/wolfcraft/randomspawn/SpawnManager.java | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/wolfcraft/randomspawn/PlayerListener.java b/src/main/java/wolfcraft/randomspawn/PlayerListener.java index f5a759a..2344325 100644 --- a/src/main/java/wolfcraft/randomspawn/PlayerListener.java +++ b/src/main/java/wolfcraft/randomspawn/PlayerListener.java @@ -12,12 +12,10 @@ public class PlayerListener implements Listener { private final RandomSpawn plugin; private final SpawnManager spawnManager; - private final Set fallingSpawnedPlayers; public PlayerListener(RandomSpawn plugin, SpawnManager spawnManager) { this.plugin = plugin; this.spawnManager = spawnManager; - this.fallingSpawnedPlayers = new HashSet<>(); } @EventHandler(priority = EventPriority.HIGH) diff --git a/src/main/java/wolfcraft/randomspawn/SpawnManager.java b/src/main/java/wolfcraft/randomspawn/SpawnManager.java index a7eeccc..d4bb3f2 100644 --- a/src/main/java/wolfcraft/randomspawn/SpawnManager.java +++ b/src/main/java/wolfcraft/randomspawn/SpawnManager.java @@ -49,7 +49,7 @@ public void reloadConfig() { yMax = config.getInt("spawn.y.max", 128); zMin = config.getInt("spawn.z.min", -1000); zMax = config.getInt("spawn.z.max", 1000); - preventFallDamage = config.getBoolean("spawn.prevent-fall-damage", false); + forceGroundSpawn = config.getBoolean("spawn.force-ground-spawn", true); enableFirstJoinSpawn = config.getBoolean("events.first-join", true); enableRespawnOnDeath = config.getBoolean("events.respawn-on-death", true); transferServerName = config.getString("spawn.transfer-to-server", "");