Simplify If and Jump
Dieser Commit ist enthalten in:
Ursprung
98dfe9ed11
Commit
6f8ae5ab6d
@ -25,4 +25,20 @@ public interface SpecialCommand {
|
|||||||
default String asString(String value) {
|
default String asString(String value) {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default void jumpToIndex(ScriptExecutor scriptExecutor, String jumpPoint) {
|
||||||
|
scriptExecutor.jumpPoints.computeIfPresent(jumpPoint, (s, integer) -> {
|
||||||
|
scriptExecutor.setIndex(integer);
|
||||||
|
return integer;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
default void jumpToIndexWithMessage(ScriptExecutor scriptExecutor, String jumpPoint, String message) {
|
||||||
|
Integer jp = scriptExecutor.jumpPoints.getOrDefault(jumpPoint, null);
|
||||||
|
if (jp == null) {
|
||||||
|
scriptExecutor.getPlayer().sendMessage(message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
scriptExecutor.setIndex(jp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,12 +42,13 @@ public class If implements SpecialCommand {
|
|||||||
|
|
||||||
if (command[2].equals("exists")) {
|
if (command[2].equals("exists")) {
|
||||||
if (scriptExecutor.isVariable(command[1])) {
|
if (scriptExecutor.isVariable(command[1])) {
|
||||||
setIndex(scriptExecutor, command[3]);
|
jumpToIndex(scriptExecutor, command[3]);
|
||||||
} else {
|
} else {
|
||||||
if (command.length > 4) {
|
if (command.length > 4) {
|
||||||
setIndex(scriptExecutor, command[4]);
|
jumpToIndex(scriptExecutor, command[4]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Value v1 = scriptExecutor.getOrItselfValue(command[1]);
|
Value v1 = scriptExecutor.getOrItselfValue(command[1]);
|
||||||
@ -55,20 +56,15 @@ public class If implements SpecialCommand {
|
|||||||
if (v1.getClass() != v2.getClass()) {
|
if (v1.getClass() != v2.getClass()) {
|
||||||
// This is intended
|
// This is intended
|
||||||
if (command.length > 4) {
|
if (command.length > 4) {
|
||||||
scriptExecutor.setIndex((int) asLong(command[4]));
|
jumpToIndex(scriptExecutor, command[4]);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (v1.asString().equals(v2.asString())) {
|
if (v1.asString().equals(v2.asString())) {
|
||||||
setIndex(scriptExecutor, command[3]);
|
jumpToIndex(scriptExecutor, command[3]);
|
||||||
} else if (command.length > 4) {
|
} else if (command.length > 4) {
|
||||||
setIndex(scriptExecutor, command[4]);
|
jumpToIndex(scriptExecutor, command[4]);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setIndex(ScriptExecutor scriptExecutor, String name) {
|
|
||||||
Integer jp = scriptExecutor.jumpPoints.getOrDefault(name, null);
|
|
||||||
if (jp != null) scriptExecutor.setIndex(jp);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -29,12 +29,7 @@ public class Jump implements SpecialCommand {
|
|||||||
scriptExecutor.getPlayer().sendMessage(BauSystem.PREFIX + "§cDas erste Argument fehlt");
|
scriptExecutor.getPlayer().sendMessage(BauSystem.PREFIX + "§cDas erste Argument fehlt");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
Integer jumpPoint = scriptExecutor.jumpPoints.getOrDefault(command[1], null);
|
jumpToIndexWithMessage(scriptExecutor, command[1], BauSystem.PREFIX + "§cDer Jump-Point (" + command[1] + ") ist nicht definiert.");
|
||||||
if (jumpPoint == null) {
|
|
||||||
scriptExecutor.getPlayer().sendMessage(BauSystem.PREFIX + "§cDer Jump-Point (" + command[1] + ") ist nicht definiert.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
scriptExecutor.setIndex(jumpPoint);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren