Skip to content

Commit

Permalink
fix: improve the server filters.
Browse files Browse the repository at this point in the history
  • Loading branch information
WDRshadow committed Jan 8, 2023
1 parent 3da471e commit 70ad099
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 40 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public String getName() {
*
* @return String i.e. "preset" for "remember the default server that was set by player.", "last" for "remember the last server when the player left last time."
*/
public String getDefaultMde() {
public String getDefaultMode() {
return this.defaultMode;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;

import java.io.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;

/**
Expand Down Expand Up @@ -51,7 +53,7 @@ private void writeFile() {
HashMap userData = new HashMap();
userData.put("name", this.userInfo.getName());
userData.put("uuid", this.userInfo.getUuid());
userData.put("defaultMode", this.userInfo.getDefaultMde());
userData.put("defaultMode", this.userInfo.getDefaultMode());
userData.put("server", this.userInfo.getServer());
YamlUtils.writeFile(theFile, userData);
} catch (IOException e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.velocitypowered.api.proxy.ProxyServer;
import com.velocitypowered.api.proxy.server.RegisteredServer;
import net.kyori.adventure.text.Component;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;

import java.io.File;
Expand All @@ -31,31 +32,39 @@ public CommandSet(ProxyServer proxyServer, Logger logger, File workingDirectory)
public void execute(Invocation invocation) {
CommandSource source = invocation.source();
String[] args = invocation.arguments();
Player player = (Player) source;
UserInfoManager userInfoManager = new UserInfoManager(workingDirectory, logger, player);
Component error = Deserializer.deserialize(String.join(" "
, "&7This is RememberMe module of Essential-PlayerInfo plugin. \n"
, "Set mode: `/remember mode <last, preset>`\n"
, "Set server: `/remember server <servername>`"));
, "Set server: `/remember server <servername>`\n"
, "Your default mode is &e"
, userInfoManager.getUserInfo().getDefaultMode()
, "\n &7and your initial server is &e"
, userInfoManager.getUserInfo().getServer()));
if (invocation.arguments().length < 2) {
source.sendMessage(error);
return;
}
String command = args[0];
String parameter = args[1];
Player player = (Player) source;
if (command.equals("mode")) {
if (parameter.equalsIgnoreCase("preset") || parameter.equalsIgnoreCase("last")) {
setMode(parameter, player);
setMode(parameter, player, userInfoManager);
source.sendMessage(Component.text("Your default mode is set to " + parameter));
return;
}
}
if (command.equals("server")) {
for(RegisteredServer server : proxyServer.getAllServers()){
if(server.getServerInfo().getName().equals(parameter)){
setServer(parameter, player);
source.sendMessage(Component.text("Your default server is set to " + parameter));
return;
}
RegisteredServer initialServer = this.proxyServer.getAllServers()
.stream()
.filter(s -> s.getServerInfo().getName().equals(parameter))
.findFirst()
.orElse(null);
if (!(initialServer == null)) {
setServer(parameter, userInfoManager);
source.sendMessage(Component.text("Your default server is set to " + parameter));
return;
}
}
source.sendMessage(error);
Expand Down Expand Up @@ -94,15 +103,13 @@ public CompletableFuture<List<String>> suggestAsync(Invocation invocation) {
}

// set the default server by command
public void setServer(String serverName, Player player) {
UserInfoManager userInfoManager = new UserInfoManager(workingDirectory, logger, player);
public void setServer(String serverName, @NotNull UserInfoManager userInfoManager) {
userInfoManager.setDefaultMode("preset");
userInfoManager.setUserServer(serverName);
}

// set the default mode by command
public void setMode(String mode, Player player) {
UserInfoManager userInfoManager = new UserInfoManager(workingDirectory, logger, player);
public void setMode(String mode, @NotNull Player player, @NotNull UserInfoManager userInfoManager) {
userInfoManager.setDefaultMode(mode);
if (player.getCurrentServer().isPresent()) {
userInfoManager.setUserServer(player.getCurrentServer().get().getServerInfo().getName());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,21 +50,23 @@ private void commandSet() {
@Subscribe
public void onPlayerLogging(PlayerChooseInitialServerEvent event) {
String initialServerName = new UserInfoManager(workingDirectory, logger, event.getPlayer()).getUserInfo().getServer();
if(initialServerName == null){
return;}
for (RegisteredServer server : this.proxyServer.getAllServers()) {
if(server.getServerInfo().getName().equals(initialServerName)){
event.setInitialServer(server);
return;
}
if (initialServerName == null) {
return;
}
RegisteredServer initialServer = this.proxyServer.getAllServers()
.stream()
.filter(s -> s.getServerInfo().getName().equals(initialServerName))
.findFirst()
.orElse(null);
if (initialServer == null) return;
event.setInitialServer(initialServer);
}

// listener of player disconnection and remember the last server the player exit
@Subscribe
public void onServerConnected(ServerConnectedEvent event) {
UserInfoManager userInfoManager = new UserInfoManager(workingDirectory, logger, event.getPlayer());
if (userInfoManager.getUserInfo().getDefaultMde().equals("last")) {
if (userInfoManager.getUserInfo().getDefaultMode().equals("last")) {
userInfoManager.setUserServer(event.getServer().getServerInfo().getName());
}
}
Expand Down
32 changes: 16 additions & 16 deletions src/main/java/com/jackdaw/essentialinfo/module/tablist/TabList.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,22 @@ public TabList(ProxyServer proxyServer, @NotNull SettingManager setting) {
this.displayMode = setting.getTabDisplayMode();
}

/**
* <h>TabListEntry filter</h>
* <p>Look for a specific TabListEntry from a TabList</p>
*
* @param toPlayer TabList holder
* @param fromPlayer the profile of this TabListEntry
* @return the TabListEntry belongs to fromPlayer, or null if not found
*/
public static TabListEntry findTabListEntry(@NotNull Player toPlayer, @NotNull Player fromPlayer) {
return toPlayer.getTabList().getEntries()
.stream()
.filter(t -> t.getProfile().getId().equals(fromPlayer.getGameProfile().getId()))
.findFirst()
.orElse(null);
}

// listener of player login
@Subscribe
public void connect(ServerConnectedEvent event) {
Expand Down Expand Up @@ -55,22 +71,6 @@ private void connectUpdate(@NotNull ServerConnectedEvent event) {
}
}

/**
* <h>TabListEntry filter</h>
* <p>Look for a specific TabListEntry from a TabList</p>
*
* @param toPlayer TabList holder
* @param fromPlayer the profile of this TabListEntry
* @return the TabListEntry belongs to fromPlayer, or null if not found
*/
public static TabListEntry findTabListEntry(@NotNull Player toPlayer, @NotNull Player fromPlayer) {
return toPlayer.getTabList().getEntries()
.stream()
.filter(t -> t.getProfile().getId().equals(fromPlayer.getGameProfile().getId()))
.findFirst()
.orElse(null);
}

// remove disconnected player from list
private void disconnectUpdate(Player fromPlayer) {
for (Player toPlayer : this.proxyServer.getAllPlayers()) {
Expand Down

0 comments on commit 70ad099

Please sign in to comment.