添加跨服提醒,子服务器用户提醒
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.commands.SendToServerCommand;
|
||||||
import com.frontleaves.bungeecross.configuration.ServerEnable;
|
import com.frontleaves.bungeecross.configuration.ServerEnable;
|
||||||
import com.frontleaves.bungeecross.configuration.VariableStorage;
|
import com.frontleaves.bungeecross.configuration.VariableStorage;
|
||||||
|
import com.frontleaves.bungeecross.events.PlayerCrossServerEvent;
|
||||||
import com.frontleaves.bungeecross.events.PlayerJoinProxyEvent;
|
import com.frontleaves.bungeecross.events.PlayerJoinProxyEvent;
|
||||||
import com.frontleaves.bungeecross.events.PlayerLeaveProxyEvent;
|
import com.frontleaves.bungeecross.events.PlayerLeaveProxyEvent;
|
||||||
import net.md_5.bungee.api.plugin.Plugin;
|
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 PlayerJoinProxyEvent(this));
|
||||||
getProxy().getPluginManager().registerListener(this, new PlayerLeaveProxyEvent(this));
|
getProxy().getPluginManager().registerListener(this, new PlayerLeaveProxyEvent(this));
|
||||||
|
getProxy().getPluginManager().registerListener(this, new PlayerCrossServerEvent(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -11,6 +11,8 @@ import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.nio.file.Files;
|
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) -> {
|
plugin.getProxy().getServers().forEach((string, serverInfo) -> {
|
||||||
if (config.getSection("server").getKeys().contains(string)) {
|
if (config.getSection("server").getKeys().contains(string)) {
|
||||||
if (config.getString("server." + string + ".display-name") == null && config.getString("server." + string + ".display-name").isEmpty()) {
|
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()) {
|
if (config.getString("server." + string + ".join-server-inform.leave-message") == null && config.getString("server." + string + ".join-server-inform.leave-message").isEmpty()) {
|
||||||
this.reloadTheDefaultConfig(configFile);
|
this.reloadTheDefaultConfig(configFile);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
config.set("server." + serverInfo.getName() + ".display-name", serverInfo.getName());
|
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.join-message", "[+] %player% 加入到 %server_display% 服务器");
|
||||||
config.set("server." + serverInfo.getName() + ".join-server-inform.leave-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 {
|
try {
|
||||||
ConfigurationProvider.getProvider(YamlConfiguration.class).save(config, configFile);
|
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 net.md_5.bungee.api.config.ServerInfo;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ -19,6 +20,7 @@ public class VariableStorage {
|
||||||
private static String joinMessage;
|
private static String joinMessage;
|
||||||
private static String leaveMessage;
|
private static String leaveMessage;
|
||||||
private static boolean bungeeSilent;
|
private static boolean bungeeSilent;
|
||||||
|
private static Map<String, Map<String, Object>> proxyServerConfiguration = new HashMap<>();
|
||||||
|
|
||||||
public static String getPrefix() {
|
public static String getPrefix() {
|
||||||
return prefix;
|
return prefix;
|
||||||
|
@ -83,4 +85,12 @@ public class VariableStorage {
|
||||||
public static void setBungeeSilent(boolean bungeeSilent) {
|
public static void setBungeeSilent(boolean bungeeSilent) {
|
||||||
VariableStorage.bungeeSilent = 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 net.md_5.bungee.event.EventHandler;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -29,9 +31,13 @@ public class PlayerJoinProxyEvent implements Listener {
|
||||||
String loginServerMessage = VariableStorage.getJoinMessage();
|
String loginServerMessage = VariableStorage.getJoinMessage();
|
||||||
if (VariableStorage.isBungeeCordReminder()) {
|
if (VariableStorage.isBungeeCordReminder()) {
|
||||||
if (!VariableStorage.isBungeeSilent()) {
|
if (!VariableStorage.isBungeeSilent()) {
|
||||||
|
Map<String, Map<String, Object>> getServerConfiguration = VariableStorage.getProxyServerConfiguration();
|
||||||
plugin.getProxy().getPlayers().forEach(proxiedPlayer -> {
|
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());
|
String message = Pattern.compile("%player%").matcher(loginServerMessage).replaceAll(event.getConnection().getName());
|
||||||
proxiedPlayer.sendMessage(message);
|
proxiedPlayer.sendMessage(message);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ import net.md_5.bungee.api.plugin.Listener;
|
||||||
import net.md_5.bungee.event.EventHandler;
|
import net.md_5.bungee.event.EventHandler;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -29,9 +30,14 @@ public class PlayerLeaveProxyEvent implements Listener {
|
||||||
String leaveServerMessage = VariableStorage.getLeaveMessage();
|
String leaveServerMessage = VariableStorage.getLeaveMessage();
|
||||||
if (VariableStorage.isBungeeCordReminder()) {
|
if (VariableStorage.isBungeeCordReminder()) {
|
||||||
if (!VariableStorage.isBungeeSilent()) {
|
if (!VariableStorage.isBungeeSilent()) {
|
||||||
|
Map<String, Map<String, Object>> getServerConfiguration = VariableStorage.getProxyServerConfiguration();
|
||||||
plugin.getProxy().getPlayers().forEach(proxiedPlayer -> {
|
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());
|
String message = Pattern.compile("%player%").matcher(leaveServerMessage).replaceAll(event.getPlayer().getName());
|
||||||
proxiedPlayer.sendMessage(message);
|
proxiedPlayer.sendMessage(message);
|
||||||
|
} else {
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user