Compare commits

..

8 Commits
0.1.0 ... main

31 changed files with 544 additions and 52 deletions

7
.gitignore vendored
View File

@ -18,7 +18,7 @@ out/
*.ctxt *.ctxt
# Package Files # # Package Files #
*.jar #*.jar // default by intellij (but wanting to have the compiled sources)
*.war *.war
*.nar *.nar
*.ear *.ear
@ -95,8 +95,9 @@ $RECYCLE.BIN/
# Windows shortcuts # Windows shortcuts
*.lnk *.lnk
target/ # The builds
#target/ # default by intellij (but wanting to have the compiled sources)
target/*/
pom.xml.tag pom.xml.tag
pom.xml.releaseBackup pom.xml.releaseBackup
pom.xml.versionsBackup pom.xml.versionsBackup

View File

@ -12,7 +12,12 @@ Listeners that are implemented by this plugin:
- also shows players that are op in the display name - also shows players that are op in the display name
- PlayerQuitEvent (print a beautified quit message "<< PlayerName") - PlayerQuitEvent (print a beautified quit message "<< PlayerName")
- PlayerChatEvent (deprecated, but beautify chat messages "PlayerName: message") - PlayerChatEvent (deprecated, but beautify chat messages "PlayerName: message")
- EntityDamageEvent (show who got how much damage from whom)
Commands implemented:
- set-chat-color: lets you set your name's color in the chat over a nice gui (or as a cmd!)
- currently only temporary, static colors (staying the same after quit/join) coming soon!
And all that in beautiful colors! And all that in beautiful colors!

View File

@ -6,7 +6,7 @@
<groupId>de.privacynerd</groupId> <groupId>de.privacynerd</groupId>
<artifactId>ChatBeautifier</artifactId> <artifactId>ChatBeautifier</artifactId>
<version>0.1.0</version> <version>0.3.1</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>ChatBeautifier</name> <name>ChatBeautifier</name>

View File

@ -1,20 +1,29 @@
package de.privacynerd.chatbeautifier; package de.privacynerd.chatbeautifier;
import de.privacynerd.chatbeautifier.displaynamecolor.ChatColorCommand;
import de.privacynerd.chatbeautifier.displaynamecolor.ChooseChatColorListener;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
public final class ChatBeautifier extends JavaPlugin { public final class ChatBeautifier extends JavaPlugin {
public static String PREFIX = "§a[ChatBeautifier] §7§o"; public static Component PREFIX = Component.text("[ChatBeautifier] ", NamedTextColor.DARK_AQUA);
public static ChatBeautifier INSTANCE; public static ChatBeautifier INSTANCE;
public ChatBeautifier() { public ChatBeautifier() {
INSTANCE = this; INSTANCE = this;
} }
public void log(String text) {
Bukkit.getConsoleSender().sendMessage(PREFIX + text); // some log functions
} public void log(String message) { Bukkit.getConsoleSender().sendMessage(PREFIX.append(Component.text(message, NamedTextColor.GRAY))); }
public void log(@NotNull Component message) { Bukkit.getConsoleSender().sendMessage(PREFIX.append(message.color(NamedTextColor.GRAY))); }
public void tellPlayer(String message, @NotNull Player player) { player.sendMessage(PREFIX.append(Component.text(message, NamedTextColor.GRAY))); }
public void tellPlayer(@NotNull Component message, @NotNull Player player) { player.sendMessage(PREFIX.append(message.color(NamedTextColor.GRAY))); }
@Override @Override
@ -25,8 +34,11 @@ public final class ChatBeautifier extends JavaPlugin {
log("JoinQuitListener has been registered."); log("JoinQuitListener has been registered.");
pluginManager.registerEvents(new ChatListener(), this); pluginManager.registerEvents(new ChatListener(), this);
log("ChatListener has been registered."); log("ChatListener has been registered.");
pluginManager.registerEvents(new DamageListener(), this); pluginManager.registerEvents(new ChooseChatColorListener(), this);
log("DamageListener has been registered."); log("ChooseChatColorListener has been registered.");
Bukkit.getPluginCommand("set-chat-color").setExecutor(new ChatColorCommand());
log("ChatColorCommand has been set as executor for the command 'set-chat-color'.");
log("Plugin enabled."); log("Plugin enabled.");
} }

View File

@ -1,6 +1,7 @@
package de.privacynerd.chatbeautifier; package de.privacynerd.chatbeautifier;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Server; import org.bukkit.Server;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -15,11 +16,12 @@ public class ChatListener implements Listener {
event.setCancelled(true); event.setCancelled(true);
//player.getDisplayName() + ": " + event.getMessage()
Server server = Bukkit.getServer(); Server server = Bukkit.getServer();
Component message = Component.text(player.getDisplayName() + ": " + event.getMessage()); Component message = player.displayName().append(Component.text(": " + event.getMessage(), NamedTextColor.WHITE));
if(player.isOp()) {
message = player.displayName().append(Component.text(": " + event.getMessage(), NamedTextColor.YELLOW));
}
server.broadcast(message); server.broadcast(message);
} }
} }

View File

@ -1,29 +0,0 @@
package de.privacynerd.chatbeautifier;
import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Server;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageEvent;
public class DamageListener implements Listener {
@EventHandler
public void onPlayerGetDamage(EntityDamageEvent event) {
Entity player1 = event.getEntity();
if(!(player1 instanceof Player)){
return;
}
Player player = (Player) player1;
Server server = Bukkit.getServer();
Component message = Component.text(ChatColor.BOLD + "§4[Schaden] " + ChatColor.WHITE + "Der Spieler " + player.getDisplayName() + ChatColor.WHITE + " hat durch \n" + ChatColor.AQUA + event.getCause() + " " + ChatColor.RED + event.getDamage() / 2 + " Herzen " + ChatColor.WHITE + "Schaden bekommen");
server.broadcast(message);
}
}

View File

@ -1,5 +1,9 @@
package de.privacynerd.chatbeautifier; package de.privacynerd.chatbeautifier;
import de.privacynerd.chatbeautifier.utils.DisplayNameSetter;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.TextDecoration;
import org.bukkit.Sound; import org.bukkit.Sound;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@ -7,21 +11,20 @@ import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
public class JoinQuitListener implements Listener { public class JoinQuitListener implements Listener {
@EventHandler @EventHandler
public void onPlayerJoin(PlayerJoinEvent event) { public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer(); Player player = event.getPlayer();
if(player.isOp()) { DisplayNameSetter.setName(player); // set display name according to color config etc...
player.setDisplayName("§4[OP] "+player.getName()+"§e");
player.setPlayerListName(player.getDisplayName());
} else {
player.setDisplayName("§7"+player.getName()+"§7");
player.setPlayerListName(player.getDisplayName());
}
event.setJoinMessage("§a§l>> §7"+ player.getDisplayName()); event.joinMessage(Component.text(">> ")
.color(NamedTextColor.GREEN)
.decoration(TextDecoration.BOLD, true)
.append(player.displayName()
));
player.playSound(player.getLocation(), Sound.AMBIENT_CRIMSON_FOREST_MOOD, 0.5f, 0.4f); player.playSound(player.getLocation(), Sound.AMBIENT_CRIMSON_FOREST_MOOD, 0.5f, 0.4f);
} }
@ -30,6 +33,9 @@ public class JoinQuitListener implements Listener {
public void onPlayerQuit(PlayerQuitEvent event) { public void onPlayerQuit(PlayerQuitEvent event) {
Player player = event.getPlayer(); Player player = event.getPlayer();
event.setQuitMessage("§c§l<< §7"+ player.getDisplayName()); event.quitMessage(Component.text("<< ")
.color(NamedTextColor.RED)
.decoration(TextDecoration.BOLD, true)
.append(player.displayName()));
} }
} }

View File

@ -0,0 +1,149 @@
package de.privacynerd.chatbeautifier.displaynamecolor;
import de.privacynerd.chatbeautifier.ChatBeautifier;
import de.privacynerd.chatbeautifier.utils.ConfigFilenames;
import de.privacynerd.chatbeautifier.utils.DisplayNameSetter;
import de.privacynerd.chatbeautifier.utils.FileConfig;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.TextDecoration;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
public class ChatColorCommand implements CommandExecutor {
@Override
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) {
ChatBeautifier.INSTANCE.log("Command /set-chat-name executed.");
if(!(commandSender instanceof Player)) {
ChatBeautifier.INSTANCE.log("This command was not executed by a player. Not doing anything.");
return false;
}
Player player = (Player) commandSender;
String validArgument = "";
Component newName;
int colorCodesListIndex; // stores the index of the color code which was requested (0 for black color code, ...)
// check for the right args
if(args.length == 1) {
switch (args[0]) {
case "black":
validArgument = "black";
colorCodesListIndex = 0;
break;
case "gray":
validArgument = "gray";
colorCodesListIndex = 1;
break;
case "light-gray":
validArgument = "light-gray";
colorCodesListIndex = 2;
break;
case "white":
validArgument = "white";
colorCodesListIndex = 3;
break;
case "brown":
validArgument = "brown";
colorCodesListIndex = 4;
break;
case "red":
validArgument = "red";
colorCodesListIndex = 5;
break;
case "orange":
validArgument = "orange";
colorCodesListIndex = 6;
break;
case "yellow":
validArgument = "yellow";
colorCodesListIndex = 7;
break;
case "light-green":
validArgument = "light-green";
colorCodesListIndex = 8;
break;
case "dark-green":
validArgument = "dark-green";
colorCodesListIndex = 9;
break;
case "cyan":
validArgument = "cyan";
colorCodesListIndex = 10;
break;
case "blue":
validArgument = "blue";
colorCodesListIndex = 11;
break;
case "purple":
validArgument = "purple";
colorCodesListIndex = 12;
break;
case "magenta":
validArgument = "magenta";
colorCodesListIndex = 13;
break;
case "pink":
validArgument = "pink";
colorCodesListIndex = 14;
break;
case "list":
ChatBeautifier.INSTANCE.log("Got valid argument 'list', printing list of valid colors...");
ArrayList<String> colorNames = ChatColorUtils.getChooseColorStrings();
// now compose the message containing all possible color args
Component message = Component.text("Mögliche Farben: ")
.decoration(TextDecoration.BOLD, true);
String newMessageItem = colorNames.get(0).toLowerCase().replace(" ", "-");
message = message.append(Component.text(newMessageItem, NamedTextColor.GRAY)
.decoration(TextDecoration.BOLD, false)
.decoration(TextDecoration.ITALIC, true));
for (int i=1; i<colorNames.toArray().length; i++) {
newMessageItem = ", " + colorNames.get(i).toLowerCase().replace(" ", "-");
message = message.append(Component.text(newMessageItem, NamedTextColor.GRAY)
.decoration(TextDecoration.BOLD, false)
.decoration(TextDecoration.ITALIC, true));
}
// and send it
ChatBeautifier.INSTANCE.tellPlayer(message, player);
return true;
case "gui":
ChatBeautifier.INSTANCE.log("Got valid argument 'gui', opening gui...");
player.openInventory(new ChooseChatColorGUI().getGUI(player));
return true;
default:
// print a help string if no valid argument is given
ChatBeautifier.INSTANCE.tellPlayer("Verwendung: /" + alias + " [<color>, list, gui]", player);
return true;
}
// save the selected color to the file
FileConfig chatColorConfig = new FileConfig(ConfigFilenames.chatNameColors);
chatColorConfig.set(String.valueOf(player.getUniqueId().toString()), colorCodesListIndex);
chatColorConfig.saveConfig();
// update name (this method respects color values in the file
DisplayNameSetter.setName(player);
ChatBeautifier.INSTANCE.log("Got valid color " + validArgument);
ChatBeautifier.INSTANCE.tellPlayer(Component.text("Dein neuer Name: ")
.append(player.displayName()
), player);
return true;
} else if (args.length > 1) { // print a help string if more than one argument is given
ChatBeautifier.INSTANCE.tellPlayer("Verwendung: /" + alias + " [<color>, list, gui]", player);
return true;
} else {
player.openInventory(new ChooseChatColorGUI().getGUI(player));
return true;
}
}
}

View File

@ -0,0 +1,75 @@
package de.privacynerd.chatbeautifier.displaynamecolor;
import de.privacynerd.chatbeautifier.ChatBeautifier;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.TextColor;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
// Class containing functions returning arrays for gui creation
public final class ChatColorUtils {
public static @NotNull ArrayList<ItemStack> getChooseColorItems() {
ArrayList<ItemStack> chooseColors = new ArrayList<>();
chooseColors.add(new ItemStack(Material.BLACK_WOOL));
chooseColors.add(new ItemStack(Material.GRAY_WOOL));
chooseColors.add(new ItemStack(Material.LIGHT_GRAY_WOOL));
chooseColors.add(new ItemStack(Material.WHITE_WOOL));
chooseColors.add(new ItemStack(Material.BROWN_WOOL));
chooseColors.add(new ItemStack(Material.RED_WOOL));
chooseColors.add(new ItemStack(Material.ORANGE_WOOL));
chooseColors.add(new ItemStack(Material.YELLOW_WOOL));
chooseColors.add(new ItemStack(Material.LIME_WOOL));
chooseColors.add(new ItemStack(Material.GREEN_WOOL));
chooseColors.add(new ItemStack(Material.CYAN_WOOL));
chooseColors.add(new ItemStack(Material.BLUE_WOOL));
chooseColors.add(new ItemStack(Material.PURPLE_WOOL));
chooseColors.add(new ItemStack(Material.MAGENTA_WOOL));
chooseColors.add(new ItemStack(Material.PINK_WOOL));
return chooseColors;
}
public static @NotNull ArrayList<String> getChooseColorStrings() {
ArrayList<String> chooseColorNames = new ArrayList<>();
chooseColorNames.add("Black");
chooseColorNames.add("Gray");
chooseColorNames.add("Light gray");
chooseColorNames.add("White");
chooseColorNames.add("Brown");
chooseColorNames.add("Red");
chooseColorNames.add("Orange");
chooseColorNames.add("Yellow");
chooseColorNames.add("Light green");
chooseColorNames.add("Dark green");
chooseColorNames.add("Cyan");
chooseColorNames.add("Blue");
chooseColorNames.add("Purple");
chooseColorNames.add("Magenta");
chooseColorNames.add("Pink");
return chooseColorNames;
}
public static @NotNull ArrayList<TextColor> getChooseColorCodes() {
ArrayList<TextColor> getChooseColorCodes = new ArrayList<>();
getChooseColorCodes.add(NamedTextColor.BLACK);
getChooseColorCodes.add(NamedTextColor.DARK_GRAY);
getChooseColorCodes.add(NamedTextColor.GRAY);
getChooseColorCodes.add(NamedTextColor.WHITE);
getChooseColorCodes.add(TextColor.color(135, 72, 0));
getChooseColorCodes.add(TextColor.color(255, 0, 0));
getChooseColorCodes.add(TextColor.color(255, 112, 0));
getChooseColorCodes.add(NamedTextColor.YELLOW);
getChooseColorCodes.add(TextColor.color(103, 255, 0));
getChooseColorCodes.add(TextColor.color(38, 157, 0));
getChooseColorCodes.add(TextColor.color(0, 252, 255));
getChooseColorCodes.add(TextColor.color(0, 92, 255));
getChooseColorCodes.add(TextColor.color(157, 0, 255));
getChooseColorCodes.add(TextColor.color(255, 0, 179));
getChooseColorCodes.add(TextColor.color(255, 87, 228));
return getChooseColorCodes;
}
}

View File

@ -0,0 +1,111 @@
package de.privacynerd.chatbeautifier.displaynamecolor;
import de.privacynerd.chatbeautifier.utils.ConfigFilenames;
import de.privacynerd.chatbeautifier.utils.FileConfig;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.TextColor;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import de.privacynerd.chatbeautifier.displaynamecolor.ChatColorUtils;
import java.util.ArrayList;
public class ChooseChatColorGUI {
public Inventory getGUI(Player player) {
Inventory gui = Bukkit.createInventory(player, 45, Component.text("Set chat color (0x01)", NamedTextColor.DARK_GRAY));
int currentColorCodesIndex = -1;
FileConfig chatColorConfig = new FileConfig(ConfigFilenames.chatNameColors);
String uuidStr = player.getUniqueId().toString();
if ( chatColorConfig.contains(uuidStr) ) currentColorCodesIndex = chatColorConfig.getInt(uuidStr);
// create item stacks to be filled into the gui later
ItemStack nothing = new ItemStack(Material.LIGHT_BLUE_STAINED_GLASS_PANE); // for filling the gaps
ArrayList<ItemStack> chooseColorItems = ChatColorUtils.getChooseColorItems();
ArrayList<String> chooseColorNames = ChatColorUtils.getChooseColorStrings();
ArrayList<TextColor> chooseColorCodes = ChatColorUtils.getChooseColorCodes();
for (int i=0; i<15; i++) {
ItemMeta color_meta = chooseColorItems.get(i).getItemMeta();
if(i==0) { // make it the black text readable
color_meta.displayName(Component.text(chooseColorNames.get(i), NamedTextColor.WHITE));
} else {
color_meta.displayName(Component.text(chooseColorNames.get(i), chooseColorCodes.get(i)));
}
chooseColorItems.get(i).setItemMeta(color_meta);
}
// set item metas (so that a listener can correctly identify the items)
ItemMeta nothing_meta = nothing.getItemMeta();
nothing_meta.displayName(Component.text(" "));
nothing.setItemMeta(nothing_meta);
// fill the glass panes
for (int i=0; i<11; i++) { gui.setItem(i, nothing); }
for (int i=0; i<3; i++) {
gui.setItem(16 + (8 * i) + i, nothing);
gui.setItem(16 + (8 * i) + i + 1, nothing);
gui.setItem(16 + (8 * i) + i + 2, nothing);
gui.setItem(16 + (8 * i) + i + 3, nothing);
}
for (int i=38; i<45; i++) { gui.setItem(i, nothing); }
// now fill the actual selectables
int i1, i2, i3, i4, i5; // indexes
ItemStack is1, is2, is3, is4, is5; // the item stacks
ItemMeta itemMeta; // just to declare it here and fill it later
for(int i=0; i<3; i++) {
i1 = (4 * i) + i; is1 = chooseColorItems.get(i1);
i2 = i1 + 1; is2 = chooseColorItems.get(i2);
i3 = i1 + 2; is3 = chooseColorItems.get(i3);
i4 = i1 + 3; is4 = chooseColorItems.get(i4);
i5 = i1 + 4; is5 = chooseColorItems.get(i5);
if(i1 == currentColorCodesIndex) {
itemMeta = is1.getItemMeta();
itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
itemMeta.addEnchant(Enchantment.THORNS, 1, true);
is1.setItemMeta(itemMeta);
}
if(i2 == currentColorCodesIndex) {
itemMeta = is2.getItemMeta();
itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
itemMeta.addEnchant(Enchantment.THORNS, 1, true);
is2.setItemMeta(itemMeta);
}
if(i3 == currentColorCodesIndex) {
itemMeta = is3.getItemMeta();
itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
itemMeta.addEnchant(Enchantment.THORNS, 1, true);
is3.setItemMeta(itemMeta);
}
if(i4 == currentColorCodesIndex) {
itemMeta = is4.getItemMeta();
itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
itemMeta.addEnchant(Enchantment.THORNS, 1, true);
is4.setItemMeta(itemMeta);
}
if(i5 == currentColorCodesIndex) {
itemMeta = is5.getItemMeta();
itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
itemMeta.addEnchant(Enchantment.THORNS, 1, true);
is5.setItemMeta(itemMeta);
}
gui.setItem(11 + (8 * i) + i, is1);
gui.setItem(11 + (8 * i) + i +1, is2);
gui.setItem(11 + (8 * i) + i +2, is3);
gui.setItem(11 + (8 * i) + i +3, is4);
gui.setItem(11 + (8 * i) + i +4, is5);
}
return gui;
}
}

View File

@ -0,0 +1,71 @@
package de.privacynerd.chatbeautifier.displaynamecolor;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
public class ChooseChatColorListener implements Listener {
@EventHandler
public void onClickOnItem(InventoryClickEvent event) {
Player player = (Player) event.getWhoClicked();
if (event.getView().title().equals(Component.text("Set chat color (0x01)", NamedTextColor.DARK_GRAY))) {
switch (event.getCurrentItem().getType()) {
case BLACK_WOOL:
player.performCommand("scc black");
break;
case GRAY_WOOL:
player.performCommand("scc gray");
break;
case LIGHT_GRAY_WOOL:
player.performCommand("scc light-gray");
break;
case WHITE_WOOL:
player.performCommand("scc white");
break;
case BROWN_WOOL:
player.performCommand("scc brown");
break;
case RED_WOOL:
player.performCommand("scc red");
break;
case ORANGE_WOOL:
player.performCommand("scc orange");
break;
case YELLOW_WOOL:
player.performCommand("scc yellow");
break;
case LIME_WOOL:
player.performCommand("scc light-green");
break;
case GREEN_WOOL:
player.performCommand("scc dark-green");
break;
case CYAN_WOOL:
player.performCommand("scc cyan");
break;
case BLUE_WOOL:
player.performCommand("scc blue");
break;
case PURPLE_WOOL:
player.performCommand("scc purple");
break;
case MAGENTA_WOOL:
player.performCommand("scc magenta");
break;
case PINK_WOOL:
player.performCommand("scc pink");
break;
default:
event.setCancelled(true);
return;
}
player.openInventory(new ChooseChatColorGUI().getGUI(player));
event.setCancelled(true);
}
}
}

View File

@ -0,0 +1,5 @@
package de.privacynerd.chatbeautifier.utils;
public class ConfigFilenames {
public static final String chatNameColors = "chatnamecolors.yml";
}

View File

@ -0,0 +1,46 @@
package de.privacynerd.chatbeautifier.utils;
import de.privacynerd.chatbeautifier.displaynamecolor.ChatColorUtils;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.TextColor;
import net.kyori.adventure.text.format.TextDecoration;
import org.bukkit.entity.Player;
public class DisplayNameSetter {
public static void setName(Player player, Component newName) {
player.displayName(newName);
player.playerListName(newName);
}
public static void setName(Player player) {
Component newName;
TextColor textColor = NamedTextColor.GRAY; // default to gray
// get a potentially saved color (set from /set-chat-color command)
FileConfig chatColorConfig = new FileConfig(ConfigFilenames.chatNameColors);
String UUID_String = player.getUniqueId().toString();
if ( chatColorConfig.contains(UUID_String) ) {
int colorIndex = chatColorConfig.getInt(UUID_String);
textColor = ChatColorUtils.getChooseColorCodes().get(colorIndex);
}
// now compose the name (distinguish between operators and normal players by a red, bold [OP] in the beginning
if(player.isOp()) {
newName = Component.text("[OP] ")
.color(NamedTextColor.RED)
.decoration(TextDecoration.BOLD, true)
.append(Component.text(player.getName())
.color(textColor)
.decoration(TextDecoration.BOLD, false)
);
} else {
newName = Component.text(player.getName())
.color(textColor)
.decoration(TextDecoration.BOLD, false);
}
// now set the name as display and list name
setName(player, newName);
}
}

View File

@ -0,0 +1,32 @@
package de.privacynerd.chatbeautifier.utils;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.YamlConfiguration;
import java.io.IOException;
public class FileConfig extends YamlConfiguration {
private final String path;
public FileConfig(String folder, String filename) {
this.path = "plugins/ChatBeautifier/" + folder + "/" + filename;
try {
load(this.path);
} catch (InvalidConfigurationException | IOException ex) {
ex.printStackTrace();
}
}
public FileConfig(String filename) {
this(".", filename);
}
public void saveConfig() {
try {
save(this.path);
} catch (IOException ex){
ex.printStackTrace();
}
}
}

View File

@ -2,3 +2,9 @@ name: ChatBeautifier
version: '${project.version}' version: '${project.version}'
main: de.privacynerd.chatbeautifier.ChatBeautifier main: de.privacynerd.chatbeautifier.ChatBeautifier
api-version: '1.20' api-version: '1.20'
commands:
set-chat-color:
description: Mit diesem Befehl kannst du die Farbe deines Namens setzen.
aliases: ["scc"]
usage: /set-chat-color [<color>, list, gui]

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.