Browse Source

Add permission node 'mcmmo.broadcast.levelup' for level up broadcasts

nossr50 4 years ago
parent
commit
80a1b3949e

+ 5 - 0
Changelog.txt

@@ -1,4 +1,5 @@
 Version 2.1.172
 Version 2.1.172
+    Added 'mcmmo.broadcast.levelup' permission node, if a player lacks this node they will not have their level up milestones broadcast to chat
     Updated german locale (thanks TheBusyBiscuit)
     Updated german locale (thanks TheBusyBiscuit)
     Changed Fists to not be capitalized (en_US) when lowering/readying berserk
     Changed Fists to not be capitalized (en_US) when lowering/readying berserk
     SkillActivationPerkEvent can now be called in async threads (thanks electronicboy)
     SkillActivationPerkEvent can now be called in async threads (thanks electronicboy)
@@ -6,6 +7,10 @@ Version 2.1.172
     Added 'Skills.Woodcutting.TreeFeller.Knock_On_Wood.Add_XP_Orbs_To_Drops' to advanced.yml
     Added 'Skills.Woodcutting.TreeFeller.Knock_On_Wood.Add_XP_Orbs_To_Drops' to advanced.yml
     Removed a few never implemented settings from Skills.Woodcutting.TreeFeller in advanced.yml
     Removed a few never implemented settings from Skills.Woodcutting.TreeFeller in advanced.yml
 
 
+    NOTES:
+    The new 'mcmmo.broadcast.levelup' node is a default node included under the 'mcmmo.defaults' node umbrella, you shouldn't have to give this to your players unless they don't have access to 'mcmmo.defaults'
+    If you don't have a permission plugin you don't need to worry, players will have this node by default in that case
+
 Version 2.1.171
 Version 2.1.171
     Fixed a bug where arrows shot by infinite bow enchant would duplicate
     Fixed a bug where arrows shot by infinite bow enchant would duplicate
     Fixed a bug where Archery XP would calculate incorrectly
     Fixed a bug where Archery XP would calculate incorrectly

+ 1 - 0
src/main/java/com/gmail/nossr50/util/Permissions.java

@@ -25,6 +25,7 @@ public final class Permissions {
      * GENERAL
      * GENERAL
      */
      */
     public static boolean motd(Permissible permissible) { return permissible.hasPermission("mcmmo.motd"); }
     public static boolean motd(Permissible permissible) { return permissible.hasPermission("mcmmo.motd"); }
+    public static boolean levelUpBroadcast(Permissible permissible) { return permissible.hasPermission("mcmmo.broadcast.levelup"); }
     public static boolean mobHealthDisplay(Permissible permissible) { return permissible.hasPermission("mcmmo.mobhealthdisplay"); }
     public static boolean mobHealthDisplay(Permissible permissible) { return permissible.hasPermission("mcmmo.mobhealthdisplay"); }
     public static boolean updateNotifications(Permissible permissible) {return permissible.hasPermission("mcmmo.tools.updatecheck"); }
     public static boolean updateNotifications(Permissible permissible) {return permissible.hasPermission("mcmmo.tools.updatecheck"); }
     public static boolean chimaeraWing(Permissible permissible) { return permissible.hasPermission("mcmmo.item.chimaerawing"); }
     public static boolean chimaeraWing(Permissible permissible) { return permissible.hasPermission("mcmmo.item.chimaerawing"); }

+ 6 - 1
src/main/java/com/gmail/nossr50/util/player/NotificationManager.java

@@ -272,13 +272,18 @@ public class NotificationManager {
 
 
         //Check if broadcasting is enabled
         //Check if broadcasting is enabled
         if(Config.getInstance().shouldLevelUpBroadcasts()) {
         if(Config.getInstance().shouldLevelUpBroadcasts()) {
+            //Permission check
+            if(!Permissions.levelUpBroadcast(mmoPlayer.getPlayer())) {
+                return;
+            }
+
             int levelInterval = Config.getInstance().getLevelUpBroadcastInterval();
             int levelInterval = Config.getInstance().getLevelUpBroadcastInterval();
             int remainder = level % levelInterval;
             int remainder = level % levelInterval;
 
 
             if(remainder == 0) {
             if(remainder == 0) {
                 //Grab appropriate audience
                 //Grab appropriate audience
                 Audience audience = mcMMO.getAudiences().filter(getLevelUpBroadcastPredicate(mmoPlayer.getPlayer()));
                 Audience audience = mcMMO.getAudiences().filter(getLevelUpBroadcastPredicate(mmoPlayer.getPlayer()));
-                //TODO: Make prettier+
+                //TODO: Make prettier
                 HoverEvent<Component> levelMilestoneHover = Component.text(mmoPlayer.getPlayer().getName())
                 HoverEvent<Component> levelMilestoneHover = Component.text(mmoPlayer.getPlayer().getName())
                         .append(Component.newline())
                         .append(Component.newline())
                         .append(Component.text(LocalDate.now().toString()))
                         .append(Component.text(LocalDate.now().toString()))

+ 3 - 0
src/main/resources/plugin.yml

@@ -195,6 +195,7 @@ permissions:
             mcmmo.motd: true
             mcmmo.motd: true
             mcmmo.skills.all: true
             mcmmo.skills.all: true
             mcmmo.chat.colors: true
             mcmmo.chat.colors: true
+            mcmmo.broadcast.levelup: true
     mcmmo.defaultsop:
     mcmmo.defaultsop:
         default: op
         default: op
         description: mcmmo permissions that default to op
         description: mcmmo permissions that default to op
@@ -219,6 +220,8 @@ permissions:
             mcmmo.defaultsop: true
             mcmmo.defaultsop: true
             mcmmo.party.all: true
             mcmmo.party.all: true
             mcmmo.perks.all: true
             mcmmo.perks.all: true
+    mcmmo.broadcast.levelup:
+        description: when the player reaches certain level milestones their achievement will be broadcast in chat to other plays
     mcmmo.ability.*:
     mcmmo.ability.*:
         default: false
         default: false
         description: Implies all mcmmo.ability permissions.
         description: Implies all mcmmo.ability permissions.