feat(hamster-name-case-fix): 禁止大小写冲突的玩家名称进入游戏

This commit is contained in:
2023-06-10 23:53:21 +08:00
parent 3831a51f34
commit 6875926306
5 changed files with 82 additions and 0 deletions

View File

@@ -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}"
}

View File

@@ -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;
}
}
}

View File

@@ -0,0 +1,9 @@
name: HamsterNameCaseFix
main: cn.hamster3.mc.plugin.name.fix.NameFixPlugin
version: ${version}
author: MiniDay
description: 禁止大小写冲突的玩家名称进入游戏
depends:
- HamsterBall

View File

@@ -0,0 +1 @@
kick-message: "§c请使用名称 %player_name% 登录!"

View File

@@ -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'