From 6d73df72a31b306154051d28911b311b3c27132e Mon Sep 17 00:00:00 2001 From: Etzelia Date: Sat, 5 Oct 2019 04:14:28 +0200 Subject: [PATCH] Dynmap Link Command (#40) --- docs/source/changelog/v1.8.rst | 3 + docs/source/commands.rst | 2 +- docs/source/permissions.rst | 2 + src/main/java/xyz/etztech/qol/QoL.java | 2 + .../qol/commands/DynmapLinkCommand.java | 58 +++++++++++++++++++ src/main/resources/config.yml | 8 +++ src/main/resources/plugin.yml | 6 ++ 7 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 src/main/java/xyz/etztech/qol/commands/DynmapLinkCommand.java diff --git a/docs/source/changelog/v1.8.rst b/docs/source/changelog/v1.8.rst index 4aa1f0a..e120974 100644 --- a/docs/source/changelog/v1.8.rst +++ b/docs/source/changelog/v1.8.rst @@ -16,8 +16,11 @@ Additions ``**bold**`` |br| ``~~strikethrough~~`` +* `Dynmap Link Command`_ - Allows a user to get a link to dynmap pointing to their current location + .. _Checkup Command: https://git.etztech.xyz/24CarrotCraft/QoL/pulls/33 .. _Discord Syntax: https://git.etztech.xyz/24CarrotCraft/QoL/pulls/36 +.. _Dynmap Link Command: https://git.etztech.xyz/24CarrotCraft/QoL/pulls/40 Bug Fixes --------- diff --git a/docs/source/commands.rst b/docs/source/commands.rst index b3210e3..9267bf1 100644 --- a/docs/source/commands.rst +++ b/docs/source/commands.rst @@ -43,4 +43,4 @@ Alias ``/names`` and ``/name`` ``/checkup `` Start a checkup, teleporting to all online players. - +``/dynmaplink [] []`` Get a link to Dynmap with your current location. Optionally choose the map (flat, surface, etc.) and zoom level. diff --git a/docs/source/permissions.rst b/docs/source/permissions.rst index 9755d33..1f3ba41 100644 --- a/docs/source/permissions.rst +++ b/docs/source/permissions.rst @@ -40,6 +40,8 @@ Permissions ``qol.karattrophy`` - Ability to use the Karat Trophy command +``qol.dynmaplink`` - Ability to use the Dynmap Link command + ``qol.deathmute`` - Ability to use the Death Mute command ``qol.griefalert`` - Receive GriefAlert alerts diff --git a/src/main/java/xyz/etztech/qol/QoL.java b/src/main/java/xyz/etztech/qol/QoL.java index a6eda57..a580e4e 100644 --- a/src/main/java/xyz/etztech/qol/QoL.java +++ b/src/main/java/xyz/etztech/qol/QoL.java @@ -107,6 +107,8 @@ public class QoL extends JavaPlugin { this.getCommand("karattrophy").setExecutor(karatTrophyCommand); CheckupCommand checkupCommand = new CheckupCommand(this); this.getCommand("checkup").setExecutor(checkupCommand); + DynmapLinkCommand dynmapLinkCommand = new DynmapLinkCommand(this); + this.getCommand("dynmaplink").setExecutor(dynmapLinkCommand); if (getConfig().getStringList("list").size() > 0) { ListCommand listCommand = new ListCommand(this); diff --git a/src/main/java/xyz/etztech/qol/commands/DynmapLinkCommand.java b/src/main/java/xyz/etztech/qol/commands/DynmapLinkCommand.java new file mode 100644 index 0000000..b6b9903 --- /dev/null +++ b/src/main/java/xyz/etztech/qol/commands/DynmapLinkCommand.java @@ -0,0 +1,58 @@ +package xyz.etztech.qol.commands; + +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.chat.ClickEvent; +import net.md_5.bungee.api.chat.TextComponent; +import org.bukkit.Location; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import xyz.etztech.qol.EtzTechUtil; +import xyz.etztech.qol.Lang; +import xyz.etztech.qol.QoL; + +public class DynmapLinkCommand implements CommandExecutor { + + QoL plugin; + + public DynmapLinkCommand(QoL plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender commandSender, Command command, String s, String[] args) { + if (!( commandSender instanceof Player)) { + EtzTechUtil.sms(commandSender, Lang.NO_CONSOLE.getDef()); + return true; + } + + Player player = (Player) commandSender; + + String base = plugin.getConfig().getString("dynmap.url", ""); + String defaultMap = plugin.getConfig().getString("dynmap.defaults.map", "surface"); + String defaultZoom = String.valueOf(plugin.getConfig().getInt("dynmap.defaults.zoom", 5)); + + TextComponent message; + if (base.trim().length() > 0) { + String world = player.getWorld().getName(); + Location location = player.getLocation(); + String x = String.valueOf(location.getX()); + String y = String.valueOf(location.getY()); + String z = String.valueOf(location.getZ()); + String map = args.length > 0 ? args[0] : defaultMap; + String zoom = args.length > 1 ? args[1] : defaultZoom; + String url = String.format("%s?worldname=%s&mapname=%s&zoom=%s&x=%s&y=%s&z=%s", base, world, map, zoom, x, y, z); + message = new TextComponent("Click here to see your location on Dynmap."); + message.setColor(ChatColor.YELLOW); + message.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, url)); + } else { + message = new TextComponent("This command is currently disabled or the server has no Dynmap!"); + message.setColor(ChatColor.RED); + } + player.spigot().sendMessage(message); + + return true; + } +} + diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index aaa9b13..4d15912 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -93,3 +93,11 @@ disable-fire: # Overrides view distance per world, format is [World Name]: [View Distance] view-distances: world: 2 + +# Dynmap link +# Leave url blank to disable +dynmap: + url: "" + defaults: + map: "surface" + zoom: 5 diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index ce6acc7..5dbc176 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -45,6 +45,9 @@ commands: aliases: [trophy] checkup: description: Checkup command + dynmaplink: + description: Dynmap Link command + aliases: [dlink] permissions: qol.admin: description: Ability to reload the plugin @@ -85,6 +88,9 @@ permissions: qol.checkup: description: Ability to use the Checkup Command default: op + qol.dynmaplink: + description: Ability to use the Dynmap Link Command + default: op qol.auditable: description: Audits command usage default: op