From 82032dbbbc37b05e7cf0e8717ed0bcc47dd3755e Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Fri, 23 Jun 2023 20:22:15 +0200 Subject: [PATCH] Makes some 1.20 changes Updates spigot version Updates depreciated sign code Adds a new permission for editing waxed signs --- README.md | 12 +++++++----- pom.xml | 4 ++-- .../placeholdersigns/PlaceholderSigns.java | 7 ++++--- .../listener/SignClickListener.java | 18 +++++++++++++----- src/main/resources/plugin.yml | 11 ++++++++++- 5 files changed, 36 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index b17339c..3293e49 100644 --- a/README.md +++ b/README.md @@ -23,8 +23,10 @@ won't be changed unless the player passes all world protection checks. ## Permissions -| Permission | Description | -|------------------------------|---------------------------------------------------------------------------------------------------------------| -| placeholdersigns.* | Gives all permissions. | -| placeholdersigns.edit | Allows the use of the /editSign command. | -| placeholdersigns.placeholder | Allows a player to make signs containing placeholders. Without this, placeholders are treated as normal text. | \ No newline at end of file +| Permission | Description | +|------------------------------------|---------------------------------------------------------------------------------------------------------------| +| placeholdersigns.* | Gives all permissions. | +| placeholdersigns.edit | Allows unrestricted use of the /editSign command. | +| placeholdersigns.edit.use | Allows use of the /editSign command. | +| placeholdersigns.edit.bypass-waxed | Allows use of the /editSign command on a waxed sign. | +| placeholdersigns.placeholder | Allows a player to make signs containing placeholders. Without this, placeholders are treated as normal text. | \ No newline at end of file diff --git a/pom.xml b/pom.xml index 0518aa9..de85bc8 100644 --- a/pom.xml +++ b/pom.xml @@ -62,7 +62,7 @@ https://oss.sonatype.org/content/groups/public/ - placeholderapi + placeholder-api https://repo.extendedclip.com/content/repositories/placeholderapi/ @@ -82,7 +82,7 @@ org.spigotmc spigot-api - 1.19.4-R0.1-SNAPSHOT + 1.20.1-R0.1-SNAPSHOT provided diff --git a/src/main/java/net/knarcraft/placeholdersigns/PlaceholderSigns.java b/src/main/java/net/knarcraft/placeholdersigns/PlaceholderSigns.java index 81aada3..e8ef9f9 100644 --- a/src/main/java/net/knarcraft/placeholdersigns/PlaceholderSigns.java +++ b/src/main/java/net/knarcraft/placeholdersigns/PlaceholderSigns.java @@ -12,6 +12,7 @@ import net.knarcraft.placeholdersigns.util.ColorHelper; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.block.Sign; +import org.bukkit.block.sign.Side; import org.bukkit.command.PluginCommand; import org.bukkit.configuration.serialization.ConfigurationSerialization; import org.bukkit.entity.Player; @@ -130,10 +131,10 @@ public final class PlaceholderSigns extends JavaPlugin { // Update placeholders Map placeholders = placeholderSign.placeholders(); - String[] lines = sign.getLines(); + String[] lines = sign.getSide(Side.FRONT).getLines(); boolean updateRequired = false; for (int i = 0; i < lines.length; i++) { - String oldText = sign.getLine(i); + String oldText = sign.getSide(Side.FRONT).getLine(i); // The new text of the sign is either the same, or the original placeholder String newText; @@ -148,7 +149,7 @@ public final class PlaceholderSigns extends JavaPlugin { // Only change the line if the text has changed if (!newText.equals(oldText)) { - sign.setLine(i, newText); + sign.getSide(Side.FRONT).setLine(i, newText); updateRequired = true; } } diff --git a/src/main/java/net/knarcraft/placeholdersigns/listener/SignClickListener.java b/src/main/java/net/knarcraft/placeholdersigns/listener/SignClickListener.java index 33e757c..26c3d6f 100644 --- a/src/main/java/net/knarcraft/placeholdersigns/listener/SignClickListener.java +++ b/src/main/java/net/knarcraft/placeholdersigns/listener/SignClickListener.java @@ -3,8 +3,11 @@ package net.knarcraft.placeholdersigns.listener; import net.knarcraft.placeholdersigns.PlaceholderSigns; import net.knarcraft.placeholdersigns.container.LineChangeRequest; import net.knarcraft.placeholdersigns.util.ColorHelper; +import net.md_5.bungee.api.ChatColor; import org.bukkit.Bukkit; import org.bukkit.block.Sign; +import org.bukkit.block.sign.Side; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; @@ -24,18 +27,23 @@ public class SignClickListener implements Listener { return; } + Player player = event.getPlayer(); + if (sign.isWaxed() && !player.hasPermission("placeholdersigns.edit.bypass-waxed")) { + player.sendMessage(ChatColor.RED + "You do not have the necessary permissions to edit a waxed sign."); + return; + } // Check if the player has run the /editSign command - LineChangeRequest request = PlaceholderSigns.getInstance().getChangeRequest(event.getPlayer()); + LineChangeRequest request = PlaceholderSigns.getInstance().getChangeRequest(player); if (request == null) { return; } - String[] lines = sign.getLines(); + String[] lines = sign.getSide(Side.FRONT).getLines(); lines[request.line()] = request.text(); // Run the sign change event to allow protection plugins to cancel, and allow the sign text listener to trigger - SignChangeEvent changeEvent = new SignChangeEvent(event.getClickedBlock(), event.getPlayer(), lines); + SignChangeEvent changeEvent = new SignChangeEvent(event.getClickedBlock(), player, lines, Side.FRONT); Bukkit.getPluginManager().callEvent(changeEvent); if (changeEvent.isCancelled()) { return; @@ -44,11 +52,11 @@ public class SignClickListener implements Listener { // Update the sign with the new text String[] finalLines = changeEvent.getLines(); for (int i = 0; i < finalLines.length; i++) { - sign.setLine(i, ColorHelper.translateAllColorCodes(finalLines[i])); + sign.getSide(Side.FRONT).setLine(i, ColorHelper.translateAllColorCodes(finalLines[i])); } sign.update(); - event.getPlayer().sendMessage("The sign line was successfully changed."); + player.sendMessage("The sign line was successfully changed."); } } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 5d4c110..cdffed0 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,7 +1,7 @@ name: PlaceholderSigns version: '${project.version}' main: net.knarcraft.placeholdersigns.PlaceholderSigns -api-version: 1.19 +api-version: '1.20' depend: - PlaceholderAPI @@ -18,8 +18,17 @@ permissions: - placeholdersigns.placeholder default: op placeholdersigns.edit: + description: Allows a player to use the /editSign command without restriction + default: false + children: + - placeholdersigns.edit.use + - placeholdersigns.edit.bypass-waxed + placeholdersigns.edit.use: description: Allows a player to use the /editSign command default: false + placeholdersigns.edit.bypass-waxed: + description: Allows a player to use the /editSign command on a waxed sign + default: false placeholdersigns.placeholder: description: Allows a player to make signs containing placeholders default: false \ No newline at end of file