diff --git a/src/main/java/com/blockfantasy/LimboBackSpawn.java b/src/main/java/com/blockfantasy/LimboBackSpawn.java index c38115a..201a29e 100644 --- a/src/main/java/com/blockfantasy/LimboBackSpawn.java +++ b/src/main/java/com/blockfantasy/LimboBackSpawn.java @@ -1,6 +1,8 @@ package com.blockfantasy; import com.loohp.limbo.Limbo; +import com.loohp.limbo.commands.CommandExecutor; +import com.loohp.limbo.commands.CommandSender; import com.loohp.limbo.events.EventHandler; import com.loohp.limbo.events.Listener; import com.loohp.limbo.events.player.PlayerMoveEvent; @@ -11,21 +13,69 @@ import com.loohp.limbo.plugins.LimboPlugin; public class LimboBackSpawn extends LimboPlugin implements Listener { public static LimboBackSpawn instance; public static Location spawn; + + public static int maxX = 100; + public static int minY = -10; + public static int maxZ = 100; + @Override public void onEnable() { instance = this; spawn = instance.getServer().getServerProperties().getWorldSpawn(); Limbo.getInstance().getEventsManager().registerEvents(this,new LimboBackSpawnListener()); + Limbo.getInstance().getPluginManager().registerCommands(this,new GetLocationCommand()); } + public static class LimboBackSpawnListener implements Listener { @EventHandler public void onPlayerMove(PlayerMoveEvent event) { Player player = event.getPlayer(); - if (event.getPlayer().getLocation().getY() < -10) { + double originX = player.getLocation().getX() - spawn.getX(); + double originZ = player.getLocation().getZ() - spawn.getZ(); + + if (originX > maxX || originX < -maxX){ + player.teleport(spawn); + player.sendMessage("§b[BlockFantasy]§c不要乱跑鸥~"); + } + if (originZ > maxZ || originZ < -maxZ){ + player.teleport(spawn); + player.sendMessage("§b[BlockFantasy]§c不要乱跑鸥~"); + + } + if (player.getLocation().getY() < minY) { player.teleport(spawn); player.sendMessage("§b[BlockFantasy]§c掉虚空了?我给你拽回来~"); } } } + + public static class GetLocationCommand implements CommandExecutor{ + @Override + public void execute(CommandSender sender, String[] args) { + if (args[0].equalsIgnoreCase("getloc")){ + if (!(sender instanceof Player player)) { + sender.sendMessage("§c只有玩家可以执行此命令"); + return; + } + if (!player.hasPermission("blockfantasy.getloc")){ + player.sendMessage("§c您没有权限执行此命令"); + return; + } + double originX = player.getLocation().getX() - spawn.getX(); + double originZ = player.getLocation().getZ() - spawn.getZ(); + + + Location location = player.getLocation(); + player.sendMessage("§b[BlockFantasy]§a您当前的坐标是: " + + "X: " + String.format("%.2f", location.getX()) + + ", Y: " + String.format("%.2f", location.getY()) + + ", Z: " + String.format("%.2f", location.getZ()) + + ", originX: " + String.format("%.2f", originX) + + ", originZ: " + String.format("%.2f", originZ) + + ); + } + } + } }