#Chat Ranks

1 messages · Page 1 of 1 (latest)

thorn berry
#

How do I make?

lofty hearth
#

gimme 5 minutes broski

thorn berry
#

ok

lofty hearth
#
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;
});
thorn berry
#

ty

lofty hearth
#

np man

hearty hemlock
#

Wait

#

@lofty hearth

lofty hearth
#

ye?

hearty hemlock
#

Wait do u put instead of command prefix

lofty hearth
#

wdym

hearty hemlock
#

Oh no it is commandPrefix

#

@lofty hearth

lofty hearth
#

?

hearty hemlock
#

For the:

#

Wait

#

How does it work

lofty hearth
#

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

hearty hemlock
#

Ok

#

Wait so I do:
/tag @s add rank:[whatever I want] ?

lofty hearth
#
/tag @s add chatRank:
#

and what u want

hearty hemlock
#

Ok

#

Wait this doesn’t make sense

#

For the last bit

#

World.sendMessage @lofty hearth

#

The Brackets aren’t closed

lofty hearth
#

oh shoot he

#

ye

#

i forgot

#

thx

hearty hemlock
#

Don’t worry

#

@lofty hearth

#

It doesn’t work

lofty hearth
#

did u import ir

hearty hemlock
#

Wdym

#

Ir ?

#

Cause it typed:
/tag @s add chatRank:hi

#

I typed in chat no answer

lofty hearth
#

it

hearty hemlock
#

Yes I did

#

Oh

#

That’s weird

#

The error says

lofty hearth
#

afk

hearty hemlock
#

TypeError
ranks is read-only at <anonymous> (main.Js:15)

#

Ok

pine mirage
#

const ranks -> let ranks

hearty hemlock
#

Where

pine mirage
#

look at the script

hearty hemlock
#

There’s no let ranks

pine mirage
#

but theirs a const ranks !!!

#

const ranks -> let ranks

hearty hemlock
#

Ok

#

It still doesn’t work

pine mirage
#

welp

hearty hemlock
#

Do I change all const into let

thorn berry
#

``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
})``

hearty hemlock
#

That’s my code

#

@pine mirage

#

@lofty hearth

pine mirage
#

why are u typing on ur phone but not ur pc

thorn berry
#

idk

#

anyway

#

what have i done wrong

hearty hemlock
#

@lofty hearth I gtg can u tell me what I have done wrong pls Ty

rich sky
rich sky
#

[index.js] ran with error: [SyntaxError: unexpected end of string at chatranks.js:13

fallen urchin
# thorn berry How do I make?
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

oblique ermine
#
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}"
💀

hearty hemlock
#

@fallen urchin

#

@oblique ermine