添加跨服提醒,子服务器用户提醒
This commit is contained in:
parent
9e548cb850
commit
dff6e63dc8
|
@ -6,6 +6,7 @@ import com.frontleaves.bungeecross.commands.ReturnHubCommand;
|
|||
import com.frontleaves.bungeecross.commands.SendToServerCommand;
|
||||
import com.frontleaves.bungeecross.configuration.ServerEnable;
|
||||
import com.frontleaves.bungeecross.configuration.VariableStorage;
|
||||
import com.frontleaves.bungeecross.events.PlayerCrossServerEvent;
|
||||
import com.frontleaves.bungeecross.events.PlayerJoinProxyEvent;
|
||||
import com.frontleaves.bungeecross.events.PlayerLeaveProxyEvent;
|
||||
import net.md_5.bungee.api.plugin.Plugin;
|
||||
|
@ -32,6 +33,7 @@ public final class BungeeCross extends Plugin {
|
|||
// 注册监听器
|
||||
getProxy().getPluginManager().registerListener(this, new PlayerJoinProxyEvent(this));
|
||||
getProxy().getPluginManager().registerListener(this, new PlayerLeaveProxyEvent(this));
|
||||
getProxy().getPluginManager().registerListener(this, new PlayerCrossServerEvent(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -11,6 +11,8 @@ import java.io.File;
|
|||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.nio.file.Files;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -134,7 +136,6 @@ public class ServerEnable {
|
|||
}
|
||||
|
||||
// 获取服务器列表
|
||||
|
||||
plugin.getProxy().getServers().forEach((string, serverInfo) -> {
|
||||
if (config.getSection("server").getKeys().contains(string)) {
|
||||
if (config.getString("server." + string + ".display-name") == null && config.getString("server." + string + ".display-name").isEmpty()) {
|
||||
|
@ -159,6 +160,7 @@ public class ServerEnable {
|
|||
}
|
||||
if (config.getString("server." + string + ".join-server-inform.leave-message") == null && config.getString("server." + string + ".join-server-inform.leave-message").isEmpty()) {
|
||||
this.reloadTheDefaultConfig(configFile);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
config.set("server." + serverInfo.getName() + ".display-name", serverInfo.getName());
|
||||
|
@ -168,6 +170,19 @@ public class ServerEnable {
|
|||
config.set("server." + serverInfo.getName() + ".join-server-inform.join-message", "[+] %player% 加入到 %server_display% 服务器");
|
||||
config.set("server." + serverInfo.getName() + ".join-server-inform.leave-message", "[-] %player% 加入到 %server_display% 服务器");
|
||||
}
|
||||
// 将获取的信息载入数组
|
||||
Map<String, Map<String, Object>> serverAllMap = new HashMap<>();
|
||||
config.getSection("server").getKeys().forEach(server -> {
|
||||
HashMap<String, Object> serverMap = new HashMap<>();
|
||||
serverMap.put("displayName", config.getString("server." + server + ".display-name"));
|
||||
serverMap.put("bungeeJoinServerReminder", config.getBoolean("server." + server + ".bungee-join-server-reminder"));
|
||||
serverMap.put("joinEnable", config.getBoolean("server." + server + ".join-server-inform.join-enable"));
|
||||
serverMap.put("leaveEnable", config.getBoolean("server." + server + ".join-server-inform.leave-enable"));
|
||||
serverMap.put("joinMessage", config.getString("server." + server + ".join-server-inform.join-message"));
|
||||
serverMap.put("leaveMessage", config.getString("server." + server + ".join-server-inform.leave-message"));
|
||||
serverAllMap.put(server, serverMap);
|
||||
});
|
||||
VariableStorage.setProxyServerConfiguration(serverAllMap);
|
||||
});
|
||||
try {
|
||||
ConfigurationProvider.getProvider(YamlConfiguration.class).save(config, configFile);
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.frontleaves.bungeecross.configuration;
|
|||
|
||||
import net.md_5.bungee.api.config.ServerInfo;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
@ -19,6 +20,7 @@ public class VariableStorage {
|
|||
private static String joinMessage;
|
||||
private static String leaveMessage;
|
||||
private static boolean bungeeSilent;
|
||||
private static Map<String, Map<String, Object>> proxyServerConfiguration = new HashMap<>();
|
||||
|
||||
public static String getPrefix() {
|
||||
return prefix;
|
||||
|
@ -83,4 +85,12 @@ public class VariableStorage {
|
|||
public static void setBungeeSilent(boolean bungeeSilent) {
|
||||
VariableStorage.bungeeSilent = bungeeSilent;
|
||||
}
|
||||
|
||||
public static void setProxyServerConfiguration(Map<String, Map<String, Object>> proxyServerConfiguration) {
|
||||
VariableStorage.proxyServerConfiguration = proxyServerConfiguration;
|
||||
}
|
||||
|
||||
public static Map<String, Map<String, Object>> getProxyServerConfiguration() {
|
||||
return proxyServerConfiguration;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
package com.frontleaves.bungeecross.events;
|
||||
|
||||
import com.frontleaves.bungeecross.BungeeCross;
|
||||
import com.frontleaves.bungeecross.configuration.VariableStorage;
|
||||
import net.md_5.bungee.api.event.ServerSwitchEvent;
|
||||
import net.md_5.bungee.api.plugin.Listener;
|
||||
import net.md_5.bungee.event.EventHandler;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* 玩家切换子服事件
|
||||
*
|
||||
* @author 筱锋xiao_lfeng
|
||||
* @version v1.0-SNAPSHOT
|
||||
* @since v1.0-SNAPSHOT
|
||||
*/
|
||||
public class PlayerCrossServerEvent implements Listener {
|
||||
private final BungeeCross plugin;
|
||||
|
||||
public PlayerCrossServerEvent(BungeeCross bc) {
|
||||
plugin = bc;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerCrossServer(@NotNull ServerSwitchEvent event) {
|
||||
// 登录服务器默认不通知
|
||||
Map<String, Map<String, Object>> getServerConfiguration = VariableStorage.getProxyServerConfiguration();
|
||||
try {
|
||||
Map<String, Object> getFromServerConfiguration = getServerConfiguration.get(event.getFrom().getName());
|
||||
Map<String, Object> getToServerConfiguration = getServerConfiguration.get(event.getPlayer().getServer().getInfo().getName());
|
||||
if ((boolean) getFromServerConfiguration.get("leaveEnable")) {
|
||||
event.getFrom().getPlayers().forEach(proxiedPlayer -> {
|
||||
String leaveServerMessage = String.valueOf(getFromServerConfiguration.get("leaveMessage"));
|
||||
String message = Pattern.compile("%player%").matcher(leaveServerMessage).replaceAll(event.getPlayer().getName());
|
||||
message = Pattern.compile("%server_display%").matcher(message).replaceAll(event.getFrom().getName());
|
||||
proxiedPlayer.sendMessage(message);
|
||||
});
|
||||
}
|
||||
if ((boolean) getToServerConfiguration.get("joinEnable")) {
|
||||
event.getPlayer().getServer().getInfo().getPlayers().forEach(proxiedPlayer -> {
|
||||
String joinServerMessage = String.valueOf(getToServerConfiguration.get("joinMessage"));
|
||||
String message = Pattern.compile("%player%").matcher(joinServerMessage).replaceAll(event.getPlayer().getName());
|
||||
message = Pattern.compile("%server_display%").matcher(message).replaceAll(event.getPlayer().getServer().getInfo().getName());
|
||||
proxiedPlayer.sendMessage(message);
|
||||
});
|
||||
}
|
||||
System.out.print(VariableStorage.getPrefix() + "玩家 " + event.getPlayer().getName() + " 从 " + event.getFrom().getName() +" 跳转到 " + event.getPlayer().getServer().getInfo().getName());
|
||||
} catch (NullPointerException ignore) {
|
||||
System.out.print(VariableStorage.getPrefix() + "玩家 " + event.getPlayer().getName() + " 加入到服务器 " + event.getPlayer().getServer().getInfo().getName());
|
||||
|
||||
}
|
||||
}
|
||||
}
|
|
@ -7,6 +7,8 @@ import net.md_5.bungee.api.plugin.Listener;
|
|||
import net.md_5.bungee.event.EventHandler;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
|
@ -29,9 +31,13 @@ public class PlayerJoinProxyEvent implements Listener {
|
|||
String loginServerMessage = VariableStorage.getJoinMessage();
|
||||
if (VariableStorage.isBungeeCordReminder()) {
|
||||
if (!VariableStorage.isBungeeSilent()) {
|
||||
Map<String, Map<String, Object>> getServerConfiguration = VariableStorage.getProxyServerConfiguration();
|
||||
plugin.getProxy().getPlayers().forEach(proxiedPlayer -> {
|
||||
Map<String, Object> server = getServerConfiguration.get(proxiedPlayer.getServer().getInfo().getName());
|
||||
if (((boolean) server.get("bungeeJoinServerReminder"))) {
|
||||
String message = Pattern.compile("%player%").matcher(loginServerMessage).replaceAll(event.getConnection().getName());
|
||||
proxiedPlayer.sendMessage(message);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import net.md_5.bungee.api.plugin.Listener;
|
|||
import net.md_5.bungee.event.EventHandler;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
|
@ -29,9 +30,14 @@ public class PlayerLeaveProxyEvent implements Listener {
|
|||
String leaveServerMessage = VariableStorage.getLeaveMessage();
|
||||
if (VariableStorage.isBungeeCordReminder()) {
|
||||
if (!VariableStorage.isBungeeSilent()) {
|
||||
Map<String, Map<String, Object>> getServerConfiguration = VariableStorage.getProxyServerConfiguration();
|
||||
plugin.getProxy().getPlayers().forEach(proxiedPlayer -> {
|
||||
Map<String, Object> server = getServerConfiguration.get(proxiedPlayer.getServer().getInfo().getName());
|
||||
if (((boolean) server.get("bungeeJoinServerReminder"))) {
|
||||
String message = Pattern.compile("%player%").matcher(leaveServerMessage).replaceAll(event.getPlayer().getName());
|
||||
proxiedPlayer.sendMessage(message);
|
||||
} else {
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user