feat: add LuckPerms support to chat handler
This commit is contained in:
@@ -1,19 +1,23 @@
|
||||
package org.examp.john;
|
||||
|
||||
import net.fabricmc.fabric.api.message.v1.ServerMessageEvents;
|
||||
import net.luckperms.api.LuckPerms;
|
||||
import net.luckperms.api.LuckPermsProvider;
|
||||
import net.luckperms.api.model.user.User;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.chat.MutableComponent;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ChatHandler {
|
||||
public static void register() {
|
||||
|
||||
public static void register() {
|
||||
final String prefix = "!";
|
||||
final float LOCAL_CHAT_RADIUS = 50;
|
||||
final float LOCAL_CHAT_RADIUS = 100;
|
||||
|
||||
ServerMessageEvents.ALLOW_CHAT_MESSAGE.register((message, sender, params) -> {
|
||||
String text = message.signedContent();
|
||||
@@ -21,20 +25,39 @@ public class ChatHandler {
|
||||
ServerLevel serverLevel = sender.level();
|
||||
MinecraftServer server = serverLevel.getServer();
|
||||
List<ServerPlayer> players = server.getPlayerList().getPlayers();
|
||||
String nickmane = sender.getDisplayName().getString();
|
||||
if (text.startsWith(prefix)) {
|
||||
|
||||
String playerPrefix = "";
|
||||
try {
|
||||
LuckPerms luckPerms = LuckPermsProvider.get();
|
||||
User user = luckPerms.getUserManager().getUser(sender.getUUID());
|
||||
if (user != null) {
|
||||
String metaPrefix = user.getCachedData().getMetaData().getPrefix();
|
||||
if (metaPrefix != null) {
|
||||
playerPrefix = metaPrefix;
|
||||
}
|
||||
}
|
||||
} catch (Throwable ignored) {
|
||||
}
|
||||
|
||||
MutableComponent formattedPrefix = Component.literal(playerPrefix.replace("&", "§"));
|
||||
MutableComponent formattedName = Component.empty()
|
||||
.append(formattedPrefix)
|
||||
.append(sender.getDisplayName());
|
||||
|
||||
if (text.startsWith(prefix)) {
|
||||
String actualMessage = text.substring(1).trim();
|
||||
Component globalMessage = Component.literal(nickmane + ": " + actualMessage);
|
||||
Component globalMessage = Component.empty()
|
||||
.append(formattedName)
|
||||
.append(Component.literal(": " + actualMessage));
|
||||
|
||||
for (ServerPlayer player : players) {
|
||||
player.sendSystemMessage(globalMessage);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
Component localMessage = Component.literal(nickmane + ": ")
|
||||
.append(Component.literal(text)).withStyle(ChatFormatting.GRAY);
|
||||
Component localMessage = Component.empty()
|
||||
.append(formattedName)
|
||||
.append(Component.literal(": " + text).withStyle(ChatFormatting.GRAY));
|
||||
|
||||
for (ServerPlayer player : players) {
|
||||
if (player.level() == serverLevel && player.distanceTo(sender) <= LOCAL_CHAT_RADIUS) {
|
||||
|
||||
@@ -13,4 +13,4 @@ public class Localchat implements ModInitializer {
|
||||
// Тепер ChatHandler викликається з того ж пакета без помилок імпорту
|
||||
ChatHandler.register();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user