fixes
This commit is contained in:
1 parent
e617008930
commit
b90db6954e
4 files changed
+21
-21
No files matched your search
@@ -56,6 +56,7 @@ public class CarpetEventServer
|
||||
{
|
||||
public final List<ScheduledCall> scheduledCalls = new LinkedList<>();
|
||||
public final MinecraftServer server;
|
||||
private static final List<Value> NOARGS = Collections.emptyList();
|
||||
|
||||
public static class Callback
|
||||
{
|
||||
@@ -63,23 +64,22 @@ public class CarpetEventServer
|
||||
public final FunctionValue function;
|
||||
public final List<Value> parametrizedArgs;
|
||||
|
||||
|
||||
public Callback(String host, FunctionValue function, List<Value> parametrizedArgs)
|
||||
{
|
||||
this.host = host;
|
||||
this.function = function;
|
||||
this.parametrizedArgs = parametrizedArgs;
|
||||
this.parametrizedArgs = parametrizedArgs==null?NOARGS:parametrizedArgs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used in entity events
|
||||
* Used also in entity events
|
||||
* @param asSource - entity command source
|
||||
* @param runtimeArgs = options
|
||||
*/
|
||||
public boolean execute(ServerCommandSource asSource, List<Value> runtimeArgs)
|
||||
{
|
||||
//!CarpetServer.scriptServer.runas(source, call.host, call.function, argv)
|
||||
//CarpetServer.scriptServer.runas(source, call.host, call.function, argv)
|
||||
if (this.parametrizedArgs == null || this.parametrizedArgs.isEmpty())
|
||||
if (this.parametrizedArgs.isEmpty())
|
||||
return CarpetServer.scriptServer.runas(
|
||||
asSource.withLevel(CarpetSettings.runPermissionLevel),
|
||||
host, function, runtimeArgs);
|
||||
@@ -181,7 +181,7 @@ public class CarpetEventServer
|
||||
}
|
||||
public boolean addEventCallInternal(ScriptHost host, FunctionValue function, List<Value> args)
|
||||
{
|
||||
if (function == null || (function.getArguments().size() - (args==null?0:args.size())) != reqArgs)
|
||||
if (function == null || (function.getArguments().size() - args.size()) != reqArgs)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -668,7 +668,7 @@ public class CarpetEventServer
|
||||
public void onEntityAction(Entity entity)
|
||||
{
|
||||
handler.call(
|
||||
() -> Collections.singletonList((new EntityValue(entity))),
|
||||
() -> Collections.singletonList(new EntityValue(entity)),
|
||||
() -> CarpetServer.minecraft_server.getCommandSource().withWorld((ServerWorld) entity.world).withLevel(CarpetSettings.runPermissionLevel)
|
||||
);
|
||||
}
|
||||
@@ -773,7 +773,7 @@ public class CarpetEventServer
|
||||
Event ev = Event.byName.get(event);
|
||||
if (!canAddEvent(ev, host))
|
||||
throw new InternalExpressionException("Global event "+event+" can only be added to apps with global scope");
|
||||
boolean success = ev.handler.addEventCallInternal(host, function, args);
|
||||
boolean success = ev.handler.addEventCallInternal(host, function, args==null?NOARGS:args);
|
||||
if (!success) throw new InternalExpressionException("Global event "+event+" requires "+ev.handler.reqArgs+", not "+(function.getNumParams()-((args==null)?0:args.size())));
|
||||
}
|
||||
|
||||
|
||||
@@ -264,13 +264,13 @@ public class FunctionValue extends Value implements Fluff.ILazyFunction
|
||||
|
||||
public void assertArgsOk(List<?> list, Consumer<Boolean> feedback)
|
||||
{
|
||||
int size = list==null?0:list.size();
|
||||
if (varArgs == null && args.size() != size) // wrong number of args for fixed args
|
||||
int size = list.size();
|
||||
if (varArgs == null && args.size() != size) // wrong number of args for fixed args
|
||||
{
|
||||
feedback.accept(true);
|
||||
|
||||
}
|
||||
else if (varArgs != null && args.size() > size) // too few args for varargs
|
||||
else if (varArgs != null && args.size() > size) // too few args for varargs
|
||||
{
|
||||
feedback.accept(false);
|
||||
}
|
||||
|
||||
@@ -20,7 +20,8 @@ public class NumericValue extends Value
|
||||
{
|
||||
private final Double value;
|
||||
private Long longValue;
|
||||
final static double epsilon = 32*((7*0.1)*10-7);
|
||||
private final static double epsilon = 32*((7*0.1)*10-7);
|
||||
private final static MathContext displayRounding = new MathContext(12, RoundingMode.HALF_EVEN);
|
||||
|
||||
public static NumericValue asNumber(Value v1, String id)
|
||||
{
|
||||
@@ -49,7 +50,7 @@ public class NumericValue extends Value
|
||||
if (value.isInfinite()) return "INFINITY";
|
||||
if (value.isNaN()) return "NaN";
|
||||
// dobules have 16 point precision, 12 is plenty to display
|
||||
return BigDecimal.valueOf(value).round(new MathContext(12, RoundingMode.HALF_EVEN)).stripTrailingZeros().toPlainString();
|
||||
return BigDecimal.valueOf(value).round(displayRounding).stripTrailingZeros().toPlainString();
|
||||
}
|
||||
catch (NumberFormatException exc)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user