diff --git a/src/main/java/me/youhavetrouble/notjustnameplates/NJNConfig.java b/src/main/java/me/youhavetrouble/notjustnameplates/NJNConfig.java index 48f6cfc..d6bed72 100644 --- a/src/main/java/me/youhavetrouble/notjustnameplates/NJNConfig.java +++ b/src/main/java/me/youhavetrouble/notjustnameplates/NJNConfig.java @@ -6,6 +6,8 @@ import org.bukkit.Color; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Display; +import org.bukkit.permissions.Permission; +import org.bukkit.permissions.PermissionDefault; import javax.annotation.Nullable; import java.util.HashMap; @@ -20,6 +22,13 @@ public class NJNConfig { protected NJNConfig(NotJustNameplates plugin) { this.plugin = plugin; + + plugin.getServer().getPluginManager().getPermissions().forEach(permission -> { + if (permission.getName().startsWith("notjustnameplates.display.")) { + plugin.getServer().getPluginManager().removePermission(permission); + } + }); + plugin.saveDefaultConfig(); plugin.reloadConfig(); @@ -86,6 +95,8 @@ public class NJNConfig { String backgroundColor = frameSection.getString("background"); displayContent.addFrame(new DisplayFrame(text, colorFromHex(backgroundColor))); }); + Permission permission = new Permission("notjustnameplates.display." + displayContentSection.getName(), "Allows player to use " + displayContentSection.getName() + " nameplate", PermissionDefault.FALSE); + plugin.getServer().getPluginManager().addPermission(permission); return displayContent; } diff --git a/src/main/java/me/youhavetrouble/notjustnameplates/NotJustNameplates.java b/src/main/java/me/youhavetrouble/notjustnameplates/NotJustNameplates.java index 5379930..91e742f 100644 --- a/src/main/java/me/youhavetrouble/notjustnameplates/NotJustNameplates.java +++ b/src/main/java/me/youhavetrouble/notjustnameplates/NotJustNameplates.java @@ -46,26 +46,30 @@ public final class NotJustNameplates extends JavaPlugin { }); if (time % 20 != 0) return; - nameplateManager.getNameplates().forEach(((uuid, nameplate) -> { - Player player = Bukkit.getPlayer(uuid); - if (player == null || !player.isOnline()) return; - for (Map.Entry entry : config.getDisplayContents().entrySet()) { - String id = entry.getKey(); - if (id.equalsIgnoreCase("default")) continue; - if (player.hasPermission("notjustnameplates.display." + id)) { - nameplate.setContent(entry.getValue()); - return; - } - } - nameplate.setContent(config.getDisplayContent("default")); - })); - + updateNameplatesBasedOnPermission(); }, 1, 1); } public void reloadPluginConfig() { config = new NJNConfig(this); nameplateManager.reloadNameplates(); + updateNameplatesBasedOnPermission(); + } + + private void updateNameplatesBasedOnPermission() { + nameplateManager.getNameplates().forEach(((uuid, nameplate) -> { + Player player = Bukkit.getPlayer(uuid); + if (player == null || !player.isOnline()) return; + for (Map.Entry entry : config.getDisplayContents().entrySet()) { + String id = entry.getKey(); + if (id.equalsIgnoreCase("default")) continue; + if (player.hasPermission("notjustnameplates.display." + id)) { + nameplate.setContent(entry.getValue()); + return; + } + } + nameplate.setContent(config.getDisplayContent("default")); + })); } public TeamManager getTeamManager() { diff --git a/src/main/java/me/youhavetrouble/notjustnameplates/nameplates/Nameplate.java b/src/main/java/me/youhavetrouble/notjustnameplates/nameplates/Nameplate.java index 8b69b8e..b3280cd 100644 --- a/src/main/java/me/youhavetrouble/notjustnameplates/nameplates/Nameplate.java +++ b/src/main/java/me/youhavetrouble/notjustnameplates/nameplates/Nameplate.java @@ -81,7 +81,9 @@ public class Nameplate { } public void setContent(@NotNull DisplayContent content) { + if (this.content == content) return; this.content = content; + Bukkit.getScheduler().runTask(NotJustNameplates.getInstance(), this::remove); } public void setAlignment(@NotNull TextDisplay.TextAlignment alignment) {