diff --git a/src/main/java/com/volmit/iris/util/decree/DecreeNode.java b/src/main/java/com/volmit/iris/util/decree/DecreeNode.java index 884ec3aff..92d8ac0fc 100644 --- a/src/main/java/com/volmit/iris/util/decree/DecreeNode.java +++ b/src/main/java/com/volmit/iris/util/decree/DecreeNode.java @@ -47,13 +47,25 @@ public class DecreeNode { * @return The list of parameters if ALL are annotated by @{@link Param}, else null */ public KList getParameters() { - KList p = new KList<>(); + KList required = new KList<>(); + KList optional = new KList<>(); for (Parameter i : method.getParameters()) { - p.add(new DecreeParameter(i)); + DecreeParameter p = new DecreeParameter(i); + if (p.isRequired()){ + required.add(p); + } else { + optional.add(p); + } } - return p; + required.sort(); + + optional.sort(); + + required.addAll(optional); + + return required; } public String getName() { diff --git a/src/main/java/com/volmit/iris/util/plugin/VolmitSender.java b/src/main/java/com/volmit/iris/util/plugin/VolmitSender.java index b211bc62d..206b30f21 100644 --- a/src/main/java/com/volmit/iris/util/plugin/VolmitSender.java +++ b/src/main/java/com/volmit/iris/util/plugin/VolmitSender.java @@ -21,6 +21,7 @@ package com.volmit.iris.util.plugin; import com.volmit.iris.Iris; import com.volmit.iris.core.IrisSettings; import com.volmit.iris.util.collection.KList; +import com.volmit.iris.util.decree.DecreeParameter; import com.volmit.iris.util.decree.virtual.VirtualDecreeCommand; import com.volmit.iris.util.format.C; import com.volmit.iris.util.format.Form; @@ -42,6 +43,7 @@ import org.bukkit.permissions.PermissionAttachmentInfo; import org.bukkit.plugin.Plugin; import java.time.Duration; +import java.util.Comparator; import java.util.Set; import java.util.UUID; import java.util.concurrent.CompletableFuture; @@ -432,7 +434,7 @@ public class VolmitSender implements CommandSender { ? ((i.getNode().getParameters().isEmpty() ? "There are no parameters." : "Hover over all of the parameters to learn more." + "\n")) - : "This is a command category. Run <#98eda5>" + i.getPath()) + : "This is a command category. Click to run <#98eda5>" + i.getPath()) + (i.isNode() ? (i.getNode().getParameters().isNotEmpty()) ? "<#aebef2>✦ <#5ef288>" @@ -445,10 +447,10 @@ public class VolmitSender implements CommandSender { : "" : "") + (i.isNode() ? "" + pickRandoms(Math.min(i.getNode().getParameters().size() + 1, 5), i) + "" : "") - + "'>" + + "'>" + "<#46826a>⇀ " + i.getName() + "" + (i.isNode() ? - " " + i.getNode().getParameters().convert((f) + " " + i.getNode().getParameters().sort().convert((f) -> " "<#d665f0>" + ff).toString(", ") + "\n" + "<#3fe05a>✎ <#6ad97d>" + f.getDescription() + "\n" @@ -460,10 +462,10 @@ public class VolmitSender implements CommandSender { + (f.isContextual() ? "<#ff9900>➱ <#ffcc00>The value may be derived from environment context \n" : "") + "<#cc00ff>✢ <#ff33cc>This parameter is of type " + f.getType().getSimpleName() + "'>" - + (f.isRequired() ? "[" : "") + + (f.isRequired() ? "[" : "<#4f4f4f>⊰") + "" + f.getName() - + (f.isRequired() ? "]" : "") - + "").toString(" ") + + (f.isRequired() ? "] " : "<#4f4f4f>⊱") + "" + + "").toString("") : " - Category of Commands" ) );