From 6875926306e32c1763c36d84c1794dd3dfe9e67d Mon Sep 17 00:00:00 2001 From: MiniDay <372403923@qq.com> Date: Sat, 10 Jun 2023 23:53:21 +0800 Subject: [PATCH] =?UTF-8?q?feat(hamster-name-case-fix):=20=E7=A6=81?= =?UTF-8?q?=E6=AD=A2=E5=A4=A7=E5=B0=8F=E5=86=99=E5=86=B2=E7=AA=81=E7=9A=84?= =?UTF-8?q?=E7=8E=A9=E5=AE=B6=E5=90=8D=E7=A7=B0=E8=BF=9B=E5=85=A5=E6=B8=B8?= =?UTF-8?q?=E6=88=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hamster-name-case-fix/build.gradle | 8 +++ .../mc/plugin/name/fix/NameFixPlugin.java | 63 +++++++++++++++++++ .../src/main/resources/bungee.yml | 9 +++ .../src/main/resources/config.yml | 1 + settings.gradle | 1 + 5 files changed, 82 insertions(+) create mode 100644 hamster-name-case-fix/build.gradle create mode 100644 hamster-name-case-fix/src/main/java/cn/hamster3/mc/plugin/name/fix/NameFixPlugin.java create mode 100644 hamster-name-case-fix/src/main/resources/bungee.yml create mode 100644 hamster-name-case-fix/src/main/resources/config.yml diff --git a/hamster-name-case-fix/build.gradle b/hamster-name-case-fix/build.gradle new file mode 100644 index 0000000..f5b2610 --- /dev/null +++ b/hamster-name-case-fix/build.gradle @@ -0,0 +1,8 @@ +version '1.0.0-SNAPSHOT' +setArchivesBaseName("HamsterNameCaseFix") + +dependencies { + //noinspection VulnerableLibrariesLocal + compileOnly "net.md-5:bungeecord-api:${bungeecord_api_version}" + compileOnly "cn.hamster3.mc.plugin.ball:common:${hamster_ball_version}" +} diff --git a/hamster-name-case-fix/src/main/java/cn/hamster3/mc/plugin/name/fix/NameFixPlugin.java b/hamster-name-case-fix/src/main/java/cn/hamster3/mc/plugin/name/fix/NameFixPlugin.java new file mode 100644 index 0000000..b717efb --- /dev/null +++ b/hamster-name-case-fix/src/main/java/cn/hamster3/mc/plugin/name/fix/NameFixPlugin.java @@ -0,0 +1,63 @@ +package cn.hamster3.mc.plugin.name.fix; + +import cn.hamster3.mc.plugin.ball.common.api.BallAPI; +import cn.hamster3.mc.plugin.ball.common.entity.BallPlayerInfo; +import net.md_5.bungee.api.ProxyServer; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.event.PreLoginEvent; +import net.md_5.bungee.api.plugin.Listener; +import net.md_5.bungee.api.plugin.Plugin; +import net.md_5.bungee.config.Configuration; +import net.md_5.bungee.config.ConfigurationProvider; +import net.md_5.bungee.config.YamlConfiguration; +import net.md_5.bungee.event.EventHandler; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; + +public class NameFixPlugin extends Plugin implements Listener { + private String kickMessage; + + @Override + public void onEnable() { + if (getDataFolder().mkdir()) { + getLogger().info("创建插件文件夹..."); + } + File configFile = new File(getDataFolder(), "config.yml"); + if (!configFile.exists()) { + try { + InputStream in = getResourceAsStream("config.yml"); + Files.copy(in, configFile.toPath()); + } catch (Exception e) { + e.printStackTrace(); + return; + } + } + try { + Configuration configuration = ConfigurationProvider.getProvider(YamlConfiguration.class).load(configFile); + kickMessage = configuration.getString("kick-message"); + } catch (IOException e) { + e.printStackTrace(); + return; + } + ProxyServer.getInstance().getPluginManager().registerListener(this, this); + } + + @EventHandler + public void onPreLogin(PreLoginEvent event) { + String name = event.getConnection().getName(); + for (BallPlayerInfo info : BallAPI.getInstance().getAllPlayerInfo().values()) { + if (!name.equalsIgnoreCase(info.getName())) { + continue; + } + if (name.equals(info.getName())) { + continue; + } + event.setCancelled(true); + event.setCancelReason(new TextComponent(kickMessage.replace("%player_name%", info.getName()))); + break; + } + } +} diff --git a/hamster-name-case-fix/src/main/resources/bungee.yml b/hamster-name-case-fix/src/main/resources/bungee.yml new file mode 100644 index 0000000..ce92119 --- /dev/null +++ b/hamster-name-case-fix/src/main/resources/bungee.yml @@ -0,0 +1,9 @@ +name: HamsterNameCaseFix +main: cn.hamster3.mc.plugin.name.fix.NameFixPlugin +version: ${version} + +author: MiniDay +description: 禁止大小写冲突的玩家名称进入游戏 + +depends: + - HamsterBall diff --git a/hamster-name-case-fix/src/main/resources/config.yml b/hamster-name-case-fix/src/main/resources/config.yml new file mode 100644 index 0000000..7db93ca --- /dev/null +++ b/hamster-name-case-fix/src/main/resources/config.yml @@ -0,0 +1 @@ +kick-message: "§c请使用名称 %player_name% 登录!" \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index cd13bf8..5fbfbfd 100644 --- a/settings.gradle +++ b/settings.gradle @@ -13,4 +13,5 @@ include 'hamster-join-message' include 'hamster-protect-explosion' include 'hamster-protect-piston-wool-carpet' include 'hamster-protect-farmland' +include 'hamster-name-case-fix'