From 4a01e0b07876490bdf57a713cc9342bb9d2b7f36 Mon Sep 17 00:00:00 2001 From: Lncvrt Date: Fri, 26 Jul 2024 15:51:16 -0700 Subject: [PATCH] Bedrock UI for furnace placing, Use Adventure API for better handling of the java message, use MiniMessage for Totem Popping (for gradient), Sort stuff better in Main Class, /ping, change permission in PlaceholderAPIExpansion, Move stuff in PlayerChatListener, use MiniMessage for death messages (gradients, also removed suicide message), remove the Elytra Event check --- pom.xml | 22 ++++++ .../io/github/lncvrt/lncvrtbox/LncvrtBox.java | 70 ++++++++----------- .../lncvrtbox/PlaceholderAPIExpansion.java | 42 +++++------ .../lncvrt/lncvrtbox/commands/Ping.java | 50 +++++++++++++ .../lncvrtbox/events/BlockPlaceListener.java | 61 ++++++++++------ .../events/EntityResurrectListener.java | 5 +- .../lncvrtbox/events/PlayerChatListener.java | 40 +++++------ .../lncvrtbox/events/PlayerDeathListener.java | 8 +-- .../events/PlayerElytraBoostListener.java | 32 --------- .../lncvrtbox/events/PlayerMoveListener.java | 34 --------- src/main/resources/plugin.yml | 5 ++ 11 files changed, 188 insertions(+), 181 deletions(-) create mode 100644 src/main/java/io/github/lncvrt/lncvrtbox/commands/Ping.java delete mode 100644 src/main/java/io/github/lncvrt/lncvrtbox/events/PlayerElytraBoostListener.java delete mode 100644 src/main/java/io/github/lncvrt/lncvrtbox/events/PlayerMoveListener.java diff --git a/pom.xml b/pom.xml index d2ece79..7e72806 100644 --- a/pom.xml +++ b/pom.xml @@ -64,6 +64,10 @@ bstats-repo https://repo.codemc.io/repository/maven-public/ + + opencollab-snapshot + https://repo.opencollab.dev/main/ + @@ -96,6 +100,24 @@ 7.1.0-SNAPSHOT provided + + net.kyori + adventure-api + 4.17.0 + provided + + + org.geysermc.geyser + api + 2.2.0-SNAPSHOT + provided + + + org.geysermc.floodgate + api + 2.2.2-SNAPSHOT + provided + 21 diff --git a/src/main/java/io/github/lncvrt/lncvrtbox/LncvrtBox.java b/src/main/java/io/github/lncvrt/lncvrtbox/LncvrtBox.java index 9364f7f..2cae70c 100644 --- a/src/main/java/io/github/lncvrt/lncvrtbox/LncvrtBox.java +++ b/src/main/java/io/github/lncvrt/lncvrtbox/LncvrtBox.java @@ -10,6 +10,8 @@ import org.bukkit.event.Listener; import org.bukkit.inventory.Inventory; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; +import org.geysermc.floodgate.api.FloodgateApi; +import org.geysermc.geyser.api.GeyserApi; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; @@ -22,45 +24,27 @@ import java.util.*; import java.util.logging.Level; public final class LncvrtBox extends JavaPlugin implements Listener, TabExecutor { - public final Map autoCompressStatus = new HashMap<>(); public String serverRules; public boolean chatLocked = false; private Essentials essentials; public boolean fixRanTooOften = false; + public GeyserApi geyserApi; + public FloodgateApi floodgateApi; @Override public void onEnable() { - if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") == null) { - getLogger().warning("PlaceholderAPI not found. Disabling plugin."); - getServer().getPluginManager().disablePlugin(this); - return; - } - if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") == null) { - getLogger().warning("PlaceholderAPI not found. Disabling plugin."); - getServer().getPluginManager().disablePlugin(this); - return; - } - if (Bukkit.getPluginManager().getPlugin("Essentials") == null) { - getLogger().warning("Essentials not found. Disabling plugin."); - getServer().getPluginManager().disablePlugin(this); - return; - } + geyserApi = GeyserApi.api(); + floodgateApi = FloodgateApi.getInstance(); Plugin essentialsPlugin = Bukkit.getServer().getPluginManager().getPlugin("Essentials"); - if (essentialsPlugin == null) { - getLogger().warning("Essentials not found. Disabling plugin."); - getServer().getPluginManager().disablePlugin(this); - return; + getLogger().info("Essentials detected. Attempting to hook..."); + if (essentialsPlugin instanceof Essentials) { + essentials = (Essentials) essentialsPlugin; + getLogger().info("Essentials hooked successfully."); } else { - getLogger().info("Essentials detected. Attempting to hook..."); - if (essentialsPlugin instanceof Essentials) { - essentials = (Essentials) essentialsPlugin; - getLogger().info("Essentials hooked successfully."); - } - else { - getLogger().info("Essentials failed to hook."); - } + getLogger().info("Essentials failed to hook. Disabling plugin"); + getServer().getPluginManager().disablePlugin(this); } if (new PlaceholderAPIExpansion().register()) { @@ -71,7 +55,20 @@ public final class LncvrtBox extends JavaPlugin implements Listener, TabExecutor return; } - getServer().getPluginManager().registerEvents(new BlockPlaceListener(), this); + registerEvents(); + registerCommands(); + + loadAutoCompressStatus(); + loadServerRules(); + } + + @Override + public void onDisable() { + saveAutoCompressStatus(); + } + + private void registerEvents() { + getServer().getPluginManager().registerEvents(new BlockPlaceListener(this), this); getServer().getPluginManager().registerEvents(new BlockBreakListener(this), this); getServer().getPluginManager().registerEvents(new CraftItemListener(), this); getServer().getPluginManager().registerEvents(new EntityDamageListener(this), this); @@ -82,33 +79,26 @@ public final class LncvrtBox extends JavaPlugin implements Listener, TabExecutor getServer().getPluginManager().registerEvents(new PlayerChatListener(this), this); getServer().getPluginManager().registerEvents(new PlayerDeathListener(), this); getServer().getPluginManager().registerEvents(new PlayerDropItemListener(this), this); - getServer().getPluginManager().registerEvents(new PlayerElytraBoostListener(), this); getServer().getPluginManager().registerEvents(new PlayerItemConsumeListener(), this); getServer().getPluginManager().registerEvents(new PlayerJoinListener(this), this); - getServer().getPluginManager().registerEvents(new PlayerMoveListener(), this); getServer().getPluginManager().registerEvents(new PortalCreateListener(), this); getServer().getPluginManager().registerEvents(new PrepareAnvilListener(), this); getServer().getPluginManager().registerEvents(new PrepareItemEnchantListener(), this); getServer().getPluginManager().registerEvents(new ProjectileHitListener(), this); getServer().getPluginManager().registerEvents(new SignChangeListener(this), this); - getServer().getPluginManager().registerEvents(this, this); + } - loadAutoCompressStatus(); - loadServerRules(); + private void registerCommands() { Objects.requireNonNull(getCommand("autocompress")).setExecutor(new Autocompress(this)); Objects.requireNonNull(getCommand("clearchat")).setExecutor(new Clearchat()); Objects.requireNonNull(getCommand("fix")).setExecutor(new Fix(this)); Objects.requireNonNull(getCommand("link")).setExecutor(new Link()); Objects.requireNonNull(getCommand("lockchat")).setExecutor(new Lockchat(this)); + Objects.requireNonNull(getCommand("ping")).setExecutor(new Ping(this)); Objects.requireNonNull(getCommand("rules")).setExecutor(new Rules(this)); Objects.requireNonNull(getCommand("sky")).setExecutor(new Sky()); - Objects.requireNonNull(getCommand("Unlink")).setExecutor(new Unlink()); - } - - @Override - public void onDisable() { - saveAutoCompressStatus(); + Objects.requireNonNull(getCommand("unlink")).setExecutor(new Unlink()); } public boolean isRestrictedMaterial(Material material) { diff --git a/src/main/java/io/github/lncvrt/lncvrtbox/PlaceholderAPIExpansion.java b/src/main/java/io/github/lncvrt/lncvrtbox/PlaceholderAPIExpansion.java index 9fdb2e2..47673ed 100644 --- a/src/main/java/io/github/lncvrt/lncvrtbox/PlaceholderAPIExpansion.java +++ b/src/main/java/io/github/lncvrt/lncvrtbox/PlaceholderAPIExpansion.java @@ -84,7 +84,7 @@ public final class PlaceholderAPIExpansion extends PlaceholderExpansion { case "afk_staff" -> { int staffAfkCount = 0; for (Player p : Bukkit.getServer().getOnlinePlayers()) { - if (p.hasPermission("lncvrtutils.staff") && isAfk(p)) { + if (p.hasPermission("lncvrtbox.staff") && isAfk(p)) { staffAfkCount++; } } @@ -115,24 +115,18 @@ public final class PlaceholderAPIExpansion extends PlaceholderExpansion { case "total_joins_formatted" -> { return formatCompact(Bukkit.getOfflinePlayers().length); } - case "seasontwocountdown" -> { - long targetTime = 1719804600L; - long currentTime = System.currentTimeMillis() / 1000; - - if (currentTime >= targetTime) { - return "Starting Soon!"; - } else { - long remainingSeconds = targetTime - currentTime; - return formatTime(remainingSeconds); - } - } case "kdr" -> { - int kills = Integer.parseInt(PlaceholderAPI.setPlaceholders(player, "%statistic_player_kills%")); - int deaths = Integer.parseInt(PlaceholderAPI.setPlaceholders(player, "%statistic_deaths%")); + int kills = getPlayerKills(player); + int deaths = getPlayerDeaths(player); double kdr = (deaths == 0) ? kills : (double) kills / deaths; String format = decimalPlaces > 0 ? "0." + repeat("0", decimalPlaces) : "0"; return new DecimalFormat(format).format(kdr); } + case "playtime" -> { + long playtimeTicks = player.getStatistic(org.bukkit.Statistic.PLAY_ONE_MINUTE); + long playtimeSeconds = playtimeTicks / 20; + return formatTime(playtimeSeconds); + } } return null; @@ -150,7 +144,7 @@ public final class PlaceholderAPIExpansion extends PlaceholderExpansion { private String formatCompact(int number) { DecimalFormat decimalFormat = new DecimalFormat("#.#"); if (number >= 1_000_000) { - return decimalFormat.format(number / 1_000_000.0) + "M"; + return decimalFormat.format(number / 1_000_000.0) + "M"; } else if (number >= 1_000) { return decimalFormat.format(number / 1_000.0) + "k"; } else { @@ -159,8 +153,6 @@ public final class PlaceholderAPIExpansion extends PlaceholderExpansion { } private String formatTime(long seconds) { - if (seconds <= 0) return "Starting Soon!"; - long days = seconds / 86400; seconds %= 86400; long hours = seconds / 3600; @@ -169,11 +161,19 @@ public final class PlaceholderAPIExpansion extends PlaceholderExpansion { seconds %= 60; StringBuilder formattedTime = new StringBuilder(); - if (days > 0) formattedTime.append(days).append("d "); - if (hours > 0 || days > 0) formattedTime.append(hours).append("h "); - if (minutes > 0 || hours > 0 || days > 0) formattedTime.append(minutes).append("m "); - if (seconds > 0 || minutes > 0 || hours > 0 || days > 0) formattedTime.append(seconds).append("s"); + if (days > 0) formattedTime.append(days).append(" days, "); + if (hours > 0 || days > 0) formattedTime.append(hours).append(" hours, "); + if (minutes > 0 || hours > 0 || days > 0) formattedTime.append(minutes).append(" minutes, "); + formattedTime.append(seconds).append(" seconds"); return formattedTime.toString().trim(); } + + public int getPlayerKills(Player player) { + return player.getStatistic(org.bukkit.Statistic.PLAYER_KILLS); + } + + public int getPlayerDeaths(Player player) { + return player.getStatistic(org.bukkit.Statistic.DEATHS); + } } diff --git a/src/main/java/io/github/lncvrt/lncvrtbox/commands/Ping.java b/src/main/java/io/github/lncvrt/lncvrtbox/commands/Ping.java new file mode 100644 index 0000000..efd449e --- /dev/null +++ b/src/main/java/io/github/lncvrt/lncvrtbox/commands/Ping.java @@ -0,0 +1,50 @@ +package io.github.lncvrt.lncvrtbox.commands; + +import io.github.lncvrt.lncvrtbox.LncvrtBox; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + +import static org.bukkit.ChatColor.*; + +public class Ping implements CommandExecutor { + private final LncvrtBox plugin; + + public Ping(LncvrtBox plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + if (sender instanceof Player player) { + String targetName = (args.length > 0 && args[0] != null && !args[0].isEmpty() && !args[0].equals("!")) ? args[0].replaceAll("\\.[^a-zA-Z0-9_]", "").substring(0, Math.min(args[0].replaceAll("[^a-zA-Z0-9_]", "").length(), 16)) : player.getName(); + Player target = player; + + if (!targetName.equalsIgnoreCase(player.getName())) { + target = plugin.getServer().getPlayer(targetName); + if (target == null) { + player.sendMessage(String.format("%s%s%s is not online!", RED, targetName, GRAY)); + return true; + } + } + + targetName = target.getName(); + int ping = target.getPing(); + ChatColor color; + + if (ping < 79) { + color = GREEN; + } else if (ping < 150) { + color = YELLOW; + } else { + color = RED; + } + + player.sendMessage(String.format("%s%s%s's ping is: %s%s%sms", RED, targetName, GRAY, color, ping, GRAY)); + } + return true; + } +} diff --git a/src/main/java/io/github/lncvrt/lncvrtbox/events/BlockPlaceListener.java b/src/main/java/io/github/lncvrt/lncvrtbox/events/BlockPlaceListener.java index 5d534e4..cd87881 100644 --- a/src/main/java/io/github/lncvrt/lncvrtbox/events/BlockPlaceListener.java +++ b/src/main/java/io/github/lncvrt/lncvrtbox/events/BlockPlaceListener.java @@ -1,47 +1,62 @@ package io.github.lncvrt.lncvrtbox.events; -import net.md_5.bungee.api.chat.ClickEvent; -import net.md_5.bungee.api.chat.TextComponent; -import org.bukkit.ChatColor; +import io.github.lncvrt.lncvrtbox.LncvrtBox; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.event.ClickEvent; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.TextDecoration; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockPlaceEvent; - -import static org.bukkit.ChatColor.*; +import org.geysermc.cumulus.form.CustomForm; +import org.geysermc.floodgate.api.player.FloodgatePlayer; public class BlockPlaceListener implements Listener { + private final LncvrtBox plugin; + + public BlockPlaceListener(LncvrtBox plugin) { + this.plugin = plugin; + } @EventHandler public void onBlockPlace(BlockPlaceEvent event) { if (event.getBlockPlaced().getType() == Material.POLISHED_BLACKSTONE_BUTTON) { if (event.getItemInHand().hasItemMeta() && event.getItemInHand().getItemMeta().hasDisplayName()) { - String displayName = ChatColor.stripColor(event.getItemInHand().getItemMeta().getDisplayName()); + String displayName = event.getItemInHand().getItemMeta().getDisplayName(); if (displayName.equalsIgnoreCase("Coal Fragment")) { event.setCancelled(true); } } - } else if (event.getBlockPlaced().getType() == Material.FURNACE || event.getBlockPlaced().getType() == Material.FURNACE_MINECART || event.getBlockPlaced().getType() == Material.BLAST_FURNACE) { + } else if (event.getBlockPlaced().getType() == Material.FURNACE || + event.getBlockPlaced().getType() == Material.FURNACE_MINECART || + event.getBlockPlaced().getType() == Material.BLAST_FURNACE) { Player player = event.getPlayer(); - String message = String.format("%s%s[TIP]%s%s If you are trying to smelt iron, gold, etc you can use the Smelter Shop. Click %s[HERE]%s to teleport to the smelter shop! (if you are on bedrock, instead of clicking there run %s/warp smelter%s.", GREEN, BOLD, RESET, GREEN, UNDERLINE, GREEN, UNDERLINE, GREEN); - TextComponent fullMessage; - int hereIndex = message.indexOf("[HERE]"); + if (plugin.geyserApi.isBedrockPlayer(player.getUniqueId())) { + FloodgatePlayer floodgatePlayer = plugin.floodgateApi.getPlayer(player.getUniqueId()); + floodgatePlayer.sendForm(CustomForm.builder() + .title("Smelter Shop") + .label("If you are trying to smelt iron, gold, etc, you can use the Smelter Shop.") + .toggle("Warp to smelter?") + .validResultHandler(response -> { + if (Boolean.TRUE.equals(response.next())) { + player.performCommand("warp smelter"); + } + }) + .build()); + } else { + Component message = Component.text("[TIP] ", NamedTextColor.GREEN) + .decorate(TextDecoration.BOLD) + .append(Component.text("If you are trying to smelt iron, gold, etc you can use the Smelter Shop. Click ", NamedTextColor.GREEN)) + .append(Component.text("[HERE]", NamedTextColor.GREEN) + .decorate(TextDecoration.UNDERLINED) + .clickEvent(ClickEvent.runCommand("/warp smelter"))) + .append(Component.text(" to teleport to the smelter shop!", NamedTextColor.GREEN)); - TextComponent clickableHere = new TextComponent("[HERE]"); - clickableHere.setColor(net.md_5.bungee.api.ChatColor.GREEN); - clickableHere.setUnderlined(true); - clickableHere.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/warp smelter")); - - TextComponent[] components = new TextComponent[] { - new TextComponent(message.substring(0, hereIndex)), - clickableHere, - new TextComponent(message.substring(hereIndex + "[HERE]".length())) - }; - fullMessage = new TextComponent(components); - - player.spigot().sendMessage(fullMessage); + player.sendMessage(message); + } } } } diff --git a/src/main/java/io/github/lncvrt/lncvrtbox/events/EntityResurrectListener.java b/src/main/java/io/github/lncvrt/lncvrtbox/events/EntityResurrectListener.java index ad844c1..aa3e0eb 100644 --- a/src/main/java/io/github/lncvrt/lncvrtbox/events/EntityResurrectListener.java +++ b/src/main/java/io/github/lncvrt/lncvrtbox/events/EntityResurrectListener.java @@ -1,14 +1,13 @@ package io.github.lncvrt.lncvrtbox.events; import io.github.lncvrt.lncvrtbox.LncvrtBox; +import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityResurrectEvent; -import static org.bukkit.ChatColor.*; - public class EntityResurrectListener implements Listener { private final LncvrtBox plugin; @@ -25,7 +24,7 @@ public class EntityResurrectListener implements Listener { return; } player.setCooldown(Material.TOTEM_OF_UNDYING, 20 * 5); - plugin.getServer().broadcastMessage("%s%sLncvrtBox %s%s» %s%s has popped their totem".formatted(GOLD, BOLD, GRAY, BOLD, RESET, player.getName())); + plugin.getServer().broadcast(MiniMessage.miniMessage().deserialize("LncvrtBox » " + player.getName() + " has popped their totem")); } } } diff --git a/src/main/java/io/github/lncvrt/lncvrtbox/events/PlayerChatListener.java b/src/main/java/io/github/lncvrt/lncvrtbox/events/PlayerChatListener.java index 23b75f6..9fe0672 100644 --- a/src/main/java/io/github/lncvrt/lncvrtbox/events/PlayerChatListener.java +++ b/src/main/java/io/github/lncvrt/lncvrtbox/events/PlayerChatListener.java @@ -6,7 +6,6 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.AsyncPlayerChatEvent; -import org.bukkit.event.player.PlayerChatEvent; import java.util.Base64; @@ -21,40 +20,37 @@ public class PlayerChatListener implements Listener { @EventHandler public void onPlayerChat(AsyncPlayerChatEvent event) { - event.setMessage(event.getMessage().replace("wlc", "welcome").replace("linqverted", "Lncvrt").replace("linqvert", "Lncvrt")); - - if (plugin.chatLocked && !event.getPlayer().hasPermission("chatlock.bypass")) { - event.setCancelled(true); - event.getPlayer().sendMessage("Chat is currently locked. Admins can still view your message."); - for (Player admin : Bukkit.getServer().getOnlinePlayers()) { - if (admin.hasPermission("chatlock.admin")) { - admin.sendMessage("%s%s%s tried to say: %s".formatted(GRAY, ITALIC, event.getPlayer().getName(), event.getMessage())); - } - } - } - } - - @EventHandler - public void onPlayerChat(PlayerChatEvent event) { - String message = event.getMessage().toLowerCase(); + String message = event.getMessage().replaceAll("[^a-zA-Z0-9\\p{Punct}\\s]", "").replaceAll("\\s+", " ").trim(); Player player = event.getPlayer(); String[] slurs = {"bmlnZ2Vy", "bmlnZ2E="}; + event.setMessage(message); + + if (plugin.chatLocked && !player.hasPermission("chatlock.bypass")) { + event.setCancelled(true); + player.sendMessage("Chat is currently locked. Admins can still view your message."); + for (Player admin : Bukkit.getServer().getOnlinePlayers()) { + if (admin.hasPermission("chatlock.admin")) { + admin.sendMessage("%s%s%s tried to say: %s".formatted(GRAY, ITALIC, player.getName(), event.getMessage())); + } + } + } + for (String slur : slurs) { - if (message.contains(new String(Base64.getDecoder().decode(slur)))) { + if (message.toLowerCase().contains(new String(Base64.getDecoder().decode(slur)))) { player.chat("Oops! I'm now banned because I said a slur."); - Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "tempbanip %s 1w Slurs".formatted(player.getName())); - Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "tempban %s 1w Slurs".formatted(player.getName())); - Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "mute %s 1mo Slurs".formatted(player.getName())); + plugin.getServer().dispatchCommand(Bukkit.getConsoleSender(), "tempbanip %s 1w Slurs".formatted(player.getName())); + plugin.getServer().dispatchCommand(Bukkit.getConsoleSender(), "tempban %s 1w Slurs".formatted(player.getName())); + plugin.getServer().dispatchCommand(Bukkit.getConsoleSender(), "mute %s 1mo Slurs".formatted(player.getName())); event.setCancelled(true); break; } } - if (message.contains("chillindabox") || (message.contains("minehut.gg") && !(message.contains("lncvrtboxffa.minehut.gg") || message.contains("lncvrtboxes.minehut.gg")))) { + if (message.toLowerCase().contains("minehut.gg")) { Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "tempbanip %s 1m Advertising".formatted(player.getName())); Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "tempban %s 1m Advertising".formatted(player.getName())); Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "mute %s 3m Advertising".formatted(player.getName())); diff --git a/src/main/java/io/github/lncvrt/lncvrtbox/events/PlayerDeathListener.java b/src/main/java/io/github/lncvrt/lncvrtbox/events/PlayerDeathListener.java index 7656c49..bd4ef80 100644 --- a/src/main/java/io/github/lncvrt/lncvrtbox/events/PlayerDeathListener.java +++ b/src/main/java/io/github/lncvrt/lncvrtbox/events/PlayerDeathListener.java @@ -1,17 +1,13 @@ package io.github.lncvrt.lncvrtbox.events; +import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.PlayerDeathEvent; -import static org.bukkit.ChatColor.*; - public class PlayerDeathListener implements Listener { @EventHandler public void onPlayerDeath(PlayerDeathEvent event) { - String suicideMsg = ""; - if (event.getEntity() == event.getEntity().getKiller()) suicideMsg = "%s (suicide)".formatted(RESET); - - event.setDeathMessage("%s%sLncvrtBox %s%s» %s%s%s".formatted(GOLD, BOLD, GRAY, BOLD, RESET, event.getDeathMessage(), suicideMsg)); + event.deathMessage(MiniMessage.miniMessage().deserialize("LncvrtBox » " + event.getDeathMessage())); } } diff --git a/src/main/java/io/github/lncvrt/lncvrtbox/events/PlayerElytraBoostListener.java b/src/main/java/io/github/lncvrt/lncvrtbox/events/PlayerElytraBoostListener.java deleted file mode 100644 index 5c43a76..0000000 --- a/src/main/java/io/github/lncvrt/lncvrtbox/events/PlayerElytraBoostListener.java +++ /dev/null @@ -1,32 +0,0 @@ -package io.github.lncvrt.lncvrtbox.events; - -import com.destroystokyo.paper.event.player.PlayerElytraBoostEvent; -import com.sk89q.worldedit.bukkit.BukkitAdapter; -import com.sk89q.worldedit.math.BlockVector3; -import com.sk89q.worldguard.WorldGuard; -import com.sk89q.worldguard.protection.ApplicableRegionSet; -import com.sk89q.worldguard.protection.managers.RegionManager; -import com.sk89q.worldguard.protection.regions.ProtectedRegion; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; - -import static org.bukkit.ChatColor.RED; - -public class PlayerElytraBoostListener implements Listener { - @EventHandler - public void onElytraRocketBoost(PlayerElytraBoostEvent event) { - RegionManager regionManager = WorldGuard.getInstance().getPlatform().getRegionContainer().get(BukkitAdapter.adapt(event.getPlayer().getWorld())); - if (regionManager != null) { - BlockVector3 location = BlockVector3.at(event.getPlayer().getLocation().getX(), event.getPlayer().getLocation().getY(), event.getPlayer().getLocation().getZ()); - ApplicableRegionSet applicableRegions = regionManager.getApplicableRegions(location); - for (ProtectedRegion region : applicableRegions) { - if (region.getId().equalsIgnoreCase("event")) { - event.setCancelled(true); - event.getPlayer().setGliding(false); - event.getPlayer().sendMessage(RED + "Elytras are disabled in events."); - break; - } - } - } - } -} diff --git a/src/main/java/io/github/lncvrt/lncvrtbox/events/PlayerMoveListener.java b/src/main/java/io/github/lncvrt/lncvrtbox/events/PlayerMoveListener.java deleted file mode 100644 index 19ebde8..0000000 --- a/src/main/java/io/github/lncvrt/lncvrtbox/events/PlayerMoveListener.java +++ /dev/null @@ -1,34 +0,0 @@ -package io.github.lncvrt.lncvrtbox.events; - -import com.sk89q.worldedit.bukkit.BukkitAdapter; -import com.sk89q.worldedit.math.BlockVector3; -import com.sk89q.worldguard.WorldGuard; -import com.sk89q.worldguard.protection.ApplicableRegionSet; -import com.sk89q.worldguard.protection.managers.RegionManager; -import com.sk89q.worldguard.protection.regions.ProtectedRegion; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerMoveEvent; - -import static org.bukkit.ChatColor.RED; - -public class PlayerMoveListener implements Listener { - @EventHandler - public void onPlayerMove(PlayerMoveEvent event) { - if (event.getPlayer().isGliding()) { - RegionManager regionManager = WorldGuard.getInstance().getPlatform().getRegionContainer().get(BukkitAdapter.adapt(event.getPlayer().getWorld())); - if (regionManager != null) { - BlockVector3 location = BlockVector3.at(event.getPlayer().getLocation().getX(), event.getPlayer().getLocation().getY(), event.getPlayer().getLocation().getZ()); - ApplicableRegionSet applicableRegions = regionManager.getApplicableRegions(location); - for (ProtectedRegion region : applicableRegions) { - if (region.getId().equalsIgnoreCase("event")) { - event.setCancelled(true); - event.getPlayer().setGliding(false); - event.getPlayer().sendMessage(RED + "Elytras are disabled in events."); - break; - } - } - } - } - } -} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 5e9dbdb..7cd96db 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -7,6 +7,8 @@ depend: - Essentials - WorldEdit - WorldGuard + - Geyser-Spigot + - floodgate commands: autocompress: description: Auto compressor @@ -27,6 +29,9 @@ commands: lockchat: description: Lockchat usage: /lockchat + ping: + description: Shows your ping + usage: /ping [player] rules: description: Rules usage: /rules