diff --git a/src/main/java/carpet/helpers/HopperCounter.java b/src/main/java/carpet/helpers/HopperCounter.java index b6c6ef45..439b042c 100644 --- a/src/main/java/carpet/helpers/HopperCounter.java +++ b/src/main/java/carpet/helpers/HopperCounter.java @@ -281,7 +281,7 @@ public class HopperCounter { block = ((BlockItem) item).getBlock(); } - else if (Registry.BLOCK.containsId(id)) + else if (Registry.BLOCK.getOrEmpty(id).isPresent()) { block = Registry.BLOCK.get(id); } diff --git a/src/main/java/carpet/script/CarpetScriptHost.java b/src/main/java/carpet/script/CarpetScriptHost.java index b77e63c1..71202de6 100644 --- a/src/main/java/carpet/script/CarpetScriptHost.java +++ b/src/main/java/carpet/script/CarpetScriptHost.java @@ -56,7 +56,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.function.BiPredicate; import java.util.function.Consumer; -import java.util.function.Function; +import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -76,10 +76,10 @@ public class CarpetScriptHost extends ScriptHost public Map appConfig; public Map appArgTypes; - Function commandValidator; + Predicate commandValidator; boolean isRuleApp; - private CarpetScriptHost(CarpetScriptServer server, Module code, boolean perUser, ScriptHost parent, Map config, Map argTypes, Function commandValidator, boolean isRuleApp) + private CarpetScriptHost(CarpetScriptServer server, Module code, boolean perUser, ScriptHost parent, Map config, Map argTypes, Predicate commandValidator, boolean isRuleApp) { super(code, perUser, parent); this.saveTimeout = 0; @@ -100,7 +100,7 @@ public class CarpetScriptHost extends ScriptHost this.isRuleApp = isRuleApp; } - public static CarpetScriptHost create(CarpetScriptServer scriptServer, Module module, boolean perPlayer, ServerCommandSource source, Function commandValidator, boolean isRuleApp) + public static CarpetScriptHost create(CarpetScriptServer scriptServer, Module module, boolean perPlayer, ServerCommandSource source, Predicate commandValidator, boolean isRuleApp) { CarpetScriptHost host = new CarpetScriptHost(scriptServer, module, perPlayer, null, Collections.emptyMap(), new HashMap<>(), commandValidator, isRuleApp); // parse code and convert to expression @@ -180,13 +180,13 @@ public class CarpetScriptHost extends ScriptHost } public LiteralArgumentBuilder getNewCommandTree( - List,FunctionArgument>> entries, Function useValidator + List,FunctionArgument>> entries, Predicate useValidator ) throws CommandSyntaxException { String hostName = main.getName(); - Function configValidator = getCommandConfigPermissions(); + Predicate configValidator = getCommandConfigPermissions(); LiteralArgumentBuilder command = literal(hostName). - requires((player) -> CarpetServer.scriptServer.modules.containsKey(hostName) && useValidator.apply(player) && configValidator.apply(player)); + requires((player) -> CarpetServer.scriptServer.modules.containsKey(hostName) && useValidator.test(player) && configValidator.test(player)); for (Pair,FunctionArgument> commandData : entries) { command = this.addPathToCommand(command, commandData.getKey(), commandData.getValue()); @@ -194,7 +194,7 @@ public class CarpetScriptHost extends ScriptHost return command; } - public Function getCommandConfigPermissions() throws CommandSyntaxException + public Predicate getCommandConfigPermissions() throws CommandSyntaxException { Value confValue = appConfig.get(StringValue.of("command_permission")); if (confValue == null) return s -> true; @@ -475,7 +475,7 @@ public class CarpetScriptHost extends ScriptHost return null; } - Function configValidator; + Predicate configValidator; try { configValidator = getCommandConfigPermissions(); @@ -487,7 +487,7 @@ public class CarpetScriptHost extends ScriptHost } String hostName = getName(); LiteralArgumentBuilder command = literal(hostName). - requires((player) -> scriptServer.modules.containsKey(hostName) && commandValidator.apply(player) && configValidator.apply(player)). + requires((player) -> scriptServer.modules.containsKey(hostName) && commandValidator.test(player) && configValidator.test(player)). executes( (c) -> { CarpetScriptHost targetHost = scriptServer.modules.get(hostName).retrieveOwnForExecution(c.getSource()); @@ -540,7 +540,7 @@ public class CarpetScriptHost extends ScriptHost return true; } - public LiteralArgumentBuilder readCommands(Function useValidator) throws CommandSyntaxException + public LiteralArgumentBuilder readCommands(Predicate useValidator) throws CommandSyntaxException { Value commands = appConfig.get(StringValue.of("commands")); diff --git a/src/main/java/carpet/script/CarpetScriptServer.java b/src/main/java/carpet/script/CarpetScriptServer.java index d15c7144..92185750 100644 --- a/src/main/java/carpet/script/CarpetScriptServer.java +++ b/src/main/java/carpet/script/CarpetScriptServer.java @@ -37,7 +37,7 @@ import java.util.Locale; import java.util.Map; import java.util.Optional; import java.util.Set; -import java.util.function.Function; +import java.util.function.Predicate; import java.util.stream.Collectors; import static net.minecraft.server.command.CommandManager.argument; @@ -226,7 +226,7 @@ public class CarpetScriptServer return modules.get(name); } - public boolean addScriptHost(ServerCommandSource source, String name, Function commandValidator, + public boolean addScriptHost(ServerCommandSource source, String name, Predicate commandValidator, boolean perPlayer, boolean autoload, boolean isRuleApp) { CarpetProfiler.ProfilerToken currentSection = CarpetProfiler.start_section(null, "Scarpet load", CarpetProfiler.TYPE.GENERAL); @@ -457,7 +457,7 @@ public class CarpetScriptServer static class TransferData { boolean perUser; - Function commandValidator; + Predicate commandValidator; boolean isRuleApp; private TransferData(CarpetScriptHost host) { diff --git a/src/main/java/carpet/script/api/WorldAccess.java b/src/main/java/carpet/script/api/WorldAccess.java index 74de4a7b..7a04a6c1 100644 --- a/src/main/java/carpet/script/api/WorldAccess.java +++ b/src/main/java/carpet/script/api/WorldAccess.java @@ -114,6 +114,7 @@ import java.util.Locale; import java.util.Map; import java.util.Optional; import java.util.function.BiFunction; +import java.util.function.BiPredicate; import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -133,7 +134,7 @@ public class WorldAccess { Context c, String name, List params, - BiFunction test + BiPredicate test ) { CarpetContext cc = (CarpetContext) c; @@ -141,9 +142,9 @@ public class WorldAccess { throw new InternalExpressionException("'" + name + "' requires at least one parameter"); Value v0 = params.get(0); if (v0 instanceof BlockValue) - return BooleanValue.of(test.apply(((BlockValue) v0).getBlockState(), ((BlockValue) v0).getPos())); + return BooleanValue.of(test.test(((BlockValue) v0).getBlockState(), ((BlockValue) v0).getPos())); BlockValue block = BlockArgument.findIn(cc, params, 0).block; - return BooleanValue.of(test.apply(block.getBlockState(), block.getPos())); + return BooleanValue.of(test.test(block.getBlockState(), block.getPos())); } private static Value stateStringQuery( diff --git a/src/main/java/carpet/settings/ParsedRule.java b/src/main/java/carpet/settings/ParsedRule.java index 2c802fae..ceec2686 100644 --- a/src/main/java/carpet/settings/ParsedRule.java +++ b/src/main/java/carpet/settings/ParsedRule.java @@ -3,7 +3,6 @@ package carpet.settings; import carpet.utils.Translations; import carpet.utils.Messenger; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Sets; import net.minecraft.server.command.ServerCommandSource; import java.lang.reflect.Constructor; @@ -12,7 +11,8 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Locale; -import java.util.Set; + +import org.apache.commons.lang3.ClassUtils; import static carpet.utils.Translations.tr; @@ -39,7 +39,6 @@ public final class ParsedRule implements Comparable { public final T defaultValue; public final String defaultAsString; public final SettingsManager settingsManager; - private static final Set> NUMBER_CLASSES = Sets.newHashSet(byte.class, short.class, int.class, long.class, float.class, double.class); ParsedRule(Field field, Rule rule, SettingsManager settingsManager) { @@ -216,7 +215,7 @@ public final class ParsedRule implements Comparable { public boolean getBoolValue() { if (type == boolean.class) return (Boolean) get(); - if (NUMBER_CLASSES.contains(type)) return ((Number) get()).doubleValue() > 0; + if (ClassUtils.primitiveToWrapper(type).isAssignableFrom(Number.class)) return ((Number) get()).doubleValue() > 0; return false; }