diff --git a/build.gradle b/build.gradle index 4231585..9fc29cf 100644 --- a/build.gradle +++ b/build.gradle @@ -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 diff --git a/out/client/resources/localchat.client.mixins.json b/out/client/resources/localchat.client.mixins.json new file mode 100644 index 0000000..b19dc56 --- /dev/null +++ b/out/client/resources/localchat.client.mixins.json @@ -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 + } +} diff --git a/out/production/resources/fabric.mod.json b/out/production/resources/fabric.mod.json new file mode 100644 index 0000000..7694098 --- /dev/null +++ b/out/production/resources/fabric.mod.json @@ -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}" + } +} diff --git a/out/production/resources/localchat.mixins.json b/out/production/resources/localchat.mixins.json new file mode 100644 index 0000000..eb1a5f0 --- /dev/null +++ b/out/production/resources/localchat.mixins.json @@ -0,0 +1,14 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "org.examp.john.mixin", + "compatibilityLevel": "JAVA_25", + "mixins": [ + ], + "injectors": { + "defaultRequire": 1 + }, + "overwrites": { + "requireAnnotations": true + } +} diff --git a/src/main/java/org/examp/john/ChatHandler.java b/src/main/java/org/examp/john/ChatHandler.java index 276a00a..66c434d 100644 --- a/src/main/java/org/examp/john/ChatHandler.java +++ b/src/main/java/org/examp/john/ChatHandler.java @@ -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 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) { diff --git a/src/main/java/org/examp/john/Localchat.java b/src/main/java/org/examp/john/Localchat.java index 4d5321c..d33b0f5 100644 --- a/src/main/java/org/examp/john/Localchat.java +++ b/src/main/java/org/examp/john/Localchat.java @@ -13,4 +13,4 @@ public class Localchat implements ModInitializer { // Тепер ChatHandler викликається з того ж пакета без помилок імпорту ChatHandler.register(); } -} \ No newline at end of file +}