From 69e9e9b0bb01d75654b808e2e3f8809b66e5d2fb Mon Sep 17 00:00:00 2001 From: altrisi Date: Sat, 15 May 2021 23:53:50 +0200 Subject: [PATCH 1/3] Remove the number_classes set in favour of ClassUtils (#860) --- src/main/java/carpet/settings/ParsedRule.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) 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; } From be0635de827f189b505c17807a1025b1314b1193 Mon Sep 17 00:00:00 2001 From: altrisi Date: Sat, 15 May 2021 23:54:16 +0200 Subject: [PATCH 2/3] Use primitive specific Predicates instead of Function (#859) --- .../java/carpet/script/CarpetScriptHost.java | 22 +++++++++---------- .../carpet/script/CarpetScriptServer.java | 6 ++--- .../java/carpet/script/api/WorldAccess.java | 7 +++--- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/main/java/carpet/script/CarpetScriptHost.java b/src/main/java/carpet/script/CarpetScriptHost.java index a4233666..98ec2ef2 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 fcab18ee..2b22e6df 100644 --- a/src/main/java/carpet/script/api/WorldAccess.java +++ b/src/main/java/carpet/script/api/WorldAccess.java @@ -113,6 +113,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; @@ -132,7 +133,7 @@ public class WorldAccess { Context c, String name, List params, - BiFunction test + BiPredicate test ) { CarpetContext cc = (CarpetContext) c; @@ -140,9 +141,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( From 7380580a3e290c3a1d883b96e0161af62b90ad24 Mon Sep 17 00:00:00 2001 From: gnembon Date: Mon, 17 May 2021 22:20:32 -0300 Subject: [PATCH 3/3] fixes #864 --- src/main/java/carpet/helpers/HopperCounter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/carpet/helpers/HopperCounter.java b/src/main/java/carpet/helpers/HopperCounter.java index a20108a3..0f6a02c3 100644 --- a/src/main/java/carpet/helpers/HopperCounter.java +++ b/src/main/java/carpet/helpers/HopperCounter.java @@ -279,7 +279,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); }