mirror of
https://github.com/ryandw11/UltraChat.git
synced 2025-01-07 00:27:50 +01:00
Finished Components
- Finished Componenets.
This commit is contained in:
parent
ff5cd60166
commit
b6f67c6036
@ -45,6 +45,7 @@ Blocked_Words:
|
|||||||
# This is a system to create JSON pockets with in a message.
|
# This is a system to create JSON pockets with in a message.
|
||||||
# It uses a placerholder system to use.
|
# It uses a placerholder system to use.
|
||||||
#The name of the component:
|
#The name of the component:
|
||||||
|
JSON_Components:
|
||||||
example:
|
example:
|
||||||
#The base message of the component
|
#The base message of the component
|
||||||
Message: 'Example Message'
|
Message: 'Example Message'
|
||||||
|
@ -34,6 +34,9 @@ import me.ryandw11.ultrachat.listner.StopChat;
|
|||||||
import me.ryandw11.ultrachat.pluginhooks.AdvancedBanMute;
|
import me.ryandw11.ultrachat.pluginhooks.AdvancedBanMute;
|
||||||
import me.ryandw11.ultrachat.pluginhooks.EssentialsMute;
|
import me.ryandw11.ultrachat.pluginhooks.EssentialsMute;
|
||||||
import me.ryandw11.ultrachat.util.Metrics;
|
import me.ryandw11.ultrachat.util.Metrics;
|
||||||
|
import me.ryandw11.ultrachat.util.papi.PAPIDisabled;
|
||||||
|
import me.ryandw11.ultrachat.util.papi.PAPIEnabled;
|
||||||
|
import me.ryandw11.ultrachat.util.papi.PlaceHolderAPIHook;
|
||||||
import net.milkbowl.vault.chat.Chat;
|
import net.milkbowl.vault.chat.Chat;
|
||||||
import net.milkbowl.vault.permission.Permission;
|
import net.milkbowl.vault.permission.Permission;
|
||||||
|
|
||||||
@ -46,7 +49,7 @@ import org.bukkit.plugin.java.JavaPlugin;
|
|||||||
/**
|
/**
|
||||||
* Main Class
|
* Main Class
|
||||||
* @author Ryandw11
|
* @author Ryandw11
|
||||||
* @version 2.3.1
|
* @version 2.4
|
||||||
* Updated for 1.14.
|
* Updated for 1.14.
|
||||||
* (Very few API methods here)
|
* (Very few API methods here)
|
||||||
*/
|
*/
|
||||||
@ -64,6 +67,8 @@ public class UltraChat extends JavaPlugin{
|
|||||||
public ArrayList<UUID> stafftoggle = new ArrayList<>();
|
public ArrayList<UUID> stafftoggle = new ArrayList<>();
|
||||||
public ArrayList<UUID> spytoggle = new ArrayList<>();
|
public ArrayList<UUID> spytoggle = new ArrayList<>();
|
||||||
|
|
||||||
|
public PlaceHolderAPIHook papi;
|
||||||
|
|
||||||
public File datafile = new File(getDataFolder() + "/data/players.yml");
|
public File datafile = new File(getDataFolder() + "/data/players.yml");
|
||||||
public FileConfiguration data = YamlConfiguration.loadConfiguration(datafile);
|
public FileConfiguration data = YamlConfiguration.loadConfiguration(datafile);
|
||||||
public File channelfile;
|
public File channelfile;
|
||||||
@ -90,15 +95,13 @@ public class UltraChat extends JavaPlugin{
|
|||||||
Bukkit.getPluginManager().disablePlugin(this);
|
Bukkit.getPluginManager().disablePlugin(this);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (getServer().getPluginManager().getPlugin("PlaceholderAPI") == null) {
|
if (getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
|
||||||
getLogger().severe("§cWarning: You do not have PlaceholderAPI installed! This plugin is now disabled!");
|
|
||||||
Bukkit.getPluginManager().disablePlugin(this);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
getLogger().info(String.format("UltraChat is enabled and running fine! V: %s", getDescription().getVersion()));
|
|
||||||
getLogger().info("Hooked into PlaceholderAPI! You can use the place holders!");
|
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")){
|
if(getServer().getPluginManager().getPlugin("AdvancedBan") != null && getConfig().getBoolean("pluginhooks.AdvancedBan")){
|
||||||
getLogger().info("AdvancedBan detected! Activating hook!");
|
getLogger().info("AdvancedBan detected! Activating hook!");
|
||||||
getLogger().info("Mutes will now work with the chat types.");
|
getLogger().info("Mutes will now work with the chat types.");
|
||||||
|
@ -2,6 +2,9 @@ package me.ryandw11.ultrachat.api;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import me.ryandw11.ultrachat.UltraChat;
|
||||||
import net.md_5.bungee.api.ChatColor;
|
import net.md_5.bungee.api.ChatColor;
|
||||||
import net.md_5.bungee.api.chat.BaseComponent;
|
import net.md_5.bungee.api.chat.BaseComponent;
|
||||||
import net.md_5.bungee.api.chat.ClickEvent;
|
import net.md_5.bungee.api.chat.ClickEvent;
|
||||||
@ -18,19 +21,42 @@ import net.md_5.bungee.api.chat.HoverEvent;
|
|||||||
public class JSONChatBuilder {
|
public class JSONChatBuilder {
|
||||||
|
|
||||||
private ComponentBuilder displayMessage;
|
private ComponentBuilder displayMessage;
|
||||||
|
private Player p;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a JSON Message
|
||||||
|
* @param displayMessage The base string that you would hover or click on.
|
||||||
|
*/
|
||||||
public JSONChatBuilder(String displayMessage) {
|
public JSONChatBuilder(String displayMessage) {
|
||||||
this.displayMessage = new ComponentBuilder(displayMessage);
|
this.displayMessage = new ComponentBuilder(displayMessage);
|
||||||
|
p = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a hove message.
|
* Create a JSON Message
|
||||||
|
* @param displayMessage The base string that you would hover or click on.
|
||||||
|
* @param p The player to use when doing PlaceHolders.
|
||||||
|
*/
|
||||||
|
public JSONChatBuilder(String displayMessage, Player p) {
|
||||||
|
this.displayMessage = new ComponentBuilder(displayMessage);
|
||||||
|
this.p = p;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a hove message. (ChatColors are translated)
|
||||||
* @param lore Lore
|
* @param lore Lore
|
||||||
*/
|
*/
|
||||||
public JSONChatBuilder setHoverShowText(List<String> lore) {
|
public JSONChatBuilder setHoverShowText(List<String> lore) {
|
||||||
ComponentBuilder lores = new ComponentBuilder("");
|
ComponentBuilder lores = new ComponentBuilder("");
|
||||||
|
int i = 0;
|
||||||
for(String s : lore) {
|
for(String s : lore) {
|
||||||
|
if(p != null)
|
||||||
|
lores.append(UltraChat.plugin.papi.translatePlaceholders(ChatColor.translateAlternateColorCodes('&', s), p));
|
||||||
|
else
|
||||||
lores.append(ChatColor.translateAlternateColorCodes('&', s));
|
lores.append(ChatColor.translateAlternateColorCodes('&', s));
|
||||||
|
if(i < lore.size() - 1)
|
||||||
|
lores.append("\n");
|
||||||
|
i++;
|
||||||
}
|
}
|
||||||
this.displayMessage.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, lores.create()));
|
this.displayMessage.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, lores.create()));
|
||||||
return this;
|
return this;
|
||||||
|
@ -2,6 +2,8 @@ package me.ryandw11.ultrachat.api;
|
|||||||
|
|
||||||
import net.md_5.bungee.api.chat.BaseComponent;
|
import net.md_5.bungee.api.chat.BaseComponent;
|
||||||
import net.md_5.bungee.api.chat.ComponentBuilder;
|
import net.md_5.bungee.api.chat.ComponentBuilder;
|
||||||
|
import net.md_5.bungee.api.chat.ComponentBuilder.FormatRetention;
|
||||||
|
import net.md_5.bungee.api.chat.TextComponent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Easy Builder to build several JSON sections into a single message.
|
* Easy Builder to build several JSON sections into a single message.
|
||||||
@ -23,7 +25,7 @@ public class MessageBuilder {
|
|||||||
* @return The MessageBuilder to chain.
|
* @return The MessageBuilder to chain.
|
||||||
*/
|
*/
|
||||||
public MessageBuilder addJSON(JSONChatBuilder json) {
|
public MessageBuilder addJSON(JSONChatBuilder json) {
|
||||||
compon.append(json.build());
|
compon.append(json.build(), FormatRetention.FORMATTING);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -33,7 +35,8 @@ public class MessageBuilder {
|
|||||||
* @return the builder to chain
|
* @return the builder to chain
|
||||||
*/
|
*/
|
||||||
public MessageBuilder addString(String s) {
|
public MessageBuilder addString(String s) {
|
||||||
compon.append(s);
|
TextComponent tc = new TextComponent(s);
|
||||||
|
compon.append(tc, FormatRetention.FORMATTING);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,7 +46,7 @@ public class MessageBuilder {
|
|||||||
* @return The Buider to chain
|
* @return The Buider to chain
|
||||||
*/
|
*/
|
||||||
public MessageBuilder addBaseComponent(BaseComponent[] bc) {
|
public MessageBuilder addBaseComponent(BaseComponent[] bc) {
|
||||||
compon.append(bc);
|
compon.append(bc, FormatRetention.FORMATTING);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
182
src/me/ryandw11/ultrachat/api/managers/JComponentManager.java
Normal file
182
src/me/ryandw11/ultrachat/api/managers/JComponentManager.java
Normal file
@ -0,0 +1,182 @@
|
|||||||
|
package me.ryandw11.ultrachat.api.managers;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import me.ryandw11.ultrachat.UltraChat;
|
||||||
|
import me.ryandw11.ultrachat.api.JSONChatBuilder;
|
||||||
|
import me.ryandw11.ultrachat.api.MessageBuilder;
|
||||||
|
import net.md_5.bungee.api.chat.BaseComponent;
|
||||||
|
|
||||||
|
public class JComponentManager {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the final basecomponent from a message.
|
||||||
|
* @param message The string message
|
||||||
|
* @return The final basecomponent
|
||||||
|
*/
|
||||||
|
public static BaseComponent[] formatComponents(String message) {
|
||||||
|
/*
|
||||||
|
* Parse the message for JSON components
|
||||||
|
*/
|
||||||
|
List<String> msgs = new ArrayList<String>();
|
||||||
|
List<String> compName = new ArrayList<String>();
|
||||||
|
|
||||||
|
List<String> fin = new ArrayList<String>();
|
||||||
|
|
||||||
|
String temps = "";
|
||||||
|
for(int i = 0; i < message.length(); i++) {
|
||||||
|
char c = message.charAt(i);
|
||||||
|
if(c == '{') {
|
||||||
|
msgs.add(temps);
|
||||||
|
fin.add(temps);
|
||||||
|
temps = "";
|
||||||
|
}
|
||||||
|
else if(c == '}') {
|
||||||
|
compName.add(temps);
|
||||||
|
fin.add(temps);
|
||||||
|
temps = "";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
temps += c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
msgs.add(temps);
|
||||||
|
fin.add(temps);
|
||||||
|
/*
|
||||||
|
* Generate the final BaseComponent
|
||||||
|
*/
|
||||||
|
MessageBuilder mb = new MessageBuilder();
|
||||||
|
|
||||||
|
// Loops through the final array.
|
||||||
|
for(String s : fin) {
|
||||||
|
// If the message is a normal message.
|
||||||
|
if(msgs.contains(s)) {
|
||||||
|
mb.addString(s);
|
||||||
|
}
|
||||||
|
// If the message is a component
|
||||||
|
else if(compName.contains(s)) {
|
||||||
|
ConfigurationSection cs = null;
|
||||||
|
for(String st : UltraChat.plugin.getConfig().getConfigurationSection("JSON_Components").getKeys(false)) {
|
||||||
|
if(st.equals(s)) {
|
||||||
|
cs = UltraChat.plugin.getConfig().getConfigurationSection("JSON_Components." + st);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(cs == null) {
|
||||||
|
Bukkit.getLogger().warning("Error: Can not find JSON Component named: " + s);
|
||||||
|
}else {
|
||||||
|
JSONChatBuilder jsb = new JSONChatBuilder(cs.getString("Message"));
|
||||||
|
// If the component contains the click event.
|
||||||
|
if(cs.contains("Events.Click")) {
|
||||||
|
if(cs.contains("Events.Click.Open_URL"))
|
||||||
|
jsb.setClickOpenUrl(cs.getString("Events.Click.Open_URL"));
|
||||||
|
else if(cs.contains("Events.Click.Run_Command"))
|
||||||
|
jsb.setClickRunCommand(cs.getString("Events.Click.Run_Command"));
|
||||||
|
else if(cs.contains("Events.Click.Suggest_Command"))
|
||||||
|
jsb.setClickSuggestCommand(cs.getString("Events.Click.Suggest_Command"));
|
||||||
|
}
|
||||||
|
// If the component contains the hover event.
|
||||||
|
if(cs.contains("Events.Hover")) {
|
||||||
|
if(cs.contains("Events.Hover.Show_Text"))
|
||||||
|
jsb.setHoverShowText(cs.getStringList("Events.Hover.Show_Text"));
|
||||||
|
}
|
||||||
|
|
||||||
|
mb.addJSON(jsb);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build the message builder and return it
|
||||||
|
return mb.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the final basecomponent from a message.
|
||||||
|
* @param message The string message
|
||||||
|
* @param p The player to translate PAPI for.
|
||||||
|
* @return The final basecomponent
|
||||||
|
*/
|
||||||
|
public static BaseComponent[] formatComponents(String message, Player p) {
|
||||||
|
/*
|
||||||
|
* Parse the message for JSON components
|
||||||
|
*/
|
||||||
|
List<String> msgs = new ArrayList<String>();
|
||||||
|
List<String> compName = new ArrayList<String>();
|
||||||
|
|
||||||
|
List<String> fin = new ArrayList<String>();
|
||||||
|
|
||||||
|
String temps = "";
|
||||||
|
for(int i = 0; i < message.length(); i++) {
|
||||||
|
char c = message.charAt(i);
|
||||||
|
if(c == '{') {
|
||||||
|
msgs.add(temps);
|
||||||
|
fin.add(temps);
|
||||||
|
temps = "";
|
||||||
|
}
|
||||||
|
else if(c == '}') {
|
||||||
|
compName.add(temps);
|
||||||
|
fin.add(temps);
|
||||||
|
temps = "";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
temps += c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
msgs.add(temps);
|
||||||
|
fin.add(temps);
|
||||||
|
/*
|
||||||
|
* Generate the final BaseComponent
|
||||||
|
*/
|
||||||
|
MessageBuilder mb = new MessageBuilder();
|
||||||
|
|
||||||
|
// Loops through the final array.
|
||||||
|
for(String s : fin) {
|
||||||
|
// If the message is a normal message.
|
||||||
|
if(msgs.contains(s)) {
|
||||||
|
mb.addString(s);
|
||||||
|
}
|
||||||
|
// If the message is a component
|
||||||
|
else if(compName.contains(s)) {
|
||||||
|
ConfigurationSection cs = null;
|
||||||
|
for(String st : UltraChat.plugin.getConfig().getConfigurationSection("JSON_Components").getKeys(false)) {
|
||||||
|
if(st.equals(s)) {
|
||||||
|
cs = UltraChat.plugin.getConfig().getConfigurationSection("JSON_Components." + st);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(cs == null) {
|
||||||
|
Bukkit.getLogger().warning("Error: Can not find JSON Component named: " + s);
|
||||||
|
}else {
|
||||||
|
JSONChatBuilder jsb = new JSONChatBuilder(cs.getString("Message"), p);
|
||||||
|
// If the component contains the click event.
|
||||||
|
if(cs.contains("Events.Click")) {
|
||||||
|
if(cs.contains("Events.Click.Open_URL"))
|
||||||
|
jsb.setClickOpenUrl(cs.getString("Events.Click.Open_URL"));
|
||||||
|
else if(cs.contains("Events.Click.Run_Command"))
|
||||||
|
jsb.setClickRunCommand(cs.getString("Events.Click.Run_Command"));
|
||||||
|
else if(cs.contains("Events.Click.Suggest_Command"))
|
||||||
|
jsb.setClickSuggestCommand(cs.getString("Events.Click.Suggest_Command"));
|
||||||
|
}
|
||||||
|
// If the component contains the hover event.
|
||||||
|
if(cs.contains("Events.Hover")) {
|
||||||
|
if(cs.contains("Events.Hover.Show_Text"))
|
||||||
|
jsb.setHoverShowText(cs.getStringList("Events.Hover.Show_Text"));
|
||||||
|
}
|
||||||
|
|
||||||
|
mb.addJSON(jsb);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build the message builder and return it
|
||||||
|
return mb.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -2,9 +2,9 @@ package me.ryandw11.ultrachat.listner;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import me.clip.placeholderapi.PlaceholderAPI;
|
|
||||||
import me.ryandw11.ultrachat.UltraChat;
|
import me.ryandw11.ultrachat.UltraChat;
|
||||||
import me.ryandw11.ultrachat.api.Lang;
|
import me.ryandw11.ultrachat.api.Lang;
|
||||||
|
import me.ryandw11.ultrachat.api.managers.JComponentManager;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
@ -99,8 +99,8 @@ public class JoinListner implements Listener {
|
|||||||
List <String> motd = plugin.getConfig().getStringList("Motd");
|
List <String> motd = plugin.getConfig().getStringList("Motd");
|
||||||
for(String OutPut : motd){
|
for(String OutPut : motd){
|
||||||
String message = OutPut;
|
String message = OutPut;
|
||||||
message = PlaceholderAPI.setPlaceholders(p, message);
|
message = plugin.papi.translatePlaceholders(message, p);
|
||||||
p.sendMessage(ChatColor.translateAlternateColorCodes('&', message));
|
p.spigot().sendMessage(JComponentManager.formatComponents(ChatColor.translateAlternateColorCodes('&', message), p));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -115,7 +115,10 @@ public class JoinListner implements Listener {
|
|||||||
public void NewPlayer(PlayerJoinEvent event){
|
public void NewPlayer(PlayerJoinEvent event){
|
||||||
Player p = event.getPlayer();
|
Player p = event.getPlayer();
|
||||||
if(!(p.hasPlayedBefore()) && !(plugin.getConfig().getString("New_Player").equalsIgnoreCase("none"))){
|
if(!(p.hasPlayedBefore()) && !(plugin.getConfig().getString("New_Player").equalsIgnoreCase("none"))){
|
||||||
Bukkit.getServer().broadcastMessage(ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("New_Player").replace("%player%", p.getDisplayName())));
|
String msg = ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("New_Player").replace("%player%", p.getDisplayName()));
|
||||||
|
for(Player pl : Bukkit.getOnlinePlayers()) {
|
||||||
|
pl.spigot().sendMessage(JComponentManager.formatComponents(msg, p));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
12
src/me/ryandw11/ultrachat/util/papi/PAPIDisabled.java
Normal file
12
src/me/ryandw11/ultrachat/util/papi/PAPIDisabled.java
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
package me.ryandw11.ultrachat.util.papi;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class PAPIDisabled implements PlaceHolderAPIHook {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String translatePlaceholders(String s, Player p) {
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
15
src/me/ryandw11/ultrachat/util/papi/PAPIEnabled.java
Normal file
15
src/me/ryandw11/ultrachat/util/papi/PAPIEnabled.java
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package me.ryandw11.ultrachat.util.papi;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import me.clip.placeholderapi.PlaceholderAPI;
|
||||||
|
|
||||||
|
public class PAPIEnabled implements PlaceHolderAPIHook{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String translatePlaceholders(String s, Player p) {
|
||||||
|
return PlaceholderAPI.setPlaceholders(p, s);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package me.ryandw11.ultrachat.util.papi;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public interface PlaceHolderAPIHook {
|
||||||
|
public String translatePlaceholders(String s, Player p);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user