Compare commits
8 commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
d6b371bed0 | ||
![]() |
6ef79d3353 | ||
![]() |
11ce126347 | ||
![]() |
059ebd770b | ||
![]() |
f7e1a53050 | ||
![]() |
2b09ff4f57 | ||
a0be1899ae | |||
![]() |
4aa224944c |
39 changed files with 206 additions and 96 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
# Project exclude paths
|
||||
/target/
|
|
@ -1,9 +1,13 @@
|
|||
# SloudChat
|
||||
|
||||
Simple chat formating plugin with additional features.
|
||||
Simple chat formating/manager plugin with additional features.
|
||||
|
||||
Support for: Luckperms, PlaceholderAPI
|
||||
|
||||
Permissions:
|
||||
|
||||
/sloudchat reload - sloudpl.reload
|
||||
|
||||
/chat clear - sloudpl.chat
|
||||
/chat [on/off/clear] - sloudpl.chat
|
||||
|
||||
Bypass chat off - sloudpl.chat.bypass
|
||||
|
|
2
pom.xml
2
pom.xml
|
@ -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>
|
||||
|
|
|
@ -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,21 +48,23 @@ 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");
|
||||
isChatEnabled = getConfig().getBoolean("chat-enabled");
|
||||
|
||||
new Chat(this);
|
||||
new SloudChatCMD(this);
|
||||
|
||||
new UpdateChecker(this, 108713).getLatestVersion(version -> {
|
||||
new UpdateChecker(this, 126174).getLatestVersion(version -> {
|
||||
String current = this.getDescription().getVersion();
|
||||
if (!current.equalsIgnoreCase(version)) {
|
||||
getLogger().warning("§cA new version of §eSloudChat §cis available!");
|
||||
getLogger().warning("§7Current: §e" + current + " §7| Latest: §a" + version);
|
||||
getLogger().warning("§bDownload: https://www.spigotmc.org/resources/sloudvanish.108713/");
|
||||
getLogger().warning("§bDownload: https://www.spigotmc.org/resources/sloudchat.126174/");
|
||||
} else {
|
||||
getLogger().info("§aSloudChat is up to date (v" + current + ").");
|
||||
}
|
||||
|
@ -69,7 +75,8 @@ public final class SloudChat extends JavaPlugin {
|
|||
@Override
|
||||
public void onDisable(){
|
||||
|
||||
|
||||
getConfig().set("chat-enabled", isChatEnabled);
|
||||
saveConfig();
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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));
|
||||
|
|
62
src/main/java/pl/sloudpl/sloudchat/cmds/Chat1_16.java
Normal file
62
src/main/java/pl/sloudpl/sloudchat/cmds/Chat1_16.java
Normal 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;
|
||||
}
|
||||
|
||||
}
|
|
@ -43,5 +43,4 @@ public class SloudChatCMD implements CommandExecutor {
|
|||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
|
@ -22,6 +22,15 @@ public class onPlayerChat implements Listener {
|
|||
public void PlayerChat(AsyncPlayerChatEvent event){
|
||||
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if(!plugin.isChatEnabled && !player.hasPermission("sloudpl.chat.bypass")){
|
||||
|
||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("disabled-chat-msg")));
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
String playerName = player.getName();
|
||||
|
||||
String prefix;
|
||||
|
|
|
@ -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.hasPermission("sloudpl.chat.bypass")){
|
||||
|
||||
player.sendMessage(ColorUtils.convertHexColors(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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
28
src/main/java/pl/sloudpl/sloudchat/utils/ColorUtils.java
Normal file
28
src/main/java/pl/sloudpl/sloudchat/utils/ColorUtils.java
Normal 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();
|
||||
}
|
||||
|
||||
}
|
|
@ -10,10 +10,18 @@ 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
|
||||
# [Player] and [PlayerDisplayName] only works in line2
|
||||
clear-line1: '"&8[]-----&bChat&8-----[]"'
|
||||
clear-line2: '&7Chat został &bwyczyszczony&7 przez &b[Player]'
|
||||
clear-line2: '&7Chat was &bcleared &7by &b[Player]'
|
||||
clear-line3: '"&8[]-----&bChat&8-----[]"'
|
|
@ -2,7 +2,7 @@ name: SloudChat
|
|||
version: '${project.version}'
|
||||
main: pl.sloudpl.sloudchat.SloudChat
|
||||
authors: [SloudPL]
|
||||
api-version: '1.18'
|
||||
api-version: '1.13'
|
||||
softdepend:
|
||||
- LuckPerms
|
||||
- PlaceholderAPI
|
||||
|
|
Binary file not shown.
|
@ -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-----[]"'
|
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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -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:
|
|
@ -1,3 +0,0 @@
|
|||
artifactId=SloudChat
|
||||
groupId=pl.sloudpl
|
||||
version=1.0
|
|
@ -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
|
|
@ -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.
Loading…
Add table
Reference in a new issue