From 4071fc130d4fdcd778af5e81f76934fdfe47af0c Mon Sep 17 00:00:00 2001 From: Jaime Martinez Rincon Date: Wed, 9 Aug 2017 20:53:31 +0200 Subject: [PATCH] Some more progress, really want to this this out... --- .../playerbalancer/PlayerBalancer.java | 7 ++- .../commands/FallbackCommand.java | 49 ++++++++++++------- .../commands/ManageCommand.java | 1 - .../settings/SettingsProvider.java | 2 +- .../settings/beans/CommandBean.java | 3 ++ .../settings/beans/SectionHandler.java | 2 + ...Properties.java => MessageProperties.java} | 2 +- .../settings/types/SectionsHolder.java | 2 +- .../playerbalancer/utils/MessageUtils.java | 10 ++-- 9 files changed, 49 insertions(+), 29 deletions(-) rename src/main/java/com/jaimemartz/playerbalancer/settings/types/{MessagesProperties.java => MessageProperties.java} (95%) diff --git a/src/main/java/com/jaimemartz/playerbalancer/PlayerBalancer.java b/src/main/java/com/jaimemartz/playerbalancer/PlayerBalancer.java index 7d8abc3..a0987db 100644 --- a/src/main/java/com/jaimemartz/playerbalancer/PlayerBalancer.java +++ b/src/main/java/com/jaimemartz/playerbalancer/PlayerBalancer.java @@ -13,10 +13,8 @@ import com.jaimemartz.playerbalancer.ping.StatusManager; import com.jaimemartz.playerbalancer.section.SectionManager; import com.jaimemartz.playerbalancer.settings.Settings; import com.jaimemartz.playerbalancer.settings.SettingsProvider; -import com.jaimemartz.playerbalancer.settings.types.CheckerProperties; -import com.jaimemartz.playerbalancer.settings.types.CommandProperties; -import com.jaimemartz.playerbalancer.settings.types.GeneralProperties; -import com.jaimemartz.playerbalancer.settings.types.ReconnectorProperties; +import com.jaimemartz.playerbalancer.settings.beans.SectionHandler; +import com.jaimemartz.playerbalancer.settings.types.*; import lombok.Getter; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.plugin.Command; @@ -56,6 +54,7 @@ public class PlayerBalancer extends Plugin { injector.registerProvider(Settings.class, SettingsProvider.class); settings = injector.getSingleton(Settings.class); + injector.register(SectionHandler.class, settings.getProperty(SectionsHolder.SECTION_HOLDER)); Metrics metrics = new Metrics(this); if (this.enable()) { diff --git a/src/main/java/com/jaimemartz/playerbalancer/commands/FallbackCommand.java b/src/main/java/com/jaimemartz/playerbalancer/commands/FallbackCommand.java index 29a4d7d..18181f0 100644 --- a/src/main/java/com/jaimemartz/playerbalancer/commands/FallbackCommand.java +++ b/src/main/java/com/jaimemartz/playerbalancer/commands/FallbackCommand.java @@ -1,9 +1,14 @@ package com.jaimemartz.playerbalancer.commands; -import com.jaimemartz.playerbalancer.PlayerBalancer; +import com.google.common.collect.Iterables; import com.jaimemartz.playerbalancer.connection.ConnectionIntent; import com.jaimemartz.playerbalancer.section.ServerSection; -import com.jaimemartz.playerbalancer.settings.ConfigEntries; +import com.jaimemartz.playerbalancer.settings.Settings; +import com.jaimemartz.playerbalancer.settings.beans.MapBean; +import com.jaimemartz.playerbalancer.settings.types.CommandProperties; +import com.jaimemartz.playerbalancer.settings.types.GeneralProperties; +import com.jaimemartz.playerbalancer.settings.types.MessageProperties; +import com.jaimemartz.playerbalancer.settings.types.SectionsHolder; import com.jaimemartz.playerbalancer.utils.MessageUtils; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.CommandSender; @@ -11,16 +16,24 @@ import net.md_5.bungee.api.chat.ComponentBuilder; import net.md_5.bungee.api.config.ServerInfo; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Command; -import net.md_5.bungee.config.Configuration; +import javax.inject.Inject; import java.util.concurrent.Callable; public class FallbackCommand extends Command { - private final PlayerBalancer plugin; + @Inject + private Settings settings; - public FallbackCommand(PlayerBalancer plugin) { - super(ConfigEntries.FALLBACK_COMMAND_NAME.get(), ConfigEntries.FALLBACK_COMMAND_PERMISSION.get(), (ConfigEntries.FALLBACK_COMMAND_ALIASES.get().stream()).toArray(String[]::new)); - this.plugin = plugin; + @Inject + private SectionsHolder sections; + + @Inject + public FallbackCommand(Settings settings) { + super( + settings.getProperty(CommandProperties.COMMAND).getName(), + settings.getProperty(CommandProperties.COMMAND).getPermission(), + Iterables.toArray(settings.getProperty(CommandProperties.COMMAND).getAliases(), String.class) + ); } @Override @@ -29,38 +42,38 @@ public class FallbackCommand extends Command { ProxiedPlayer player = (ProxiedPlayer) sender; Callable callable = () -> { - ServerSection current = plugin.getSectionManager().getByPlayer(player); + ServerSection current = sections.getByPlayer(player); if (current != null) { - if ((ConfigEntries.FALLBACK_COMMAND_IGNORED_SECTIONS.get()).contains(current.getName())) { - MessageUtils.send(player, ConfigEntries.UNAVAILABLE_MESSAGE.get()); + if (settings.getProperty(CommandProperties.IGNORED_SECTIONS).contains(current.getName())) { + MessageUtils.send(player, settings.getProperty(MessageProperties.UNAVAILABLE_SERVER)); return null; } - Configuration rules = plugin.getConfigHandle().getSection("settings.fallback-command.rules"); - String bind = rules.getString(current.getName()); - ServerSection target = plugin.getSectionManager().getByName(bind); + MapBean rules = settings.getProperty(CommandProperties.RULES); + String bind = rules.getMap().get(current.getName()); + ServerSection target = sections.getByName(bind); if (target == null) { if (current.getParent() != null) { target = current.getParent(); } else { - MessageUtils.send(player, ConfigEntries.UNAVAILABLE_MESSAGE.get()); + MessageUtils.send(player, settings.getProperty(MessageProperties.UNAVAILABLE_SERVER)); return null; } } - if (ConfigEntries.FALLBACK_COMMAND_RESTRICTED.get()) { + if (settings.getProperty(CommandProperties.RESTRICTED)) { if (current.getPosition() >= 0 && target.getPosition() < 0) { - MessageUtils.send(player, ConfigEntries.UNAVAILABLE_MESSAGE.get()); + MessageUtils.send(player, settings.getProperty(MessageProperties.UNAVAILABLE_SERVER)); return null; } } return target; } else { - if (ConfigEntries.FALLBACK_PRINCIPAL_ENABLED.get()) { - return plugin.getSectionManager().getPrincipal(); + if (settings.getProperty(GeneralProperties.FALLBACK_PRINCIPAL)) { + return sections.getPrincipal(); } } diff --git a/src/main/java/com/jaimemartz/playerbalancer/commands/ManageCommand.java b/src/main/java/com/jaimemartz/playerbalancer/commands/ManageCommand.java index b18dc85..631417c 100644 --- a/src/main/java/com/jaimemartz/playerbalancer/commands/ManageCommand.java +++ b/src/main/java/com/jaimemartz/playerbalancer/commands/ManageCommand.java @@ -5,7 +5,6 @@ import com.jaimemartz.playerbalancer.PlayerBalancer; import com.jaimemartz.playerbalancer.connection.ConnectionIntent; import com.jaimemartz.playerbalancer.ping.ServerStatus; import com.jaimemartz.playerbalancer.section.ServerSection; -import com.jaimemartz.playerbalancer.settings.ConfigEntries; import com.jaimemartz.playerbalancer.utils.MessageUtils; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.CommandSender; diff --git a/src/main/java/com/jaimemartz/playerbalancer/settings/SettingsProvider.java b/src/main/java/com/jaimemartz/playerbalancer/settings/SettingsProvider.java index f5a86fb..a8d4f25 100644 --- a/src/main/java/com/jaimemartz/playerbalancer/settings/SettingsProvider.java +++ b/src/main/java/com/jaimemartz/playerbalancer/settings/SettingsProvider.java @@ -35,7 +35,7 @@ public class SettingsProvider implements Provider { PropertyResource resource = new YamlFileResource(configFile); ConfigurationData configurationData = ConfigurationDataBuilder.collectData( GeneralProperties.class, CheckerProperties.class, ReconnectorProperties.class, - CommandProperties.class, MessagesProperties.class, SectionsHolder.class + CommandProperties.class, MessageProperties.class, SectionsHolder.class ); return new Settings(resource, new PlainMigrationService(), configurationData); diff --git a/src/main/java/com/jaimemartz/playerbalancer/settings/beans/CommandBean.java b/src/main/java/com/jaimemartz/playerbalancer/settings/beans/CommandBean.java index 18551dc..8340284 100644 --- a/src/main/java/com/jaimemartz/playerbalancer/settings/beans/CommandBean.java +++ b/src/main/java/com/jaimemartz/playerbalancer/settings/beans/CommandBean.java @@ -1,7 +1,10 @@ package com.jaimemartz.playerbalancer.settings.beans; +import lombok.Data; + import java.util.List; +@Data public final class CommandBean { private final String name; private final String permission; diff --git a/src/main/java/com/jaimemartz/playerbalancer/settings/beans/SectionHandler.java b/src/main/java/com/jaimemartz/playerbalancer/settings/beans/SectionHandler.java index 5ce3d78..7ffc016 100644 --- a/src/main/java/com/jaimemartz/playerbalancer/settings/beans/SectionHandler.java +++ b/src/main/java/com/jaimemartz/playerbalancer/settings/beans/SectionHandler.java @@ -9,4 +9,6 @@ public class SectionHandler { public SectionHandler() { //Default constructor? } + + //TODO The methods in SectionManager } diff --git a/src/main/java/com/jaimemartz/playerbalancer/settings/types/MessagesProperties.java b/src/main/java/com/jaimemartz/playerbalancer/settings/types/MessageProperties.java similarity index 95% rename from src/main/java/com/jaimemartz/playerbalancer/settings/types/MessagesProperties.java rename to src/main/java/com/jaimemartz/playerbalancer/settings/types/MessageProperties.java index 95432a6..f79701b 100644 --- a/src/main/java/com/jaimemartz/playerbalancer/settings/types/MessagesProperties.java +++ b/src/main/java/com/jaimemartz/playerbalancer/settings/types/MessageProperties.java @@ -7,7 +7,7 @@ import java.util.Optional; import static ch.jalu.configme.properties.PropertyInitializer.optionalStringProperty; -public class MessagesProperties implements SettingsHolder { +public class MessageProperties implements SettingsHolder { public static final Property> CONNECTING_SERVER = optionalStringProperty("settings.messages.connecting-server"); public static final Property> CONNECTED_SERVER = optionalStringProperty("settings.messages.connected-server"); diff --git a/src/main/java/com/jaimemartz/playerbalancer/settings/types/SectionsHolder.java b/src/main/java/com/jaimemartz/playerbalancer/settings/types/SectionsHolder.java index 9f0a546..26b280c 100644 --- a/src/main/java/com/jaimemartz/playerbalancer/settings/types/SectionsHolder.java +++ b/src/main/java/com/jaimemartz/playerbalancer/settings/types/SectionsHolder.java @@ -7,5 +7,5 @@ import com.jaimemartz.playerbalancer.settings.beans.SectionHandler; import static ch.jalu.configme.properties.PropertyInitializer.newBeanProperty; public class SectionsHolder implements SettingsHolder { - public static final Property SECTIONS_STORAGE = newBeanProperty(SectionHandler.class, "", new SectionHandler()); + public static final Property SECTION_HOLDER = newBeanProperty(SectionHandler.class, "", new SectionHandler()); } diff --git a/src/main/java/com/jaimemartz/playerbalancer/utils/MessageUtils.java b/src/main/java/com/jaimemartz/playerbalancer/utils/MessageUtils.java index 7afce35..27fd8ad 100644 --- a/src/main/java/com/jaimemartz/playerbalancer/utils/MessageUtils.java +++ b/src/main/java/com/jaimemartz/playerbalancer/utils/MessageUtils.java @@ -1,10 +1,10 @@ package com.jaimemartz.playerbalancer.utils; -import ch.jalu.configme.properties.Property; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.chat.TextComponent; +import java.util.Optional; import java.util.function.Function; public final class MessageUtils { @@ -23,7 +23,11 @@ public final class MessageUtils { send(sender, text); } - public static void send(CommandSender sender, Property property) { - throw new UnsupportedOperationException(); + public static void send(CommandSender sender, Optional message) { + message.ifPresent(text -> send(sender, text)); + } + + public static void send(CommandSender sender, Optional message, Function after) { + message.ifPresent(text -> send(sender, text, after)); } }