Merge remote-tracking branch 'upstream/master' into DecreeCommands

This commit is contained in:
CocoTheOwner
2021-08-17 16:16:49 +02:00
125 changed files with 1843 additions and 1955 deletions

View File

@@ -30,12 +30,9 @@ import org.bukkit.command.Command;
import org.bukkit.command.*;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import org.bukkit.permissions.PermissionDefault;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.RegisteredListener;
import org.bukkit.plugin.java.JavaPlugin;
import java.io.File;
@@ -43,11 +40,9 @@ import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier;
import java.net.URLClassLoader;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.SortedSet;
@SuppressWarnings("EmptyMethod")
public abstract class VolmitPlugin extends JavaPlugin implements Listener {
@@ -55,9 +50,6 @@ public abstract class VolmitPlugin extends JavaPlugin implements Listener {
private KMap<KList<String>, VirtualCommand> commands;
private KList<MortarCommand> commandCache;
private KList<MortarPermission> permissionCache;
private KMap<String, IController> controllers;
private KList<IController> cachedControllers;
private KMap<Class<? extends IController>, IController> cachedClassControllers;
public File getJarFile() {
return getFile();
@@ -83,15 +75,12 @@ public abstract class VolmitPlugin extends JavaPlugin implements Listener {
registerInstance();
registerPermissions();
registerCommands();
registerControllers();
Bukkit.getScheduler().scheduleSyncRepeatingTask(this, this::tickControllers, 0, 0);
J.a(this::outputInfo);
registerListener(this);
start();
}
public void unregisterAll() {
stopControllers();
unregisterListeners();
unregisterCommands();
unregisterPermissions();
@@ -260,16 +249,6 @@ public abstract class VolmitPlugin extends JavaPlugin implements Listener {
unregisterAll();
}
private void tickControllers() {
if (bad) {
return;
}
for (IController i : getControllers()) {
tickController(i);
}
}
private void tickController(IController i) {
if (bad) {
return;
@@ -291,62 +270,6 @@ public abstract class VolmitPlugin extends JavaPlugin implements Listener {
}
}
public KList<IController> getControllers() {
if (bad) {
return new KList<>();
}
return cachedControllers;
}
private void registerControllers() {
if (bad) {
return;
}
controllers = new KMap<>();
cachedClassControllers = new KMap<>();
for (Field i : getClass().getDeclaredFields()) {
if (i.isAnnotationPresent(Control.class)) {
try {
i.setAccessible(true);
IController pc = (IController) i.getType().getConstructor().newInstance();
registerController(pc);
i.set(this, pc);
v("Registered " + pc.getName() + " (" + i.getName() + ")");
} catch (IllegalArgumentException | IllegalAccessException | InstantiationException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
w("Failed to register controller (field " + i.getName() + ")");
e.printStackTrace();
Iris.reportError(e);
}
}
}
cachedControllers = controllers.v();
}
public IController getController(Class<? extends IController> c) {
return cachedClassControllers.get(c);
}
private void registerController(IController pc) {
if (bad) {
return;
}
controllers.put(pc.getName(), pc);
cachedClassControllers.put(pc.getClass(), pc);
registerListener(pc);
try {
pc.start();
v("Started " + pc.getName());
} catch (Throwable e) {
w("Failed to start controller " + pc.getName());
e.printStackTrace();
Iris.reportError(e);
}
}
private void registerInstance() {
if (bad) {
return;
@@ -525,16 +448,12 @@ public abstract class VolmitPlugin extends JavaPlugin implements Listener {
}
public void registerListener(Listener l) {
if (bad) {
return;
}
Iris.debug("Register Listener " + l.getClass().getSimpleName());
Bukkit.getPluginManager().registerEvents(l, this);
}
public void unregisterListener(Listener l) {
if (bad) {
return;
}
Iris.debug("Register Listener " + l.getClass().getSimpleName());
HandlerList.unregisterAll(l);
}
@@ -569,23 +488,6 @@ public abstract class VolmitPlugin extends JavaPlugin implements Listener {
}
}
private void stopControllers() {
if (bad) {
return;
}
for (IController i : controllers.v()) {
try {
unregisterListener(i);
i.stop();
v("Stopped " + i.getName());
} catch (Throwable e) {
Iris.reportError(e);
w("Failed to stop controller " + i.getName());
e.printStackTrace();
}
}
}
public File getDataFile(String... strings) {
File f = new File(getDataFolder(), new KList<>(strings).toString(File.separator));
f.getParentFile().mkdirs();

View File

@@ -360,11 +360,9 @@ public class VolmitSender implements CommandSender {
return s.spigot();
}
private String pickRandoms(int max, VirtualDecreeCommand i)
{
private String pickRandoms(int max, VirtualDecreeCommand i) {
KList<String> m = new KList<>();
for(int ix = 0; ix < max; ix++)
{
for (int ix = 0; ix < max; ix++) {
m.add((i.isNode()
? (i.getNode().getParameters().isNotEmpty())
? "<#aebef2>✦ <#5ef288>"
@@ -385,8 +383,7 @@ public class VolmitSender implements CommandSender {
}
public void sendHeader(String name, int overrideLength)
{
public void sendHeader(String name, int overrideLength) {
int len = overrideLength;
int h = name.length() + 2;
String s = Form.repeat(" ", len - h - 4);
@@ -395,37 +392,28 @@ public class VolmitSender implements CommandSender {
String sf = "[";
String se = "]";
if(name.trim().isEmpty())
{
sendMessageRaw("<font:minecraft:uniform><strikethrough><gradient:#34eb6b:#32bfad>" + sf + s + "<reset><font:minecraft:uniform><strikethrough><gradient:#32bfad:#34eb6b>" + s + se);
}
else
{
if (name.trim().isEmpty()) {
sendMessageRaw("<font:minecraft:uniform><strikethrough><gradient:#34eb6b:#32bfad>" + sf + s + "<reset><font:minecraft:uniform><strikethrough><gradient:#32bfad:#34eb6b>" + s + se);
} else {
sendMessageRaw("<font:minecraft:uniform><strikethrough><gradient:#34eb6b:#32bfad>" + sf + s + si + "<reset> <gradient:#3299bf:#323bbf>" + name + "<reset> <font:minecraft:uniform><strikethrough><gradient:#32bfad:#34eb6b>" + so + s + se);
}
}
public void sendHeader(String name)
{
sendHeader(name,46);
public void sendHeader(String name) {
sendHeader(name, 46);
}
public void sendDecreeHelp(VirtualDecreeCommand v) {
int m = v.getNodes().size();
if(v.getNodes().isNotEmpty())
{
if (v.getNodes().isNotEmpty()) {
sendHeader(Form.capitalize(v.getName()) + " Help");
if(isPlayer() && v.getParent() != null)
{
sendMessageRaw("<hover:show_text:'"+"<#b54b38>Click to go back to <#3299bf>" + Form.capitalize(v.getParent().getName()) + " Help" +"'><click:run_command:" + v.getParent().getPath() + "><font:minecraft:uniform><#f58571>〈 Back</click></hover>");
if (isPlayer() && v.getParent() != null) {
sendMessageRaw("<hover:show_text:'" + "<#b54b38>Click to go back to <#3299bf>" + Form.capitalize(v.getParent().getName()) + " Help" + "'><click:run_command:" + v.getParent().getPath() + "><font:minecraft:uniform><#f58571>〈 Back</click></hover>");
}
for(VirtualDecreeCommand i : v.getNodes())
{
if(isPlayer())
{
for (VirtualDecreeCommand i : v.getNodes()) {
if (isPlayer()) {
//@builder
String s = (
"<hover:show_text:'"+
@@ -443,19 +431,19 @@ public class VolmitSender implements CommandSender {
+ " <#42ecf5>"
+ i.getName() + " "
+ i.getNode().getParameters().convert((f)
-> "<#d665f0>" + f.example())
.toString(" ") + "\n"
: ""
: "")
+ (i.isNode() ? "<font:minecraft:uniform>" + pickRandoms(Math.min(i.getNode().getParameters().size() + 1, 5), i) + "<reset>" : "")
+ "'><click:" + (i.isNode() ? "suggest_command" : "run_command") + ":" + i.getPath() + " >"
+ "<#46826a>⇀<gradient:#42ecf5:#428df5> " +i.getName() + "</click></hover>"
+ (i.isNode() ?
" " + i.getNode().getParameters().convert((f)
-> "<hover:show_text:'"
+ f.getNames().convert((ff) -> "<#d665f0>" + ff).toString(", ") + "\n"
-> "<#d665f0>" + f.example())
.toString(" ") + "\n"
: ""
: "")
+ (i.isNode() ? "<font:minecraft:uniform>" + pickRandoms(Math.min(i.getNode().getParameters().size() + 1, 5), i) + "<reset>" : "")
+ "'><click:" + (i.isNode() ? "suggest_command" : "run_command") + ":" + i.getPath() + " >"
+ "<#46826a>⇀<gradient:#42ecf5:#428df5> " + i.getName() + "</click></hover>"
+ (i.isNode() ?
" " + i.getNode().getParameters().convert((f)
-> "<hover:show_text:'"
+ f.getNames().convert((ff) -> "<#d665f0>" + ff).toString(", ") + "\n"
+ "<#3fe05a>✎ <#6ad97d><font:minecraft:uniform>" + f.getDescription() + "<reset>\n"
+ (f.isRequired()
+ (f.isRequired()
? "<#db4321>⚠ <#faa796><font:minecraft:uniform>This parameter is required."
: (f.hasDefault()
? "<#2181db>✔ <#78dcf0><font:minecraft:uniform>Defaults to \""+f.getParam().defaultValue()+"\" if undefined."
@@ -473,17 +461,11 @@ public class VolmitSender implements CommandSender {
//@done
sendMessageRaw(s);
System.out.println(s);
}
else
{
} else {
sendMessage(i.getPath() + "()");
}
}
}
else
{
} else {
sendMessage(C.RED + "There are no subcommands in this group! Contact support, this is a command design issue!");
}
}