This commit is contained in:
cyberpwn
2021-09-08 08:46:25 -04:00
parent 0c8c7157f6
commit d25633e213
233 changed files with 5791 additions and 5553 deletions

View File

@@ -40,64 +40,6 @@ import java.util.List;
public interface DecreeSystem extends CommandExecutor, TabCompleter {
KList<DecreeParameterHandler<?>> handlers = Iris.initialize("com.volmit.iris.util.decree.handlers", null).convert((i) -> (DecreeParameterHandler<?>) i);
/**
* The root class to start command searching from
*
* @return
*/
VirtualDecreeCommand getRoot();
default boolean call(VolmitSender sender, String[] args) {
DecreeContext.touch(sender);
return getRoot().invoke(sender, enhanceArgs(args));
}
@Nullable
@Override
default List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) {
KList<String> enhanced = new KList<>(args);
KList<String> v = getRoot().tabComplete(enhanced, enhanced.toString(" "));
v.removeDuplicates();
if (sender instanceof Player) {
if (IrisSettings.get().getGeneral().isCommandSounds()) {
((Player) sender).playSound(((Player) sender).getLocation(), Sound.BLOCK_AMETHYST_BLOCK_CHIME, 0.25f, RNG.r.f(0.125f, 1.95f));
}
}
return v;
}
@Override
default boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
if (!sender.hasPermission("iris.all")) {
sender.sendMessage("You lack the Permission 'iris.all'");
return true;
}
J.aBukkit(() -> {
if (!call(new VolmitSender(sender), args)) {
if (IrisSettings.get().getGeneral().isCommandSounds()) {
if (sender instanceof Player) {
((Player) sender).playSound(((Player) sender).getLocation(), Sound.BLOCK_AMETHYST_CLUSTER_BREAK, 0.77f, 0.25f);
((Player) sender).playSound(((Player) sender).getLocation(), Sound.BLOCK_BEACON_DEACTIVATE, 0.2f, 0.45f);
}
}
sender.sendMessage(C.RED + "Unknown Iris Command");
} else {
if (IrisSettings.get().getGeneral().isCommandSounds()) {
if (sender instanceof Player) {
((Player) sender).playSound(((Player) sender).getLocation(), Sound.BLOCK_AMETHYST_CLUSTER_BREAK, 0.77f, 1.65f);
((Player) sender).playSound(((Player) sender).getLocation(), Sound.BLOCK_RESPAWN_ANCHOR_CHARGE, 0.125f, 2.99f);
}
}
}
});
return true;
}
static KList<String> enhanceArgs(String[] args) {
return enhanceArgs(args, true);
}
@@ -183,4 +125,62 @@ public interface DecreeSystem extends CommandExecutor, TabCompleter {
Iris.error("Unhandled type in Decree Parameter: " + type.getName() + ". This is bad!");
return null;
}
/**
* The root class to start command searching from
*
* @return
*/
VirtualDecreeCommand getRoot();
default boolean call(VolmitSender sender, String[] args) {
DecreeContext.touch(sender);
return getRoot().invoke(sender, enhanceArgs(args));
}
@Nullable
@Override
default List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) {
KList<String> enhanced = new KList<>(args);
KList<String> v = getRoot().tabComplete(enhanced, enhanced.toString(" "));
v.removeDuplicates();
if (sender instanceof Player) {
if (IrisSettings.get().getGeneral().isCommandSounds()) {
((Player) sender).playSound(((Player) sender).getLocation(), Sound.BLOCK_AMETHYST_BLOCK_CHIME, 0.25f, RNG.r.f(0.125f, 1.95f));
}
}
return v;
}
@Override
default boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
if (!sender.hasPermission("iris.all")) {
sender.sendMessage("You lack the Permission 'iris.all'");
return true;
}
J.aBukkit(() -> {
if (!call(new VolmitSender(sender), args)) {
if (IrisSettings.get().getGeneral().isCommandSounds()) {
if (sender instanceof Player) {
((Player) sender).playSound(((Player) sender).getLocation(), Sound.BLOCK_AMETHYST_CLUSTER_BREAK, 0.77f, 0.25f);
((Player) sender).playSound(((Player) sender).getLocation(), Sound.BLOCK_BEACON_DEACTIVATE, 0.2f, 0.45f);
}
}
sender.sendMessage(C.RED + "Unknown Iris Command");
} else {
if (IrisSettings.get().getGeneral().isCommandSounds()) {
if (sender instanceof Player) {
((Player) sender).playSound(((Player) sender).getLocation(), Sound.BLOCK_AMETHYST_CLUSTER_BREAK, 0.77f, 1.65f);
((Player) sender).playSound(((Player) sender).getLocation(), Sound.BLOCK_RESPAWN_ANCHOR_CHARGE, 0.125f, 2.99f);
}
}
}
});
return true;
}
}

View File

@@ -24,7 +24,11 @@ import com.volmit.iris.core.service.CommandSVC;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.collection.KSet;
import com.volmit.iris.util.decree.*;
import com.volmit.iris.util.decree.DecreeContext;
import com.volmit.iris.util.decree.DecreeContextHandler;
import com.volmit.iris.util.decree.DecreeNode;
import com.volmit.iris.util.decree.DecreeParameter;
import com.volmit.iris.util.decree.DecreeParameterHandler;
import com.volmit.iris.util.decree.annotations.Decree;
import com.volmit.iris.util.decree.exceptions.DecreeParsingException;
import com.volmit.iris.util.decree.exceptions.DecreeWhichException;
@@ -53,6 +57,15 @@ public class VirtualDecreeCommand {
private final VirtualDecreeCommand parent;
private final KList<VirtualDecreeCommand> nodes;
private final DecreeNode node;
String[] gradients = new String[]{
"<gradient:#f5bc42:#45b32d>",
"<gradient:#1ed43f:#1ecbd4>",
"<gradient:#1e2ad4:#821ed4>",
"<gradient:#d41ea7:#611ed4>",
"<gradient:#1ed473:#1e55d4>",
"<gradient:#6ad41e:#9a1ed4>"
};
private ChronoLatch cl = new ChronoLatch(1000);
private VirtualDecreeCommand(Class<?> type, VirtualDecreeCommand parent, KList<VirtualDecreeCommand> nodes, DecreeNode node) {
this.parent = parent;
@@ -103,8 +116,6 @@ public class VirtualDecreeCommand {
return c;
}
private ChronoLatch cl = new ChronoLatch(1000);
public void cacheAll() {
VolmitSender sender = new VolmitSender(new CommandDummy());
@@ -504,15 +515,6 @@ public class VirtualDecreeCommand {
return true;
}
String[] gradients = new String[]{
"<gradient:#f5bc42:#45b32d>",
"<gradient:#1ed43f:#1ecbd4>",
"<gradient:#1e2ad4:#821ed4>",
"<gradient:#d41ea7:#611ed4>",
"<gradient:#1ed473:#1e55d4>",
"<gradient:#6ad41e:#9a1ed4>"
};
private String pickValidOption(VolmitSender sender, KList<?> validOptions, DecreeParameterHandler<?> handler, String name, String type) {
sender.sendHeader("Pick a " + name + " (" + type + ")");
sender.sendMessageRaw("<gradient:#1ed497:#b39427>This query will expire in 15 seconds.</gradient>");