mirror of
https://github.com/BGHDDevelopment/PlayerBalancer.git
synced 2024-11-27 05:05:19 +01:00
After refractor
This commit is contained in:
parent
4f8840c765
commit
0e5ee0e2e2
@ -1,6 +1,7 @@
|
|||||||
package com.jaimemartz.playerbalancer;
|
package com.jaimemartz.playerbalancer;
|
||||||
|
|
||||||
import com.google.common.reflect.TypeToken;
|
import com.google.common.reflect.TypeToken;
|
||||||
|
import com.jaimemartz.playerbalancer.commands.FallbackCommand;
|
||||||
import com.jaimemartz.playerbalancer.commands.MainCommand;
|
import com.jaimemartz.playerbalancer.commands.MainCommand;
|
||||||
import com.jaimemartz.playerbalancer.commands.ManageCommand;
|
import com.jaimemartz.playerbalancer.commands.ManageCommand;
|
||||||
import com.jaimemartz.playerbalancer.connection.ServerAssignRegistry;
|
import com.jaimemartz.playerbalancer.connection.ServerAssignRegistry;
|
||||||
@ -10,7 +11,6 @@ import com.jaimemartz.playerbalancer.manager.PasteHelper;
|
|||||||
import com.jaimemartz.playerbalancer.manager.PlayerLocker;
|
import com.jaimemartz.playerbalancer.manager.PlayerLocker;
|
||||||
import com.jaimemartz.playerbalancer.ping.StatusManager;
|
import com.jaimemartz.playerbalancer.ping.StatusManager;
|
||||||
import com.jaimemartz.playerbalancer.section.SectionManager;
|
import com.jaimemartz.playerbalancer.section.SectionManager;
|
||||||
import com.jaimemartz.playerbalancer.services.FallbackService;
|
|
||||||
import com.jaimemartz.playerbalancer.settings.SettingsHolder;
|
import com.jaimemartz.playerbalancer.settings.SettingsHolder;
|
||||||
import net.md_5.bungee.api.plugin.Command;
|
import net.md_5.bungee.api.plugin.Command;
|
||||||
import net.md_5.bungee.api.plugin.Listener;
|
import net.md_5.bungee.api.plugin.Listener;
|
||||||
@ -34,7 +34,8 @@ public class PlayerBalancer extends Plugin {
|
|||||||
private SectionManager sectionManager;
|
private SectionManager sectionManager;
|
||||||
private NetworkManager networkManager;
|
private NetworkManager networkManager;
|
||||||
private ConfigurationLoader<CommentedConfigurationNode> loader;
|
private ConfigurationLoader<CommentedConfigurationNode> loader;
|
||||||
private FallbackService fallbackService;
|
|
||||||
|
private FallbackCommand fallbackCommand;
|
||||||
private Command mainCommand, manageCommand;
|
private Command mainCommand, manageCommand;
|
||||||
private Listener connectListener, kickListener, reloadListener, pluginMessageListener;
|
private Listener connectListener, kickListener, reloadListener, pluginMessageListener;
|
||||||
|
|
||||||
@ -117,10 +118,9 @@ public class PlayerBalancer extends Plugin {
|
|||||||
statusManager.start();
|
statusManager.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
fallbackService = new FallbackService(this, settings.getFallbackCommandProps().getCommand());
|
|
||||||
|
|
||||||
if (settings.getFallbackCommandProps().isEnabled()) {
|
if (settings.getFallbackCommandProps().isEnabled()) {
|
||||||
getProxy().getPluginManager().registerCommand(this, fallbackService);
|
fallbackCommand = new FallbackCommand(this);
|
||||||
|
getProxy().getPluginManager().registerCommand(this, fallbackCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
connectListener = new ServerConnectListener(this);
|
connectListener = new ServerConnectListener(this);
|
||||||
@ -129,8 +129,6 @@ public class PlayerBalancer extends Plugin {
|
|||||||
if (settings.getGeneralProps().isPluginMessaging()) {
|
if (settings.getGeneralProps().isPluginMessaging()) {
|
||||||
getProxy().registerChannel("PlayerBalancer");
|
getProxy().registerChannel("PlayerBalancer");
|
||||||
|
|
||||||
getProxy().getPluginManager().registerListener(this, fallbackService);
|
|
||||||
|
|
||||||
getProxy().getPluginManager().registerListener(this, statusManager);
|
getProxy().getPluginManager().registerListener(this, statusManager);
|
||||||
|
|
||||||
pluginMessageListener = new PluginMessageListener(this);
|
pluginMessageListener = new PluginMessageListener(this);
|
||||||
@ -186,14 +184,11 @@ public class PlayerBalancer extends Plugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fallbackService != null) {
|
|
||||||
if (settings.getFallbackCommandProps().isEnabled()) {
|
if (settings.getFallbackCommandProps().isEnabled()) {
|
||||||
getProxy().getPluginManager().unregisterCommand(fallbackService);
|
if (fallbackCommand != null) {
|
||||||
|
getProxy().getPluginManager().unregisterCommand(fallbackCommand);
|
||||||
|
fallbackCommand = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
getProxy().getPluginManager().unregisterListener(fallbackService);
|
|
||||||
|
|
||||||
fallbackService = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (settings.getKickHandlerProps().isEnabled()) {
|
if (settings.getKickHandlerProps().isEnabled()) {
|
||||||
@ -262,4 +257,8 @@ public class PlayerBalancer extends Plugin {
|
|||||||
public NetworkManager getNetworkManager() {
|
public NetworkManager getNetworkManager() {
|
||||||
return networkManager;
|
return networkManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public FallbackCommand getFallbackCommand() {
|
||||||
|
return fallbackCommand;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,58 @@
|
|||||||
|
package com.jaimemartz.playerbalancer.commands;
|
||||||
|
|
||||||
|
import com.google.common.collect.Iterables;
|
||||||
|
import com.jaimemartz.playerbalancer.PlayerBalancer;
|
||||||
|
import com.jaimemartz.playerbalancer.connection.ConnectionIntent;
|
||||||
|
import com.jaimemartz.playerbalancer.section.ServerSection;
|
||||||
|
import com.jaimemartz.playerbalancer.settings.props.MessagesProps;
|
||||||
|
import com.jaimemartz.playerbalancer.settings.props.shared.CommandProps;
|
||||||
|
import com.jaimemartz.playerbalancer.utils.MessageUtils;
|
||||||
|
import net.md_5.bungee.api.ChatColor;
|
||||||
|
import net.md_5.bungee.api.CommandSender;
|
||||||
|
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;
|
||||||
|
|
||||||
|
public abstract class AbstractMoveCommand extends Command {
|
||||||
|
private final PlayerBalancer plugin;
|
||||||
|
private final MessagesProps messages;
|
||||||
|
|
||||||
|
public AbstractMoveCommand(PlayerBalancer plugin, CommandProps commandProps) {
|
||||||
|
super(commandProps.getName(), commandProps.getPermission(), commandProps.getAliasesArray());
|
||||||
|
this.messages = plugin.getSettings().getMessagesProps();
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
if (sender instanceof ProxiedPlayer) {
|
||||||
|
ProxiedPlayer player = (ProxiedPlayer) sender;
|
||||||
|
ServerSection target = getSection(player);
|
||||||
|
|
||||||
|
if (target != null) {
|
||||||
|
if (args.length == 1) {
|
||||||
|
try {
|
||||||
|
int number = Integer.parseInt(args[0]);
|
||||||
|
if (number <= 0) {
|
||||||
|
MessageUtils.send(player, messages.getInvalidInputMessage());
|
||||||
|
} else if (number > target.getServers().size()) {
|
||||||
|
MessageUtils.send(player, messages.getInvalidInputMessage());
|
||||||
|
} else {
|
||||||
|
ServerInfo server = Iterables.get(target.getServers(), number - 1);
|
||||||
|
ConnectionIntent.direct(plugin, player, server, (response, throwable) -> {});
|
||||||
|
}
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
MessageUtils.send(player, messages.getInvalidInputMessage());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ConnectionIntent.simple(plugin, player, target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sender.sendMessage(new ComponentBuilder("This command can only be executed by a player").color(ChatColor.RED).create());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract ServerSection getSection(ProxiedPlayer player);
|
||||||
|
}
|
@ -0,0 +1,57 @@
|
|||||||
|
package com.jaimemartz.playerbalancer.commands;
|
||||||
|
|
||||||
|
import com.jaimemartz.playerbalancer.PlayerBalancer;
|
||||||
|
import com.jaimemartz.playerbalancer.section.ServerSection;
|
||||||
|
import com.jaimemartz.playerbalancer.settings.props.MessagesProps;
|
||||||
|
import com.jaimemartz.playerbalancer.settings.props.features.FallbackCommandProps;
|
||||||
|
import com.jaimemartz.playerbalancer.utils.MessageUtils;
|
||||||
|
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||||
|
|
||||||
|
public class FallbackCommand extends AbstractMoveCommand {
|
||||||
|
private final PlayerBalancer plugin;
|
||||||
|
private final MessagesProps messages;
|
||||||
|
private final FallbackCommandProps props;
|
||||||
|
|
||||||
|
public FallbackCommand(PlayerBalancer plugin) {
|
||||||
|
super(plugin, plugin.getSettings().getFallbackCommandProps().getCommand());
|
||||||
|
this.props = plugin.getSettings().getFallbackCommandProps();
|
||||||
|
this.messages = plugin.getSettings().getMessagesProps();
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ServerSection getSection(ProxiedPlayer player) {
|
||||||
|
ServerSection current = plugin.getSectionManager().getByPlayer(player);
|
||||||
|
|
||||||
|
if (current != null) {
|
||||||
|
if (props.getExcludedSections().contains(current.getName())) {
|
||||||
|
MessageUtils.send(player, messages.getUnavailableServerMessage());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
ServerSection target = plugin.getSectionManager().getBind(props.getRules(), current)
|
||||||
|
.orElse(current.getParent());
|
||||||
|
if (target == null) {
|
||||||
|
MessageUtils.send(player, messages.getUnavailableServerMessage());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (props.isRestrictive()) {
|
||||||
|
if (current.getPosition() >= 0 && target.getPosition() < 0) {
|
||||||
|
MessageUtils.send(player, messages.getUnavailableServerMessage());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return target;
|
||||||
|
} else {
|
||||||
|
if (plugin.getSettings().getBalancerProps().isDefaultPrincipal()) {
|
||||||
|
return plugin.getSectionManager().getPrincipal();
|
||||||
|
} else {
|
||||||
|
MessageUtils.send(player, messages.getUnavailableServerMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
@ -219,6 +219,44 @@ public class PluginMessageListener implements Listener {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case "FallbackPlayer": {
|
||||||
|
if (event.getReceiver() instanceof ProxiedPlayer) {
|
||||||
|
ProxiedPlayer player = (ProxiedPlayer) event.getReceiver();
|
||||||
|
ServerSection target = plugin.getFallbackCommand().getSection(player);
|
||||||
|
|
||||||
|
if (target == null)
|
||||||
|
break;
|
||||||
|
|
||||||
|
ConnectionIntent.simple(
|
||||||
|
plugin,
|
||||||
|
player,
|
||||||
|
target
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case "FallbackOtherPlayer": {
|
||||||
|
ProxiedPlayer player = plugin.getProxy().getPlayer(in.readUTF());
|
||||||
|
|
||||||
|
if (player == null)
|
||||||
|
break;
|
||||||
|
|
||||||
|
ServerSection target = plugin.getFallbackCommand().getSection(player);
|
||||||
|
|
||||||
|
if (target == null)
|
||||||
|
break;
|
||||||
|
|
||||||
|
ConnectionIntent.simple(
|
||||||
|
plugin,
|
||||||
|
player,
|
||||||
|
target
|
||||||
|
);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
package com.jaimemartz.playerbalancer.section;
|
package com.jaimemartz.playerbalancer.section;
|
||||||
|
|
||||||
import com.jaimemartz.playerbalancer.PlayerBalancer;
|
import com.jaimemartz.playerbalancer.PlayerBalancer;
|
||||||
import com.jaimemartz.playerbalancer.services.FallbackService;
|
import com.jaimemartz.playerbalancer.commands.AbstractMoveCommand;
|
||||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||||
|
|
||||||
//This is unsafe, make it extend just the command, not the listener too
|
public class SectionCommand extends AbstractMoveCommand {
|
||||||
public class SectionCommand extends FallbackService {
|
|
||||||
private final ServerSection section;
|
private final ServerSection section;
|
||||||
|
|
||||||
public SectionCommand(PlayerBalancer plugin, ServerSection section) {
|
public SectionCommand(PlayerBalancer plugin, ServerSection section) {
|
||||||
|
@ -1,149 +0,0 @@
|
|||||||
package com.jaimemartz.playerbalancer.services;
|
|
||||||
|
|
||||||
import com.google.common.collect.Iterables;
|
|
||||||
import com.google.common.io.ByteArrayDataInput;
|
|
||||||
import com.google.common.io.ByteStreams;
|
|
||||||
import com.jaimemartz.playerbalancer.PlayerBalancer;
|
|
||||||
import com.jaimemartz.playerbalancer.connection.ConnectionIntent;
|
|
||||||
import com.jaimemartz.playerbalancer.section.ServerSection;
|
|
||||||
import com.jaimemartz.playerbalancer.settings.props.MessagesProps;
|
|
||||||
import com.jaimemartz.playerbalancer.settings.props.features.FallbackCommandProps;
|
|
||||||
import com.jaimemartz.playerbalancer.settings.props.shared.CommandProps;
|
|
||||||
import com.jaimemartz.playerbalancer.utils.MessageUtils;
|
|
||||||
import net.md_5.bungee.api.ChatColor;
|
|
||||||
import net.md_5.bungee.api.CommandSender;
|
|
||||||
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.connection.Server;
|
|
||||||
import net.md_5.bungee.api.event.PluginMessageEvent;
|
|
||||||
import net.md_5.bungee.api.plugin.Command;
|
|
||||||
import net.md_5.bungee.api.plugin.Listener;
|
|
||||||
import net.md_5.bungee.event.EventHandler;
|
|
||||||
|
|
||||||
public class FallbackService extends Command implements Listener {
|
|
||||||
protected final PlayerBalancer plugin;
|
|
||||||
protected final MessagesProps messages;
|
|
||||||
private final FallbackCommandProps props;
|
|
||||||
|
|
||||||
public FallbackService(PlayerBalancer plugin, CommandProps props) {
|
|
||||||
super(props.getName(), props.getPermission(), props.getAliasesArray());
|
|
||||||
this.props = plugin.getSettings().getFallbackCommandProps();
|
|
||||||
this.messages = plugin.getSettings().getMessagesProps();
|
|
||||||
this.plugin = plugin;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute(CommandSender sender, String[] args) {
|
|
||||||
if (sender instanceof ProxiedPlayer) {
|
|
||||||
ProxiedPlayer player = (ProxiedPlayer) sender;
|
|
||||||
ServerSection target = this.getSection(player);
|
|
||||||
|
|
||||||
if (target != null) {
|
|
||||||
if (args.length == 1) {
|
|
||||||
try {
|
|
||||||
int number = Integer.parseInt(args[0]);
|
|
||||||
if (number <= 0) {
|
|
||||||
MessageUtils.send(player, messages.getInvalidInputMessage());
|
|
||||||
} else if (number > target.getServers().size()) {
|
|
||||||
MessageUtils.send(player, messages.getInvalidInputMessage());
|
|
||||||
} else {
|
|
||||||
ServerInfo server = Iterables.get(target.getServers(), number - 1);
|
|
||||||
ConnectionIntent.direct(plugin, player, server, (response, throwable) -> {});
|
|
||||||
}
|
|
||||||
} catch (NumberFormatException e) {
|
|
||||||
MessageUtils.send(player, messages.getInvalidInputMessage());
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
ConnectionIntent.simple(plugin, player, target);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
sender.sendMessage(new ComponentBuilder("This command can only be executed by a player").color(ChatColor.RED).create());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public ServerSection getSection(ProxiedPlayer player) {
|
|
||||||
ServerSection current = plugin.getSectionManager().getByPlayer(player);
|
|
||||||
|
|
||||||
if (current != null) {
|
|
||||||
if (props.getExcludedSections().contains(current.getName())) {
|
|
||||||
MessageUtils.send(player, messages.getUnavailableServerMessage());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
ServerSection target = plugin.getSectionManager().getBind(props.getRules(), current)
|
|
||||||
.orElse(current.getParent());
|
|
||||||
if (target == null) {
|
|
||||||
MessageUtils.send(player, messages.getUnavailableServerMessage());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (props.isRestrictive()) {
|
|
||||||
if (current.getPosition() >= 0 && target.getPosition() < 0) {
|
|
||||||
MessageUtils.send(player, messages.getUnavailableServerMessage());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return target;
|
|
||||||
} else {
|
|
||||||
if (plugin.getSettings().getBalancerProps().isDefaultPrincipal()) {
|
|
||||||
return plugin.getSectionManager().getPrincipal();
|
|
||||||
} else {
|
|
||||||
MessageUtils.send(player, messages.getUnavailableServerMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void onPluginMessage(PluginMessageEvent event) {
|
|
||||||
if (event.getTag().equals("PlayerBalancer") && event.getSender() instanceof Server) {
|
|
||||||
ByteArrayDataInput in = ByteStreams.newDataInput(event.getData());
|
|
||||||
String request = in.readUTF();
|
|
||||||
ServerInfo sender = ((Server) event.getSender()).getInfo();
|
|
||||||
|
|
||||||
switch (request) {
|
|
||||||
case "FallbackPlayer": {
|
|
||||||
if (event.getReceiver() instanceof ProxiedPlayer) {
|
|
||||||
ProxiedPlayer player = (ProxiedPlayer) event.getReceiver();
|
|
||||||
ServerSection target = getSection(player);
|
|
||||||
|
|
||||||
if (target == null)
|
|
||||||
break;
|
|
||||||
|
|
||||||
ConnectionIntent.simple(
|
|
||||||
plugin,
|
|
||||||
player,
|
|
||||||
target
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case "FallbackOtherPlayer": {
|
|
||||||
ProxiedPlayer player = plugin.getProxy().getPlayer(in.readUTF());
|
|
||||||
|
|
||||||
if (player == null)
|
|
||||||
break;
|
|
||||||
|
|
||||||
ServerSection target = getSection(player);
|
|
||||||
|
|
||||||
if (target == null)
|
|
||||||
break;
|
|
||||||
|
|
||||||
ConnectionIntent.simple(
|
|
||||||
plugin,
|
|
||||||
player,
|
|
||||||
target
|
|
||||||
);
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user