I created this core for a network, and they have nicely allowed me to make it public, so I put all my DabCore and ChatAPI into it to make it better. This plugin does nothing by itself and has to be activated by other plugins.
This is the core for all my plugins. This will help all my plugins function at their best.
Before updating/installing this plugin stop the server and then install/update it, so my other plugins will not break.
ChatAPI:
Example code with explinations:
This will be updated soon
Code (Text):
public class Example{
// Firstly i recommend creating a method to send the JSONFormatter
protected void send(JSONFormatter jf, Player player){
// This allows the packets to go through
PacketListener.getInstance().allow(player, jf.getSize());
// This sends the packets
jf.send(player);
}
// Another good method to have is one that stops chat packets from being
// sent to the player
protected void pause(Player player){
PacketListener.getInstance().getListener().pause(player);
}
// And also one that restores the players chat after they have finished with
// the gui
protected void play(Player player){
// This will resend the last 100 chat packets to player, if there is
// only 50 to send,
// then it will first send 50 blank packets
PacketListener.getInstance().getListener().play(player);
}
// Basic send method
public void send(Player player){
// Whether newlines are enabled or not
// Some minecraft version do not support new lines "\n"
// It is best to have a setting in the config file to enable/disable this
boolean newlines = false;
JSONFormatter jf = new JSONFormatter(newlines);
// Append a string
// Some nice header
jf.append("--------------");
// This adds a new line
jf.newLine();
jf.append(" ");
// Append a message with a click event
// A click event is what happens when the player clicks it in their chat
// There is RunCommandEvent or SuggestCommandEvent
jf.appendClick(ChatColor.GREEN + "< Back", new RunCommandEvent("<command>" + " back"));
jf.newLine();
jf.newLine();
jf.append(" " + ChatColor.RED + "Unsupported file");
// There is also a hover event
// There is ShowAchievementEvent, ShowItemEvent and ShowTextEvent
jf.appendHover("Example", new ShowTextEvent("Hover"));
// Resets just chat colors
jf.resetColors();
// Resets modifiers (italic, bold etc;)
jf.resetModifiers();
// Resets both, calling .newLine also resets all
jf.resetAll();
// Adds 15 blank lines
// The Chat GUI can only be 20 lines high and you want it to be flush as to look nice
jf.newLine(15);
jf.append("--------------");
// Calls the send method created earlier
send(jf, player);
// The JSONFormatter allows chaining which allows for very compact code
jf.append("--------------").newLine()
.append(" ").appendClick(ChatColor.GREEN + "< Back", new RunCommandEvent("<command>" + " back")).newLine().newLine()
.append(" " + ChatColor.RED + "Unsupported file")
.newLine(15)
.append("--------------");
}
}
This produces something like:
Example video: