add flair config options

This commit is contained in:
cswhite2000 2017-07-24 22:32:42 -07:00
parent 1d0adf7283
commit ddf4eb5255
8 changed files with 56 additions and 12 deletions

View File

@ -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);

View File

@ -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;

View File

@ -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);
}
}

View File

@ -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);
}

View File

@ -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<Skin, Integer> 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) {

View File

@ -9,7 +9,10 @@ restart:
# Nicknames
nicks:
enabled: true
flairs:
overhead-flair: false
max-flairs: -1
# AFK auto-kicker
afk:

View File

@ -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;

View File

@ -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;
}