See description

- No-parameter command nodes are now on-click-runnable
- Parameters are now sorted by: name *and then* required
This commit is contained in:
CocoTheOwner 2021-08-18 12:58:45 +02:00
parent 1d52bbde58
commit fc096dc6fa
2 changed files with 23 additions and 9 deletions

View File

@ -47,13 +47,25 @@ public class DecreeNode {
* @return The list of parameters if ALL are annotated by @{@link Param}, else null * @return The list of parameters if ALL are annotated by @{@link Param}, else null
*/ */
public KList<DecreeParameter> getParameters() { public KList<DecreeParameter> getParameters() {
KList<DecreeParameter> p = new KList<>(); KList<DecreeParameter> required = new KList<>();
KList<DecreeParameter> optional = new KList<>();
for (Parameter i : method.getParameters()) { 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() { public String getName() {

View File

@ -21,6 +21,7 @@ package com.volmit.iris.util.plugin;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings; import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.util.collection.KList; 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.decree.virtual.VirtualDecreeCommand;
import com.volmit.iris.util.format.C; import com.volmit.iris.util.format.C;
import com.volmit.iris.util.format.Form; import com.volmit.iris.util.format.Form;
@ -42,6 +43,7 @@ import org.bukkit.permissions.PermissionAttachmentInfo;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import java.time.Duration; import java.time.Duration;
import java.util.Comparator;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
@ -432,7 +434,7 @@ public class VolmitSender implements CommandSender {
? ((i.getNode().getParameters().isEmpty() ? ((i.getNode().getParameters().isEmpty()
? "<font:minecraft:uniform>There are no parameters.<reset>" ? "<font:minecraft:uniform>There are no parameters.<reset>"
: "<font:minecraft:uniform>Hover over all of the parameters to learn more.<reset>" + "\n")) : "<font:minecraft:uniform>Hover over all of the parameters to learn more.<reset>" + "\n"))
: "<font:minecraft:uniform>This is a command category. Run <reset><#98eda5>" + i.getPath()) : "<font:minecraft:uniform>This is a command category. Click to run <reset><#98eda5>" + i.getPath())
+ (i.isNode() + (i.isNode()
? (i.getNode().getParameters().isNotEmpty()) ? (i.getNode().getParameters().isNotEmpty())
? "<#aebef2>✦ <#5ef288><font:minecraft:uniform>" ? "<#aebef2>✦ <#5ef288><font:minecraft:uniform>"
@ -445,10 +447,10 @@ public class VolmitSender implements CommandSender {
: "" : ""
: "") : "")
+ (i.isNode() ? "<font:minecraft:uniform>" + pickRandoms(Math.min(i.getNode().getParameters().size() + 1, 5), i) + "<reset>" : "") + (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() + " >" + "'><click:" + (i.isNode() && i.getNode().getParameters().isNotEmpty() ? "suggest_command" : "run_command") + ":" + i.getPath() + " >"
+ "<#46826a>⇀<gradient:#42ecf5:#428df5> " + i.getName() + "</click></hover>" + "<#46826a>⇀<gradient:#42ecf5:#428df5> " + i.getName() + "</click></hover>"
+ (i.isNode() ? + (i.isNode() ?
" " + i.getNode().getParameters().convert((f) " " + i.getNode().getParameters().sort().convert((f)
-> "<hover:show_text:'" -> "<hover:show_text:'"
+ f.getNames().convert((ff) -> "<#d665f0>" + ff).toString(", ") + "\n" + f.getNames().convert((ff) -> "<#d665f0>" + ff).toString(", ") + "\n"
+ "<#3fe05a>✎ <#6ad97d><font:minecraft:uniform>" + f.getDescription() + "<reset>\n" + "<#3fe05a>✎ <#6ad97d><font:minecraft:uniform>" + f.getDescription() + "<reset>\n"
@ -460,9 +462,9 @@ public class VolmitSender implements CommandSender {
+ (f.isContextual() ? "<#ff9900>➱ <#ffcc00><font:minecraft:uniform>The value may be derived from environment context <reset>\n" : "") + (f.isContextual() ? "<#ff9900>➱ <#ffcc00><font:minecraft:uniform>The value may be derived from environment context <reset>\n" : "")
+ "<#cc00ff>✢ <#ff33cc><font:minecraft:uniform>This parameter is of type " + f.getType().getSimpleName() + "<#cc00ff>✢ <#ff33cc><font:minecraft:uniform>This parameter is of type " + f.getType().getSimpleName()
+ "'>" + "'>"
+ (f.isRequired() ? "<red>[" : "") + (f.isRequired() ? "<red>[" : "<#4f4f4f>⊰")
+ "<gradient:#d665f0:#a37feb>" + f.getName() + "<gradient:#d665f0:#a37feb>" + f.getName()
+ (f.isRequired() ? "<red>]<gray>" : "") + (f.isRequired() ? "<red>] " : "<#4f4f4f>⊱") + "<gray>"
+ "</hover>").toString("") + "</hover>").toString("")
: "<gradient:#afe3d3:#a2dae0> - Category of Commands" : "<gradient:#afe3d3:#a2dae0> - Category of Commands"
) )