Some more progress, really want to this this out...

This commit is contained in:
Jaime Martinez Rincon 2017-08-09 20:53:31 +02:00
parent 6205a61bb0
commit 4071fc130d
9 changed files with 49 additions and 29 deletions

View File

@ -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()) {

View File

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

View File

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

View File

@ -35,7 +35,7 @@ public class SettingsProvider implements Provider<Settings> {
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);

View File

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

View File

@ -9,4 +9,6 @@ public class SectionHandler {
public SectionHandler() {
//Default constructor?
}
//TODO The methods in SectionManager
}

View File

@ -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<Optional<String>> CONNECTING_SERVER = optionalStringProperty("settings.messages.connecting-server");
public static final Property<Optional<String>> CONNECTED_SERVER = optionalStringProperty("settings.messages.connected-server");

View File

@ -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<SectionHandler> SECTIONS_STORAGE = newBeanProperty(SectionHandler.class, "", new SectionHandler());
public static final Property<SectionHandler> SECTION_HOLDER = newBeanProperty(SectionHandler.class, "", new SectionHandler());
}

View File

@ -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<String> property) {
throw new UnsupportedOperationException();
public static void send(CommandSender sender, Optional<String> message) {
message.ifPresent(text -> send(sender, text));
}
public static void send(CommandSender sender, Optional<String> message, Function<String, String> after) {
message.ifPresent(text -> send(sender, text, after));
}
}