feat: add LuckPerms support to chat handler
This commit is contained in:
+10
-4
@@ -26,17 +26,23 @@ fabricApi {
|
|||||||
client = true
|
client = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
maven {
|
||||||
|
name = "Modrinth"
|
||||||
|
url = "https://api.modrinth.com/maven"
|
||||||
|
}
|
||||||
|
maven {
|
||||||
|
name = "luckperms"
|
||||||
|
url = "https://repo.luckperms.net/"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
minecraft "com.mojang:minecraft:${project.minecraft_version}"
|
minecraft "com.mojang:minecraft:${project.minecraft_version}"
|
||||||
implementation "net.fabricmc:fabric-loader:${project.loader_version}"
|
implementation "net.fabricmc:fabric-loader:${project.loader_version}"
|
||||||
|
|
||||||
implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
|
implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
|
||||||
|
compileOnly "net.luckperms:api:5.4"
|
||||||
}
|
}
|
||||||
|
|
||||||
processResources {
|
processResources {
|
||||||
inputs.property "version", project.version
|
inputs.property "version", project.version
|
||||||
inputs.property "minecraft_version", project.minecraft_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;
|
package org.examp.john;
|
||||||
|
|
||||||
import net.fabricmc.fabric.api.message.v1.ServerMessageEvents;
|
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.ChatFormatting;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.network.chat.MutableComponent;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ChatHandler {
|
public class ChatHandler {
|
||||||
public static void register() {
|
|
||||||
|
|
||||||
|
public static void register() {
|
||||||
final String prefix = "!";
|
final String prefix = "!";
|
||||||
final float LOCAL_CHAT_RADIUS = 50;
|
final float LOCAL_CHAT_RADIUS = 100;
|
||||||
|
|
||||||
ServerMessageEvents.ALLOW_CHAT_MESSAGE.register((message, sender, params) -> {
|
ServerMessageEvents.ALLOW_CHAT_MESSAGE.register((message, sender, params) -> {
|
||||||
String text = message.signedContent();
|
String text = message.signedContent();
|
||||||
@@ -21,20 +25,39 @@ public class ChatHandler {
|
|||||||
ServerLevel serverLevel = sender.level();
|
ServerLevel serverLevel = sender.level();
|
||||||
MinecraftServer server = serverLevel.getServer();
|
MinecraftServer server = serverLevel.getServer();
|
||||||
List<ServerPlayer> players = server.getPlayerList().getPlayers();
|
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();
|
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) {
|
for (ServerPlayer player : players) {
|
||||||
player.sendSystemMessage(globalMessage);
|
player.sendSystemMessage(globalMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
Component localMessage = Component.empty()
|
||||||
Component localMessage = Component.literal(nickmane + ": ")
|
.append(formattedName)
|
||||||
.append(Component.literal(text)).withStyle(ChatFormatting.GRAY);
|
.append(Component.literal(": " + text).withStyle(ChatFormatting.GRAY));
|
||||||
|
|
||||||
for (ServerPlayer player : players) {
|
for (ServerPlayer player : players) {
|
||||||
if (player.level() == serverLevel && player.distanceTo(sender) <= LOCAL_CHAT_RADIUS) {
|
if (player.level() == serverLevel && player.distanceTo(sender) <= LOCAL_CHAT_RADIUS) {
|
||||||
|
|||||||
Reference in New Issue
Block a user