Started work on the 1.16 update.

This commit is contained in:
Ryandw11 2020-06-25 02:47:08 -07:00
parent 29ab38ca4b
commit b9dcfaf3d9
27 changed files with 857 additions and 1101 deletions

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src"/>
<classpathentry kind="lib" path="D:/Spigot Development Dependencies/Vault.jar"/>
<classpathentry kind="lib" path="D:/Spigot Development Dependencies/Spigot 1.10/PlaceholderAPI (1).jar"/>
<classpathentry kind="lib" path="D:/Spigot Development Dependencies/1.12/AdvancedBan-2.1.4-RELEASE.jar"/>
<classpathentry kind="lib" path="D:/Spigot Development Dependencies/1.12/EssentialsX-2.0.1.jar"/>
<classpathentry kind="lib" path="D:/Spigot Development Dependencies/Spigot 1.13.2/spigot-1.13.2.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

6
.gitignore vendored
View File

@ -10,6 +10,12 @@
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Intellij Files
.idea/
bin/
*.iml
# Package Files #
*.jar
*.war

View File

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>UltraChat</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

1
bin/.gitignore vendored
View File

@ -1 +0,0 @@
/me/

88
src/chatcolor.yml Normal file
View File

@ -0,0 +1,88 @@
###############################################
# Chat Color #
###############################################
chat_colors:
'&0': 'default'
'&1': 'default'
'&2': 'default'
'&3': 'default'
'&4': 'default'
'&5': 'default'
'&6': 'default'
'&7': 'default'
'&8': 'default'
'&9': 'default'
'&a': 'default'
'&b': 'default'
'&c': 'default'
'&d': 'default'
'&e': 'default'
###############################################
# Chat Color GUI #
###############################################
color_gui:
'Dark Blue':
color: '&1'
item: 'BLUE_WOOL'
permission: 'ultrachat.chatcolor.darkblue'
'Green':
color: '&2'
item: 'GREEN_WOOL'
permission: 'ultrachat.chatcolor.green'
'Cyan':
color: '&3'
item: 'CYAN_WOOL'
permission: 'ultrachat.chatcolor.cyan'
'Red':
color: '&4'
item: 'RED_WOOL'
permission: 'ultrachat.chatcolor.red'
'Purple':
color: '&5'
item: 'PURPLE_WOOL'
permission: 'ultrachat.chatcolor.purple'
'Orange':
color: '&6'
item: 'ORANGE_WOOL'
permission: 'ultrachat.chatcolor.orange'
'Light Gray':
color: '&7'
item: 'LIGHT_GRAY_WOOL'
permission: 'ultrachat.chatcolor.lightgray'
'Gray':
color: '&8'
item: 'GRAY_WOOL'
permission: 'ultrachat.chatcolor.gray'
'Blue':
color: '&9'
item: 'LAPIS_BLOCK'
permission: 'ultrachat.chatcolor.blue'
'Lime':
color: '&a'
item: 'LIME_WOOL'
permission: 'ultrachat.chatcolor.lime'
'Light Blue':
color: '&b'
item: 'BLUE_WOOL'
permission: 'ultrachat.chatcolor.lightblue'
'Pink':
color: '&c'
item: 'PINK_WOOL'
permission: 'ultrachat.chatcolor.pink'
'Magenta':
color: '&d'
item: 'MAGENTA_WOOL'
permission: 'ultrachat.chatcolor.magenta'
'Yellow':
color: '&e'
item: 'YELLOW_WOOL'
permission: 'ultrachat.chatcolor.yellow'
'White':
color: '&f'
item: 'WHITE_WOOL'
permission: 'ultrachat.chatcolor.white'
'Black':
color: '&0'
item: 'BLACK_WOOL'
permission: 'ultrachat.chatcolor.black'

View File

@ -58,8 +58,6 @@ Leave_Message: '&e%player% has left the server!'
#############################################
# This is a system to create JSON pockets with in a message.
# It uses a placerholder system to use.
#If Components are enabled.
Components_Enabled: true
#The name of the component:
JSON_Components:
normal_chat:
@ -103,36 +101,14 @@ console_log: false
########################
# If you give a player the '*' permission they will have every single custom chat.
# When json is enabled the message is sent several times based on the number of custom formats you have!
# To advoid this give them the permission -(yourpermission). Ex: -ultrachat.chat.1
# To avoid this give them the permission -(yourpermission). Ex: -ultrachat.chat.1
Custom_Chat:
#The Chat_Count number must represent how many custom chats you have.
Chat_Count: 5
#Each new custom chat must be a single number and all of them must go 1 - (what ever number you have last). There can't be any numbers skipped.
1:
#The permission node you want to give it. *Does not need to match up with the number above*
Permission: 'ultrachat.chat.1'
#The custom format in the chat. The message is added after the end of the string.
Format: '{normal_chat} &7>> '
2:
Permission: 'ultrachat.chat.2'
Format: '{normal_chat} &7>> '
3:
Permission: 'ultrachat.chat.3'
Format: '{normal_chat} &7>> '
4:
Permission: 'ultrachat.chat.4'
#If components are not enabled then you would put this.
Format: '%prefix% %player% %suffix%&7>> '
5:
Permission: 'ultrachat.chat.5'
Format: '%prefix% %player% %suffix%&7>> '
#For any player opped.
Op_Chat:
#The format.
Format: '{normal_chat} &c>> '
permission_format:
'ultrachat.chat.example': '{normal_chat} &7>>'
#For any player oped.
Op_Chat: '{normal_chat} &c>> '
#The default chat when a player does not have a custom one.
Default_Chat:
Format: '{normal_chat} &7>>'
Default_Chat: '{normal_chat} &7>>'
##############################################
# Channels #

View File

@ -1,14 +1,20 @@
package me.ryandw11.ultrachat;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Objects;
import java.util.UUID;
import me.ryandw11.ultrachat.api.ChatType;
import me.ryandw11.ultrachat.api.Lang;
import me.ryandw11.ultrachat.api.managers.AddonManager;
import me.ryandw11.ultrachat.chatcolor.ChatColorManager;
import me.ryandw11.ultrachat.chatcolor.ChatColorUtil_Latest;
import me.ryandw11.ultrachat.chatcolor.ChatColorUtil_Old;
import me.ryandw11.ultrachat.chatcolor.ChatColorUtils;
import me.ryandw11.ultrachat.commands.ChannelCmd;
import me.ryandw11.ultrachat.commands.ChatCommand;
import me.ryandw11.ultrachat.commands.CommandTabCompleter;
@ -18,20 +24,13 @@ import me.ryandw11.ultrachat.commands.StaffChatToggle;
import me.ryandw11.ultrachat.commands.World;
import me.ryandw11.ultrachat.commands.SpyCommand;
import me.ryandw11.ultrachat.formatting.ChannelJSON;
import me.ryandw11.ultrachat.formatting.Channels;
import me.ryandw11.ultrachat.formatting.Normal;
import me.ryandw11.ultrachat.formatting.NormalJSON;
import me.ryandw11.ultrachat.formatting.Range;
import me.ryandw11.ultrachat.formatting.RangeJSON;
import me.ryandw11.ultrachat.gui.ColorGUI;
import me.ryandw11.ultrachat.gui.ColorGUI_1_13_R2;
import me.ryandw11.ultrachat.gui.ColorGUI_Latest;
import me.ryandw11.ultrachat.gui.ColorGUI_Outdated;
import me.ryandw11.ultrachat.gui.*;
import me.ryandw11.ultrachat.listner.ConsoleLogChat;
import me.ryandw11.ultrachat.listner.JoinListner;
import me.ryandw11.ultrachat.listner.NoSwear;
import me.ryandw11.ultrachat.listner.Notify;
import me.ryandw11.ultrachat.listner.Notify_1_12;
import me.ryandw11.ultrachat.listner.Spy;
import me.ryandw11.ultrachat.listner.StopChat;
import me.ryandw11.ultrachat.pluginhooks.AdvancedBanMute;
@ -49,153 +48,142 @@ import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;
/**
* Main Class
*
* @author Ryandw11
* @version 2.4
* Updated for 1.14.
* (Very few API methods here)
*/
public class UltraChat extends JavaPlugin{
public static UltraChat plugin;
public Permission perms = null;
public Chat chat = null;
public Boolean Vault;
public Boolean chatStop = false;
public Boolean channelEnabled = false;
public Boolean JSON = false;
public ChatType md;
public String defaultChannel;
public ArrayList<UUID> stafftoggle = new ArrayList<>();
public ArrayList<UUID> spytoggle = new ArrayList<>();
public PlaceHolderAPIHook papi;
public File datafile = new File(getDataFolder() + "/data/players.yml");
public FileConfiguration data = YamlConfiguration.loadConfiguration(datafile);
public File channelfile;
public FileConfiguration channel;
public String prefix;
public static YamlConfiguration LANG;
public static File LANG_FILE;
private ColorGUI colorGUI;
public AddonManager addonManager;
public class UltraChat extends JavaPlugin {
/**
* TODO : I just finished allowing Hex colors in chat and removing the option for chat without JSON.
* Next on the list is to add in the color chat picker.
*/
@Override
public void onEnable(){
public static UltraChat plugin;
public Permission perms = null;
public Chat chat = null;
public Boolean chatStop = false;
public ChatType md;
public ArrayList<UUID> stafftoggle = new ArrayList<>();
public ArrayList<UUID> spytoggle = new ArrayList<>();
/*
* Plugin setup area
*/
plugin = this;
if (getServer().getPluginManager().getPlugin("Vault") == null && !setupChat()) {
getLogger().info(String.format("[%s] - Vault is not found!", getDescription().getName()));
getLogger().severe("§cWarning: You do not have Vault installed! This plugin is now disabled!");
Bukkit.getPluginManager().disablePlugin(this);
return;
}
if (getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
getLogger().info("Hooked into PlaceholderAPI! You can use the place holders!");
papi = new PAPIEnabled();
}else {
papi = new PAPIDisabled();
}
getLogger().info(String.format("UltraChat is enabled and running fine! V: %s", getDescription().getVersion()));
if(getServer().getPluginManager().getPlugin("AdvancedBan") != null && getConfig().getBoolean("pluginhooks.AdvancedBan")){
getLogger().info("AdvancedBan detected! Activating hook!");
getLogger().info("Mutes will now work with the chat types.");
Bukkit.getServer().getPluginManager().registerEvents(new AdvancedBanMute(), this);
}
if(getServer().getPluginManager().getPlugin("Essentials") != null && getConfig().getBoolean("pluginhooks.Essentials")){
getLogger().info("Essentials detected! Activating hook!");
getLogger().info("Mutes will now work with the chat types.");
Bukkit.getServer().getPluginManager().registerEvents(new EssentialsMute(), this);
}
loadMethod();
registerConfig();
loadFile();
loadChannel();
public PlaceHolderAPIHook papi;
setupPermissions();
setupChat();
setupFormatting();
loadLang();
if(plugin.getConfig().getBoolean("bstats")){
@SuppressWarnings("unused")
Metrics m = new Metrics(this);
}
addonManager = new AddonManager();
}
@Override
public void onDisable(){
getLogger().info("[UltraChat] has been disabled correctly!");
saveFile();
saveChannel();
}
/**
* Setup the chat formatting.
*/
public void setupFormatting(){
String type = getConfig().getString("chat_format");
if(type.equals("")){
getLogger().info("UltraChat will not format the chat. To change this go into the config.");
return;
}
boolean isComponents = plugin.getConfig().getBoolean("Components_Enabled");
switch(type.toLowerCase()){
case "normal":
if(isComponents)
Bukkit.getServer().getPluginManager().registerEvents(new NormalJSON(), this);
else
Bukkit.getServer().getPluginManager().registerEvents(new Normal(), this);
md = ChatType.NORMAL;
getLogger().info("Normal chat mode activated!");
break;
case "channel":
if(isComponents)
Bukkit.getServer().getPluginManager().registerEvents(new ChannelJSON(), this);
else
Bukkit.getServer().getPluginManager().registerEvents(new Channels(), this);
md = ChatType.CHANNEL;
getLogger().info("Channel chat mode enabled.");
break;
case "range":
if(isComponents)
Bukkit.getServer().getPluginManager().registerEvents(new RangeJSON(), this);
else
Bukkit.getServer().getPluginManager().registerEvents(new Range(), this);
getCommand("global").setExecutor(new Global());
getCommand("world").setExecutor(new World());
getLogger().info("Range chat mode enabled. The commands /global and /world are now also active.");
md = ChatType.RANGE;
break;
default:
if(isComponents)
Bukkit.getServer().getPluginManager().registerEvents(new NormalJSON(), this);
else
Bukkit.getServer().getPluginManager().registerEvents(new Normal(), this);
md = ChatType.NORMAL;
getLogger().info("Normal chat mode activated!");
break;
}
}
//Vault set-up =========================================================
public File datafile = new File(getDataFolder() + "/data/players.yml");
public FileConfiguration data = YamlConfiguration.loadConfiguration(datafile);
public File channelfile;
public FileConfiguration channel;
private boolean setupChat() {
RegisteredServiceProvider<Chat> rsp = getServer().getServicesManager().getRegistration(Chat.class);
chat = rsp.getProvider();
return chat != null;
}
public File chatColorFile = new File(getDataFolder() + "/chatcolor.yml");
public FileConfiguration chatColorFC = YamlConfiguration.loadConfiguration(chatColorFile);
public String prefix;
public static YamlConfiguration LANG;
public static File LANG_FILE;
private ColorGUI colorGUI;
public ChatColorManager chatColorManager;
public AddonManager addonManager;
public ChatColorUtils chatColorUtil;
@Override
public void onEnable() {
/*
* Plugin setup area
*/
plugin = this;
if (getServer().getPluginManager().getPlugin("Vault") == null && !setupChat()) {
getLogger().info(String.format("[%s] - Vault is not found!", getDescription().getName()));
getLogger().severe("§cWarning: You do not have Vault installed! This plugin is now disabled!");
Bukkit.getPluginManager().disablePlugin(this);
return;
}
if (getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
getLogger().info("Hooked into PlaceholderAPI! You can use the place holders!");
papi = new PAPIEnabled();
} else {
papi = new PAPIDisabled();
}
getLogger().info(String.format("UltraChat is enabled and running fine! V: %s", getDescription().getVersion()));
if (getServer().getPluginManager().getPlugin("AdvancedBan") != null && getConfig().getBoolean("pluginhooks.AdvancedBan")) {
getLogger().info("AdvancedBan detected! Activating hook!");
getLogger().info("Mutes will now work with the chat types.");
Bukkit.getServer().getPluginManager().registerEvents(new AdvancedBanMute(), this);
}
if (getServer().getPluginManager().getPlugin("Essentials") != null && getConfig().getBoolean("pluginhooks.Essentials")) {
getLogger().info("Essentials detected! Activating hook!");
getLogger().info("Mutes will now work with the chat types.");
Bukkit.getServer().getPluginManager().registerEvents(new EssentialsMute(), this);
}
loadFile();
loadMethod();
registerConfig();
loadChannel();
setupPermissions();
setupChat();
setupFormatting();
loadLang();
if (plugin.getConfig().getBoolean("bstats")) {
@SuppressWarnings("unused")
Metrics m = new Metrics(this);
}
addonManager = new AddonManager();
}
@Override
public void onDisable() {
getLogger().info("[UltraChat] has been disabled correctly!");
saveFile();
saveChannel();
}
/**
* Setup the chat formatting.
*/
public void setupFormatting() {
String type = getConfig().getString("chat_format");
if (type.equals("")) {
getLogger().info("UltraChat will not format the chat. To change this go into the config.");
return;
}
switch (type.toLowerCase()) {
case "channel":
Bukkit.getServer().getPluginManager().registerEvents(new ChannelJSON(), this);
md = ChatType.CHANNEL;
getLogger().info("Channel chat mode enabled.");
break;
case "range":
Bukkit.getServer().getPluginManager().registerEvents(new RangeJSON(), this);
getCommand("global").setExecutor(new Global());
getCommand("world").setExecutor(new World());
getLogger().info("Range chat mode enabled. The commands /global and /world are now also active.");
md = ChatType.RANGE;
break;
default:
Bukkit.getServer().getPluginManager().registerEvents(new NormalJSON(), this);
md = ChatType.NORMAL;
getLogger().info("Normal chat mode activated!");
break;
}
}
//Vault set-up =========================================================
private boolean setupChat() {
RegisteredServiceProvider<Chat> rsp = getServer().getServicesManager().getRegistration(Chat.class);
chat = rsp.getProvider();
return chat != null;
}
private boolean setupPermissions() {
RegisteredServiceProvider<Permission> rsp = getServer().getServicesManager().getRegistration(Permission.class);
@ -203,202 +191,214 @@ public class UltraChat extends JavaPlugin{
return perms != null;
}
//========================================================================= END ===============================
/**
* Save the data file.
*/
public void saveFile(){
try{
data.save(datafile);
}catch(IOException e){
e.printStackTrace();
}
}
/**
* load the data file
*/
public void loadFile(){
if(datafile.exists()){
try {
data.load(datafile);
} catch (IOException | InvalidConfigurationException e) {
public void saveFile() {
try {
data.save(datafile);
} catch (IOException e) {
e.printStackTrace();
e.printStackTrace();
}
}
else{
try {
data.save(datafile);
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* Save the channel file.
*/
public void saveChannel(){
try{
channel.save(channelfile);
}catch(IOException e){
e.printStackTrace();
}
}
/**
* Load the cannel file.
*/
public void loadChannel(){
channelfile = new File(getDataFolder(), "channel.yml");
if (!channelfile.exists()) {
channelfile.getParentFile().mkdirs();
saveResource("channel.yml", false);
}
channel = new YamlConfiguration();
try {
channel.load(channelfile);
} catch (IOException | InvalidConfigurationException e) {
}
}
e.printStackTrace();
}
}
/**
* Get the language file.
* @return The language file.
*/
public File getLangFile() {
return LANG_FILE;
}
/**
*
* @return
*/
public YamlConfiguration getLang() {
return LANG;
}
/**
*
*/
@SuppressWarnings("static-access")
public void loadLang() {
File lang = new File(getDataFolder(), "lang.yml");
if (!lang.exists()) {
try {
getDataFolder().mkdir();
lang.createNewFile();
InputStream defConfigStream = this.getResource("lang.yml");
if (defConfigStream != null) {
YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(new InputStreamReader(defConfigStream));
defConfig.save(lang);
Lang.setFile(defConfig);
return;
}
} catch(IOException e) {
e.printStackTrace(); // So they notice
getLogger().severe("The language file could not be created. Disabling plugin.");
this.setEnabled(false);
}
}
YamlConfiguration conf = YamlConfiguration.loadConfiguration(lang);
for(Lang item:Lang.values()) {
if (conf.getString(item.getPath()) == null) {
conf.set(item.getPath(), item.getDefault());
}
}
Lang.setFile(conf);
this.LANG = conf;
this.LANG_FILE = lang;
try {
conf.save(getLangFile());
} catch(IOException e) {
getLogger().warning( "Failed to save lang.yml.");
e.printStackTrace();
}
}
private void registerConfig() {
saveDefaultConfig();
}
/**
* Loads all of the Events and Commands.
*/
public void loadMethod(){
getCommand("chat").setExecutor(new ChatCommand());
getCommand("chat").setTabCompleter(new CommandTabCompleter());
getCommand("sc").setExecutor(new StaffChat());
getCommand("sctoggle").setExecutor(new StaffChatToggle());
getCommand("spy").setExecutor(new SpyCommand());
getCommand("channel").setExecutor(new ChannelCmd());
Bukkit.getServer().getPluginManager().registerEvents(new StopChat(), this);
Bukkit.getServer().getPluginManager().registerEvents(new NoSwear(), this);
Bukkit.getServer().getPluginManager().registerEvents(new Spy(), this);
Bukkit.getServer().getPluginManager().registerEvents(new JoinListner(), this);
//Bukkit.getServer().getPluginManager().registerEvents(new Format(this), this);
if(getConfig().getBoolean("console_log"))
Bukkit.getServer().getPluginManager().registerEvents(new ConsoleLogChat(), this);
loadVersions();
}
/**
* Loads classes based upon the server version.
*/
private void loadVersions() {
String version;
/**
* load the data file
*/
public void loadFile() {
if (datafile.exists()) {
try {
data.load(datafile);
} catch (IOException | InvalidConfigurationException e) {
e.printStackTrace();
}
} else {
try {
data.save(datafile);
} catch (IOException e) {
e.printStackTrace();
}
}
if (chatColorFile.exists()) {
try {
chatColorFC.load(chatColorFile);
} catch (IOException | InvalidConfigurationException e) {
e.printStackTrace();
}
} else {
saveResource("chatcolor.yml", false);
chatColorFC = YamlConfiguration.loadConfiguration(chatColorFile);
}
}
/**
* Save the channel file.
*/
public void saveChannel() {
try {
channel.save(channelfile);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* Load the cannel file.
*/
public void loadChannel() {
channelfile = new File(getDataFolder(), "channel.yml");
if (!channelfile.exists()) {
channelfile.getParentFile().mkdirs();
saveResource("channel.yml", false);
}
channel = new YamlConfiguration();
try {
channel.load(channelfile);
} catch (IOException | InvalidConfigurationException e) {
e.printStackTrace();
}
}
/**
* Get the language file.
*
* @return The language file.
*/
public File getLangFile() {
return LANG_FILE;
}
/**
* @return
*/
public YamlConfiguration getLang() {
return LANG;
}
/**
*
*/
@SuppressWarnings("static-access")
public void loadLang() {
File lang = new File(getDataFolder(), "lang.yml");
if (!lang.exists()) {
try {
getDataFolder().mkdir();
lang.createNewFile();
InputStream defConfigStream = this.getResource("lang.yml");
if (defConfigStream != null) {
YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(new InputStreamReader(defConfigStream));
defConfig.save(lang);
Lang.setFile(defConfig);
return;
}
} catch (IOException e) {
e.printStackTrace(); // So they notice
getLogger().severe("The language file could not be created. Disabling plugin.");
this.setEnabled(false);
}
}
YamlConfiguration conf = YamlConfiguration.loadConfiguration(lang);
for (Lang item : Lang.values()) {
if (conf.getString(item.getPath()) == null) {
conf.set(item.getPath(), item.getDefault());
}
}
Lang.setFile(conf);
this.LANG = conf;
this.LANG_FILE = lang;
try {
conf.save(getLangFile());
} catch (IOException e) {
getLogger().warning("Failed to save lang.yml.");
e.printStackTrace();
}
}
private void registerConfig() {
saveDefaultConfig();
}
/**
* Loads all of the Events and Commands.
*/
public void loadMethod() {
getCommand("chat").setExecutor(new ChatCommand());
getCommand("chat").setTabCompleter(new CommandTabCompleter());
getCommand("sc").setExecutor(new StaffChat());
getCommand("sctoggle").setExecutor(new StaffChatToggle());
getCommand("spy").setExecutor(new SpyCommand());
getCommand("channel").setExecutor(new ChannelCmd());
Bukkit.getServer().getPluginManager().registerEvents(new StopChat(), this);
Bukkit.getServer().getPluginManager().registerEvents(new NoSwear(), this);
Bukkit.getServer().getPluginManager().registerEvents(new Spy(), this);
Bukkit.getServer().getPluginManager().registerEvents(new JoinListner(), this);
//Bukkit.getServer().getPluginManager().registerEvents(new Format(this), this);
if (getConfig().getBoolean("console_log"))
Bukkit.getServer().getPluginManager().registerEvents(new ConsoleLogChat(), this);
loadVersions();
}
/**
* Loads classes based upon the server version.
*/
private void loadVersions() {
String version;
try {
version = Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3];
version = Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3];
} catch (ArrayIndexOutOfBoundsException w0w) {
version = " ";
version = " ";
}
if (version.equals("v1_13_R2") || version.equals("v1_14_R1") || version.equals("v1_15_R1")) {
if (version.equals("v1_14_R1") || version.equals("v1_15_R1")) {
Bukkit.getServer().getPluginManager().registerEvents(new Notify(), this);
if(version.equals("v1_13_R2")) {
colorGUI = new ColorGUI_1_13_R2();
Bukkit.getServer().getPluginManager().registerEvents(new ColorGUI_1_13_R2(), this);
if(!(plugin.getConfig().getBoolean("ChatColor_Command")))
getCommand("color").setExecutor(new ColorGUI_1_13_R2());
}else {
colorGUI = new ColorGUI_Latest();
Bukkit.getServer().getPluginManager().registerEvents(new ColorGUI_Latest(), this);
if(!(plugin.getConfig().getBoolean("ChatColor_Command")))
getCommand("color").setExecutor(new ColorGUI_Latest());
}
}else {
Bukkit.getServer().getPluginManager().registerEvents(new Notify_1_12(), this);
colorGUI = new ColorGUI_Outdated();
Bukkit.getServer().getPluginManager().registerEvents(new ColorGUI_Outdated(), this);
if(!(plugin.getConfig().getBoolean("ChatColor_Command")))
getCommand("color").setExecutor(new ColorGUI_Outdated());
getLogger().info("1.12 or below version detected. Activating compatibility mode.");
colorGUI = new ColorGUI_1_15_R1();
Bukkit.getServer().getPluginManager().registerEvents(new ColorGUI_Latest(), this);
if (!(plugin.getConfig().getBoolean("ChatColor_Command")))
getCommand("color").setExecutor(new ColorGUI_1_15_R1());
this.chatColorUtil = new ChatColorUtil_Old();
} else {
Bukkit.getServer().getPluginManager().registerEvents(new Notify(), this);
colorGUI = new ColorGUI_Latest();
Bukkit.getServer().getPluginManager().registerEvents(new ColorGUI_Latest(), this);
chatColorManager = new ChatColorManager(this, Objects.requireNonNull(chatColorFC.getConfigurationSection("chat_colors")));
if (!(plugin.getConfig().getBoolean("ChatColor_Command")))
getCommand("color").setExecutor(new ColorGUI_Latest());
this.chatColorUtil = new ChatColorUtil_Latest(this);
}
}
/**
* Get the ColorGUI class for the right version.
* @return A class that implements ColorGUI
*/
public ColorGUI getColorGUI() {
return colorGUI;
}
}
/**
* Get the ColorGUI class for the right version.
*
* @return A class that implements ColorGUI
*/
public ColorGUI getColorGUI() {
return colorGUI;
}
}

View File

@ -0,0 +1,49 @@
package me.ryandw11.ultrachat.chatcolor;
import me.ryandw11.ultrachat.UltraChat;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.configuration.ConfigurationSection;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
* This class handles the chatcolor.yml file.
*/
public class ChatColorManager {
private Map<String, ChatColor> colorCodeMap;
public ChatColorManager(UltraChat plugin, ConfigurationSection section){
colorCodeMap = new HashMap<>();
for(String s : section.getKeys(false)){
String color = Objects.requireNonNull(section.getString(s));
if(color.equalsIgnoreCase("default"))
colorCodeMap.put(s, ChatColor.getByChar(s.replace("&", "").charAt(0)));
else{
try{
color = color.replace("{", "").replace("}", "");
colorCodeMap.put(s, ChatColor.of(color));
}catch(IllegalArgumentException ex){
plugin.getLogger().warning("Invalid chat color for " + s);
}
}
}
}
public Map<String, ChatColor> getMap(){
return colorCodeMap;
}
public String translateMapColors(String message){
String finalMessage = message;
for(Map.Entry<String, ChatColor> entry : colorCodeMap.entrySet()){
finalMessage = finalMessage.replace(entry.getKey(), entry.getValue().toString());
}
return finalMessage;
}
public ChatColor getChatColor(String s){
return colorCodeMap.get(s);
}
}

View File

@ -0,0 +1,140 @@
package me.ryandw11.ultrachat.chatcolor;
import me.ryandw11.ultrachat.UltraChat;
import me.ryandw11.ultrachat.formatting.PlayerFormatting;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.craftbukkit.libs.org.apache.commons.lang3.tuple.MutablePair;
import org.bukkit.craftbukkit.libs.org.apache.commons.lang3.tuple.Pair;
import org.bukkit.entity.Player;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ChatColorUtil_Latest implements ChatColorUtils {
private UltraChat plugin;
public ChatColorUtil_Latest(UltraChat plugin){
this.plugin = plugin;
}
@Override
public String translateChatColor(String message) {
String finalMessage = translateHexColor(message);
finalMessage = plugin.chatColorManager.translateMapColors(finalMessage);
return finalMessage;
}
@Override
public String translateChatColor(Player p, String message) {
String finalMessage = message;
if(p.hasPermission("ultrachat.chatcolor.hex"))
finalMessage = translateHexColor(finalMessage);
if(p.hasPermission("ultrachat.chatcolor.colorcodes"))
finalMessage = plugin.chatColorManager.translateMapColors(finalMessage);
return finalMessage;
}
@Override
public Map<String, String> splitColors(String message, PlayerFormatting pf) {
List<String> normalMessage = new ArrayList<>(Arrays.asList(message.split("\\{(#[^}]+)}|&[^&]")));
List<String> colorCodes = new ArrayList<>();
// TODO fix this
colorCodes.add(pf.getColor().toString());
Matcher m = Pattern.compile("\\{(#[^}]+)}|&[^&]").matcher(message);
while(m.find()) {
colorCodes.add(m.group());
}
for(int i = 0; i < colorCodes.size(); i++){
if(!isChatCode(colorCodes.get(i)) && i != 0){
normalMessage.set(i-1, normalMessage.get(i-1) +colorCodes.get(i)+normalMessage.get(i));
normalMessage.remove(i);
colorCodes.remove(i);
i--;
}
}
Map<String, String> output = new LinkedHashMap<>();
for(int i = 0; i < normalMessage.size(); i++){
output.put(normalMessage.get(i), colorCodes.get(i));
}
return output;
}
@Override
public ChatColor translateChatCode(String code) {
if(code.startsWith("&")){
return plugin.chatColorManager.getChatColor(code);
}
String hexCode = code.replace("{", "").replace("}", "");
try{
return ChatColor.of(hexCode);
}catch(IllegalArgumentException ex){
return ChatColor.RED;
}
}
@Override
public boolean isChatCode(String code) {
if(code.startsWith("&")){
return plugin.chatColorManager.getMap().containsKey(code);
}
String hexCode = code.replace("{", "").replace("}", "");
try{
ChatColor.of(hexCode);
}catch(IllegalArgumentException ex){
return false;
}
return true;
}
@Override
public ChatColor translateChatCode(Player p, String code) {
return null;
}
protected static String translateHexColor(String message){
if(!message.contains("{"))
return message;
StringBuilder finalMessage = new StringBuilder();
StringBuilder interior = new StringBuilder();
boolean readInterior = false;
for (int i = 0; i < message.length(); i++){
char c = message.charAt(i);
if(c == '{' && !readInterior){
readInterior = true;
}else if(!readInterior){
finalMessage.append(c);
} else if(c == '{'){
finalMessage.append('{');
finalMessage.append(interior);
interior = new StringBuilder();
}else if(c == '}' && interior.toString().contains("#")){
readInterior = false;
try {
finalMessage.append(ChatColor.of(interior.toString()));
}catch(IllegalArgumentException ex){
finalMessage.append("{");
finalMessage.append(interior);
finalMessage.append("}");
}finally{
interior = new StringBuilder();
}
}else if(c == '}'){
readInterior = false;
finalMessage.append("{");
finalMessage.append(interior);
finalMessage.append("}");
interior = new StringBuilder();
}
else{
interior.append(c);
}
}
if(interior.toString().length() > 0){
finalMessage.append('{');
finalMessage.append(interior);
}
return finalMessage.toString();
}
}

View File

@ -0,0 +1,43 @@
package me.ryandw11.ultrachat.chatcolor;
import me.ryandw11.ultrachat.formatting.PlayerFormatting;
import org.bukkit.ChatColor;
import org.bukkit.craftbukkit.libs.org.apache.commons.lang3.tuple.Pair;
import org.bukkit.entity.Player;
import java.util.List;
import java.util.Map;
import java.util.SortedMap;
public class ChatColorUtil_Old implements ChatColorUtils {
@Override
public String translateChatColor(String message) {
return ChatColor.translateAlternateColorCodes('&', message);
}
@Override
public String translateChatColor(Player p, String message) {
return ChatColor.translateAlternateColorCodes('&', message);
}
@Override
public Map<String, String> splitColors(String message, PlayerFormatting pf) {
return null;
}
@Override
public net.md_5.bungee.api.ChatColor translateChatCode(String code) {
return null;
}
@Override
public boolean isChatCode(String code) {
return false;
}
@Override
public net.md_5.bungee.api.ChatColor translateChatCode(Player p, String message) {
return null;
}
}

View File

@ -0,0 +1,19 @@
package me.ryandw11.ultrachat.chatcolor;
import me.ryandw11.ultrachat.formatting.PlayerFormatting;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.craftbukkit.libs.org.apache.commons.lang3.tuple.Pair;
import org.bukkit.entity.Player;
import java.util.List;
import java.util.Map;
import java.util.SortedMap;
public interface ChatColorUtils {
String translateChatColor(String message);
String translateChatColor(Player p, String message);
Map<String, String> splitColors(String message, PlayerFormatting pf);
ChatColor translateChatCode(String code);
boolean isChatCode(String code);
ChatColor translateChatCode(Player p, String message);
}

View File

@ -1,10 +1,13 @@
package me.ryandw11.ultrachat.formatting;
import java.util.HashSet;
import java.util.Objects;
import me.ryandw11.ultrachat.util.ChatUtil;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
@ -20,7 +23,7 @@ import net.md_5.bungee.api.chat.TextComponent;
/**
* Handles channels with components enabled.
* @author Ryandw11
* @since 2.4
* @since 2.5
*
*/
public class ChannelJSON implements Listener {
@ -30,53 +33,54 @@ public class ChannelJSON implements Listener {
this.plugin = UltraChat.plugin;
}
@EventHandler
@EventHandler(priority = EventPriority.HIGHEST)
public void onChat(AsyncPlayerChatEvent e){
Player p = e.getPlayer();
PlayerFormatting pf = new PlayerFormatting(p);
e.setCancelled(true);
String channel = plugin.data.getString(p.getUniqueId() + ".channel");
ChannelProperties cp = new ChannelProperties(true, channel);
if(!plugin.channel.getBoolean(channel + ".always_appear")){
UltraChatEvent uce = new UltraChatEvent(p, e.getMessage(), new HashSet<Player>(Bukkit.getOnlinePlayers()), ChatType.CHANNEL, cp);
UltraChatEvent uce = new UltraChatEvent(p, e.getMessage(), new HashSet<>(e.getRecipients()), ChatType.CHANNEL, cp);
Bukkit.getServer().getPluginManager().callEvent(uce);
// Remove recipients from main events to prevent double messages.
e.getRecipients().clear();
if(uce.isCancelled()) return;
for(Player pl : uce.getRecipients()){
if(plugin.data.getString(pl.getUniqueId() + ".channel").equals(channel)){
if(pl.hasPermission(plugin.channel.getString(channel + ".permission")) || plugin.channel.getString(channel + ".permission").equalsIgnoreCase("none")){
String form = ChatColor.translateAlternateColorCodes('&', plugin.channel.getString(channel + ".prefix"))
+ ChatColor.translateAlternateColorCodes('&', plugin.channel.getString(channel + ".format"))
if(pl.hasPermission(Objects.requireNonNull(plugin.channel.getString(channel + ".permission"))) || Objects.requireNonNull(plugin.channel.getString(channel + ".permission")).equalsIgnoreCase("none")){
String format = ChatColor.translateAlternateColorCodes('&', Objects.requireNonNull(plugin.channel.getString(channel + ".prefix")))
+ ChatColor.translateAlternateColorCodes('&', Objects.requireNonNull(plugin.channel.getString(channel + ".format")))
.replace("%prefix%", pf.getPrefix())
.replace("%suffix%", pf.getSuffix())
.replace("%player%", p.getDisplayName())
+ pf.getColor();
ComponentBuilder cb = new ComponentBuilder("");
cb.append(JComponentManager.formatComponents(form, p));
TextComponent tc = new TextComponent(uce.getMessage());
cb.append(tc);
cb.append(JComponentManager.formatComponents(format, p));
cb.append(ChatUtil.translateColorCodesChat(uce.getMessage(), pf).create(), ComponentBuilder.FormatRetention.NONE);
pl.spigot().sendMessage(cb.create());
}
}
}
}
else{
UltraChatEvent uce = new UltraChatEvent(p, e.getMessage(), new HashSet<Player>(Bukkit.getOnlinePlayers()), ChatType.CHANNEL, cp);
UltraChatEvent uce = new UltraChatEvent(p, e.getMessage(), new HashSet<>(e.getRecipients()), ChatType.CHANNEL, cp);
Bukkit.getServer().getPluginManager().callEvent(uce);
e.getRecipients().clear();
if(!uce.isCancelled())
for(Player pl : uce.getRecipients()){
String form = ChatColor.translateAlternateColorCodes('&', plugin.channel.getString(channel + ".prefix"))
+ ChatColor.translateAlternateColorCodes('&', plugin.channel.getString(channel + ".format"))
String formats = ChatColor.translateAlternateColorCodes('&', Objects.requireNonNull(plugin.channel.getString(channel + ".prefix")))
+ ChatColor.translateAlternateColorCodes('&', Objects.requireNonNull(plugin.channel.getString(channel + ".format")))
.replace("%prefix%", pf.getPrefix())
.replace("%suffix%", pf.getSuffix())
.replace("%player%", p.getDisplayName())
+ pf.getColor();
ComponentBuilder cb = new ComponentBuilder("");
cb.append(JComponentManager.formatComponents(form, p));
TextComponent tc = new TextComponent(uce.getMessage());
cb.append(tc);
cb.append(JComponentManager.formatComponents(formats, p));
cb.append(ChatUtil.translateColorCodesChat(uce.getMessage(), pf).create(), ComponentBuilder.FormatRetention.NONE);
pl.spigot().sendMessage(cb.create());
}
}

View File

@ -1,64 +0,0 @@
package me.ryandw11.ultrachat.formatting;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import me.clip.placeholderapi.PlaceholderAPI;
import me.ryandw11.ultrachat.UltraChat;
import me.ryandw11.ultrachat.api.ChatType;
import me.ryandw11.ultrachat.api.events.UltraChatEvent;
import me.ryandw11.ultrachat.api.events.properties.ChannelProperties;
/**
* Channels without any kind of json involved.
* @author Ryandw11
*
*/
public class Channels implements Listener {
private UltraChat plugin;
public Channels(){
plugin = UltraChat.plugin;
}
@EventHandler
public void onChat(AsyncPlayerChatEvent e){
PlayerFormatting pf = new PlayerFormatting(e.getPlayer());
Player p = e.getPlayer();
String channel = plugin.data.getString(p.getUniqueId() + ".channel");
if(!plugin.channel.getBoolean(channel + ".always_appear")){
e.getRecipients().removeAll(Bukkit.getOnlinePlayers());
if(p.hasPermission("ultrachat.chat.color")){
e.setMessage(ChatColor.translateAlternateColorCodes('&', e.getMessage()));
}
for(Player pl : Bukkit.getOnlinePlayers()){
if(plugin.data.getString(pl.getUniqueId() + ".channel").equals(channel)){
if(pl.hasPermission(plugin.channel.getString(channel + ".permission")) || plugin.channel.getString(channel + ".permission").equalsIgnoreCase("none")){
e.getRecipients().add(pl);
}
}
}
}
ChannelProperties cp = new ChannelProperties(false, channel);
UltraChatEvent uce = new UltraChatEvent(p, e.getMessage(), e.getRecipients(), ChatType.CHANNEL, cp);
Bukkit.getServer().getPluginManager().callEvent(uce);
if (uce.isCancelled()) {
e.setCancelled(true);
return;
}
if(uce.getRecipients() != e.getRecipients()) {
e.getRecipients().removeAll(Bukkit.getOnlinePlayers());
e.getRecipients().addAll(uce.getRecipients());
}
e.setMessage(uce.getMessage());
e.setFormat(PlaceholderAPI.setPlaceholders(p, ChatColor.translateAlternateColorCodes('&', plugin.channel.getString(channel + ".prefix")) + ChatColor.translateAlternateColorCodes('&', plugin.channel.getString(channel + ".format").replace("%prefix%", pf.getPrefix()).replace("%suffix%", pf.getSuffix()).replace("%player%", "%s") + pf.getColor() + "%s")));
}
}

View File

@ -1,87 +0,0 @@
package me.ryandw11.ultrachat.formatting;
import java.util.UnknownFormatConversionException;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import me.clip.placeholderapi.PlaceholderAPI;
import me.ryandw11.ultrachat.UltraChat;
import me.ryandw11.ultrachat.api.ChatType;
import me.ryandw11.ultrachat.api.events.UltraChatEvent;
import me.ryandw11.ultrachat.api.events.properties.NormalProperties;
/**
* Normal chat formatting with no channels or Json.
* @author Ryandw11
*
*/
public class Normal implements Listener {
private UltraChat plugin;
public Normal(){
plugin = UltraChat.plugin;
}
@EventHandler
public void onChat(AsyncPlayerChatEvent e){
PlayerFormatting pf = new PlayerFormatting(e.getPlayer());
Player p = e.getPlayer();
if(p.hasPermission("ultrachat.chat.color")){
e.setMessage(ChatColor.translateAlternateColorCodes('&', e.getMessage()));
}
NormalProperties np = new NormalProperties(false);
UltraChatEvent uce = new UltraChatEvent(p, e.getMessage(), e.getRecipients(), ChatType.NORMAL, np);
Bukkit.getServer().getPluginManager().callEvent(uce);
if(uce.isCancelled()) {
e.setCancelled(true);
return;
}
if(e.getRecipients() != uce.getRecipients()) {
e.getRecipients().removeAll(e.getRecipients());
e.getRecipients().addAll(uce.getRecipients());
}
e.setMessage(uce.getMessage());
if(p.isOp() && p.hasPermission("ultrachat.formatting.op")){
try{
e.setFormat(pf.getOpFormat().replace("%prefix%", pf.getPrefix()).replace("%suffix%", pf.getSuffix()).replace("%player%", "%s") + pf.getColor() + "%s");
}catch (UnknownFormatConversionException ex){
p.sendMessage(ChatColor.RED + "A fatal error has occured. Check the console for more info!");
Bukkit.getLogger().warning(ChatColor.RED + "A fatal error has occured!");
Bukkit.getLogger().warning(ChatColor.RED + "Your formatting seems to be a bit off! Check the config.yml Fortmat: OP");
}
}else{
int i = 1;
while(i <= plugin.getConfig().getInt("Custom_Chat.Chat_Count")){
if(p.hasPermission(plugin.getConfig().getString("Custom_Chat." + i + ".Permission"))){
try{
e.setFormat(PlaceholderAPI.setPlaceholders(p, ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("Custom_Chat." + i +".Format").replace("%player%", "%s").replace("%prefix%", pf.getPrefix()).replace("%suffix%", pf.getSuffix())) + pf.getColor() + "%s"));
}catch (UnknownFormatConversionException ex){
p.sendMessage(ChatColor.RED + "A fatal error has occured. Contact an administrator!");
Bukkit.getLogger().warning(ChatColor.RED + "A fatal error has occured!");
Bukkit.getLogger().warning(ChatColor.RED + "Your formatting seems to be a bit off! Check the config.yml Fortmat #: " + i);
}
return;
}
i++;
}
try{
e.setFormat(pf.getDefaultFormat().replace("%prefix%", pf.getPrefix()).replace("%suffix%", pf.getSuffix()).replace("%player%", "%s") + pf.getColor() + "%s");
}catch(UnknownFormatConversionException ex){
p.sendMessage(ChatColor.RED + "A fatal error has occured. Contact an administrator!");
Bukkit.getLogger().warning(ChatColor.RED + "A fatal error has occured!");
Bukkit.getLogger().warning(ChatColor.RED + "Your formatting seems to be a bit off! Check the config.yml Fortmat: Defualt");
}
}
}
}

View File

@ -1,10 +1,15 @@
package me.ryandw11.ultrachat.formatting;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Objects;
import me.ryandw11.ultrachat.util.ChatUtil;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
@ -19,7 +24,7 @@ import net.md_5.bungee.api.chat.TextComponent;
/**
* Handles the Normal Chat when in JSON mode.
* @author Ryandw11
* @since 2.4
* @since 2.5
*
*/
public class NormalJSON implements Listener {
@ -30,39 +35,40 @@ public class NormalJSON implements Listener {
this.plugin = UltraChat.plugin;
}
@EventHandler
@EventHandler(priority = EventPriority.HIGHEST)
public void onChat(AsyncPlayerChatEvent e) {
Player p = e.getPlayer();
e.setCancelled(true);
PlayerFormatting pf = new PlayerFormatting(p);
// Call the UltraChatEvent (This is an optional Event).
NormalProperties np = new NormalProperties(true);
UltraChatEvent event = new UltraChatEvent(p, e.getMessage(), new HashSet<Player>(Bukkit.getOnlinePlayers()), ChatType.NORMAL, np);
UltraChatEvent event = new UltraChatEvent(p, e.getMessage(), new HashSet<Player>(e.getRecipients()), ChatType.NORMAL, np);
Bukkit.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;
}
if (p.isOp() && p.hasPermission("ultrachat.formatting.op")) {
//Remove all players from the normal event.
e.getRecipients().clear();
if (p.isOp()) {
String formats = pf.getOpFormat()
.replace("%prefix%", pf.getPrefix())
.replace("%suffix%", pf.getSuffix())
.replace("%player%", p.getDisplayName())
+ pf.getColor();
.replace("%player%", p.getDisplayName());
for (Player pl : event.getRecipients()) {
ComponentBuilder cb = new ComponentBuilder("");
cb.append(JComponentManager.formatComponents(formats, p));
TextComponent tc = new TextComponent(event.getMessage());
cb.append(tc);
cb.append(ChatUtil.translateColorCodesChat(event.getMessage(), pf).create(), ComponentBuilder.FormatRetention.NONE);
pl.spigot().sendMessage(cb.create());
}
return;
}
// If the player is not op
int i = 1;
boolean complete = false;
while (i <= plugin.getConfig().getInt("Custom_Chat.Chat_Count")) {
if (p.hasPermission(plugin.getConfig().getString("Custom_Chat." + i + ".Permission"))) {
String formats = pf.getCustomFormat(i)
for (String permission : Objects.requireNonNull(plugin.getConfig().getConfigurationSection("Custom_Chat.permission_format")).getKeys(false)) {
if (p.hasPermission(permission)) {
String formats = pf.getCustomFormat(permission)
.replace("%prefix%", pf.getPrefix())
.replace("%suffix%", pf.getSuffix())
.replace("%player%", p.getDisplayName())
@ -71,16 +77,11 @@ public class NormalJSON implements Listener {
for (Player pl : event.getRecipients()) {
ComponentBuilder cb = new ComponentBuilder("");
cb.append(JComponentManager.formatComponents(formats, p));
TextComponent tc = new TextComponent(event.getMessage());
cb.append(tc);
cb.append(ChatUtil.translateColorCodesChat(event.getMessage(), pf).create(), ComponentBuilder.FormatRetention.NONE);
pl.spigot().sendMessage(cb.create());
complete = true;
break;
}
}
if (complete)
return;
i++;
}
}
/*
@ -94,8 +95,7 @@ public class NormalJSON implements Listener {
for (Player pl : event.getRecipients()) {
ComponentBuilder cb = new ComponentBuilder("");
cb.append(JComponentManager.formatComponents(formats, p));
TextComponent tc = new TextComponent(event.getMessage());
cb.append(tc);
cb.append(ChatUtil.translateColorCodesChat(event.getMessage(), pf).create(), ComponentBuilder.FormatRetention.NONE);
pl.spigot().sendMessage(cb.create());
}
}

View File

@ -5,6 +5,9 @@ import org.bukkit.entity.Player;
import me.ryandw11.ultrachat.UltraChat;
import me.ryandw11.ultrachat.api.Util;
import net.md_5.bungee.api.ChatColor;
import java.util.Objects;
/**
* Class for formatting player chat easily.
* @author Ryandw11
@ -20,14 +23,14 @@ public class PlayerFormatting {
public PlayerFormatting(Player p){
plugin = UltraChat.plugin;
color = ChatColor.translateAlternateColorCodes('&', plugin.data.getString(p.getUniqueId() + ".color"));
color = plugin.data.getString(p.getUniqueId() + ".color");
prefix = ChatColor.translateAlternateColorCodes('&', plugin.chat.getPlayerPrefix(p));
suffix = ChatColor.translateAlternateColorCodes('&', plugin.chat.getPlayerSuffix(p));
formatOp = plugin.papi.translatePlaceholders(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("Custom_Chat.Op_Chat.Format")), p);
defaults = plugin.papi.translatePlaceholders(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("Custom_Chat.Default_Chat.Format")), p);
global = plugin.papi.translatePlaceholders(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("Global.format")), p);
world = plugin.papi.translatePlaceholders(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("World.format")), p);
local = plugin.papi.translatePlaceholders(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("Local.format")), p);
formatOp = plugin.papi.translatePlaceholders(ChatColor.translateAlternateColorCodes('&', Objects.requireNonNull(plugin.getConfig().getString("Custom_Chat.Op_Chat"))), p);
defaults = plugin.papi.translatePlaceholders(ChatColor.translateAlternateColorCodes('&', Objects.requireNonNull(plugin.getConfig().getString("Custom_Chat.Default_Chat"))), p);
global = plugin.papi.translatePlaceholders(ChatColor.translateAlternateColorCodes('&', Objects.requireNonNull(plugin.getConfig().getString("Global.format"))), p);
world = plugin.papi.translatePlaceholders(ChatColor.translateAlternateColorCodes('&', Objects.requireNonNull(plugin.getConfig().getString("World.format"))), p);
local = plugin.papi.translatePlaceholders(ChatColor.translateAlternateColorCodes('&', Objects.requireNonNull(plugin.getConfig().getString("Local.format"))), p);
this.p = p;
}
@ -68,9 +71,9 @@ public class PlayerFormatting {
public String getDefaultFormat(){
return defaults;
}
public String getCustomFormat(int num) {
return plugin.papi.translatePlaceholders(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("Custom_Chat." + num + ".Format")), p);
public String getCustomFormat(String name) {
return plugin.papi.translatePlaceholders(ChatColor.translateAlternateColorCodes('&', Objects.requireNonNull(plugin.getConfig().getString("Custom_Chat.permission_format." + name))), p);
}
}

View File

@ -1,74 +0,0 @@
package me.ryandw11.ultrachat.formatting;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.UnknownFormatConversionException;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import me.ryandw11.ultrachat.UltraChat;
import me.ryandw11.ultrachat.api.ChatType;
import me.ryandw11.ultrachat.api.events.UltraChatEvent;
import me.ryandw11.ultrachat.api.events.properties.RangeProperties;
import me.ryandw11.ultrachat.api.events.properties.RangeType;
public class Range implements Listener {
private UltraChat plugin;
public Range() {
plugin = UltraChat.plugin;
}
@EventHandler
public void onChat(AsyncPlayerChatEvent e) {
Player p = e.getPlayer();
PlayerFormatting pf = new PlayerFormatting(p);
if (p.hasPermission("ultrachat.chat.color")) {
e.setMessage(ChatColor.translateAlternateColorCodes('&', e.getMessage()));
}
e.getRecipients().removeAll(Bukkit.getOnlinePlayers());
e.getRecipients().addAll(getNearbyPlayers(p));
e.getRecipients().add(p);
RangeProperties rp = new RangeProperties(false, RangeType.LOCAL);
UltraChatEvent uce = new UltraChatEvent(p, e.getMessage(), new HashSet<Player>(Bukkit.getOnlinePlayers()), ChatType.RANGE, rp);
Bukkit.getServer().getPluginManager().callEvent(uce);
if(uce.isCancelled()) {
e.setCancelled(true);
return;
}
if(e.getRecipients() != uce.getRecipients()) {
e.getRecipients().removeAll(e.getRecipients());
e.getRecipients().addAll(uce.getRecipients());
}
e.setMessage(uce.getMessage());
try {
e.setFormat(pf.getLocal().replace("%player%", "%s").replace("%prefix%", pf.getPrefix()).replace("%suffix%",
pf.getSuffix()) + pf.getColor() + "%s");
} catch (UnknownFormatConversionException ex) {
Bukkit.getLogger().severe("A fatal error has occured! The local formatting is not correct!");
}
}
public ArrayList<Player> getNearbyPlayers(Player pl) {
ArrayList<Player> nearby = new ArrayList<Player>();
double range = plugin.getConfig().getDouble("Local.range");
for (Entity e : pl.getNearbyEntities(range, range, range)) {
if (e instanceof Player) {
nearby.add((Player) e);
}
}
return nearby;
}
}

View File

@ -3,11 +3,13 @@ package me.ryandw11.ultrachat.formatting;
import java.util.ArrayList;
import java.util.HashSet;
import me.ryandw11.ultrachat.util.ChatUtil;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
@ -28,35 +30,31 @@ public class RangeJSON implements Listener {
this.plugin = UltraChat.plugin;
}
@EventHandler
@EventHandler(priority = EventPriority.HIGHEST)
public void onChat(AsyncPlayerChatEvent e) {
Player p = e.getPlayer();
PlayerFormatting pf = new PlayerFormatting(p);
if (p.hasPermission("ultrachat.chat.color")) {
e.setMessage(ChatColor.translateAlternateColorCodes('&', e.getMessage()));
}
e.getRecipients().removeAll(Bukkit.getOnlinePlayers());
e.getRecipients().addAll(getNearbyPlayers(p));
e.getRecipients().add(p);
e.setCancelled(true);
RangeProperties rp = new RangeProperties(true, RangeType.LOCAL);
UltraChatEvent uce = new UltraChatEvent(p, e.getMessage(), new HashSet<Player>(e.getRecipients()), ChatType.RANGE, rp);
UltraChatEvent uce = new UltraChatEvent(p, e.getMessage(), new HashSet<>(e.getRecipients()), ChatType.RANGE, rp);
Bukkit.getServer().getPluginManager().callEvent(uce);
e.getRecipients().clear();
if (!uce.isCancelled()) {
for (Player pl : uce.getRecipients()) {
String form = pf.getLocal()
String formats = pf.getLocal()
.replace("%player%", p.getDisplayName())
.replace("%prefix%", pf.getPrefix())
.replace("%suffix%", pf.getSuffix())
+ pf.getColor();
ComponentBuilder cb = new ComponentBuilder("");
cb.append(JComponentManager.formatComponents(form, p));
TextComponent tc = new TextComponent(uce.getMessage());
cb.append(tc);
cb.append(JComponentManager.formatComponents(formats, p));
cb.append(ChatUtil.translateColorCodesChat(uce.getMessage(), pf).create(), ComponentBuilder.FormatRetention.NONE);
pl.spigot().sendMessage(cb.create());
}
}

View File

@ -1,5 +1,6 @@
package me.ryandw11.ultrachat.formatting;
import java.util.Objects;
import java.util.UUID;
import org.bukkit.Bukkit;
@ -31,7 +32,7 @@ private UltraChat plugin;
OfflinePlayer op = Bukkit.getOfflinePlayer(ud);
color = ChatColor.translateAlternateColorCodes('&', plugin.data.getString(ud + ".color"));
color = Objects.requireNonNull(plugin.data.getString(ud + ".color"));
try {
prefix = ChatColor.translateAlternateColorCodes('&', plugin.chat.getPlayerPrefix(world, op));
suffix = ChatColor.translateAlternateColorCodes('&', plugin.chat.getPlayerSuffix(world, op));
@ -40,11 +41,11 @@ private UltraChat plugin;
prefix = plugin.chat.getPlayerPrefix(world, op);
suffix = plugin.chat.getPlayerSuffix(world, op);
}
formatOp = ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("Custom_Chat.Op_Chat.Format"));
defaults = ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("Custom_Chat.Default_Chat.Format"));
global = ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("Global.format"));
this.world = ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("World.format"));
local = ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("Local.format"));
formatOp = ChatColor.translateAlternateColorCodes('&', Objects.requireNonNull(plugin.getConfig().getString("Custom_Chat.Op_Chat")));
defaults = ChatColor.translateAlternateColorCodes('&', Objects.requireNonNull(plugin.getConfig().getString("Custom_Chat.Default_Chat")));
global = ChatColor.translateAlternateColorCodes('&', Objects.requireNonNull(plugin.getConfig().getString("Global.format")));
this.world = ChatColor.translateAlternateColorCodes('&', Objects.requireNonNull(plugin.getConfig().getString("World.format")));
local = ChatColor.translateAlternateColorCodes('&', Objects.requireNonNull(plugin.getConfig().getString("Local.format")));
this.op = op;
worldName = world;
}
@ -88,8 +89,8 @@ private UltraChat plugin;
return defaults;
}
public String getCustomFormat(int num) {
return plugin.getConfig().getString("Custom_Chat." + num + ".Format");
public String getCustomFormat(String name) {
return plugin.getConfig().getString("Custom_Chat.permission_format." + name);
}
public OfflinePlayer getOfflinePlayer() {
@ -105,13 +106,11 @@ private UltraChat plugin;
UltraChatAPI uapi = new UltraChatAPI();
if(uapi.getChatType() == ChatType.NORMAL) {
if(op.isOp()) return this.getOpFormat();
int i = 1;
while (i <= plugin.getConfig().getInt("Custom_Chat.Chat_Count")) {
if (plugin.perms.playerHas(worldName, op, plugin.getConfig().getString("Custom_Chat." + i + ".Permission"))) {
return this.getCustomFormat(i);
for (String permission : Objects.requireNonNull(plugin.getConfig().getConfigurationSection("Custom_Chat.permission_format")).getKeys(false)) {
if (plugin.perms.playerHas(worldName, op, plugin.getConfig().getString(permission))) {
return this.getCustomFormat(permission);
}
i++;
}
return this.getDefaultFormat();
}

View File

@ -7,5 +7,5 @@ import org.bukkit.entity.Player;
*
*/
public interface ColorGUI {
public void openGUI(Player p);
void openGUI(Player p);
}

View File

@ -1,5 +1,7 @@
package me.ryandw11.ultrachat.gui;
import me.ryandw11.ultrachat.UltraChat;
import me.ryandw11.ultrachat.api.Lang;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
@ -10,27 +12,25 @@ import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import me.ryandw11.ultrachat.UltraChat;
import me.ryandw11.ultrachat.api.Lang;
/**
* ColorGUI class.
* Updated for 1.13.
* Updated for 1.14-1.15
* @author Ryandw11
*
*/
public class ColorGUI_1_13_R2 implements CommandExecutor, Listener, ColorGUI{
public class ColorGUI_1_15_R1 implements CommandExecutor, Listener, ColorGUI{
private UltraChat plugin;
public ColorGUI_1_13_R2(){
public ColorGUI_1_15_R1(){
plugin = UltraChat.plugin;
}
public void openGUI(Player p){
Inventory i = Bukkit.createInventory(null, 9*2, Lang.COLOR_GUI.toString());
Inventory i = Bukkit.createInventory(null, InventoryType.CHEST, Lang.COLOR_GUI.toString());
ItemStack darkblueitem = new ItemStack(Material.BLUE_WOOL);
ItemMeta darkbluemeta = darkblueitem.getItemMeta();
@ -79,51 +79,60 @@ public class ColorGUI_1_13_R2 implements CommandExecutor, Listener, ColorGUI{
//==========================================================
darkbluemeta.setDisplayName("§1Dark Blue Color Chat");
darkbluemeta.setDisplayName("§1Dark Blue Color Chat");
darkblueitem.setItemMeta(darkbluemeta);
greenmeta.setDisplayName("§2Green Color Chat");
greenmeta.setDisplayName("§2Green Color Chat");
greenitem.setItemMeta(greenmeta);
lightbluemeta.setDisplayName("§3Cyan Color Chat");
lightbluemeta.setDisplayName("§3Cyan Color Chat");
lightblueitem.setItemMeta(lightbluemeta);
redmeta.setDisplayName("§4Red Color Chat");
redmeta.setDisplayName("§4Red Color Chat");
reditem.setItemMeta(redmeta);
purplemeta.setDisplayName("§5Purple Color Chat");
purplemeta.setDisplayName("§5Purple Color Chat");
purpleitem.setItemMeta(purplemeta);
goldmeta.setDisplayName("§6Gold Color Chat");
goldmeta.setDisplayName("§6Gold Color Chat");
golditem.setItemMeta(goldmeta);
lightgraymeta.setDisplayName("§7Light Gray Color Chat");
lightgraymeta.setDisplayName("§7Light Gray Color Chat");
lightgrayitem.setItemMeta(lightgraymeta);
graymeta.setDisplayName("§8Gray Color Chat");
graymeta.setDisplayName("§8Gray Color Chat");
grayitem.setItemMeta(graymeta);
bluemeta.setDisplayName("§9Blue Color Chat");
bluemeta.setDisplayName("§9Blue Color Chat");
blueitem.setItemMeta(bluemeta);
lightgreenmeta.setDisplayName("§aLight Green Color Chat");
lightgreenmeta.setDisplayName("§aLight Green Color Chat");
lightgreenitem.setItemMeta(lightgreenmeta);
aquameta.setDisplayName("§bAqua Color Chat");
aquameta.setDisplayName("§bAqua Color Chat");
aquaitem.setItemMeta(aquameta);
lightredmeta.setDisplayName("§cLight Red Color Chat");
lightredmeta.setDisplayName("§cLight Red Color Chat");
lightreditem.setItemMeta(lightredmeta);
pinkmeta.setDisplayName("§dMagenta Color Chat");
pinkmeta.setDisplayName("§dMagenta Color Chat");
pinkitem.setItemMeta(pinkmeta);
yellowmeta.setDisplayName("§eYellow Color Chat");
yellowmeta.setDisplayName("§eYellow Color Chat");
yellowitem.setItemMeta(yellowmeta);
whitemeta.setDisplayName("§fWhite Color Chat");
whitemeta.setDisplayName("§fWhite Color Chat");
whiteitem.setItemMeta(whitemeta);
//==========================================================
ItemStack holder = new ItemStack(Material.GRAY_STAINED_GLASS_PANE, 1);
ItemMeta holderM = holder.getItemMeta();
holderM.setDisplayName(" ");
holder.setItemMeta(holderM);
for(int o = 15; o < 27; o++) {
i.setItem(o, holder);
}
i.setItem(0, darkblueitem);
@ -171,18 +180,24 @@ public class ColorGUI_1_13_R2 implements CommandExecutor, Listener, ColorGUI{
@EventHandler
public void onInventoryClickEvent(InventoryClickEvent e){
if(!e.getInventory().getTitle().equalsIgnoreCase(Lang.COLOR_GUI.toString())) return;
try {
if(e.getView() == null || e.getView().getTitle() == null) return;
if(!e.getView().getTitle().equalsIgnoreCase(Lang.COLOR_GUI.toString())) return;
}catch(IllegalStateException ex) {
return;
}
Player p = (Player) e.getWhoClicked();
e.setCancelled(true);
if(e.getCurrentItem() == null || e.getCurrentItem().getType() == Material.AIR || !e.getCurrentItem().hasItemMeta()){
p.closeInventory();
return;
}
//================
ItemStack item = e.getCurrentItem();
if(!e.getInventory().contains(item)) return;
switch(item.getType()) {
case LAPIS_BLOCK:
if(p.hasPermission("ultrachat.color.blue")){
@ -341,6 +356,8 @@ public class ColorGUI_1_13_R2 implements CommandExecutor, Listener, ColorGUI{
p.sendMessage(ChatColor.RED + "You do not have permission for this color!");
}
break;
case GRAY_STAINED_GLASS_PANE:
break;
default:
p.sendMessage(ChatColor.WHITE + "You choose white color chat!");
p.closeInventory();

View File

@ -20,7 +20,7 @@ import me.ryandw11.ultrachat.api.Lang;
/**
* ColorGUI class.
* Updated for 1.14+
* Updated for 1.16+
* @author Ryandw11
*
*/
@ -80,49 +80,49 @@ public class ColorGUI_Latest implements CommandExecutor, Listener, ColorGUI{
//==========================================================
darkbluemeta.setDisplayName("§1Dark Blue Color Chat");
darkbluemeta.setDisplayName("<EFBFBD>1Dark Blue Color Chat");
darkblueitem.setItemMeta(darkbluemeta);
greenmeta.setDisplayName("§2Green Color Chat");
greenmeta.setDisplayName("<EFBFBD>2Green Color Chat");
greenitem.setItemMeta(greenmeta);
lightbluemeta.setDisplayName("§3Cyan Color Chat");
lightbluemeta.setDisplayName("<EFBFBD>3Cyan Color Chat");
lightblueitem.setItemMeta(lightbluemeta);
redmeta.setDisplayName("§4Red Color Chat");
redmeta.setDisplayName("<EFBFBD>4Red Color Chat");
reditem.setItemMeta(redmeta);
purplemeta.setDisplayName("§5Purple Color Chat");
purplemeta.setDisplayName("<EFBFBD>5Purple Color Chat");
purpleitem.setItemMeta(purplemeta);
goldmeta.setDisplayName("§6Gold Color Chat");
goldmeta.setDisplayName("<EFBFBD>6Gold Color Chat");
golditem.setItemMeta(goldmeta);
lightgraymeta.setDisplayName("§7Light Gray Color Chat");
lightgraymeta.setDisplayName("<EFBFBD>7Light Gray Color Chat");
lightgrayitem.setItemMeta(lightgraymeta);
graymeta.setDisplayName("§8Gray Color Chat");
graymeta.setDisplayName("<EFBFBD>8Gray Color Chat");
grayitem.setItemMeta(graymeta);
bluemeta.setDisplayName("§9Blue Color Chat");
bluemeta.setDisplayName("<EFBFBD>9Blue Color Chat");
blueitem.setItemMeta(bluemeta);
lightgreenmeta.setDisplayName("§aLight Green Color Chat");
lightgreenmeta.setDisplayName("<EFBFBD>aLight Green Color Chat");
lightgreenitem.setItemMeta(lightgreenmeta);
aquameta.setDisplayName("§bAqua Color Chat");
aquameta.setDisplayName("<EFBFBD>bAqua Color Chat");
aquaitem.setItemMeta(aquameta);
lightredmeta.setDisplayName("§cLight Red Color Chat");
lightredmeta.setDisplayName("<EFBFBD>cLight Red Color Chat");
lightreditem.setItemMeta(lightredmeta);
pinkmeta.setDisplayName("§dMagenta Color Chat");
pinkmeta.setDisplayName("<EFBFBD>dMagenta Color Chat");
pinkitem.setItemMeta(pinkmeta);
yellowmeta.setDisplayName("§eYellow Color Chat");
yellowmeta.setDisplayName("<EFBFBD>eYellow Color Chat");
yellowitem.setItemMeta(yellowmeta);
whitemeta.setDisplayName("§fWhite Color Chat");
whitemeta.setDisplayName("<EFBFBD>fWhite Color Chat");
whiteitem.setItemMeta(whitemeta);
//==========================================================

View File

@ -1,371 +0,0 @@
package me.ryandw11.ultrachat.gui;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.DyeColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.material.Wool;
import me.ryandw11.ultrachat.UltraChat;
import me.ryandw11.ultrachat.api.Lang;
/**
* ColorGUI class.
* Old and outdated. Only in for compatibility.
* (When compiling for 1.13+ only it is ok to leave this class out (Just remove references to it in the UltraChat main class))
* @author Ryandw11
*
*/
public class ColorGUI_Outdated implements CommandExecutor, Listener, ColorGUI{
private UltraChat plugin;
public ColorGUI_Outdated(){
plugin = UltraChat.plugin;
}
@SuppressWarnings("deprecation")
public void openGUI(Player p){
Inventory i = Bukkit.createInventory(null, 9*2, Lang.COLOR_GUI.toString());
Wool darkblue = new Wool(DyeColor.BLUE);
ItemStack darkblueitem = darkblue.toItemStack(1);
ItemMeta darkbluemeta = darkblueitem.getItemMeta();
Wool green = new Wool(DyeColor.GREEN);
ItemStack greenitem = green.toItemStack(1);
ItemMeta greenmeta = greenitem.getItemMeta();
Wool lightblue = new Wool(DyeColor.CYAN);
ItemStack lightblueitem = lightblue.toItemStack(1);
ItemMeta lightbluemeta = lightblueitem.getItemMeta();
Wool red = new Wool(DyeColor.RED);
ItemStack reditem = red.toItemStack(1);
ItemMeta redmeta = reditem.getItemMeta();
Wool purple = new Wool(DyeColor.PURPLE);
ItemStack purpleitem = purple.toItemStack(1);
ItemMeta purplemeta = purpleitem.getItemMeta();
Wool gold = new Wool(DyeColor.ORANGE);
ItemStack golditem = gold.toItemStack(1);
ItemMeta goldmeta = golditem.getItemMeta();
ItemStack lightgrayitem = new ItemStack(Material.CLAY);
ItemMeta lightgraymeta = lightgrayitem.getItemMeta();
Wool gray = new Wool(DyeColor.GRAY);
ItemStack grayitem = gray.toItemStack(1);
ItemMeta graymeta = grayitem.getItemMeta();
ItemStack blueitem = new ItemStack(Material.LAPIS_BLOCK);
ItemMeta bluemeta = blueitem.getItemMeta();
Wool lightgreen = new Wool(DyeColor.LIME);
ItemStack lightgreenitem = lightgreen.toItemStack(1);
ItemMeta lightgreenmeta = lightgreenitem.getItemMeta();
Wool aqua = new Wool(DyeColor.LIGHT_BLUE);
ItemStack aquaitem = aqua.toItemStack(1);
ItemMeta aquameta = aquaitem.getItemMeta();
Wool lightred = new Wool(DyeColor.PINK);
ItemStack lightreditem = lightred.toItemStack(1);
ItemMeta lightredmeta = lightreditem.getItemMeta();
Wool pink = new Wool(DyeColor.MAGENTA);
ItemStack pinkitem = pink.toItemStack(1);
ItemMeta pinkmeta = pinkitem.getItemMeta();
Wool yellow = new Wool(DyeColor.YELLOW);
ItemStack yellowitem = yellow.toItemStack(1);
ItemMeta yellowmeta = yellowitem.getItemMeta();
Wool white = new Wool(DyeColor.WHITE);
ItemStack whiteitem = white.toItemStack(1);
ItemMeta whitemeta = whiteitem.getItemMeta();
//==========================================================
darkbluemeta.setDisplayName("§1Dark Blue Color Chat");
darkblueitem.setItemMeta(darkbluemeta);
greenmeta.setDisplayName("§2Green Color Chat");
greenitem.setItemMeta(greenmeta);
lightbluemeta.setDisplayName("§3Cyan Color Chat");
lightblueitem.setItemMeta(lightbluemeta);
redmeta.setDisplayName("§4Red Color Chat");
reditem.setItemMeta(redmeta);
purplemeta.setDisplayName("§5Purple Color Chat");
purpleitem.setItemMeta(purplemeta);
goldmeta.setDisplayName("§6Gold Color Chat");
golditem.setItemMeta(goldmeta);
lightgraymeta.setDisplayName("§7Light Gray Color Chat");
lightgrayitem.setItemMeta(lightgraymeta);
graymeta.setDisplayName("§8Gray Color Chat");
grayitem.setItemMeta(graymeta);
bluemeta.setDisplayName("§9Blue Color Chat");
blueitem.setItemMeta(bluemeta);
lightgreenmeta.setDisplayName("§aLight Green Color Chat");
lightgreenitem.setItemMeta(lightgreenmeta);
aquameta.setDisplayName("§bAqua Color Chat");
aquaitem.setItemMeta(aquameta);
lightredmeta.setDisplayName("§cLight Red Color Chat");
lightreditem.setItemMeta(lightredmeta);
pinkmeta.setDisplayName("§dMagenta Color Chat");
pinkitem.setItemMeta(pinkmeta);
yellowmeta.setDisplayName("§eYellow Color Chat");
yellowitem.setItemMeta(yellowmeta);
whitemeta.setDisplayName("§fWhite Chat");
whiteitem.setItemMeta(whitemeta);
//==========================================================
i.setItem(0, darkblueitem);
i.setItem(1, greenitem);
i.setItem(2, lightblueitem);
i.setItem(3, reditem);
i.setItem(4, purpleitem);
i.setItem(5, golditem);
i.setItem(6, lightgrayitem);
i.setItem(7, grayitem);
i.setItem(8, blueitem);
i.setItem(9, lightgreenitem);
i.setItem(10, aquaitem);
i.setItem(11, lightreditem);
i.setItem(12, pinkitem);
i.setItem(13, yellowitem);
i.setItem(14, whiteitem);
p.openInventory(i);
}
/*
* Command
*/
@Override
public boolean onCommand(CommandSender sender, Command cmd, String s, String[] args) {
if(!(sender instanceof Player)){
plugin.getLogger().info("This command is for players only!");
return true;
}
Player p = (Player) sender;
if(p.hasPermission("ultrachat.color")){
openGUI(p.getPlayer());
}
else{
p.sendMessage(Lang.NO_PERM.toString());
}
return false;
}
/*
* Event
*/
@EventHandler
public void onInventoryClickEvent(InventoryClickEvent e){
if(!e.getInventory().getName().equalsIgnoreCase(Lang.COLOR_GUI.toString())) return;
Player p = (Player) e.getWhoClicked();
e.setCancelled(true);
if(e.getCurrentItem() == null || e.getCurrentItem().getType() == Material.AIR || !e.getCurrentItem().hasItemMeta()){
p.closeInventory();
return;
}
//================
ItemStack item = e.getCurrentItem();
@SuppressWarnings("deprecation")
int data = item.getDurability();
if(item.getType() == Material.LAPIS_BLOCK){
if(p.hasPermission("ultrachat.color.blue")){
p.sendMessage(ChatColor.BLUE + "You choose blue chat color!");
p.closeInventory();
plugin.data.set(p.getUniqueId() + ".color", "&9");
plugin.saveFile();
}
else{
p.sendMessage(ChatColor.RED + "You do not have permission for this color!");
}
}
else if(item.getType() == Material.CLAY){
if(p.hasPermission("ultrachat.color.lightgray")){
p.sendMessage(ChatColor.GRAY + "You choose light gray color chat!");
p.closeInventory();
plugin.data.set(p.getUniqueId() + ".color", "&7");
plugin.saveFile();
}else{
p.sendMessage(ChatColor.RED + "You do not have permission for this color!");
}
}
else{
switch(data) {
case 0:
p.sendMessage(ChatColor.WHITE + "You choose white chat color!");
p.closeInventory();
plugin.data.set(p.getUniqueId() + ".color", "&f");
plugin.saveFile();
break;
case 1:
if(p.hasPermission("ultrachat.color.gold")){
p.sendMessage(ChatColor.GOLD + "You choose gold color chat!");
p.closeInventory();
plugin.data.set(p.getUniqueId() + ".color", "&6");
plugin.saveFile();
}else{
p.sendMessage(ChatColor.RED + "You do not have permission for this color!");
}
break;
case 2:
if(p.hasPermission("ultrachat.color.magenta")){
p.sendMessage(ChatColor.LIGHT_PURPLE + "You choose magenta color chat!");
p.closeInventory();
plugin.data.set(p.getUniqueId() + ".color", "&d");
plugin.saveFile();
}
else{
p.sendMessage(ChatColor.RED + "You do not have permission for this color!");
}
break;
case 3:
if(p.hasPermission("ultrachat.color.aqua")){
p.sendMessage(ChatColor.AQUA + "You choose Aqua color chat!");
p.closeInventory();
plugin.data.set(p.getUniqueId() + ".color", "&b");
plugin.saveFile();
}
else{
p.sendMessage(ChatColor.RED + "You do not have permission for this color!");
}
break;
case 4:
if(p.hasPermission("ultrachat.color.yellow")){
p.sendMessage(ChatColor.YELLOW + "You choose yellow color chat!");
p.closeInventory();
plugin.data.set(p.getUniqueId() + ".color", "&e");
plugin.saveFile();
}else{
p.sendMessage(ChatColor.RED + "You do not have permission for this color!");
}
break;
case 5:
if(p.hasPermission("ultrachat.color.lightgreen")){
p.sendMessage(ChatColor.GREEN + "You choose light green color chat!");
p.closeInventory();
plugin.data.set(p.getUniqueId() + ".color", "&a");
plugin.saveFile();
}else{
p.sendMessage(ChatColor.RED + "You do not have permission for this color!");
}
break;
case 6:
if(p.hasPermission("ultrachat.color.lightred")){
p.sendMessage(ChatColor.RED + "You choose light red color chat!");
p.closeInventory();
plugin.data.set(p.getUniqueId() + ".color", "&c");
plugin.saveFile();
}else{
p.sendMessage(ChatColor.RED + "You do not have permission for this color!");
}
break;
case 7:
if(p.hasPermission("ultrachat.color.gray")){
p.sendMessage(ChatColor.DARK_GRAY + "You choose gray color chat!");
p.closeInventory();
plugin.data.set(p.getUniqueId() + ".color", "&8");
plugin.saveFile();
}else{
p.sendMessage(ChatColor.RED + "You do not have permission for this color!");
}
break;
case 9:
if(p.hasPermission("ultrachat.color.cyan")){
p.sendMessage(ChatColor.DARK_AQUA + "You choose cyan color chat!");
p.closeInventory();
plugin.data.set(p.getUniqueId() + ".color", "&3");
plugin.saveFile();
}else{
p.sendMessage(ChatColor.RED + "You do not have permission for this color!");
}
break;
case 10:
if(p.hasPermission("ultrachat.color.purple")){
p.sendMessage(ChatColor.DARK_PURPLE + "You choose purple color chat!");
p.closeInventory();
plugin.data.set(p.getUniqueId() + ".color", "&5");
plugin.saveFile();
}else{
p.sendMessage(ChatColor.RED + "You do not have permission for this color!");
}
break;
case 11:
if(p.hasPermission("ultrachat.color.darkblue")){
p.sendMessage(ChatColor.DARK_BLUE + "You choose dark blue color chat!");
p.closeInventory();
plugin.data.set(p.getUniqueId() + ".color", "&1");
plugin.saveFile();
}else{
p.sendMessage(ChatColor.RED + "You do not have permission for this color!");
}
break;
case 13:
if(p.hasPermission("ultrachat.color.green")){
p.sendMessage(ChatColor.DARK_GREEN + "You choose green color chat!");
p.closeInventory();
plugin.data.set(p.getUniqueId() + ".color", "&2");
plugin.saveFile();
}else{
p.sendMessage(ChatColor.RED + "You do not have permission for this color!");
}
break;
case 14:
if(p.hasPermission("ultrachat.color.red")){
p.sendMessage(ChatColor.DARK_RED + "You choose red color chat!");
p.closeInventory();
plugin.data.set(p.getUniqueId() + ".color", "&4");
plugin.saveFile();
}else{
p.sendMessage(ChatColor.RED + "You do not have permission for this color!");
}
break;
}
}
}
}

View File

@ -0,0 +1,43 @@
package me.ryandw11.ultrachat.util;
import me.ryandw11.ultrachat.UltraChat;
import me.ryandw11.ultrachat.formatting.PlayerFormatting;
import net.md_5.bungee.api.chat.ComponentBuilder;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.craftbukkit.libs.org.apache.commons.lang3.tuple.Pair;
import org.bukkit.entity.Player;
import java.util.List;
import java.util.Map;
import java.util.SortedMap;
/**
* This is a utility class to make chat easier.
*/
public class ChatUtil {
/**
* Translates the message into color codes.
* <p>This also translates hex color codes: {#FFFFFF}</p>
* @param message The message to translate
* @return The translated message.
*/
public static String translateColorCodes(String message){
return UltraChat.plugin.chatColorUtil.translateChatColor(message);
}
public static String translateColorCodes(Player p, String message){
return UltraChat.plugin.chatColorUtil.translateChatColor(p, message);
}
public static ComponentBuilder translateColorCodesChat(String message, PlayerFormatting pf){
Map<String, String> result = UltraChat.plugin.chatColorUtil.splitColors(message, pf);
ComponentBuilder builder = new ComponentBuilder();
for(Map.Entry<String, String> s : result.entrySet()){
TextComponent textComponent = new TextComponent(s.getKey());
textComponent.setColor(UltraChat.plugin.chatColorUtil.translateChatCode(s.getValue()));
builder.append(textComponent);
}
return builder;
}
}