6 Commits
0.1.0 ... 0.2.4

24 changed files with 431 additions and 49 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.2.4</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,8 @@
package de.privacynerd.chatbeautifier; package de.privacynerd.chatbeautifier;
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 +10,37 @@ 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();
Component newName;
if(player.isOp()) { if(player.isOp()) {
player.setDisplayName("§4[OP] "+player.getName()+"§e"); newName = Component.text("[OP] ")
player.setPlayerListName(player.getDisplayName()); .color(NamedTextColor.RED)
.decoration(TextDecoration.BOLD, true)
.append(Component.text(player.getName())
.color(NamedTextColor.GRAY)
.decoration(TextDecoration.BOLD, false)
);
player.displayName(newName);
player.playerListName(newName);
} else { } else {
player.setDisplayName("§7"+player.getName()+"§7"); newName = Component.text(player.getName())
player.setPlayerListName(player.getDisplayName()); .color(NamedTextColor.GRAY)
.decoration(TextDecoration.BOLD, false);
player.displayName(newName);
player.playerListName(newName);
} }
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);
} }
@@ -29,7 +48,11 @@ public class JoinQuitListener implements Listener {
@EventHandler @EventHandler
public void onPlayerQuit(PlayerQuitEvent event) { public void onPlayerQuit(PlayerQuitEvent event) {
Player player = event.getPlayer(); Player player = event.getPlayer();
Component displayName = player.displayName();
event.setQuitMessage("§c§l<< §7"+ player.getDisplayName()); event.quitMessage(Component.text("<< ")
.color(NamedTextColor.RED)
.decoration(TextDecoration.BOLD, true)
.append(displayName));
} }
} }

View File

@@ -0,0 +1,153 @@
package de.privacynerd.chatbeautifier.displaynamecolor;
import de.privacynerd.chatbeautifier.ChatBeautifier;
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 newDisplayName;
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;
}
if(player.isOp()) {
newDisplayName = Component.text("[OP] ")
.color(NamedTextColor.RED)
.decoration(TextDecoration.BOLD, true)
.append(Component.text(player.getName())
.color(ChatColorUtils.getChooseColorCodes().get(colorCodesListIndex))
.decoration(TextDecoration.BOLD, false)
);
} else {
newDisplayName = player.displayName()
.color(ChatColorUtils.getChooseColorCodes().get(colorCodesListIndex));
}
player.displayName(newDisplayName);
player.playerListName(newDisplayName);
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,63 @@
package de.privacynerd.chatbeautifier.displaynamecolor;
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.entity.Player;
import org.bukkit.inventory.Inventory;
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));
// 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 = nothing.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); }
for(int i=0; i<3; i++) {
gui.setItem(11 + (8 * i) + i, chooseColorItems.get((4 * i) + i));
gui.setItem(11 + (8 * i) + i +1, chooseColorItems.get((4 * i) + i +1));
gui.setItem(11 + (8 * i) + i +2, chooseColorItems.get((4 * i) + i +2));
gui.setItem(11 + (8 * i) + i +3, chooseColorItems.get((4 * i) + i +3));
gui.setItem(11 + (8 * i) + i +4, chooseColorItems.get((4 * i) + i +4));
}
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

@@ -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.