diff --git a/docs/source/changelog/v1.8.rst b/docs/source/changelog/v1.8.rst index bace249..8a1825a 100644 --- a/docs/source/changelog/v1.8.rst +++ b/docs/source/changelog/v1.8.rst @@ -17,10 +17,13 @@ Additions ``~~strikethrough~~`` * `Spec Confirm`_ - Updates the TP confirmation to allow for a configurable list of commands +* `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 .. _Spec Confirm: https://git.etztech.xyz/24CarrotCraft/QoL/pulls/39 +.. _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 7633ebd..6137788 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 86a84ad..16d55d5 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -99,3 +99,11 @@ spec-confirm: - "tp" - "checkup" - "lagg tpchunk" + +# 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 6d38deb..3e54995 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