Update 1.1

This commit is contained in:
SloudPL 2025-06-19 19:46:01 +02:00
parent a0be1899ae
commit 2b09ff4f57
36 changed files with 196 additions and 89 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
# Project exclude paths
/target/

View file

@ -6,7 +6,7 @@
<groupId>pl.sloudpl</groupId>
<artifactId>SloudChat</artifactId>
<version>1.0</version>
<version>1.1</version>
<packaging>jar</packaging>
<name>SloudChat</name>

View file

@ -4,7 +4,9 @@ import net.luckperms.api.LuckPerms;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
import pl.sloudpl.sloudchat.cmds.Chat;
import pl.sloudpl.sloudchat.cmds.Chat1_16;
import pl.sloudpl.sloudchat.cmds.SloudChatCMD;
import pl.sloudpl.sloudchat.cmds.SloudChatCMD1_16;
import pl.sloudpl.sloudchat.events.onPlayerChat;
import pl.sloudpl.sloudchat.events.onPlayerChat1_16;
import pl.sloudpl.sloudchat.utils.Metrics;
@ -17,6 +19,8 @@ public final class SloudChat extends JavaPlugin {
public boolean luckpermsAvailable = false;
public String nopermission;
public boolean isChatEnabled;
@Override
public void onEnable() {
@ -44,14 +48,16 @@ public final class SloudChat extends JavaPlugin {
if (isVersionAtMost_1_16_0()) {
new onPlayerChat(this);
new Chat(this);
new SloudChatCMD(this);
} else {
new onPlayerChat1_16(this);
new Chat1_16(this);
new SloudChatCMD1_16(this);
}
nopermission = getConfig().getString("nopermission");
new Chat(this);
new SloudChatCMD(this);
isChatEnabled = getConfig().getBoolean("chat-enabled");
new UpdateChecker(this, 126174).getLatestVersion(version -> {
String current = this.getDescription().getVersion();
@ -69,7 +75,8 @@ public final class SloudChat extends JavaPlugin {
@Override
public void onDisable(){
getConfig().set("chat-enabled", isChatEnabled);
saveConfig();
}

View file

@ -31,9 +31,21 @@ public class Chat implements CommandExecutor {
Bukkit.getServer().broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("clear-line1")));
Bukkit.getServer().broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("clear-line2").replace("[Player]", p.getName()).replace("[PlayerDisplayName]", p.getDisplayName())));
Bukkit.getServer().broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("clear-line3")));
} else if(args[0].equalsIgnoreCase("on")) {
Bukkit.getServer().broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("chat-enable-message")));
plugin.isChatEnabled = true;
} else if(args[0].equalsIgnoreCase("off")) {
Bukkit.getServer().broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("chat-disable-message")));
plugin.isChatEnabled = false;
} else {
sender.sendMessage(ChatColor.RED + "Usage: /chat [clear/on/off]");
}
} else {
sender.sendMessage(ChatColor.RED + "Usage: /chat [clear]");
sender.sendMessage(ChatColor.RED + "Usage: /chat [clear/on/off]");
}
} else {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', plugin.nopermission));

View file

@ -0,0 +1,62 @@
package pl.sloudpl.sloudchat.cmds;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import pl.sloudpl.sloudchat.SloudChat;
import pl.sloudpl.sloudchat.utils.ColorUtils;
public class Chat1_16 implements CommandExecutor {
SloudChat plugin;
public Chat1_16(SloudChat plugin){
this.plugin = plugin;
plugin.getCommand("chat").setExecutor(this);
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if(sender instanceof Player){
Player p = (Player) sender;
if (sender.hasPermission("sloudpl.chat") || sender.isOp()) {
if (args.length == 1) {
if (args[0].equalsIgnoreCase("clear")) {
for (int i = 0; i < 100; i++) {
Bukkit.getServer().broadcastMessage(" ");
}
Bukkit.getServer().broadcastMessage(ColorUtils.convertHexColors(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("clear-line1"))));
Bukkit.getServer().broadcastMessage(ColorUtils.convertHexColors(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("clear-line2").replace("[Player]", p.getName()).replace("[PlayerDisplayName]", p.getDisplayName()))));
Bukkit.getServer().broadcastMessage(ColorUtils.convertHexColors(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("clear-line3"))));
} else if(args[0].equalsIgnoreCase("on")) {
Bukkit.getServer().broadcastMessage(ColorUtils.convertHexColors(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("chat-enable-message"))));
plugin.isChatEnabled = true;
} else if(args[0].equalsIgnoreCase("off")) {
Bukkit.getServer().broadcastMessage(ColorUtils.convertHexColors(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("chat-disable-message"))));
plugin.isChatEnabled = false;
} else {
sender.sendMessage(ChatColor.RED + "Usage: /chat [clear/on/off]");
}
} else {
sender.sendMessage(ChatColor.RED + "Usage: /chat [clear/on/off]");
}
} else {
sender.sendMessage(ColorUtils.convertHexColors(ChatColor.translateAlternateColorCodes('&', plugin.nopermission)));
}
} else {
sender.sendMessage(ChatColor.RED + "You need to be a player to use this command!");
}
return false;
}
}

View file

@ -0,0 +1,49 @@
package pl.sloudpl.sloudchat.cmds;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import pl.sloudpl.sloudchat.SloudChat;
import pl.sloudpl.sloudchat.utils.ColorUtils;
public class SloudChatCMD1_16 implements CommandExecutor {
SloudChat plugin;
public SloudChatCMD1_16(SloudChat plugin){
this.plugin = plugin;
plugin.getCommand("sloudchat").setExecutor(this);
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if(args.length == 1){
if(args[0].equalsIgnoreCase("reload")){
if(sender.hasPermission("sloudpl.reload")){
plugin.reloadConfig();
sender.sendMessage(ChatColor.GREEN + "Config was reloaded!");
} else {
sender.sendMessage(ColorUtils.convertHexColors(ChatColor.translateAlternateColorCodes('&', plugin.nopermission)));
}
} else {
sender.sendMessage(ChatColor.RED + "Usage: /sloudchat reload");
}
} else {
sender.sendMessage(ChatColor.RED + "Usage: /sloudchat reload");
}
return false;
}
}

View file

@ -22,6 +22,15 @@ public class onPlayerChat implements Listener {
public void PlayerChat(AsyncPlayerChatEvent event){
Player player = event.getPlayer();
if(!plugin.isChatEnabled){
player.sendMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("disabled-chat-msg")));
event.setCancelled(true);
return;
}
String playerName = player.getName();
String prefix;

View file

@ -8,10 +8,7 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import pl.sloudpl.sloudchat.SloudChat;
import java.awt.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import pl.sloudpl.sloudchat.utils.ColorUtils;
public class onPlayerChat1_16 implements Listener {
@ -24,7 +21,17 @@ public class onPlayerChat1_16 implements Listener {
@EventHandler
public void PlayerChat(AsyncPlayerChatEvent event){
Player player = event.getPlayer();
if(!plugin.isChatEnabled){
player.sendMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("disabled-chat-msg")));
event.setCancelled(true);
return;
}
String playerName = player.getName();
String prefix;
@ -66,27 +73,9 @@ public class onPlayerChat1_16 implements Listener {
format = format.replace("{MESSAGE}", message);
format = convertHexColors(ChatColor.translateAlternateColorCodes('&', format));
format = ColorUtils.convertHexColors(ChatColor.translateAlternateColorCodes('&', format));
event.setFormat(format.replace("%", "%%"));
}
private String convertHexColors(String text) {
Pattern pattern = Pattern.compile("&#([0-9A-Fa-f]{6})");
Matcher matcher = pattern.matcher(text);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
String hex = matcher.group(1);
Color color = new Color(
Integer.valueOf(hex.substring(0, 2), 16),
Integer.valueOf(hex.substring(2, 4), 16),
Integer.valueOf(hex.substring(4, 6), 16)
);
matcher.appendReplacement(sb, ChatColor.of(color).toString());
}
matcher.appendTail(sb);
return sb.toString();
}
}
}

View file

@ -0,0 +1,28 @@
package pl.sloudpl.sloudchat.utils;
import net.md_5.bungee.api.ChatColor;
import java.awt.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ColorUtils {
public static String convertHexColors(String text) {
Pattern pattern = Pattern.compile("&#([0-9A-Fa-f]{6})");
Matcher matcher = pattern.matcher(text);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
String hex = matcher.group(1);
Color color = new Color(
Integer.valueOf(hex.substring(0, 2), 16),
Integer.valueOf(hex.substring(2, 4), 16),
Integer.valueOf(hex.substring(4, 6), 16)
);
matcher.appendReplacement(sb, ChatColor.of(color).toString());
}
matcher.appendTail(sb);
return sb.toString();
}
}

View file

@ -10,6 +10,14 @@ chat-format: '&7{PREFIX}{PLAYER}{SUFFIX} &8» &f{MESSAGE}'
# No permission message
nopermission: '&4No permission'
# Chat enabled
chat-enabled: true
# Message that is send to the player when the chat is disabled!
disabled-chat-msg: '&4Chat is disabled!'
# Message that informs players that the chat was disabled
chat-disable-message: '&4Chat has been disabled!'
# Message that informs players that the chat was enabled
chat-enable-message: '&aChat has been enabled!'
# Clear chat message
# [Player] - Player nick
# [PlayerDisplayName] - Player Display Name

Binary file not shown.

View file

@ -1,19 +0,0 @@
# Chat format string
# Available placeholders:
# {PREFIX} - Prefix from LuckPerms
# {SUFFIX} - Suffix from LuckPerms
# {PLAYER} - Player name
# {MESSAGE} - The message they sent
# You can also use placeholders from PlaceholderAPI just add inside the chat-format %some_placeholder%
chat-format: '&7{PREFIX}{PLAYER}{SUFFIX} &8» &f{MESSAGE}'
# No permission message
nopermission: '&4No permission'
# Clear chat message
# [Player] - Player nick
# [PlayerDisplayName] - Player Display Name
# [Player] and [PlayerDisplayName] only works in line2
clear-line1: '"&8[]-----&bChat&8-----[]"'
clear-line2: '&7Chat został &bwyczyszczony&7 przez &b[Player]'
clear-line3: '"&8[]-----&bChat&8-----[]"'

View file

@ -1,11 +0,0 @@
name: SloudChat
version: '1.0'
main: pl.sloudpl.sloudchat.SloudChat
authors: [SloudPL]
api-version: '1.18'
softdepend:
- LuckPerms
- PlaceholderAPI
commands:
chat:
sloudchat:

View file

@ -1,3 +0,0 @@
artifactId=SloudChat
groupId=pl.sloudpl
version=1.0

View file

@ -1,19 +0,0 @@
pl/sloudpl/sloudchat/utils/UpdateChecker.class
pl/sloudpl/sloudchat/utils/Metrics$SimpleBarChart.class
pl/sloudpl/sloudchat/SloudChat.class
pl/sloudpl/sloudchat/utils/Metrics$MultiLineChart.class
pl/sloudpl/sloudchat/cmds/Chat.class
pl/sloudpl/sloudchat/utils/Metrics$DrilldownPie.class
pl/sloudpl/sloudchat/utils/Metrics$JsonObjectBuilder.class
pl/sloudpl/sloudchat/cmds/SloudChatCMD.class
pl/sloudpl/sloudchat/events/onPlayerChat1_16.class
pl/sloudpl/sloudchat/utils/Metrics$SingleLineChart.class
pl/sloudpl/sloudchat/utils/Metrics$JsonObjectBuilder$JsonObject.class
pl/sloudpl/sloudchat/utils/Metrics$CustomChart.class
pl/sloudpl/sloudchat/utils/Metrics.class
pl/sloudpl/sloudchat/utils/Metrics$1.class
pl/sloudpl/sloudchat/utils/Metrics$SimplePie.class
pl/sloudpl/sloudchat/utils/Metrics$MetricsBase.class
pl/sloudpl/sloudchat/utils/Metrics$AdvancedBarChart.class
pl/sloudpl/sloudchat/events/onPlayerChat.class
pl/sloudpl/sloudchat/utils/Metrics$AdvancedPie.class

View file

@ -1,7 +0,0 @@
/home/sloudpl/IdeaProjects/SloudChat/src/main/java/pl/sloudpl/sloudchat/cmds/SloudChatCMD.java
/home/sloudpl/IdeaProjects/SloudChat/src/main/java/pl/sloudpl/sloudchat/events/onPlayerChat1_16.java
/home/sloudpl/IdeaProjects/SloudChat/src/main/java/pl/sloudpl/sloudchat/events/onPlayerChat.java
/home/sloudpl/IdeaProjects/SloudChat/src/main/java/pl/sloudpl/sloudchat/cmds/Chat.java
/home/sloudpl/IdeaProjects/SloudChat/src/main/java/pl/sloudpl/sloudchat/SloudChat.java
/home/sloudpl/IdeaProjects/SloudChat/src/main/java/pl/sloudpl/sloudchat/utils/Metrics.java
/home/sloudpl/IdeaProjects/SloudChat/src/main/java/pl/sloudpl/sloudchat/utils/UpdateChecker.java

Binary file not shown.