simplify code for print
This commit is contained in:
1 parent
68560c7c5e
commit
bbde2bb173
1 file changed
+20
-33
@@ -468,43 +468,30 @@ public class Auxiliary {
|
|||||||
{
|
{
|
||||||
if (lv.size() == 0 || lv.size() > 2) throw new InternalExpressionException("'print' takes one or two arguments");
|
if (lv.size() == 0 || lv.size() > 2) throw new InternalExpressionException("'print' takes one or two arguments");
|
||||||
ServerCommandSource s = ((CarpetContext)c).s;
|
ServerCommandSource s = ((CarpetContext)c).s;
|
||||||
|
MinecraftServer server = s.getMinecraftServer();
|
||||||
Value res = lv.get(0).evalValue(c);
|
Value res = lv.get(0).evalValue(c);
|
||||||
Value playersVal = Value.NULL;
|
List<ServerPlayerEntity> targets = null;
|
||||||
if (lv.size() == 2){
|
if (lv.size() == 2)
|
||||||
playersVal = res;
|
{
|
||||||
|
List<Value> playerValues = (res instanceof ListValue)?((ListValue) res).getItems():Collections.singletonList(res);
|
||||||
|
List<ServerPlayerEntity> playerTargets = new ArrayList<>();
|
||||||
|
playerValues.forEach(pv -> {
|
||||||
|
ServerPlayerEntity player = EntityValue.getPlayerByValue(server, pv);
|
||||||
|
if (player == null) throw new InternalExpressionException("Cannot target player "+pv.getString()+" in print");
|
||||||
|
playerTargets.add(player);
|
||||||
|
});
|
||||||
|
targets = playerTargets;
|
||||||
res = lv.get(1).evalValue(c);
|
res = lv.get(1).evalValue(c);
|
||||||
}
|
}
|
||||||
|
Text message = (res instanceof FormattedTextValue)?((FormattedTextValue) res).getText():new LiteralText(res.getString());
|
||||||
if(playersVal instanceof ListValue){
|
if (targets == null)
|
||||||
|
{
|
||||||
List<Value> players = ((ListValue) playersVal).getItems();
|
s.sendFeedback(message, false);
|
||||||
for(Value playerVal:players){
|
}
|
||||||
ServerPlayerEntity player = EntityValue.getPlayerByValue(s.getMinecraftServer(), playerVal);
|
else
|
||||||
if (player == null) return LazyValue.NULL;
|
{
|
||||||
if(res instanceof FormattedTextValue)
|
targets.forEach(p -> p.getCommandSource().sendFeedback(message, false));
|
||||||
player.getCommandSource().sendFeedback(((FormattedTextValue) res).getText(), false);
|
|
||||||
else
|
|
||||||
Messenger.m(player, "w "+res.getString());
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if(playersVal instanceof EntityValue){
|
|
||||||
|
|
||||||
ServerPlayerEntity player = EntityValue.getPlayerByValue(s.getMinecraftServer(), playersVal);
|
|
||||||
if (player == null) return LazyValue.NULL;
|
|
||||||
if(res instanceof FormattedTextValue)
|
|
||||||
player.getCommandSource().sendFeedback(((FormattedTextValue) res).getText(), false);
|
|
||||||
else
|
|
||||||
Messenger.m(player, "w "+res.getString());
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
if (res instanceof FormattedTextValue)
|
|
||||||
s.sendFeedback(((FormattedTextValue) res).getText(), false);
|
|
||||||
else
|
|
||||||
Messenger.m(s, "w " + res.getString());
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Value finalRes = res;
|
Value finalRes = res;
|
||||||
return (_c, _t) -> finalRes; // pass through for variables
|
return (_c, _t) -> finalRes; // pass through for variables
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in new issue
Block a user