配置文件修改

This commit is contained in:
筱锋xiao_lfeng 2023-10-12 22:17:34 +08:00
parent 431bf215f1
commit 2c1a5cce36
9 changed files with 179 additions and 47 deletions

View File

@ -7,12 +7,13 @@ import com.frontleaves.bungeecross.commands.SendToServerCommand;
import com.frontleaves.bungeecross.configuration.ServerEnable;
import com.frontleaves.bungeecross.configuration.VariableStorage;
import com.frontleaves.bungeecross.events.PlayerJoinProxyEvent;
import com.frontleaves.bungeecross.events.PlayerLeaveProxyEvent;
import lombok.Getter;
import net.md_5.bungee.api.plugin.Plugin;
/**
* @version final VERSION 变量
* @author 筱锋xiao_lfeng
* @version final VERSION 变量
*/
public final class BungeeCross extends Plugin {
@Getter
@ -26,13 +27,14 @@ public final class BungeeCross extends Plugin {
ServerEnable serverEnable = new ServerEnable(this);
serverEnable.serverStart();
// 注册指令
getProxy().getPluginManager().registerCommand(this, new PluginInfoCommand("bungeecross"));
getProxy().getPluginManager().registerCommand(this, new PluginInfoCommand("bungeecross", this));
getProxy().getPluginManager().registerCommand(this, new ProxyServerListCommand("server-list"));
getProxy().getPluginManager().registerCommand(this, new ReturnHubCommand("lobby", this));
getProxy().getPluginManager().registerCommand(this, new SendToServerCommand("serverTo", this));
getProxy().getPluginManager().registerCommand(this, new SendToServerCommand("sto", this));
// 注册监听器
getProxy().getPluginManager().registerListener(this, new PlayerJoinProxyEvent());
getProxy().getPluginManager().registerListener(this, new PlayerJoinProxyEvent(this));
getProxy().getPluginManager().registerListener(this, new PlayerLeaveProxyEvent(this));
}
@Override

View File

@ -1,9 +1,11 @@
package com.frontleaves.bungeecross.commands;
import com.frontleaves.bungeecross.BungeeCross;
import com.frontleaves.bungeecross.configuration.ServerEnable;
import com.frontleaves.bungeecross.configuration.VariableStorage;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.plugin.Command;
import org.jetbrains.annotations.NotNull;
/**
* 输出插件基本信息
@ -12,17 +14,43 @@ import net.md_5.bungee.api.plugin.Command;
*/
public class PluginInfoCommand extends Command {
public PluginInfoCommand(String name) {
private final BungeeCross plugin;
public PluginInfoCommand(String name, BungeeCross bungeeCross) {
super(name);
plugin = bungeeCross;
}
@Override
public void execute(CommandSender commandSender, String[] strings) {
commandSender.sendMessage("§9§l§m=]=======§2 Bungee§aCross §9§l§m========[=");
commandSender.sendMessage(VariableStorage.getPrefix() + "蹦极插件§2Bungee§aCross");
commandSender.sendMessage(VariableStorage.getPrefix() + "作者:" + BungeeCross.getAUTHOR());
commandSender.sendMessage(VariableStorage.getPrefix() + "版本:" + BungeeCross.getVERSION());
commandSender.sendMessage(VariableStorage.getPrefix() + "§b您的版本为最新的");
commandSender.sendMessage("§9§l§m=]=======§2 Bungee§aCross §9§l§m========[=");
public void execute(@NotNull CommandSender commandSender, String @NotNull [] strings) {
switch (strings.length) {
case 1: {
if ("reload".equals(strings[0])) {
if (commandSender.hasPermission("bungeecross.admin")) {
ServerEnable serverEnable = new ServerEnable(plugin);
serverEnable.serverReload();
} else {
commandSender.sendMessage(VariableStorage.getPrefix() + "您不是管理员,无法进行操作");
}
} else if ("update".equals(strings[0])) {
if (commandSender.hasPermission("bungeecross.admin")) {
commandSender.sendMessage(VariableStorage.getPrefix() + "您的版本为最新的 " + BungeeCross.getVERSION());
} else {
commandSender.sendMessage(VariableStorage.getPrefix() + "您不是管理员,无法进行操作");
}
} else {
commandSender.sendMessage(VariableStorage.getPrefix() + "参数无效");
}
}
break;
default: {
commandSender.sendMessage("§9§l§m=]=======§2 Bungee§aCross §9§l§m========[=");
commandSender.sendMessage(VariableStorage.getPrefix() + "跨服插件§2Bungee§aCross");
commandSender.sendMessage(VariableStorage.getPrefix() + "§6作者§e" + BungeeCross.getAUTHOR());
commandSender.sendMessage(VariableStorage.getPrefix() + "§9版本§d" + BungeeCross.getVERSION());
commandSender.sendMessage(VariableStorage.getPrefix() + "§b您的版本为最新的");
commandSender.sendMessage("§9§l§m=]=======§2 Bungee§aCross §9§l§m========[=");
}
}
}
}

View File

@ -3,6 +3,7 @@ package com.frontleaves.bungeecross.commands;
import com.frontleaves.bungeecross.configuration.VariableStorage;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.plugin.Command;
import org.jetbrains.annotations.NotNull;
/**
* 查询服务器列表
@ -19,7 +20,7 @@ public class ProxyServerListCommand extends Command {
}
@Override
public void execute(CommandSender commandSender, String[] strings) {
public void execute(@NotNull CommandSender commandSender, String[] strings) {
// 整理数据
serverList = null;
VariableStorage.getProxyServer().forEach((key, serverInfo) -> {

View File

@ -3,19 +3,22 @@ package com.frontleaves.bungeecross.commands;
import com.frontleaves.bungeecross.BungeeCross;
import com.frontleaves.bungeecross.configuration.VariableStorage;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.config.ServerInfo;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Command;
import org.jetbrains.annotations.NotNull;
import java.util.Random;
/**
* 返回大厅指令
*
* @author 筱锋xiao_lfeng
* @since v1.0-SNAPSHOT
* @version v1.0-SNAPSHOT
* @since v1.0-SNAPSHOT
*/
public class ReturnHubCommand extends Command {
private final BungeeCross plugin;
public ReturnHubCommand(String name, BungeeCross bungeeCross) {
super(name);
plugin = bungeeCross;
@ -25,11 +28,17 @@ public class ReturnHubCommand extends Command {
public void execute(@NotNull CommandSender commandSender, String[] strings) {
// 检查玩家所属服务器
String playerName = commandSender.getName();
ServerInfo serverInfo = plugin.getProxy().getPlayer(playerName).getServer().getInfo();
if (VariableStorage.getLoginServer().contains(serverInfo.getName())) {
commandSender.sendMessage(VariableStorage.getPrefix() + "登录服无权限传送");
if (commandSender instanceof ProxiedPlayer) {
String userServerInfo = plugin.getProxy().getPlayer(playerName).getServer().getInfo().getName();
if (VariableStorage.getLoginServer().contains(userServerInfo)) {
commandSender.sendMessage(VariableStorage.getPrefix() + "登录服无权限传送");
} else {
Random random = new Random();
int getKey = random.nextInt(VariableStorage.getLobbyServer().size());
plugin.getProxy().getPlayer(playerName).connect(plugin.getProxy().getServerInfo((String) VariableStorage.getLobbyServer().get(getKey)));
}
} else {
plugin.getProxy().getPlayer(playerName).connect(plugin.getProxy().getServerInfo("登陆大厅"));
commandSender.sendMessage(VariableStorage.getPrefix() + "该指令只允许玩家使用");
}
}
}

View File

@ -62,30 +62,56 @@ public class SendToServerCommand extends Command {
ServerInfo serverInfo = plugin.getProxy().getServers().get(strings[0]);
if (serverInfo != null) {
ProxiedPlayer player = plugin.getProxy().getPlayer(strings[1]);
// 玩家是否已链接
if (player != null) {
if (player.isConnected()) {
ServerInfo playerServer = player.getServer().getInfo();
if (playerServer != serverInfo) {
player.connect(serverInfo);
commandSender.sendMessage(VariableStorage.getPrefix() + "已将 " + player.getName() + " 用户传送到 " + serverInfo.getName() + " 服务器");
if (commandSender instanceof ProxiedPlayer) {
ServerInfo serverName = plugin.getProxy().getPlayer(commandSender.getName()).getServer().getInfo();
if (!VariableStorage.getLoginServer().contains(serverName.getName())) {
// 玩家是否已链接
if (player != null) {
if (player.isConnected()) {
ServerInfo playerServer = player.getServer().getInfo();
if (playerServer != serverInfo) {
player.connect(serverInfo);
commandSender.sendMessage(VariableStorage.getPrefix() + "已将 " + player.getName() + " 用户传送到 " + serverInfo.getName() + " 服务器");
} else {
commandSender.sendMessage(VariableStorage.getPrefix() + "玩家 " + player.getName() + " 正处于 " + playerServer.getName() + " 服务器中");
}
} else {
commandSender.sendMessage(VariableStorage.getPrefix() + "玩家 " + player.getName() + " 不在线");
}
} else {
commandSender.sendMessage(VariableStorage.getPrefix() + "玩家 " + player.getName() + " 正处于 " + playerServer.getName() + " 服务器中");
commandSender.sendMessage(VariableStorage.getPrefix() + "玩家 " + strings[1] + " 不在线");
}
} else {
commandSender.sendMessage(VariableStorage.getPrefix() + "玩家 " + player.getName() + " 不在线");
commandSender.sendMessage(VariableStorage.getPrefix() + "登录服禁止进行服务器跳转");
}
} else {
commandSender.sendMessage(VariableStorage.getPrefix() + "玩家 " + strings[1] + " 不在线");
// 玩家是否已链接
if (player != null) {
if (player.isConnected()) {
ServerInfo playerServer = player.getServer().getInfo();
if (playerServer != serverInfo) {
player.connect(serverInfo);
commandSender.sendMessage(VariableStorage.getPrefix() + "已将 " + player.getName() + " 用户传送到 " + serverInfo.getName() + " 服务器");
} else {
commandSender.sendMessage(VariableStorage.getPrefix() + "玩家 " + player.getName() + " 正处于 " + playerServer.getName() + " 服务器中");
}
} else {
commandSender.sendMessage(VariableStorage.getPrefix() + "玩家 " + player.getName() + " 不在线");
}
} else {
commandSender.sendMessage(VariableStorage.getPrefix() + "玩家 " + strings[1] + " 不在线");
}
}
} else {
commandSender.sendMessage(VariableStorage.getPrefix() + "服务器不存在");
}
} else {
commandSender.sendMessage(VariableStorage.getPrefix() + "您不是管理员,无权限操作玩家");
}
}
break;
default: {
commandSender.sendMessage(VariableStorage.getPrefix() + "参数无效");
commandSender.sendMessage(VariableStorage.getPrefix() + "使用方法 /sto <ServerName> [player]");
}
}
}

View File

@ -37,6 +37,17 @@ public class ServerEnable {
System.out.println("§9§l§m=]=======§2 Bungee§aCross §9§l§m========[=");
}
public void serverReload() {
this.getConfig();
this.getLang();
System.out.println(VariableStorage.getPrefix() + "§c配置文件重载完毕");
System.out.println("§9§l§m=]=======§2 Bungee§aCross §9§l§m========[=");
System.out.println("§6作者§e" + BungeeCross.getAUTHOR());
System.out.println("§9版本§d" + BungeeCross.getVERSION());
System.out.println("§9§l§m=]=======§2 Bungee§aCross §9§l§m========[=");
}
private void getLang() {
}
@ -95,24 +106,24 @@ public class ServerEnable {
VariableStorage.setLobbyServer(config.getList("bungee-cord.server-login"));
}
// 获取登陆提醒
if (config.getString("bungee-cord.login-reminder") != null && !config.getString("bungee-cord.login-reminder").isEmpty()) {
if (config.getString("bungee-cord.login-reminder") != null) {
VariableStorage.setBungeeCordReminder(config.getBoolean("bungee-cord.login-reminder"));
if (config.getString("bungee-cord.join-message") != null && !config.getString("bungee-cord.join-message").isEmpty()) {
VariableStorage.setJoinMessage(config.getString("bungee-cord.join-message"));
} else {
VariableStorage.setJoinMessage("§7[§a+§7] §6%player%");
}
if (config.getString("bungee-cord.leave-message") != null && !config.getString("bungee-cord.leave-message").isEmpty()) {
VariableStorage.setLeaveMessage(config.getString("bungee-cord.leave-message"));
} else {
VariableStorage.setLeaveMessage("§7[§c-§7] §6%player%");
}
} else {
config.set("bungee-cord.login-reminder", true);
VariableStorage.setBungeeCordReminder(true);
}
if (config.getString("bungee-cord.join-message") != null && !config.getString("bungee-cord.join-message").isEmpty()) {
VariableStorage.setJoinMessage(config.getString("bungee-cord.join-message"));
} else {
VariableStorage.setJoinMessage("§7[§a+§7] §6%player%");
}
if (config.getString("bungee-cord.leave-message") != null && !config.getString("bungee-cord.leave-message").isEmpty()) {
VariableStorage.setLeaveMessage(config.getString("bungee-cord.leave-message"));
} else {
VariableStorage.setLeaveMessage("§7[§c-§7] §6%player%");
}
// 是否开启管理员静默登录
if (config.getString("bungee-cord.login-silent") != null && !config.getString("bungee-cord.login-silent").isEmpty()) {
if (config.getString("bungee-cord.login-silent") != null) {
VariableStorage.setBungeeSilent(config.getBoolean("bungee-cord.login-silent"));
} else {
config.set("bungee-cord.login-silent", true);

View File

@ -28,4 +28,20 @@ public class VariableStorage {
@Getter
@Setter
private static List<?> lobbyServer;
@Getter
@Setter
private static boolean bungeeCordReminder;
@Getter
@Setter
private static String joinMessage;
@Getter
@Setter
private static String leaveMessage;
@Getter
@Setter
private static boolean bungeeSilent;
}

View File

@ -1,11 +1,14 @@
package com.frontleaves.bungeecross.events;
import com.frontleaves.bungeecross.BungeeCross;
import com.frontleaves.bungeecross.configuration.VariableStorage;
import net.md_5.bungee.api.event.ServerConnectedEvent;
import net.md_5.bungee.api.event.LoginEvent;
import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.event.EventHandler;
import org.jetbrains.annotations.NotNull;
import java.util.regex.Pattern;
/**
* 玩家登录服务器事件
*
@ -14,9 +17,25 @@ import org.jetbrains.annotations.NotNull;
* @since v1.0-SNAPSHOT
*/
public class PlayerJoinProxyEvent implements Listener {
private final BungeeCross plugin;
public PlayerJoinProxyEvent(BungeeCross bc) {
plugin = bc;
}
@EventHandler
public void onPlayerJoinProxy(@NotNull ServerConnectedEvent event) {
event.getPlayer().connect(VariableStorage.getProxyServer().get("login_1"));
public void onPlayerJoinProxy(@NotNull LoginEvent event) {
// 发送用户登录信息
String loginServerMessage = VariableStorage.getJoinMessage();
if (VariableStorage.isBungeeCordReminder()) {
if (!VariableStorage.isBungeeSilent()) {
plugin.getProxy().getPlayers().forEach(proxiedPlayer -> {
String message = Pattern.compile("%player%").matcher(loginServerMessage).replaceAll(event.getConnection().getName());
proxiedPlayer.sendMessage(message);
});
}
}
String message = Pattern.compile("%player%").matcher(loginServerMessage).replaceAll(event.getConnection().getName());
System.out.println(message);
}
}

View File

@ -1,10 +1,14 @@
package com.frontleaves.bungeecross.events;
import net.md_5.bungee.api.event.ServerDisconnectEvent;
import com.frontleaves.bungeecross.BungeeCross;
import com.frontleaves.bungeecross.configuration.VariableStorage;
import net.md_5.bungee.api.event.PlayerDisconnectEvent;
import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.event.EventHandler;
import org.jetbrains.annotations.NotNull;
import java.util.regex.Pattern;
/**
* 玩家离开服务器事件
*
@ -13,9 +17,25 @@ import org.jetbrains.annotations.NotNull;
* @since v1.0-SNAPSHOT
*/
public class PlayerLeaveProxyEvent implements Listener {
private final BungeeCross plugin;
public PlayerLeaveProxyEvent(BungeeCross bc) {
plugin = bc;
}
@EventHandler
public void onPlayerDisconnectEvent(@NotNull ServerDisconnectEvent event) {
public void onPlayerDisconnectEvent(@NotNull PlayerDisconnectEvent event) {
// 发送用户登录信息
String leaveServerMessage = VariableStorage.getLeaveMessage();
if (VariableStorage.isBungeeCordReminder()) {
if (!VariableStorage.isBungeeSilent()) {
plugin.getProxy().getPlayers().forEach(proxiedPlayer -> {
String message = Pattern.compile("%player%").matcher(leaveServerMessage).replaceAll(event.getPlayer().getName());
proxiedPlayer.sendMessage(message);
});
}
}
String message = Pattern.compile("%player%").matcher(leaveServerMessage).replaceAll(event.getPlayer().getName());
System.out.println(message);
}
}