From ddf4eb5255b44a0d171c6eb71e82a1fea2e7dc99 Mon Sep 17 00:00:00 2001 From: cswhite2000 <18whitechristop@gmail.com> Date: Mon, 24 Jul 2017 22:32:42 -0700 Subject: [PATCH] add flair config options --- .../commons/bukkit/CommonsBukkitManifest.java | 2 ++ .../commons/bukkit/chat/FullNameRenderer.java | 1 + .../bukkit/flairs/FlairConfiguration.java | 25 +++++++++++++++++++ .../{chat => flairs}/FlairRenderer.java | 14 +++++++++-- .../bukkit/nick/PlayerAppearanceChanger.java | 14 ++++++----- Commons/bukkit/src/main/resources/config.yml | 3 +++ PGM/src/main/java/tc/oc/pgm/PGMManifest.java | 2 +- .../tc/oc/pgm/chat/MatchFlairRenderer.java | 7 +++--- 8 files changed, 56 insertions(+), 12 deletions(-) create mode 100644 Commons/bukkit/src/main/java/tc/oc/commons/bukkit/flairs/FlairConfiguration.java rename Commons/bukkit/src/main/java/tc/oc/commons/bukkit/{chat => flairs}/FlairRenderer.java (74%) diff --git a/Commons/bukkit/src/main/java/tc/oc/commons/bukkit/CommonsBukkitManifest.java b/Commons/bukkit/src/main/java/tc/oc/commons/bukkit/CommonsBukkitManifest.java index 698d559..8d86f7f 100644 --- a/Commons/bukkit/src/main/java/tc/oc/commons/bukkit/CommonsBukkitManifest.java +++ b/Commons/bukkit/src/main/java/tc/oc/commons/bukkit/CommonsBukkitManifest.java @@ -27,6 +27,7 @@ import tc.oc.commons.bukkit.chat.UserTextComponentRenderer; import tc.oc.commons.bukkit.commands.*; import tc.oc.commons.bukkit.debug.LeakListener; import tc.oc.commons.bukkit.event.targeted.TargetedEventManifest; +import tc.oc.commons.bukkit.flairs.FlairConfiguration; import tc.oc.commons.bukkit.format.ServerFormatter; import tc.oc.commons.bukkit.freeze.PlayerFreezer; import tc.oc.commons.bukkit.inject.BukkitPluginManifest; @@ -120,6 +121,7 @@ public final class CommonsBukkitManifest extends HybridManifest { expose(TicketDisplay.class); expose(TicketListener.class); + bindAndExpose(FlairConfiguration.class); bindAndExpose(PlayerAppearanceChanger.class); bindAndExpose(UserFinder.class); bindAndExpose(Teleporter.class); diff --git a/Commons/bukkit/src/main/java/tc/oc/commons/bukkit/chat/FullNameRenderer.java b/Commons/bukkit/src/main/java/tc/oc/commons/bukkit/chat/FullNameRenderer.java index 35e25f4..b9f8565 100644 --- a/Commons/bukkit/src/main/java/tc/oc/commons/bukkit/chat/FullNameRenderer.java +++ b/Commons/bukkit/src/main/java/tc/oc/commons/bukkit/chat/FullNameRenderer.java @@ -3,6 +3,7 @@ package tc.oc.commons.bukkit.chat; import javax.inject.Inject; import net.md_5.bungee.api.chat.BaseComponent; +import tc.oc.commons.bukkit.flairs.FlairRenderer; import tc.oc.commons.bukkit.nick.Identity; import tc.oc.commons.bukkit.nick.UsernameRenderer; import tc.oc.commons.core.chat.Component; diff --git a/Commons/bukkit/src/main/java/tc/oc/commons/bukkit/flairs/FlairConfiguration.java b/Commons/bukkit/src/main/java/tc/oc/commons/bukkit/flairs/FlairConfiguration.java new file mode 100644 index 0000000..d027835 --- /dev/null +++ b/Commons/bukkit/src/main/java/tc/oc/commons/bukkit/flairs/FlairConfiguration.java @@ -0,0 +1,25 @@ +package tc.oc.commons.bukkit.flairs; + +import org.bukkit.configuration.Configuration; +import org.bukkit.configuration.ConfigurationSection; +import javax.inject.Inject; + +import static com.google.common.base.Preconditions.checkNotNull; + +public class FlairConfiguration { + + private final ConfigurationSection config; + + @Inject + FlairConfiguration(Configuration config) { + this.config = checkNotNull(config.getConfigurationSection("flairs")); + } + + public boolean overheadFlair() { + return config.getBoolean("overhead-flair", false); + } + + public int maxFlairs() { + return config.getInt("max-flairs", -1); + } +} diff --git a/Commons/bukkit/src/main/java/tc/oc/commons/bukkit/chat/FlairRenderer.java b/Commons/bukkit/src/main/java/tc/oc/commons/bukkit/flairs/FlairRenderer.java similarity index 74% rename from Commons/bukkit/src/main/java/tc/oc/commons/bukkit/chat/FlairRenderer.java rename to Commons/bukkit/src/main/java/tc/oc/commons/bukkit/flairs/FlairRenderer.java index f6cbe88..67dd2a0 100644 --- a/Commons/bukkit/src/main/java/tc/oc/commons/bukkit/chat/FlairRenderer.java +++ b/Commons/bukkit/src/main/java/tc/oc/commons/bukkit/flairs/FlairRenderer.java @@ -1,5 +1,7 @@ -package tc.oc.commons.bukkit.chat; +package tc.oc.commons.bukkit.flairs; +import java.util.ArrayList; +import java.util.Collections; import java.util.Set; import java.util.stream.Stream; import javax.inject.Inject; @@ -10,6 +12,9 @@ import net.md_5.bungee.api.chat.BaseComponent; import tc.oc.api.bukkit.users.BukkitUserStore; import tc.oc.api.docs.virtual.UserDoc; import tc.oc.api.minecraft.MinecraftService; +import tc.oc.commons.bukkit.chat.NameFlag; +import tc.oc.commons.bukkit.chat.NameType; +import tc.oc.commons.bukkit.chat.PartialNameRenderer; import tc.oc.commons.bukkit.nick.Identity; import tc.oc.commons.core.chat.Components; @@ -21,10 +26,12 @@ public class FlairRenderer implements PartialNameRenderer { private final MinecraftService minecraftService; private final BukkitUserStore userStore; + private final FlairConfiguration flairConfiguration; - @Inject protected FlairRenderer(MinecraftService minecraftService, BukkitUserStore userStore) { + @Inject protected FlairRenderer(MinecraftService minecraftService, BukkitUserStore userStore, FlairConfiguration flairConfiguration) { this.minecraftService = minecraftService; this.userStore = userStore; + this.flairConfiguration = flairConfiguration; } @Override @@ -53,6 +60,9 @@ public class FlairRenderer implements PartialNameRenderer { return user.minecraft_flair() .stream() .filter(flair -> realms.contains(flair.realm)) + .sorted((flair1, flair2) -> flair1.priority - flair2.priority) + .limit(flairConfiguration.maxFlairs() < 0 ? Long.MAX_VALUE : flairConfiguration.maxFlairs()) + .sorted((flair1, flair2) -> flair2.priority - flair1.priority) .map(flair -> flair.text); } diff --git a/Commons/bukkit/src/main/java/tc/oc/commons/bukkit/nick/PlayerAppearanceChanger.java b/Commons/bukkit/src/main/java/tc/oc/commons/bukkit/nick/PlayerAppearanceChanger.java index 73c4727..7970de1 100644 --- a/Commons/bukkit/src/main/java/tc/oc/commons/bukkit/nick/PlayerAppearanceChanger.java +++ b/Commons/bukkit/src/main/java/tc/oc/commons/bukkit/nick/PlayerAppearanceChanger.java @@ -10,7 +10,8 @@ import org.bukkit.Skin; import org.bukkit.entity.Player; import org.bukkit.scoreboard.Scoreboard; import org.bukkit.scoreboard.Team; -import tc.oc.commons.bukkit.chat.FlairRenderer; +import tc.oc.commons.bukkit.flairs.FlairConfiguration; +import tc.oc.commons.bukkit.flairs.FlairRenderer; import tc.oc.commons.bukkit.chat.FullNameRenderer; import tc.oc.commons.bukkit.chat.NameStyle; import tc.oc.commons.bukkit.chat.NameType; @@ -30,7 +31,7 @@ public class PlayerAppearanceChanger { private static final NameType NICKNAME_TYPE = new NameType(NameStyle.VERBOSE, true, false, false, false, false); private final IdentityProvider identityProvider; - private final NicknameConfiguration config; + private final FlairConfiguration flairConfig; private final Scheduler scheduler; private final FullNameRenderer nameRenderer; private final UsernameRenderer usernameRenderer; @@ -39,9 +40,9 @@ public class PlayerAppearanceChanger { private final Cache skinPool; @Inject - PlayerAppearanceChanger(IdentityProvider identityProvider, NicknameConfiguration config, Scheduler scheduler, FullNameRenderer nameRenderer, UsernameRenderer usernameRenderer, FlairRenderer flairRenderer) { + PlayerAppearanceChanger(IdentityProvider identityProvider, FlairConfiguration flairConfig, Scheduler scheduler, FullNameRenderer nameRenderer, UsernameRenderer usernameRenderer, FlairRenderer flairRenderer) { this.identityProvider = identityProvider; - this.config = config; + this.flairConfig = flairConfig; this.scheduler = scheduler; this.nameRenderer = nameRenderer; this.usernameRenderer = usernameRenderer; @@ -73,7 +74,7 @@ public class PlayerAppearanceChanger { refreshFakeNameAndSkin(player, identity, legacyNickname, viewer); } - if(config.overheadFlair()) { + if(flairConfig.overheadFlair()) { String prefix = usernameRenderer.getColor(identity, REAL_NAME_TYPE).toString(); if(identity.getNickname() == null) { prefix = flairRenderer.getLegacyName(identity, REAL_NAME_TYPE) + prefix; @@ -97,7 +98,8 @@ public class PlayerAppearanceChanger { */ public void cleanupAfterPlayer(Player player) { skinPool.put(player.getRealSkin(), flairRenderer.getNumberOfFlairs(identityProvider.createIdentity(player))); - if(config.overheadFlair()) { + + if(flairConfig.overheadFlair()) { // Remove players from their "overhead flair team" on quit final Team team = player.getServer().getScoreboardManager().getMainScoreboard().getPlayerTeam(player); if(team != null) { diff --git a/Commons/bukkit/src/main/resources/config.yml b/Commons/bukkit/src/main/resources/config.yml index 96d4afb..928dcea 100644 --- a/Commons/bukkit/src/main/resources/config.yml +++ b/Commons/bukkit/src/main/resources/config.yml @@ -9,7 +9,10 @@ restart: # Nicknames nicks: enabled: true + +flairs: overhead-flair: false + max-flairs: -1 # AFK auto-kicker afk: diff --git a/PGM/src/main/java/tc/oc/pgm/PGMManifest.java b/PGM/src/main/java/tc/oc/pgm/PGMManifest.java index 50b3a72..1de1f26 100644 --- a/PGM/src/main/java/tc/oc/pgm/PGMManifest.java +++ b/PGM/src/main/java/tc/oc/pgm/PGMManifest.java @@ -1,6 +1,6 @@ package tc.oc.pgm; -import tc.oc.commons.bukkit.chat.FlairRenderer; +import tc.oc.commons.bukkit.flairs.FlairRenderer; import tc.oc.commons.bukkit.nick.UsernameRenderer; import tc.oc.commons.core.inject.HybridManifest; import tc.oc.commons.core.plugin.PluginFacetBinder; diff --git a/PGM/src/main/java/tc/oc/pgm/chat/MatchFlairRenderer.java b/PGM/src/main/java/tc/oc/pgm/chat/MatchFlairRenderer.java index 6a3a17c..ca4cf53 100644 --- a/PGM/src/main/java/tc/oc/pgm/chat/MatchFlairRenderer.java +++ b/PGM/src/main/java/tc/oc/pgm/chat/MatchFlairRenderer.java @@ -6,7 +6,8 @@ import javax.inject.Singleton; import net.md_5.bungee.api.ChatColor; import tc.oc.api.bukkit.users.BukkitUserStore; import tc.oc.api.minecraft.MinecraftService; -import tc.oc.commons.bukkit.chat.FlairRenderer; +import tc.oc.commons.bukkit.flairs.FlairConfiguration; +import tc.oc.commons.bukkit.flairs.FlairRenderer; import tc.oc.commons.bukkit.chat.NameFlag; import tc.oc.commons.bukkit.chat.NameType; import tc.oc.commons.bukkit.nick.Identity; @@ -23,8 +24,8 @@ public class MatchFlairRenderer extends FlairRenderer { private final MatchManager matchManager; - @Inject MatchFlairRenderer(MinecraftService minecraftService, BukkitUserStore userStore, MatchManager matchManager) { - super(minecraftService, userStore); + @Inject MatchFlairRenderer(MinecraftService minecraftService, BukkitUserStore userStore, MatchManager matchManager, FlairConfiguration flairConfiguration) { + super(minecraftService, userStore, flairConfiguration); this.matchManager = matchManager; }