Skip to content

Commit 0e5ee0e

Browse files
committed
After refractor
1 parent 4f8840c commit 0e5ee0e

File tree

6 files changed

+168
-166
lines changed

6 files changed

+168
-166
lines changed

Main Plugin/src/main/java/com/jaimemartz/playerbalancer/PlayerBalancer.java

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.jaimemartz.playerbalancer;
22

33
import com.google.common.reflect.TypeToken;
4+
import com.jaimemartz.playerbalancer.commands.FallbackCommand;
45
import com.jaimemartz.playerbalancer.commands.MainCommand;
56
import com.jaimemartz.playerbalancer.commands.ManageCommand;
67
import com.jaimemartz.playerbalancer.connection.ServerAssignRegistry;
@@ -10,7 +11,6 @@
1011
import com.jaimemartz.playerbalancer.manager.PlayerLocker;
1112
import com.jaimemartz.playerbalancer.ping.StatusManager;
1213
import com.jaimemartz.playerbalancer.section.SectionManager;
13-
import com.jaimemartz.playerbalancer.services.FallbackService;
1414
import com.jaimemartz.playerbalancer.settings.SettingsHolder;
1515
import net.md_5.bungee.api.plugin.Command;
1616
import net.md_5.bungee.api.plugin.Listener;
@@ -34,7 +34,8 @@ public class PlayerBalancer extends Plugin {
3434
private SectionManager sectionManager;
3535
private NetworkManager networkManager;
3636
private ConfigurationLoader<CommentedConfigurationNode> loader;
37-
private FallbackService fallbackService;
37+
38+
private FallbackCommand fallbackCommand;
3839
private Command mainCommand, manageCommand;
3940
private Listener connectListener, kickListener, reloadListener, pluginMessageListener;
4041

@@ -117,10 +118,9 @@ private void execStart() {
117118
statusManager.start();
118119
}
119120

120-
fallbackService = new FallbackService(this, settings.getFallbackCommandProps().getCommand());
121-
122121
if (settings.getFallbackCommandProps().isEnabled()) {
123-
getProxy().getPluginManager().registerCommand(this, fallbackService);
122+
fallbackCommand = new FallbackCommand(this);
123+
getProxy().getPluginManager().registerCommand(this, fallbackCommand);
124124
}
125125

126126
connectListener = new ServerConnectListener(this);
@@ -129,8 +129,6 @@ private void execStart() {
129129
if (settings.getGeneralProps().isPluginMessaging()) {
130130
getProxy().registerChannel("PlayerBalancer");
131131

132-
getProxy().getPluginManager().registerListener(this, fallbackService);
133-
134132
getProxy().getPluginManager().registerListener(this, statusManager);
135133

136134
pluginMessageListener = new PluginMessageListener(this);
@@ -186,14 +184,11 @@ private void execStop() {
186184
}
187185
}
188186

189-
if (fallbackService != null) {
190-
if (settings.getFallbackCommandProps().isEnabled()) {
191-
getProxy().getPluginManager().unregisterCommand(fallbackService);
187+
if (settings.getFallbackCommandProps().isEnabled()) {
188+
if (fallbackCommand != null) {
189+
getProxy().getPluginManager().unregisterCommand(fallbackCommand);
190+
fallbackCommand = null;
192191
}
193-
194-
getProxy().getPluginManager().unregisterListener(fallbackService);
195-
196-
fallbackService = null;
197192
}
198193

199194
if (settings.getKickHandlerProps().isEnabled()) {
@@ -262,4 +257,8 @@ public StatusManager getStatusManager() {
262257
public NetworkManager getNetworkManager() {
263258
return networkManager;
264259
}
260+
261+
public FallbackCommand getFallbackCommand() {
262+
return fallbackCommand;
263+
}
265264
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package com.jaimemartz.playerbalancer.commands;
2+
3+
import com.google.common.collect.Iterables;
4+
import com.jaimemartz.playerbalancer.PlayerBalancer;
5+
import com.jaimemartz.playerbalancer.connection.ConnectionIntent;
6+
import com.jaimemartz.playerbalancer.section.ServerSection;
7+
import com.jaimemartz.playerbalancer.settings.props.MessagesProps;
8+
import com.jaimemartz.playerbalancer.settings.props.shared.CommandProps;
9+
import com.jaimemartz.playerbalancer.utils.MessageUtils;
10+
import net.md_5.bungee.api.ChatColor;
11+
import net.md_5.bungee.api.CommandSender;
12+
import net.md_5.bungee.api.chat.ComponentBuilder;
13+
import net.md_5.bungee.api.config.ServerInfo;
14+
import net.md_5.bungee.api.connection.ProxiedPlayer;
15+
import net.md_5.bungee.api.plugin.Command;
16+
17+
public abstract class AbstractMoveCommand extends Command {
18+
private final PlayerBalancer plugin;
19+
private final MessagesProps messages;
20+
21+
public AbstractMoveCommand(PlayerBalancer plugin, CommandProps commandProps) {
22+
super(commandProps.getName(), commandProps.getPermission(), commandProps.getAliasesArray());
23+
this.messages = plugin.getSettings().getMessagesProps();
24+
this.plugin = plugin;
25+
}
26+
27+
@Override
28+
public void execute(CommandSender sender, String[] args) {
29+
if (sender instanceof ProxiedPlayer) {
30+
ProxiedPlayer player = (ProxiedPlayer) sender;
31+
ServerSection target = getSection(player);
32+
33+
if (target != null) {
34+
if (args.length == 1) {
35+
try {
36+
int number = Integer.parseInt(args[0]);
37+
if (number <= 0) {
38+
MessageUtils.send(player, messages.getInvalidInputMessage());
39+
} else if (number > target.getServers().size()) {
40+
MessageUtils.send(player, messages.getInvalidInputMessage());
41+
} else {
42+
ServerInfo server = Iterables.get(target.getServers(), number - 1);
43+
ConnectionIntent.direct(plugin, player, server, (response, throwable) -> {});
44+
}
45+
} catch (NumberFormatException e) {
46+
MessageUtils.send(player, messages.getInvalidInputMessage());
47+
}
48+
} else {
49+
ConnectionIntent.simple(plugin, player, target);
50+
}
51+
}
52+
} else {
53+
sender.sendMessage(new ComponentBuilder("This command can only be executed by a player").color(ChatColor.RED).create());
54+
}
55+
}
56+
57+
public abstract ServerSection getSection(ProxiedPlayer player);
58+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package com.jaimemartz.playerbalancer.commands;
2+
3+
import com.jaimemartz.playerbalancer.PlayerBalancer;
4+
import com.jaimemartz.playerbalancer.section.ServerSection;
5+
import com.jaimemartz.playerbalancer.settings.props.MessagesProps;
6+
import com.jaimemartz.playerbalancer.settings.props.features.FallbackCommandProps;
7+
import com.jaimemartz.playerbalancer.utils.MessageUtils;
8+
import net.md_5.bungee.api.connection.ProxiedPlayer;
9+
10+
public class FallbackCommand extends AbstractMoveCommand {
11+
private final PlayerBalancer plugin;
12+
private final MessagesProps messages;
13+
private final FallbackCommandProps props;
14+
15+
public FallbackCommand(PlayerBalancer plugin) {
16+
super(plugin, plugin.getSettings().getFallbackCommandProps().getCommand());
17+
this.props = plugin.getSettings().getFallbackCommandProps();
18+
this.messages = plugin.getSettings().getMessagesProps();
19+
this.plugin = plugin;
20+
}
21+
22+
@Override
23+
public ServerSection getSection(ProxiedPlayer player) {
24+
ServerSection current = plugin.getSectionManager().getByPlayer(player);
25+
26+
if (current != null) {
27+
if (props.getExcludedSections().contains(current.getName())) {
28+
MessageUtils.send(player, messages.getUnavailableServerMessage());
29+
return null;
30+
}
31+
32+
ServerSection target = plugin.getSectionManager().getBind(props.getRules(), current)
33+
.orElse(current.getParent());
34+
if (target == null) {
35+
MessageUtils.send(player, messages.getUnavailableServerMessage());
36+
return null;
37+
}
38+
39+
if (props.isRestrictive()) {
40+
if (current.getPosition() >= 0 && target.getPosition() < 0) {
41+
MessageUtils.send(player, messages.getUnavailableServerMessage());
42+
return null;
43+
}
44+
}
45+
46+
return target;
47+
} else {
48+
if (plugin.getSettings().getBalancerProps().isDefaultPrincipal()) {
49+
return plugin.getSectionManager().getPrincipal();
50+
} else {
51+
MessageUtils.send(player, messages.getUnavailableServerMessage());
52+
}
53+
}
54+
55+
return null;
56+
}
57+
}

Main Plugin/src/main/java/com/jaimemartz/playerbalancer/listeners/PluginMessageListener.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,44 @@ public void onPluginMessage(PluginMessageEvent event) {
219219
}
220220
break;
221221
}
222+
223+
case "FallbackPlayer": {
224+
if (event.getReceiver() instanceof ProxiedPlayer) {
225+
ProxiedPlayer player = (ProxiedPlayer) event.getReceiver();
226+
ServerSection target = plugin.getFallbackCommand().getSection(player);
227+
228+
if (target == null)
229+
break;
230+
231+
ConnectionIntent.simple(
232+
plugin,
233+
player,
234+
target
235+
);
236+
}
237+
238+
break;
239+
}
240+
241+
case "FallbackOtherPlayer": {
242+
ProxiedPlayer player = plugin.getProxy().getPlayer(in.readUTF());
243+
244+
if (player == null)
245+
break;
246+
247+
ServerSection target = plugin.getFallbackCommand().getSection(player);
248+
249+
if (target == null)
250+
break;
251+
252+
ConnectionIntent.simple(
253+
plugin,
254+
player,
255+
target
256+
);
257+
258+
break;
259+
}
222260
}
223261
}
224262
}

Main Plugin/src/main/java/com/jaimemartz/playerbalancer/section/SectionCommand.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
package com.jaimemartz.playerbalancer.section;
22

33
import com.jaimemartz.playerbalancer.PlayerBalancer;
4-
import com.jaimemartz.playerbalancer.services.FallbackService;
4+
import com.jaimemartz.playerbalancer.commands.AbstractMoveCommand;
55
import net.md_5.bungee.api.connection.ProxiedPlayer;
66

7-
//This is unsafe, make it extend just the command, not the listener too
8-
public class SectionCommand extends FallbackService {
7+
public class SectionCommand extends AbstractMoveCommand {
98
private final ServerSection section;
109

1110
public SectionCommand(PlayerBalancer plugin, ServerSection section) {

0 commit comments

Comments
 (0)