feat: add LuckPerms support to chat handler
This commit is contained in:
+10
-4
@@ -26,17 +26,23 @@ fabricApi {
|
||||
client = true
|
||||
}
|
||||
}
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
maven {
|
||||
name = "Modrinth"
|
||||
url = "https://api.modrinth.com/maven"
|
||||
}
|
||||
maven {
|
||||
name = "luckperms"
|
||||
url = "https://repo.luckperms.net/"
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
minecraft "com.mojang:minecraft:${project.minecraft_version}"
|
||||
implementation "net.fabricmc:fabric-loader:${project.loader_version}"
|
||||
|
||||
implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
|
||||
compileOnly "net.luckperms:api:5.4"
|
||||
}
|
||||
|
||||
processResources {
|
||||
inputs.property "version", project.version
|
||||
inputs.property "minecraft_version", project.minecraft_version
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"required": true,
|
||||
"minVersion": "0.8",
|
||||
"package": "org.examp.john.mixin.client",
|
||||
"compatibilityLevel": "JAVA_25",
|
||||
"client": [
|
||||
],
|
||||
"injectors": {
|
||||
"defaultRequire": 1
|
||||
},
|
||||
"overwrites": {
|
||||
"requireAnnotations": true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"id": "localchat",
|
||||
"version": "${version}",
|
||||
"name": "localchat",
|
||||
"description": "",
|
||||
"authors": [],
|
||||
"contact": {},
|
||||
"license": "All-Rights-Reserved",
|
||||
"icon": "assets/localchat/icon.png",
|
||||
"environment": "*",
|
||||
"entrypoints": {
|
||||
"fabric-datagen": [
|
||||
"org.examp.john.client.LocalchatDataGenerator"
|
||||
],
|
||||
"client": [
|
||||
"org.examp.john.client.LocalchatClient"
|
||||
],
|
||||
"main": [
|
||||
"org.examp.john.Localchat"
|
||||
]
|
||||
},
|
||||
"mixins": [
|
||||
"localchat.mixins.json",
|
||||
{
|
||||
"config": "localchat.client.mixins.json",
|
||||
"environment": "client"
|
||||
}
|
||||
],
|
||||
"depends": {
|
||||
"fabricloader": ">=${loader_version}",
|
||||
"fabric-api": "*",
|
||||
"minecraft": "${minecraft_version}"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"required": true,
|
||||
"minVersion": "0.8",
|
||||
"package": "org.examp.john.mixin",
|
||||
"compatibilityLevel": "JAVA_25",
|
||||
"mixins": [
|
||||
],
|
||||
"injectors": {
|
||||
"defaultRequire": 1
|
||||
},
|
||||
"overwrites": {
|
||||
"requireAnnotations": true
|
||||
}
|
||||
}
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user