9
0
mirror of https://github.com/VolmitSoftware/Iris.git synced 2025-12-29 12:09:07 +00:00

Sorry for merge conflicts :)

This commit is contained in:
CocoTheOwner
2021-08-17 17:22:27 +02:00
parent d04c95514e
commit 7d859661ba
7 changed files with 245 additions and 189 deletions

View File

@@ -0,0 +1,67 @@
package com.volmit.iris.util.decree.handlers;
import com.volmit.iris.Iris;
import com.volmit.iris.core.project.loader.IrisData;
import com.volmit.iris.engine.object.objects.IrisObject;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.decree.DecreeParameterHandler;
import com.volmit.iris.util.decree.exceptions.DecreeParsingException;
import com.volmit.iris.util.decree.exceptions.DecreeWhichException;
import java.io.File;
public class ObjectHandler implements DecreeParameterHandler<IrisObject> {
@Override
public KList<IrisObject> getPossibilities() {
KMap<String, IrisObject> p = new KMap<>();
//noinspection ConstantConditions
for (File i : Iris.instance.getDataFolder("packs").listFiles()) {
if (i.isDirectory()) {
IrisData data = new IrisData(i, true);
for (IrisObject j : data.getObjectLoader().loadAll(data.getObjectLoader().getPossibleKeys())) {
p.putIfAbsent(j.getLoadKey(), j);
}
data.close();
}
}
return p.v();
}
@Override
public String toString(IrisObject irisObject) {
return irisObject.getLoadKey();
}
@Override
public IrisObject parse(String in) throws DecreeParsingException, DecreeWhichException {
try {
KList<IrisObject> options = getPossibilities(in);
if (options.isEmpty()) {
throw new DecreeParsingException("Unable to find Object \"" + in + "\"");
} else if (options.size() > 1) {
throw new DecreeWhichException();
}
return options.get(0);
} catch (DecreeParsingException e) {
throw e;
} catch (Throwable e) {
throw new DecreeParsingException("Unable to find Object \"" + in + "\" because of an uncaught exception: " + e);
}
}
@Override
public boolean supports(Class<?> type) {
return type.equals(IrisObject.class);
}
@Override
public String getRandomDefault() {
return "object";
}
}

View File

@@ -413,60 +413,64 @@ public class VolmitSender implements CommandSender {
}
for (VirtualDecreeCommand i : v.getNodes()) {
if (isPlayer()) {
//@builder
String s = (
"<hover:show_text:'"+
i.getNames().copy().reverse().convert((f) -> "<#42ecf5>" + f).toString(", ") + "\n"
+ "<#3fe05a>✎ <#6ad97d><font:minecraft:uniform>" + i.getDescription() + "<reset>\n"
+ "<#bbe03f>✒ <#a8e0a2>" + (i.isNode()
? ((i.getNode().getParameters().isEmpty()
? "<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>This is a command category. Run <reset><#98eda5>" + i.getPath())
+ (i.isNode()
? (i.getNode().getParameters().isNotEmpty())
? "<#aebef2>✦ <#5ef288><font:minecraft:uniform>"
+ i.getParentPath()
+ " <#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"
+ "<#3fe05a>✎ <#6ad97d><font:minecraft:uniform>" + f.getDescription() + "<reset>\n"
+ (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."
: "<#a73abd>✔ <#78dcf0><font:minecraft:uniform>This parameter is optional.")) + "<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()
+ "'>"
+ (f.isRequired() ? "<red>[" : "")
+ "<gradient:#d665f0:#a37feb>" + f.getName()
+ (f.isRequired() ? "<red>]<gray>" : "")
+ "</hover>").toString(" ")
: "<gradient:#afe3d3:#a2dae0> - Category of Commands"
)
);
//@done
sendMessageRaw(s);
System.out.println(s);
} else {
sendMessage(i.getPath() + "()");
}
sendDecreeHelpNode(i);
}
} else {
sendMessage(C.RED + "There are no subcommands in this group! Contact support, this is a command design issue!");
}
}
public void sendDecreeHelpNode(VirtualDecreeCommand i){
if (isPlayer()) {
//@builder
String s = (
"<hover:show_text:'"+
i.getNames().copy().reverse().convert((f) -> "<#42ecf5>" + f).toString(", ") + "\n"
+ "<#3fe05a>✎ <#6ad97d><font:minecraft:uniform>" + i.getDescription() + "<reset>\n"
+ "<#bbe03f>✒ <#a8e0a2>" + (i.isNode()
? ((i.getNode().getParameters().isEmpty()
? "<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>This is a command category. Run <reset><#98eda5>" + i.getPath())
+ (i.isNode()
? (i.getNode().getParameters().isNotEmpty())
? "<#aebef2>✦ <#5ef288><font:minecraft:uniform>"
+ i.getParentPath()
+ " <#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"
+ "<#3fe05a>✎ <#6ad97d><font:minecraft:uniform>" + f.getDescription() + "<reset>\n"
+ (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."
: "<#a73abd>✔ <#78dcf0><font:minecraft:uniform>This parameter is optional.")) + "<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()
+ "'>"
+ (f.isRequired() ? "<red>[" : "")
+ "<gradient:#d665f0:#a37feb>" + f.getName()
+ (f.isRequired() ? "<red>]<gray>" : "")
+ "</hover>").toString(" ")
: "<gradient:#afe3d3:#a2dae0> - Category of Commands"
)
);
//@done
sendMessageRaw(s);
System.out.println(s);
} else {
sendMessage(i.getPath() + "()");
}
}
}