#Chat Ranks
1 messages · Page 1 of 1 (latest)
gimme 5 minutes broski
ok
import { world, system } from "@minecraft/server";
export const commandPrefix = "!";
world.beforeEvents.chatSend.subscribe((eventData) => {
const player = eventData.sender;
const message = eventData.message;
eventData.cancel = true;
if (message.startsWith(commandPrefix)) return;
const ranks = player.getTags().filter(filter => filter.startsWith("chatRank:"));
let display = "";
for (let i = 0; i < ranks.length; i++) {
ranks = ranks + `§8[${ranks[i].slice("chatRank:".length")}§8] `
};
world.sendMessage(`${display}§r${player.name}: ${message}`);
return;
});
ty
np man
ye?
Wait do u put instead of command prefix
wdym
?
it runs when someone gonna send smth
if message is command
command is when it starts with prefix
it won't send
then it gets ur tags that are gonna be ur ranks
and it sends message
Ok
Wait this doesn’t make sense
For the last bit
World.sendMessage @lofty hearth
The Brackets aren’t closed
world.sendMessage is okay
oh shoot he
ye
i forgot
thx
did u import ir
it
afk
const ranks -> let ranks
Where
look at the script
There’s no let ranks
welp
Do I change all const into let
``import { world, System } from '@minecraft/server'
export const commandPrefix = "!"
world.afterEvents.chatSend.subscribe((eventData) => {
const player = eventData.sender
const message = eventData.message
eventData.cancel = true
if (message.startsWith(commandPrefix)) return
let ranks = player.getTags().filter(filter =>
filter.startsWith("chatRank:"))
let display = ""
for (let i = 0; i <ranks.length; i++) {
ranks = ranks + §8[${ranks[i].slice("chatRank:".length)}§8]
};
world.sendMessage(${display}§r${player.name}: ${message})
return
})``
is this ur acc?
why are u typing on ur phone but not ur pc
@lofty hearth I gtg can u tell me what I have done wrong pls Ty
[Scripting][error]-InternalError: interrupted at <anonymous> (index.js:62)
[index.js] ran with error: [SyntaxError: unexpected end of string at chatranks.js:13
import { world } from '@minecraft/server';
//Color Function. Each Rank
function formatRankTag(tag) {
let colorCode;
switch (tag) {
case "rank:Member":
colorCode = "§a"; // Green for Member rank
break;
case "rank:Discord":
case "rank:Donator":
case "rank:Booster":
colorCode = "§b"; // Cyan for Discord, Donator, and Booster ranks
break;
case "rank:Mod":
colorCode = "§e"; // Yellow for Mod rank
break;
case "rank:Admin":
colorCode = "§c"; // Red for Admin rank
break;
case "rank:Owner":
colorCode = "§6"; // Gold for Owner rank
break;
default:
colorCode = "§f"; // White for other ranks
break;
}
return colorCode + tag.substring(5).replaceAll("--", "§r§l§8][§r");
};
world.beforeEvents.chatSend.subscribe((data) => {
data.cancel = true;
let message = data.message;
let player = data.sender;
const playerName = player.name;
const tag = player.getTags().find((tag) => tag.startsWith("rank:"));
if (data.message.startsWith("-")) {
return;
}
let rankTag = "";
switch (tag) {
case "rank:Member": // Member
rankTag = formatRankTag(tag);
break;
case "rank:Discord": // Discord
case "rank:Donator": // Donator
case "rank:Booster": // Booster
case "rank:Mod": // Mod
case "rank:Admin": // Admin
case "rank:Owner": // Owner
rankTag = formatRankTag(tag);
break;
default:
break;
}
const chatMessage = `tellraw @a {"rawtext":[{"text":"§l§8[§r${rankTag}§l§8]§r§7 ${playerName}§r §f§l>§r ${data.message}"}]}`;
world.getDimension("overworld").runCommandAsync(chatMessage);
});```
This Is How My Rank System Works
import { world } from "@minecraft/server";
export const commandPrefix = "!";
const defaultRank = "§7[Member] §r{name} §7>> §r{msg}";
const rankTag = "rank:";
world.beforeEvents.chatSend.subscribe((data) => {
const { sender, message } = data;
if (message.startsWith(commandPrefix)) return;
data.cancel = true;
const getRankTag = sender.getTags()?.find((rank) => rank.startsWith(rankTag)).slice(rankTag.length) ?? defaultRank;
world.sendMessage(
getRankTag
?.replaceAll("{name}", sender.name)
?.replaceAll("{msg}", message)
);
});
/tag @s add "rank:SOMETHING {name} >> {msg}"
💀