Skip to content

Commit

Permalink
修改聊天类
Browse files Browse the repository at this point in the history
  • Loading branch information
CSneko committed Nov 4, 2024
1 parent a85a2cc commit 17303a1
Show file tree
Hide file tree
Showing 10 changed files with 86 additions and 19 deletions.
3 changes: 3 additions & 0 deletions common/src/main/java/org/cneko/toneko/bukkit/ToNeko.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@
import org.cneko.toneko.bukkit.events.WorldEvents;
import org.cneko.toneko.bukkit.msic.Metrics;
import org.cneko.toneko.bukkit.util.PlaceHolderUtil;
import org.cneko.toneko.bukkit.util.PlayerUtil;
import org.cneko.toneko.common.Bootstrap;
import org.cneko.toneko.common.api.Messaging;
import org.cneko.toneko.common.api.NekoQuery;
import org.cneko.toneko.common.mod.impl.FabricConfigImpl;
import org.cneko.toneko.common.mod.impl.FabricLanguageImpl;
Expand All @@ -27,6 +29,7 @@ public void onEnable() {
ConfigUtil.INSTANCE = new FabricConfigImpl();
LanguageUtil.INSTANCE = new FabricLanguageImpl();
Bootstrap.bootstrap();
Messaging.GET_PLAYER_UUID_INSTANCE = PlayerUtil::getPlayerUUIDByName;
// common end

// util start
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,13 @@
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.cneko.ctlib.common.file.JsonConfiguration;
import org.cneko.ctlib.common.util.ChatPrefix;
import org.cneko.toneko.bukkit.api.NekoStatus;
import org.cneko.toneko.bukkit.util.PlaceHolderUtil;
import org.cneko.toneko.common.Stats;
import org.cneko.toneko.common.api.NekoQuery;
import org.cneko.toneko.common.util.ConfigUtil;
import org.cneko.toneko.common.util.LanguageUtil;
import org.cneko.toneko.common.util.Messaging;
import org.cneko.toneko.common.api.Messaging;

import java.util.List;
import java.util.UUID;
Expand All @@ -36,11 +35,8 @@ public void onChat(AsyncChatEvent event) {
// 获取昵称
String nickname = neko.getNickName();
message = modify(message, neko);
// 获取前缀
List<String> prefix = NekoStatus.getPlayerPrefixes(player);
String p = formatPrefixes(prefix);
// 格式化消息
message = format(message, player, nickname, p);
message = format(message, player, nickname);
sendMessage(message);
// 消息中喵的数量
int count = Stats.getMeow(message);
Expand All @@ -49,9 +45,9 @@ public void onChat(AsyncChatEvent event) {
if(ConfigUtil.STATS) Stats.meowInChat(player.getName(),count);
}

private String format(String message, Player player, String nickname,String prefix){
private String format(String message, Player player, String nickname){
String format = PlaceHolderUtil.replace(player,ConfigUtil.CHAT_FORMAT);
return Messaging.format(message,player.getName(),nickname,prefix,format);
return Messaging.format(message,player.getName(),nickname,format);
}

public static String formatPrefixes(List<String> prefixes) {
Expand Down
17 changes: 17 additions & 0 deletions common/src/main/java/org/cneko/toneko/bukkit/util/PlayerUtil.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package org.cneko.toneko.bukkit.util;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;

import java.util.UUID;

public class PlayerUtil {
public static Player getPlayerByName(String playerName) {
return Bukkit.getPlayer(playerName);
}

public static UUID getPlayerUUIDByName(String name) {
return Bukkit.getPlayerUniqueId(name);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package org.cneko.toneko.common.api;

public class EventBase {
}
Original file line number Diff line number Diff line change
@@ -1,40 +1,67 @@
package org.cneko.toneko.common.util;
package org.cneko.toneko.common.api;

import org.cneko.ctlib.common.util.ChatPrefix;
import org.cneko.toneko.common.util.ConfigUtil;
import org.cneko.toneko.common.util.LanguageUtil;
import org.jetbrains.annotations.ApiStatus;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import java.util.UUID;

public class Messaging {
@ApiStatus.Internal
public static GetPlayerUUID GET_PLAYER_UUID_INSTANCE;

public static String format(String msg, String player, String nickname){
return format(msg,player,nickname,ChatPrefix.getPrivatePrefix(player) + ChatPrefix.getAllPublicPrefixValues());
return format(msg,player,nickname, getChatPrefixes(player));
}

public static String format(String message, String playerName, String nickname, String format) {
return format(message,playerName,nickname,getChatPrefixes(playerName),format);
}

public static String format(String msg, String player, String nickname, String prefix, String chatFormat){
public static String format(String msg, String player, String nickname, List<String> prefix, String chatFormat){
// 修改昵称
if(nickname.isEmpty()){
if(nickname.isEmpty() || nickname.isBlank()){
nickname = player;
}else {
nickname = "§6~§f"+nickname;
}
return chatFormat.
replace("${prefix}",prefix).
replace("${prefix}",formatPrefixes(prefix)).
replace("${msg}",msg).
replace("${name}",nickname).
replace("${c}","§");
}

public static String format(String msg, String player, String nickname, String prefix){
return format(msg,player,nickname,prefix,ConfigUtil.CHAT_FORMAT);
public static String format(String msg, String player, String nickname, List<String> prefixes){
return format(msg,player,nickname,prefixes, ConfigUtil.CHAT_FORMAT);
}

public static List<String> getChatPrefixes(String playerName){
UUID uuid = GET_PLAYER_UUID_INSTANCE.get(playerName);
List<String> prefixes = new ArrayList<>();
if (NekoQuery.isNeko(uuid)){
prefixes.add(LanguageUtil.prefix);
}
return prefixes;
}

public static String replacePhrase(String message, String phrase){
message = runPetPhrases(message, phrase);
return message;
}

private static String formatPrefixes(List<String> prefixes){
StringBuilder formatted = new StringBuilder();
for (String prefix : prefixes) {
// 将每个前缀格式化为 [§a前缀§f§r]
formatted.append("[§a").append(prefix).append("§f§r]");
}
return formatted.toString();
}

/*
以下代码来源于
https://github.com/CSneko/kawai-text/blob/main/js/petPhrase.js
Expand Down Expand Up @@ -82,4 +109,8 @@ public static String runPetPhrases(String text, String petPhrase) {

return text;
}

public interface GetPlayerUUID {
UUID get(String playerName);
}
}
10 changes: 10 additions & 0 deletions common/src/main/java/org/cneko/toneko/common/mod/ModBootstrap.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.cneko.toneko.common.mod;

import org.cneko.toneko.common.api.Messaging;
import org.cneko.toneko.common.mod.util.PlayerUtil;

public class ModBootstrap {
public static void bootstrap() {
Messaging.GET_PLAYER_UUID_INSTANCE = PlayerUtil::getPlayerUUIDByName;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
import org.cneko.toneko.common.mod.util.TextUtil;
import org.cneko.toneko.common.util.ConfigUtil;
import org.cneko.toneko.common.util.LanguageUtil;
import org.cneko.toneko.common.util.Messaging;
import org.cneko.toneko.common.api.Messaging;

import java.util.List;
import java.util.UUID;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ public class PlayerUtil {
public static Player getPlayerByName(String name) {
return ModMeta.INSTANCE.getServer().getPlayerList().getPlayerByName(name);
}
public static UUID getPlayerUUIDByName(String name) {
return getPlayerByName(name).getUUID();
}
public static Player getPlayerByUUID(UUID uuid) {
return ModMeta.INSTANCE.getServer().getPlayerList().getPlayer(uuid);
}
Expand Down
2 changes: 2 additions & 0 deletions fabric/src/main/java/org/cneko/toneko/fabric/ToNeko.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
import org.cneko.toneko.common.Bootstrap;
import org.cneko.toneko.common.mod.ModBootstrap;
import org.cneko.toneko.common.mod.ModMeta;
import org.cneko.toneko.common.mod.commands.NekoCommand;
import org.cneko.toneko.common.mod.commands.QuirkCommand;
Expand Down Expand Up @@ -60,6 +61,7 @@ public void onInitialize() {
PermissionUtil.init();
// 通用的启动
Bootstrap.bootstrap();
ModBootstrap.bootstrap();
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import net.neoforged.neoforge.event.server.ServerStartedEvent;
import net.neoforged.neoforge.registries.DeferredRegister;
import org.cneko.toneko.common.Bootstrap;
import org.cneko.toneko.common.mod.ModBootstrap;
import org.cneko.toneko.common.mod.ModMeta;
import org.cneko.toneko.common.mod.commands.NekoCommand;
import org.cneko.toneko.common.mod.commands.QuirkCommand;
Expand Down Expand Up @@ -85,7 +86,7 @@ public ToNekoNeoForge(IEventBus bus, ModContainer container) {
ConfigUtil.INSTANCE = new FabricConfigImpl();
// 通用的启动
Bootstrap.bootstrap();

ModBootstrap.bootstrap();
ServerLifecycleEvents.SERVER_STARTED.register(server -> {
ModMeta.INSTANCE.setServer(server);
});
Expand Down

0 comments on commit 17303a1

Please sign in to comment.