Allowed abot's file to be edited in game.
This commit is contained in:
@@ -4,4 +4,54 @@ command abot {
|
|||||||
run abot_reload;
|
run abot_reload;
|
||||||
perm utils.abot.reload;
|
perm utils.abot.reload;
|
||||||
}
|
}
|
||||||
|
list [flag:-nh] {
|
||||||
|
help Lists all the answers. Use -nh to move info from hover to chat, recommended for Console;
|
||||||
|
run abot_list_nh -nh;
|
||||||
|
perm utils.abot.list;
|
||||||
|
}
|
||||||
|
list {
|
||||||
|
help Lists all the answers. Use -nh to move info from hover to chat, recommended for Console;
|
||||||
|
run abot_list -nh;
|
||||||
|
perm utils.abot.list;
|
||||||
|
}
|
||||||
|
get [string:name] {
|
||||||
|
help Gets the properties of an answer.;
|
||||||
|
run abot_get name;
|
||||||
|
perm utils.abot.get;
|
||||||
|
}
|
||||||
|
add [string:name] {
|
||||||
|
help Adds an answer to the bot.;
|
||||||
|
run abot_add name;
|
||||||
|
perm utils.abot.add;
|
||||||
|
}
|
||||||
|
remove [string:name] {
|
||||||
|
help Removes an answer to the bot.;
|
||||||
|
run abot_remove name;
|
||||||
|
perm utils.abot.remove;
|
||||||
|
}
|
||||||
|
edit [string:name] name [string:new] {
|
||||||
|
help Changes the name of an answer.;
|
||||||
|
run abot_edit_name name new;
|
||||||
|
perm utils.abot.edit.name;
|
||||||
|
}
|
||||||
|
edit [string:name] message [string:new...] {
|
||||||
|
help Changes the message of an answer.;
|
||||||
|
run abot_edit_message name new;
|
||||||
|
perm utils.abot.edit.name;
|
||||||
|
}
|
||||||
|
edit [string:name] permission [string:new] {
|
||||||
|
help Changes the permission of an answer.;
|
||||||
|
run abot_edit_permission name new;
|
||||||
|
perm utils.abot.edit.permission;
|
||||||
|
}
|
||||||
|
edit [string:name] regex add [string:regex...] {
|
||||||
|
help Adds a regex from an answer;
|
||||||
|
run abot_edit_regex_add name regex;
|
||||||
|
perm utils.abot.edit.regex;
|
||||||
|
}
|
||||||
|
edit [string:name] regex remove [string:regex...] {
|
||||||
|
help Removed a regex from an answer;
|
||||||
|
run abot_edit_regex_remove name regex;
|
||||||
|
perm utils.abot.edit.regex;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -19,13 +19,22 @@ import com.redstoner.misc.JsonManager;
|
|||||||
import com.redstoner.misc.Main;
|
import com.redstoner.misc.Main;
|
||||||
import com.redstoner.modules.Module;
|
import com.redstoner.modules.Module;
|
||||||
|
|
||||||
|
import net.nemez.chatapi.ChatAPI;
|
||||||
|
import net.nemez.chatapi.click.Message;
|
||||||
|
|
||||||
@Commands(CommandHolderType.File)
|
@Commands(CommandHolderType.File)
|
||||||
@AutoRegisterListener
|
@AutoRegisterListener
|
||||||
@Version(major = 5, minor = 0, revision = 0, compatible = 4)
|
@Version(major = 5, minor = 0, revision = 0, compatible = 4)
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
public class Abot implements Module, Listener {
|
public class Abot implements Module, Listener {
|
||||||
private File answerFile = new File(Main.plugin.getDataFolder(), "abot.json");
|
private File answerFile = new File(Main.plugin.getDataFolder(), "abot.json");
|
||||||
JSONArray answers;
|
JSONArray answers;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onEnable() {
|
||||||
|
return loadAnswers(Bukkit.getConsoleSender());
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerChat(AsyncPlayerChatEvent event) {
|
public void onPlayerChat(AsyncPlayerChatEvent event) {
|
||||||
for (Object rawObject : answers) {
|
for (Object rawObject : answers) {
|
||||||
@@ -47,16 +56,295 @@ public class Abot implements Module, Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Command(hook = "abot_reload")
|
@Command(hook = "abot_reload")
|
||||||
public void loadAnswers(CommandSender sender) {
|
public void loadAnswersCommand(CommandSender sender) {
|
||||||
answers = JsonManager.getArray(answerFile);
|
loadAnswers(sender);
|
||||||
if (answers == null) answers = new JSONArray();
|
|
||||||
|
|
||||||
getLogger().message(sender, "Loaded the abot.json file!");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Command(hook = "abot_list")
|
||||||
public boolean onEnable() {
|
public void listAnswers(CommandSender sender) {
|
||||||
loadAnswers(Bukkit.getConsoleSender());
|
listAnswers(sender, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Command(hook = "abot_list_nh")
|
||||||
|
public void listAnswers(CommandSender sender, boolean nohover) {
|
||||||
|
if (answers.isEmpty())
|
||||||
|
getLogger().message(sender, "There are no Abot answers to list.");
|
||||||
|
|
||||||
|
if (nohover) {
|
||||||
|
listAnswersNoHover(sender);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Message msg = ChatAPI.createMessage(sender).appendText(getLogger().getHeader());
|
||||||
|
msg.appendText("&6Abot Answers:\n");
|
||||||
|
|
||||||
|
for (int i = 0; i < answers.size(); i++) {
|
||||||
|
JSONObject entry = (JSONObject) answers.get(i);
|
||||||
|
JSONArray regexes = (JSONArray) entry.get("regex");
|
||||||
|
|
||||||
|
String name = (String) entry.get("name");
|
||||||
|
String message = (String) entry.get("message");
|
||||||
|
String hover = "&6Name: &e" + name + "\n&6Message:&f " + (message.isEmpty()? "&cNone" : message)
|
||||||
|
+ "\n&6Regexes:" + (regexes.isEmpty()? "&cNone" : "\n");
|
||||||
|
|
||||||
|
if (regexes.isEmpty())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
for (Object regex : regexes)
|
||||||
|
hover += "&6 - &e" + (String) regex;
|
||||||
|
|
||||||
|
if (i > 0)
|
||||||
|
msg.appendText("&7, ");
|
||||||
|
msg.appendTextHover("&e" + name, hover);
|
||||||
|
}
|
||||||
|
msg.send();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void listAnswersNoHover(CommandSender sender) {
|
||||||
|
Message msg = ChatAPI.createMessage(sender).appendText(getLogger().getHeader());
|
||||||
|
|
||||||
|
for (int i = 0; i < answers.size(); i++) {
|
||||||
|
JSONObject entry = (JSONObject) answers.get(i);
|
||||||
|
JSONArray regexes = (JSONArray) entry.get("regex");
|
||||||
|
|
||||||
|
msg.appendText("\n&6Name: &e" + (String) entry.get("name"));
|
||||||
|
|
||||||
|
String message = (String) entry.get("message");
|
||||||
|
msg.appendText("\n&f - &6Message:&f " + (message.isEmpty()? "&cNone" : message)
|
||||||
|
+ "\n&f - &6Regexes:" + (regexes.isEmpty()? "&cNone" : "\n"));
|
||||||
|
|
||||||
|
if (regexes.isEmpty())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
for (Object regex : regexes)
|
||||||
|
msg.appendText("&f - &e" + (String) regex);
|
||||||
|
}
|
||||||
|
msg.send();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Command(hook = "abot_get")
|
||||||
|
public void getAnswer(CommandSender sender, String name) {
|
||||||
|
JSONObject entry = getAnswer(name);
|
||||||
|
|
||||||
|
if (entry == null) {
|
||||||
|
getLogger().message(sender, "There are no answer with that name.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Message msg = ChatAPI.createMessage(sender).appendText(getLogger().getHeader());
|
||||||
|
|
||||||
|
JSONArray regexes = (JSONArray) entry.get("regex");
|
||||||
|
|
||||||
|
msg.appendText("\n&a" + (String) entry.get("name"));
|
||||||
|
|
||||||
|
String message = (String) entry.get("message");
|
||||||
|
msg.appendText("\n &6Message:&f " + (message.isEmpty()? "&cNone" : message)
|
||||||
|
+ "\n &6Regexes:" + (regexes.isEmpty()? "&cNone" : "\n"));
|
||||||
|
|
||||||
|
if (!regexes.isEmpty())
|
||||||
|
for (Object regex : regexes)
|
||||||
|
msg.appendText("&6 - &e" + (String) regex);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Command(hook = "abot_add")
|
||||||
|
public void addAnswer(CommandSender sender, String name) {
|
||||||
|
if (exists(name)) {
|
||||||
|
getLogger().message(sender, "That name is already in use.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONObject newEntry = new JSONObject();
|
||||||
|
newEntry.put("name", name);
|
||||||
|
newEntry.put("message", "");
|
||||||
|
newEntry.put("hide-perm", null);
|
||||||
|
newEntry.put("regex", new JSONArray());
|
||||||
|
|
||||||
|
answers.add(newEntry);
|
||||||
|
saveAnswers();
|
||||||
|
|
||||||
|
getLogger().message(sender, "&e" + name + "&7 has been created. Use &e/abot edit &a" + name +
|
||||||
|
"&e <name|message|permission|regex> &7to finish setting it up");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Command(hook = "abot_remove")
|
||||||
|
public void removeAnswer(CommandSender sender, String name) {
|
||||||
|
JSONObject entry = getAnswer(name);
|
||||||
|
|
||||||
|
if (entry == null) {
|
||||||
|
getLogger().message(sender, "There are no answer with the name &e" + name + "&7.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
answers.remove(entry);
|
||||||
|
saveAnswers();
|
||||||
|
|
||||||
|
getLogger().message(sender, "&e"+name+" &7has been removed.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Command(hook = "abot_edit_name")
|
||||||
|
public void editName(CommandSender sender, String name, String newName) {
|
||||||
|
JSONObject entry = getAnswer(name);
|
||||||
|
|
||||||
|
if (entry == null) {
|
||||||
|
getLogger().message(sender, "There are no answer with the name &e" + newName + "&7.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (exists(newName)) {
|
||||||
|
getLogger().message(sender, "&e" + newName + " &7is already in use.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String oldName = (String) entry.get("name");
|
||||||
|
|
||||||
|
answers.remove(entry);
|
||||||
|
entry.put("name", newName);
|
||||||
|
answers.add(entry);
|
||||||
|
saveAnswers();
|
||||||
|
|
||||||
|
getLogger().message(sender, "Name changed from &e" + oldName + "&7 to &e" + newName + "&7.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Command(hook = "abot_edit_permission")
|
||||||
|
public void editPermission(CommandSender sender, String name, String permission) {
|
||||||
|
JSONObject entry = getAnswer(name);
|
||||||
|
|
||||||
|
if (entry == null) {
|
||||||
|
getLogger().message(sender, "There are no answer with the name &e" + name + "&7.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String oldPerm = entry.get("hide-perm") == null? "&cNone" : (String) entry.get("hide-perm");
|
||||||
|
|
||||||
|
answers.remove(entry);
|
||||||
|
entry.put("hide-perm", permission.equals("null")? null : permission);
|
||||||
|
answers.add(entry);
|
||||||
|
saveAnswers();
|
||||||
|
|
||||||
|
getLogger().message(sender, "Hide Permission changed from &e" + oldPerm + "&7 to &e"
|
||||||
|
+ (permission.equals("null")? "&cNone" : permission) + "&7.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Command(hook = "abot_edit_message")
|
||||||
|
public void editMessage(CommandSender sender, String name, String message) {
|
||||||
|
JSONObject entry = getAnswer(name);
|
||||||
|
|
||||||
|
if (entry == null) {
|
||||||
|
getLogger().message(sender, "There are no answer with the name &e" + name + "&7.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String oldMessage = entry.get("message").equals("")? "&cEmpty String" : (String) entry.get("message");
|
||||||
|
|
||||||
|
answers.remove(entry);
|
||||||
|
entry.put("message", message);
|
||||||
|
answers.add(entry);
|
||||||
|
saveAnswers();
|
||||||
|
|
||||||
|
getLogger().message(sender, "Message changed from " + oldMessage + "&7 to &e"
|
||||||
|
+ (message.isEmpty()? "&cEmpty String" : message) + "&7.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Command(hook = "abot_edit_regex_add")
|
||||||
|
public void editRegexAdd(CommandSender sender, String name, String regex) {
|
||||||
|
JSONObject entry = getAnswer(name);
|
||||||
|
|
||||||
|
if (entry == null) {
|
||||||
|
getLogger().message(sender, "There are no answer with the name &e" + name + "&7.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
answers.remove(entry);
|
||||||
|
|
||||||
|
JSONArray regexes = (JSONArray) entry.get("regex");
|
||||||
|
regexes.add(regex);
|
||||||
|
entry.put("regex", regexes);
|
||||||
|
|
||||||
|
answers.add(entry);
|
||||||
|
saveAnswers();
|
||||||
|
|
||||||
|
getLogger().message(sender, "Added the Regex &e" + regex + "&7.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Command(hook = "abot_edit_regex_remove")
|
||||||
|
public void editRegexRemove(CommandSender sender, String name, String regex) {
|
||||||
|
JSONObject entry = getAnswer(name);
|
||||||
|
|
||||||
|
if (entry == null) {
|
||||||
|
getLogger().message(sender, "There are no answer with the name &e" + name + "&7.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
answers.remove(entry);
|
||||||
|
|
||||||
|
JSONArray regexes = (JSONArray) entry.get(regex);
|
||||||
|
|
||||||
|
if (!regexes.remove(regex))
|
||||||
|
getLogger().message(sender, "The regex,&e" + regex + "&7, is not associated with that answer.");
|
||||||
|
|
||||||
|
else {
|
||||||
|
entry.put("regex", regexes);
|
||||||
|
answers.add(entry);
|
||||||
|
saveAnswers();
|
||||||
|
|
||||||
|
getLogger().message(sender, "Removed the Regex &e" + regex + "&7.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public JSONObject getAnswer(String name) {
|
||||||
|
for (Object rawEntry : answers) {
|
||||||
|
JSONObject entry = (JSONObject) rawEntry;
|
||||||
|
if (((String)entry.get("name")).equals(name))
|
||||||
|
return entry;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean exists(String name) {
|
||||||
|
for (Object rawEntry : answers) {
|
||||||
|
JSONObject entry = (JSONObject) rawEntry;
|
||||||
|
if (((String)entry.get("name")).equals(name))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean loadAnswers(CommandSender sender) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
JSONObject json = JsonManager.getObject(answerFile);
|
||||||
|
|
||||||
|
if (json == null) {
|
||||||
|
answers = new JSONArray();
|
||||||
|
getLogger().message(sender, "Couldn't find Abot's Answers File, creating one.");
|
||||||
|
saveAnswers();
|
||||||
|
}
|
||||||
|
else if (!json.get("version").toString().equals("2")) {
|
||||||
|
getLogger().message(sender, true, "abot.json is not the correct version. Aborting!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
answers = (JSONArray) json.get("data");
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (ClassCastException e) {
|
||||||
|
answers = JsonManager.getArray(answerFile);
|
||||||
|
getLogger().message(sender, "Converting abot.json from version 1 to 2.");
|
||||||
|
saveAnswers();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
getLogger().message(sender, "Loaded the abot.json file!");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
public void saveAnswers() {
|
||||||
|
JSONObject json = new JSONObject();
|
||||||
|
json.put("version", 2);
|
||||||
|
json.put("data", answers);
|
||||||
|
|
||||||
|
JsonManager.save(json, answerFile);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user