From 26a4721221d8a8a020218eb8d4041d35e522e447 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Tue, 30 Dec 2025 05:11:00 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../worldguard/WorldGuardRegionCondition.java | 6 +- .../bukkit/entity/seat/BukkitSeatManager.java | 1 + .../conflict/matcher/ContainsPathMatcher.java | 8 +-- .../conflict/matcher/ExactPathMatcher.java | 8 +-- .../conflict/matcher/FilenamePathMatcher.java | 8 +-- .../matcher/ParentPrefixPathMatcher.java | 8 +-- .../matcher/ParentSuffixPathMatcher.java | 8 +-- .../conflict/matcher/PathMatcherType.java | 8 ++- .../pack/conflict/matcher/PathMatchers.java | 36 ++++------- .../conflict/matcher/PatternPathMatcher.java | 10 ++-- .../plugin/context/CommonConditionType.java | 11 ++++ .../core/plugin/context/CommonConditions.java | 60 +++++++++---------- .../core/plugin/context/ConditionType.java | 17 +++++- .../context/condition/AllOfCondition.java | 6 +- .../condition/AlwaysFalseCondition.java | 10 ++-- .../condition/AlwaysTrueCondition.java | 10 ++-- .../context/condition/AnyOfCondition.java | 8 +-- .../context/condition/ConditionFactory.java | 4 +- .../context/condition/DistanceCondition.java | 8 +-- .../condition/EnchantmentCondition.java | 8 +-- .../condition/ExpressionCondition.java | 8 +-- .../condition/FallingBlockCondition.java | 8 +-- .../context/condition/HandCondition.java | 8 +-- .../context/condition/HasItemCondition.java | 8 +-- .../context/condition/HasPlayerCondition.java | 6 +- .../condition/InventoryHasItemCondition.java | 8 +-- .../context/condition/InvertedCondition.java | 8 +-- .../context/condition/IsNullCondition.java | 8 +-- .../condition/MatchBlockCondition.java | 8 +-- .../MatchBlockPropertyCondition.java | 6 +- .../condition/MatchEntityCondition.java | 8 +-- .../MatchFurnitureVariantCondition.java | 8 +-- .../context/condition/MatchItemCondition.java | 8 +-- .../condition/OnCooldownCondition.java | 8 +-- .../condition/PermissionCondition.java | 8 +-- .../context/condition/RandomCondition.java | 8 +-- .../condition/StringContainsCondition.java | 8 +-- .../condition/StringEqualsCondition.java | 8 +-- .../condition/StringRegexCondition.java | 8 +-- .../condition/SurvivesExplosionCondition.java | 8 +-- .../condition/TableBonusCondition.java | 8 +-- .../core/registry/BuiltInRegistries.java | 8 ++- .../craftengine/core/registry/Registries.java | 8 ++- 43 files changed, 225 insertions(+), 198 deletions(-) create mode 100644 core/src/main/java/net/momirealms/craftengine/core/plugin/context/CommonConditionType.java diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/worldguard/WorldGuardRegionCondition.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/worldguard/WorldGuardRegionCondition.java index 1726f1098..8a9b21f73 100644 --- a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/worldguard/WorldGuardRegionCondition.java +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/worldguard/WorldGuardRegionCondition.java @@ -33,7 +33,7 @@ public class WorldGuardRegionCondition implements Condition this.regions = regions; } - public static ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } @@ -84,10 +84,10 @@ public class WorldGuardRegionCondition implements Condition } } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @Override - public Condition create(Map arguments) { + public WorldGuardRegionCondition create(Map arguments) { int mode = ResourceConfigUtils.getAsInt(arguments.getOrDefault("mode", 1), "mode") - 1; MatchMode matchMode = MatchMode.values()[mode]; List regions = MiscUtils.getAsStringList(arguments.get("regions")); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/seat/BukkitSeatManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/seat/BukkitSeatManager.java index e704276ff..0730d4452 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/seat/BukkitSeatManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/seat/BukkitSeatManager.java @@ -119,6 +119,7 @@ public class BukkitSeatManager implements SeatManager, Listener { location.add(0,-0.35,0); } seat.remove(); + location.add(0, 0.2, 0); // 防止座椅较低卡进地下 EntityUtils.safeDismount(player, location); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ContainsPathMatcher.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ContainsPathMatcher.java index 0a963a6a1..21c92e8c6 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ContainsPathMatcher.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ContainsPathMatcher.java @@ -10,7 +10,7 @@ import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; public record ContainsPathMatcher(String path) implements Condition { - public static final ConditionFactory FACTORY = new Factory(); + public static final ConditionFactory FACTORY = new Factory(); @Override public boolean test(PathContext path) { @@ -18,11 +18,11 @@ public record ContainsPathMatcher(String path) implements Condition return pathStr.contains(this.path); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory { @Override - public Condition create(Map arguments) { + public ContainsPathMatcher create(Map arguments) { String path = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("path"), () -> new LocalizedException("warning.config.conflict_matcher.contains.missing_path")); return new ContainsPathMatcher(path); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ExactPathMatcher.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ExactPathMatcher.java index 16a6fa41e..aff7f7661 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ExactPathMatcher.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ExactPathMatcher.java @@ -10,7 +10,7 @@ import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; public record ExactPathMatcher(String path) implements Condition { - public static final ConditionFactory FACTORY = new Factory(); + public static final ConditionFactory FACTORY = new Factory(); @Override public boolean test(PathContext path) { @@ -18,11 +18,11 @@ public record ExactPathMatcher(String path) implements Condition { return pathStr.equals(this.path); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory { @Override - public Condition create(Map arguments) { + public ExactPathMatcher create(Map arguments) { String path = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("path"), () -> new LocalizedException("warning.config.conflict_matcher.exact.missing_path")); return new ExactPathMatcher(path); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/FilenamePathMatcher.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/FilenamePathMatcher.java index 370b4ab75..f4d2d5558 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/FilenamePathMatcher.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/FilenamePathMatcher.java @@ -9,7 +9,7 @@ import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; public record FilenamePathMatcher(String name) implements Condition { - public static final ConditionFactory FACTORY = new Factory(); + public static final ConditionFactory FACTORY = new Factory(); @Override public boolean test(PathContext path) { @@ -17,11 +17,11 @@ public record FilenamePathMatcher(String name) implements Condition return fileName.equals(name); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory { @Override - public Condition create(Map arguments) { + public FilenamePathMatcher create(Map arguments) { String name = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("name"), () -> new LocalizedException("warning.config.conflict_matcher.filename.missing_name")); return new FilenamePathMatcher(name); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ParentPrefixPathMatcher.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ParentPrefixPathMatcher.java index 596c44c71..212c696e7 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ParentPrefixPathMatcher.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ParentPrefixPathMatcher.java @@ -11,7 +11,7 @@ import java.nio.file.Path; import java.util.Map; public record ParentPrefixPathMatcher(String prefix) implements Condition { - public static final ConditionFactory FACTORY = new Factory(); + public static final ConditionFactory FACTORY = new Factory(); @Override public boolean test(PathContext path) { @@ -21,11 +21,11 @@ public record ParentPrefixPathMatcher(String prefix) implements Condition { + private static class Factory implements ConditionFactory { @Override - public Condition create(Map arguments) { + public ParentPrefixPathMatcher create(Map arguments) { String prefix = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("prefix"), () -> new LocalizedException("warning.config.conflict_matcher.parent_prefix.missing_prefix")); return new ParentPrefixPathMatcher(prefix); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ParentSuffixPathMatcher.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ParentSuffixPathMatcher.java index aeb580a00..88f9cb2df 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ParentSuffixPathMatcher.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ParentSuffixPathMatcher.java @@ -11,7 +11,7 @@ import java.nio.file.Path; import java.util.Map; public record ParentSuffixPathMatcher(String suffix) implements Condition { - public static final ConditionFactory FACTORY = new Factory(); + public static final ConditionFactory FACTORY = new Factory(); @Override public boolean test(PathContext path) { @@ -21,11 +21,11 @@ public record ParentSuffixPathMatcher(String suffix) implements Condition { + private static class Factory implements ConditionFactory { @Override - public Condition create(Map arguments) { + public ParentSuffixPathMatcher create(Map arguments) { String suffix = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("suffix"), () -> new LocalizedException("warning.config.conflict_matcher.parent_suffix.missing_suffix")); return new ParentSuffixPathMatcher(suffix); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherType.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherType.java index 9e86aed55..041dfd50e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherType.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherType.java @@ -1,8 +1,14 @@ package net.momirealms.craftengine.core.pack.conflict.matcher; import net.momirealms.craftengine.core.pack.conflict.PathContext; +import net.momirealms.craftengine.core.plugin.context.Condition; +import net.momirealms.craftengine.core.plugin.context.ConditionType; import net.momirealms.craftengine.core.plugin.context.condition.ConditionFactory; import net.momirealms.craftengine.core.util.Key; -public record PathMatcherType(Key id, ConditionFactory factory) { +public class PathMatcherType> extends ConditionType { + + public PathMatcherType(Key id, ConditionFactory factory) { + super(id, factory); + } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatchers.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatchers.java index aa1c3a8e9..106f3af3e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatchers.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatchers.java @@ -14,38 +14,28 @@ import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.util.ResourceKey; -import java.util.ArrayList; -import java.util.List; import java.util.Map; public final class PathMatchers { - public static final PathMatcherType ANY_OF = register(Key.ce("any_of"), AnyOfCondition.factory(PathMatchers::fromMap)); - public static final PathMatcherType ALL_OF = register(Key.ce("all_of"), AllOfCondition.factory(PathMatchers::fromMap)); - public static final PathMatcherType INVERTED = register(Key.ce("inverted"), InvertedCondition.factory(PathMatchers::fromMap)); - public static final PathMatcherType CONTAINS = register(Key.ce("contains"), ContainsPathMatcher.FACTORY); - public static final PathMatcherType EXACT = register(Key.ce("exact"), ExactPathMatcher.FACTORY); - public static final PathMatcherType FILENAME = register(Key.ce("filename"), FilenamePathMatcher.FACTORY); - public static final PathMatcherType PATTERN = register(Key.ce("pattern"), PatternPathMatcher.FACTORY); - public static final PathMatcherType PARENT_PATH_SUFFIX = register(Key.ce("parent_path_suffix"), ParentSuffixPathMatcher.FACTORY); - public static final PathMatcherType PARENT_PATH_PREFIX = register(Key.ce("parent_path_prefix"), ParentPrefixPathMatcher.FACTORY); + public static final PathMatcherType> ANY_OF = register(Key.ce("any_of"), AnyOfCondition.factory(PathMatchers::fromMap)); + public static final PathMatcherType> ALL_OF = register(Key.ce("all_of"), AllOfCondition.factory(PathMatchers::fromMap)); + public static final PathMatcherType> INVERTED = register(Key.ce("inverted"), InvertedCondition.factory(PathMatchers::fromMap)); + public static final PathMatcherType CONTAINS = register(Key.ce("contains"), ContainsPathMatcher.FACTORY); + public static final PathMatcherType EXACT = register(Key.ce("exact"), ExactPathMatcher.FACTORY); + public static final PathMatcherType FILENAME = register(Key.ce("filename"), FilenamePathMatcher.FACTORY); + public static final PathMatcherType PATTERN = register(Key.ce("pattern"), PatternPathMatcher.FACTORY); + public static final PathMatcherType PARENT_PATH_SUFFIX = register(Key.ce("parent_path_suffix"), ParentSuffixPathMatcher.FACTORY); + public static final PathMatcherType PARENT_PATH_PREFIX = register(Key.ce("parent_path_prefix"), ParentPrefixPathMatcher.FACTORY); private PathMatchers() {} - public static PathMatcherType register(Key key, ConditionFactory factory) { - PathMatcherType type = new PathMatcherType(key, factory); - ((WritableRegistry) BuiltInRegistries.PATH_MATCHER_TYPE) + public static > PathMatcherType register(Key key, ConditionFactory factory) { + PathMatcherType type = new PathMatcherType<>(key, factory); + ((WritableRegistry>) BuiltInRegistries.PATH_MATCHER_TYPE) .register(ResourceKey.create(Registries.PATH_MATCHER_TYPE.location(), key), type); return type; } - public static List> fromMapList(List> arguments) { - List> matchers = new ArrayList<>(); - for (Map term : arguments) { - matchers.add(PathMatchers.fromMap(term)); - } - return matchers; - } - public static Condition fromMap(Map map) { String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), () -> new LocalizedException("warning.config.conflict_matcher.missing_type")); boolean reverted = type.charAt(0) == '!'; @@ -53,7 +43,7 @@ public final class PathMatchers { type = type.substring(1); } Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE); - PathMatcherType matcherType = BuiltInRegistries.PATH_MATCHER_TYPE.getValue(key); + PathMatcherType> matcherType = BuiltInRegistries.PATH_MATCHER_TYPE.getValue(key); if (matcherType == null) { throw new LocalizedException("warning.config.conflict_matcher.invalid_type", type); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PatternPathMatcher.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PatternPathMatcher.java index 36f665deb..e64786a5c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PatternPathMatcher.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PatternPathMatcher.java @@ -11,7 +11,7 @@ import java.util.Map; import java.util.regex.Pattern; public final class PatternPathMatcher implements Condition { - public static final ConditionFactory FACTORY = new Factory(); + public static final ConditionFactory FACTORY = new Factory(); private final Pattern pattern; public PatternPathMatcher(String pattern) { @@ -23,7 +23,7 @@ public final class PatternPathMatcher implements Condition { } public Pattern pattern() { - return pattern; + return this.pattern; } @Override @@ -32,11 +32,11 @@ public final class PatternPathMatcher implements Condition { return this.pattern.matcher(pathStr).matches(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory { @Override - public Condition create(Map arguments) { + public PatternPathMatcher create(Map arguments) { String pattern = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("pattern"), () -> new LocalizedException("warning.config.conflict_matcher.pattern.missing_pattern")); return new PatternPathMatcher(pattern); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/CommonConditionType.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/CommonConditionType.java new file mode 100644 index 000000000..4865190f5 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/CommonConditionType.java @@ -0,0 +1,11 @@ +package net.momirealms.craftengine.core.plugin.context; + +import net.momirealms.craftengine.core.plugin.context.condition.ConditionFactory; +import net.momirealms.craftengine.core.util.Key; + +public class CommonConditionType> extends ConditionType { + + public CommonConditionType(Key id, ConditionFactory factory) { + super(id, factory); + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/CommonConditions.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/CommonConditions.java index 14526fd7c..c518c166f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/CommonConditions.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/CommonConditions.java @@ -12,38 +12,38 @@ import net.momirealms.craftengine.core.util.ResourceKey; import java.util.Map; public final class CommonConditions { - public static final ConditionType HAS_PLAYER = register(Key.ce("has_player"), HasPlayerCondition.factory()); - public static final ConditionType HAS_ITEM = register(Key.ce("has_item"), HasItemCondition.factory()); - public static final ConditionType MATCH_ITEM = register(Key.ce("match_item"), MatchItemCondition.factory()); - public static final ConditionType MATCH_ENTITY = register(Key.ce("match_entity"), MatchEntityCondition.factory()); - public static final ConditionType MATCH_BLOCK = register(Key.ce("match_block"), MatchBlockCondition.factory()); - public static final ConditionType MATCH_BLOCK_PROPERTY = register(Key.ce("match_block_property"), MatchBlockPropertyCondition.factory()); - public static final ConditionType TABLE_BONUS = register(Key.ce("table_bonus"), TableBonusCondition.factory()); - public static final ConditionType SURVIVES_EXPLOSION = register(Key.ce("survives_explosion"), SurvivesExplosionCondition.factory()); - public static final ConditionType ANY_OF = register(Key.ce("any_of"), AnyOfCondition.factory(CommonConditions::fromMap)); - public static final ConditionType ALL_OF = register(Key.ce("all_of"), AllOfCondition.factory(CommonConditions::fromMap)); - public static final ConditionType ENCHANTMENT = register(Key.ce("enchantment"), EnchantmentCondition.factory()); - public static final ConditionType INVERTED = register(Key.ce("inverted"), InvertedCondition.factory(CommonConditions::fromMap)); - public static final ConditionType FALLING_BLOCK = register(Key.ce("falling_block"), FallingBlockCondition.factory()); - public static final ConditionType RANDOM = register(Key.ce("random"), RandomCondition.factory()); - public static final ConditionType DISTANCE = register(Key.ce("distance"), DistanceCondition.factory()); - public static final ConditionType PERMISSION = register(Key.ce("permission"), PermissionCondition.factory()); - public static final ConditionType EQUALS = register(Key.ce("equals"), StringEqualsCondition.factory()); - public static final ConditionType REGEX = register(Key.ce("regex"), StringRegexCondition.factory()); - public static final ConditionType STRING_EQUALS = register(Key.ce("string_equals"), StringEqualsCondition.factory()); - public static final ConditionType STRING_CONTAINS = register(Key.ce("string_contains"), StringContainsCondition.factory()); - public static final ConditionType EXPRESSION = register(Key.ce("expression"), ExpressionCondition.factory()); - public static final ConditionType IS_NULL = register(Key.ce("is_null"), IsNullCondition.factory()); - public static final ConditionType HAND = register(Key.ce("hand"), HandCondition.factory()); - public static final ConditionType ON_COOLDOWN = register(Key.ce("on_cooldown"), OnCooldownCondition.factory()); - public static final ConditionType INVENTORY_HAS_ITEM = register(Key.ce("inventory_has_item"), InventoryHasItemCondition.factory()); - public static final ConditionType MATCH_FURNITURE_VARIANT = register(Key.ce("match_furniture_variant"), MatchFurnitureVariantCondition.factory()); + public static final CommonConditionType> HAS_PLAYER = register(Key.ce("has_player"), HasPlayerCondition.factory()); + public static final CommonConditionType> HAS_ITEM = register(Key.ce("has_item"), HasItemCondition.factory()); + public static final CommonConditionType> MATCH_ITEM = register(Key.ce("match_item"), MatchItemCondition.factory()); + public static final CommonConditionType> MATCH_ENTITY = register(Key.ce("match_entity"), MatchEntityCondition.factory()); + public static final CommonConditionType> MATCH_BLOCK = register(Key.ce("match_block"), MatchBlockCondition.factory()); + public static final CommonConditionType> MATCH_BLOCK_PROPERTY = register(Key.ce("match_block_property"), MatchBlockPropertyCondition.factory()); + public static final CommonConditionType> TABLE_BONUS = register(Key.ce("table_bonus"), TableBonusCondition.factory()); + public static final CommonConditionType> SURVIVES_EXPLOSION = register(Key.ce("survives_explosion"), SurvivesExplosionCondition.factory()); + public static final CommonConditionType> ANY_OF = register(Key.ce("any_of"), AnyOfCondition.factory(CommonConditions::fromMap)); + public static final CommonConditionType> ALL_OF = register(Key.ce("all_of"), AllOfCondition.factory(CommonConditions::fromMap)); + public static final CommonConditionType> ENCHANTMENT = register(Key.ce("enchantment"), EnchantmentCondition.factory()); + public static final CommonConditionType> INVERTED = register(Key.ce("inverted"), InvertedCondition.factory(CommonConditions::fromMap)); + public static final CommonConditionType> FALLING_BLOCK = register(Key.ce("falling_block"), FallingBlockCondition.factory()); + public static final CommonConditionType> RANDOM = register(Key.ce("random"), RandomCondition.factory()); + public static final CommonConditionType> DISTANCE = register(Key.ce("distance"), DistanceCondition.factory()); + public static final CommonConditionType> PERMISSION = register(Key.ce("permission"), PermissionCondition.factory()); + public static final CommonConditionType> EQUALS = register(Key.ce("equals"), StringEqualsCondition.factory()); + public static final CommonConditionType> REGEX = register(Key.ce("regex"), StringRegexCondition.factory()); + public static final CommonConditionType> STRING_EQUALS = register(Key.ce("string_equals"), StringEqualsCondition.factory()); + public static final CommonConditionType> STRING_CONTAINS = register(Key.ce("string_contains"), StringContainsCondition.factory()); + public static final CommonConditionType> EXPRESSION = register(Key.ce("expression"), ExpressionCondition.factory()); + public static final CommonConditionType> IS_NULL = register(Key.ce("is_null"), IsNullCondition.factory()); + public static final CommonConditionType> HAND = register(Key.ce("hand"), HandCondition.factory()); + public static final CommonConditionType> ON_COOLDOWN = register(Key.ce("on_cooldown"), OnCooldownCondition.factory()); + public static final CommonConditionType> INVENTORY_HAS_ITEM = register(Key.ce("inventory_has_item"), InventoryHasItemCondition.factory()); + public static final CommonConditionType> MATCH_FURNITURE_VARIANT = register(Key.ce("match_furniture_variant"), MatchFurnitureVariantCondition.factory()); private CommonConditions() {} - public static ConditionType register(Key key, ConditionFactory factory) { - ConditionType type = new ConditionType<>(key, factory); - ((WritableRegistry>) BuiltInRegistries.COMMON_CONDITION_TYPE) + public static > CommonConditionType register(Key key, ConditionFactory factory) { + CommonConditionType type = new CommonConditionType<>(key, factory); + ((WritableRegistry>) BuiltInRegistries.COMMON_CONDITION_TYPE) .register(ResourceKey.create(Registries.COMMON_CONDITION_TYPE.location(), key), type); return type; } @@ -56,7 +56,7 @@ public final class CommonConditions { type = type.substring(1); } Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE); - ConditionType conditionType = (ConditionType) BuiltInRegistries.COMMON_CONDITION_TYPE.getValue(key); + CommonConditionType> conditionType = BuiltInRegistries.COMMON_CONDITION_TYPE.getValue(key); if (conditionType == null) { throw new LocalizedResourceConfigException("warning.config.event.condition.invalid_type", type); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/ConditionType.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/ConditionType.java index 9dc2d8ebd..8a0d0abaf 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/ConditionType.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/ConditionType.java @@ -3,5 +3,20 @@ package net.momirealms.craftengine.core.plugin.context; import net.momirealms.craftengine.core.plugin.context.condition.ConditionFactory; import net.momirealms.craftengine.core.util.Key; -public record ConditionType(Key id, ConditionFactory factory) { +public abstract class ConditionType> { + protected final Key id; + protected final ConditionFactory factory; + + public ConditionType(Key id, ConditionFactory factory) { + this.id = id; + this.factory = factory; + } + + public Key id() { + return id; + } + + public ConditionFactory factory() { + return factory; + } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/AllOfCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/AllOfCondition.java index d37eeadcc..b3d338d69 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/AllOfCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/AllOfCondition.java @@ -24,15 +24,15 @@ public final class AllOfCondition implements Condition return this.condition.test(ctx); } - public static ConditionFactory factory(Function, Condition> factory) { + public static ConditionFactory> factory(Function, Condition> factory) { return new Factory<>(factory); } - private record Factory(Function, Condition> factory) implements ConditionFactory { + private record Factory(Function, Condition> factory) implements ConditionFactory> { @SuppressWarnings("unchecked") @Override - public Condition create(Map arguments) { + public AllOfCondition create(Map arguments) { Object termsArg = ResourceConfigUtils.requireNonNullOrThrow( ResourceConfigUtils.get(arguments, "terms", "term"), "warning.config.condition.all_of.missing_terms" diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/AlwaysFalseCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/AlwaysFalseCondition.java index d02a2c41e..9c775f4f3 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/AlwaysFalseCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/AlwaysFalseCondition.java @@ -8,16 +8,16 @@ import java.util.Map; public final class AlwaysFalseCondition implements Condition { public static final AlwaysFalseCondition INSTANCE = new AlwaysFalseCondition<>(); - public static ConditionFactory factory() { - return new FactoryImpl<>(); + public static ConditionFactory> factory() { + return new Factory<>(); } - private static class FactoryImpl implements ConditionFactory { + private static class Factory implements ConditionFactory> { @SuppressWarnings("unchecked") @Override - public Condition create(Map arguments) { - return (Condition) INSTANCE; + public AlwaysFalseCondition create(Map arguments) { + return (AlwaysFalseCondition) INSTANCE; } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/AlwaysTrueCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/AlwaysTrueCondition.java index 0f775059d..a54fd2e6c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/AlwaysTrueCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/AlwaysTrueCondition.java @@ -13,16 +13,16 @@ public final class AlwaysTrueCondition implements Condition return true; } - public static ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @SuppressWarnings("unchecked") @Override - public Condition create(Map arguments) { - return (Condition) INSTANCE; + public AlwaysTrueCondition create(Map arguments) { + return (AlwaysTrueCondition) INSTANCE; } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/AnyOfCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/AnyOfCondition.java index 8ba943630..a2206bc1e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/AnyOfCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/AnyOfCondition.java @@ -24,15 +24,15 @@ public final class AnyOfCondition implements Condition return this.condition.test(ctx); } - public static ConditionFactory factory(Function, Condition> factory) { + public static ConditionFactory> factory(Function, Condition> factory) { return new Factory<>(factory); } - private record Factory(Function, Condition> factory) implements ConditionFactory { + private record Factory(Function, Condition> factory) implements ConditionFactory> { @SuppressWarnings("unchecked") @Override - public Condition create(Map arguments) { + public AnyOfCondition create(Map arguments) { Object termsArg = ResourceConfigUtils.requireNonNullOrThrow( ResourceConfigUtils.get(arguments, "terms", "term"), "warning.config.condition.any_of.missing_terms" @@ -50,4 +50,4 @@ public final class AnyOfCondition implements Condition } } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/ConditionFactory.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/ConditionFactory.java index 06e595886..7b94438bf 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/ConditionFactory.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/ConditionFactory.java @@ -5,7 +5,7 @@ import net.momirealms.craftengine.core.plugin.context.Context; import java.util.Map; -public interface ConditionFactory { +public interface ConditionFactory> { - Condition create(Map args); + T create(Map args); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/DistanceCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/DistanceCondition.java index 61c2123cc..8dac7b7a4 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/DistanceCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/DistanceCondition.java @@ -50,17 +50,17 @@ public final class DistanceCondition implements Condition= minSquared && distanceSquared <= maxSquared; } - public static ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @Override - public Condition create(Map arguments) { + public DistanceCondition create(Map arguments) { NumberProvider min = NumberProviders.fromObject(arguments.getOrDefault("min", 0)); NumberProvider max = NumberProviders.fromObject(arguments.getOrDefault("max", 32)); return new DistanceCondition<>(min, max); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/EnchantmentCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/EnchantmentCondition.java index b6ec74153..8b2d43f1c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/EnchantmentCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/EnchantmentCondition.java @@ -31,14 +31,14 @@ public final class EnchantmentCondition implements Conditio return this.expression.apply(level); } - public static ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @Override - public Condition create(Map arguments) { + public EnchantmentCondition create(Map arguments) { String predicate = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("predicate"), "warning.config.condition.enchantment.missing_predicate"); String[] split = predicate.split("(<=|>=|<|>|==|=)", 2); int level; @@ -60,4 +60,4 @@ public final class EnchantmentCondition implements Conditio return new EnchantmentCondition<>(Key.of(split[0]), expression); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/ExpressionCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/ExpressionCondition.java index 04c8e592e..40cbce176 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/ExpressionCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/ExpressionCondition.java @@ -31,16 +31,16 @@ public final class ExpressionCondition implements Condition } } - public static ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @Override - public Condition create(Map arguments) { + public ExpressionCondition create(Map arguments) { String value = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("expression"), "warning.config.condition.expression.missing_expression"); return new ExpressionCondition<>(TextProviders.fromString(value)); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/FallingBlockCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/FallingBlockCondition.java index acebcf234..8403c10a3 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/FallingBlockCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/FallingBlockCondition.java @@ -13,15 +13,15 @@ public final class FallingBlockCondition implements Conditi return ctx.getOptionalParameter(DirectContextParameters.FALLING_BLOCK).orElse(false); } - public static ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @Override - public Condition create(Map arguments) { + public FallingBlockCondition create(Map arguments) { return new FallingBlockCondition<>(); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/HandCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/HandCondition.java index 1f53f5ee3..407a7285b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/HandCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/HandCondition.java @@ -29,14 +29,14 @@ public final class HandCondition implements Condition return false; } - public static ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @Override - public Condition create(Map arguments) { + public HandCondition create(Map arguments) { String hand = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("hand"), "warning.config.condition.hand.missing_hand"); try { return new HandCondition<>(InteractionHand.valueOf(hand.toUpperCase(Locale.ENGLISH))); @@ -45,4 +45,4 @@ public final class HandCondition implements Condition } } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/HasItemCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/HasItemCondition.java index 766ae7505..993e1eb58 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/HasItemCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/HasItemCondition.java @@ -22,15 +22,15 @@ public final class HasItemCondition implements Condition ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @Override - public Condition create(Map arguments) { + public HasItemCondition create(Map arguments) { return new HasItemCondition<>(); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/HasPlayerCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/HasPlayerCondition.java index 672073880..49ee9ea88 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/HasPlayerCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/HasPlayerCondition.java @@ -19,14 +19,14 @@ public final class HasPlayerCondition implements Condition< return false; } - public static ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @Override - public Condition create(Map arguments) { + public HasPlayerCondition create(Map arguments) { return new HasPlayerCondition<>(); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/InventoryHasItemCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/InventoryHasItemCondition.java index 7074ecc43..58f830368 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/InventoryHasItemCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/InventoryHasItemCondition.java @@ -31,17 +31,17 @@ public final class InventoryHasItemCondition implements Con return player.clearOrCountMatchingInventoryItems(this.itemId, 0) >= this.count.getInt(ctx); } - public static ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @Override - public Condition create(Map arguments) { + public InventoryHasItemCondition create(Map arguments) { Key itemId = Key.of(ResourceConfigUtils.requireNonEmptyStringOrThrow(ResourceConfigUtils.get(arguments, "id", "item"), "warning.config.condition.inventory_has_item.missing_id")); NumberProvider count = NumberProviders.fromObject(arguments.getOrDefault("count", 1)); return new InventoryHasItemCondition<>(itemId, count); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/InvertedCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/InvertedCondition.java index e1a891623..9cd5bdfde 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/InvertedCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/InvertedCondition.java @@ -23,15 +23,15 @@ public final class InvertedCondition implements Condition ConditionFactory factory(Function, Condition> factory) { + public static ConditionFactory> factory(Function, Condition> factory) { return new Factory<>(factory); } - private record Factory(Function, Condition> factory) implements ConditionFactory { + private record Factory(Function, Condition> factory) implements ConditionFactory> { @SuppressWarnings("unchecked") @Override - public Condition create(Map arguments) { + public InvertedCondition create(Map arguments) { Object termObj = ResourceConfigUtils.requireNonNullOrThrow( ResourceConfigUtils.get(arguments, "term", "terms"), "warning.config.condition.inverted.missing_term" @@ -49,4 +49,4 @@ public final class InvertedCondition implements Condition implements Condition ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @Override - public Condition create(Map arguments) { + public IsNullCondition create(Map arguments) { String argument = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("argument"), "warning.config.condition.is_null.missing_argument"); return new IsNullCondition<>(ContextKey.chain(argument)); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchBlockCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchBlockCondition.java index 89fd7b135..be6c60eee 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchBlockCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchBlockCondition.java @@ -40,14 +40,14 @@ public final class MatchBlockCondition implements Condition return false; } - public static ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @Override - public Condition create(Map arguments) { + public MatchBlockCondition create(Map arguments) { List ids = MiscUtils.getAsStringList(arguments.get("id")); if (ids.isEmpty()) { throw new LocalizedResourceConfigException("warning.config.condition.match_block.missing_id"); @@ -59,4 +59,4 @@ public final class MatchBlockCondition implements Condition NumberProviders.fromObject(arguments.getOrDefault("z", ""))); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchBlockPropertyCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchBlockPropertyCondition.java index 9f4297d7d..4c8fb5e7e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchBlockPropertyCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchBlockPropertyCondition.java @@ -68,14 +68,14 @@ public final class MatchBlockPropertyCondition implements C return true; } - public static ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @Override - public Condition create(Map arguments) { + public MatchBlockPropertyCondition create(Map arguments) { Object propertyObj = ResourceConfigUtils.requireNonNullOrThrow(arguments.get("properties"), "warning.config.condition.match_block_property.missing_properties"); List> propertyList = new ArrayList<>(); for (Map.Entry entry : MiscUtils.castToMap(propertyObj, false).entrySet()) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchEntityCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchEntityCondition.java index b4dc9171b..720089036 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchEntityCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchEntityCondition.java @@ -25,14 +25,14 @@ public final class MatchEntityCondition implements Conditio return entity.filter(value -> MiscUtils.matchRegex(value.type().asString(), this.ids, this.regexMatch)).isPresent(); } - public static ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @Override - public Condition create(Map arguments) { + public MatchEntityCondition create(Map arguments) { List ids = MiscUtils.getAsStringList(arguments.get("id")); if (ids.isEmpty()) { throw new LocalizedResourceConfigException("warning.config.condition.match_entity.missing_id"); @@ -41,4 +41,4 @@ public final class MatchEntityCondition implements Conditio return new MatchEntityCondition<>(ids, regex); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchFurnitureVariantCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchFurnitureVariantCondition.java index 72eabb618..dea2ba35c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchFurnitureVariantCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchFurnitureVariantCondition.java @@ -22,16 +22,16 @@ public final class MatchFurnitureVariantCondition implement return furniture.filter(value -> this.variants.contains(value.getCurrentVariant().name())).isPresent(); } - public static ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @Override - public Condition create(Map arguments) { + public MatchFurnitureVariantCondition create(Map arguments) { List variants = MiscUtils.getAsStringList(ResourceConfigUtils.get(arguments, "variant", "variants")); return new MatchFurnitureVariantCondition<>(variants); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchItemCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchItemCondition.java index 1bdddef7b..83aaaf640 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchItemCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/MatchItemCondition.java @@ -25,14 +25,14 @@ public final class MatchItemCondition implements Condition< return item.filter(value -> MiscUtils.matchRegex(value.id().asString(), this.ids, this.regexMatch)).isPresent(); } - public static ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @Override - public Condition create(Map arguments) { + public MatchItemCondition create(Map arguments) { List ids = MiscUtils.getAsStringList(ResourceConfigUtils.get(arguments, "id", "item")); if (ids.isEmpty()) { throw new LocalizedResourceConfigException("warning.config.condition.match_item.missing_id"); @@ -41,4 +41,4 @@ public final class MatchItemCondition implements Condition< return new MatchItemCondition<>(ids, regex); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/OnCooldownCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/OnCooldownCondition.java index 287a85d93..5dfc5b41f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/OnCooldownCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/OnCooldownCondition.java @@ -26,16 +26,16 @@ public final class OnCooldownCondition implements Condition return false; } - public static ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @Override - public Condition create(Map arguments) { + public OnCooldownCondition create(Map arguments) { String id = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("id"), "warning.config.condition.on_cooldown.missing_id"); return new OnCooldownCondition<>(id); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/PermissionCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/PermissionCondition.java index 61046241a..b0311868d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/PermissionCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/PermissionCondition.java @@ -22,16 +22,16 @@ public final class PermissionCondition implements Condition return player.map(value -> value.hasPermission(this.permission)).orElse(false); } - public static ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @Override - public Condition create(Map arguments) { + public PermissionCondition create(Map arguments) { String permission = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("permission"), "warning.config.condition.permission.missing_permission"); return new PermissionCondition<>(permission); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/RandomCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/RandomCondition.java index 80058b782..691f2c3d4 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/RandomCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/RandomCondition.java @@ -32,17 +32,17 @@ public final class RandomCondition implements Condition ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @Override - public Condition create(Map arguments) { + public RandomCondition create(Map arguments) { NumberProvider provider = NumberProviders.fromObject(arguments.getOrDefault("value", 0.5f)); boolean useLastRandom = Boolean.parseBoolean(arguments.getOrDefault("use-last", "false").toString()); return new RandomCondition<>(provider, useLastRandom); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/StringContainsCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/StringContainsCondition.java index f3f903190..d88575521 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/StringContainsCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/StringContainsCondition.java @@ -22,17 +22,17 @@ public final class StringContainsCondition implements Condi return this.value1.get(ctx).contains(this.value2.get(ctx)); } - public static ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @Override - public Condition create(Map arguments) { + public StringContainsCondition create(Map arguments) { String value1 = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("value1"), "warning.config.condition.string_contains.missing_value1"); String value2 = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("value2"), "warning.config.condition.string_contains.missing_value2"); return new StringContainsCondition<>(TextProviders.fromString(value1), TextProviders.fromString(value2)); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/StringEqualsCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/StringEqualsCondition.java index 8f1c01609..8a6098db0 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/StringEqualsCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/StringEqualsCondition.java @@ -22,17 +22,17 @@ public final class StringEqualsCondition implements Conditi return this.value1.get(ctx).equals(this.value2.get(ctx)); } - public static ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @Override - public Condition create(Map arguments) { + public StringEqualsCondition create(Map arguments) { String value1 = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("value1"), "warning.config.condition.string_equals.missing_value1"); String value2 = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("value2"), "warning.config.condition.string_equals.missing_value2"); return new StringEqualsCondition<>(TextProviders.fromString(value1), TextProviders.fromString(value2)); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/StringRegexCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/StringRegexCondition.java index 77578c301..bff58f9a3 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/StringRegexCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/StringRegexCondition.java @@ -22,17 +22,17 @@ public final class StringRegexCondition implements Conditio return this.value.get(ctx).matches(this.regex.get(ctx)); } - public static ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @Override - public Condition create(Map arguments) { + public StringRegexCondition create(Map arguments) { String value = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("value"), "warning.config.condition.string_regex.missing_value"); String regex = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("regex"), "warning.config.condition.string_regex.missing_regex"); return new StringRegexCondition<>(TextProviders.fromString(value), TextProviders.fromString(regex)); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/SurvivesExplosionCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/SurvivesExplosionCondition.java index 2c9a3fd81..68278c365 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/SurvivesExplosionCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/SurvivesExplosionCondition.java @@ -20,15 +20,15 @@ public final class SurvivesExplosionCondition implements Co return true; } - public static ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @Override - public Condition create(Map arguments) { + public SurvivesExplosionCondition create(Map arguments) { return new SurvivesExplosionCondition<>(); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/TableBonusCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/TableBonusCondition.java index f5d9049bf..5f08e1241 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/TableBonusCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/TableBonusCondition.java @@ -32,14 +32,14 @@ public final class TableBonusCondition implements Condition return RandomUtils.generateRandomFloat(0, 1) < f; } - public static ConditionFactory factory() { + public static ConditionFactory> factory() { return new Factory<>(); } - private static class Factory implements ConditionFactory { + private static class Factory implements ConditionFactory> { @Override - public Condition create(Map arguments) { + public TableBonusCondition create(Map arguments) { Object enchantmentObj = arguments.get("enchantment"); if (enchantmentObj == null) { throw new LocalizedResourceConfigException("warning.config.condition.table_bonus.missing_enchantment"); @@ -60,4 +60,4 @@ public final class TableBonusCondition implements Condition throw new LocalizedResourceConfigException("warning.config.condition.table_bonus.missing_chances"); } } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java b/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java index a2145e36c..5f3ee12b2 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java +++ b/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java @@ -36,6 +36,7 @@ import net.momirealms.craftengine.core.loot.entry.LootEntryContainerType; import net.momirealms.craftengine.core.loot.function.LootFunctionType; import net.momirealms.craftengine.core.loot.function.formula.Formula; import net.momirealms.craftengine.core.loot.function.formula.FormulaType; +import net.momirealms.craftengine.core.pack.conflict.PathContext; import net.momirealms.craftengine.core.pack.conflict.matcher.PathMatcherType; import net.momirealms.craftengine.core.pack.conflict.resolution.Resolution; import net.momirealms.craftengine.core.pack.conflict.resolution.ResolutionType; @@ -55,7 +56,8 @@ import net.momirealms.craftengine.core.pack.model.definition.tint.Tint; import net.momirealms.craftengine.core.pack.model.definition.tint.TintType; import net.momirealms.craftengine.core.plugin.config.template.argument.TemplateArgument; import net.momirealms.craftengine.core.plugin.config.template.argument.TemplateArgumentType; -import net.momirealms.craftengine.core.plugin.context.ConditionType; +import net.momirealms.craftengine.core.plugin.context.CommonConditionType; +import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.FunctionType; import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; @@ -84,12 +86,12 @@ public final class BuiltInRegistries { public static final Registry> SELECT_PROPERTY_TYPE = createConstantBoundRegistry(Registries.SELECT_PROPERTY_TYPE, 16); public static final Registry>> RECIPE_SERIALIZER = createConstantBoundRegistry(Registries.RECIPE_SERIALIZER, 16); public static final Registry> FORMULA_TYPE = createConstantBoundRegistry(Registries.FORMULA_TYPE, 16); - public static final Registry PATH_MATCHER_TYPE = createConstantBoundRegistry(Registries.PATH_MATCHER_TYPE, 16); + public static final Registry>> PATH_MATCHER_TYPE = createConstantBoundRegistry(Registries.PATH_MATCHER_TYPE, 16); public static final Registry> RESOLUTION_TYPE = createConstantBoundRegistry(Registries.RESOLUTION_TYPE, 16); public static final Registry> SMITHING_RESULT_PROCESSOR_TYPE = createConstantBoundRegistry(Registries.SMITHING_RESULT_PROCESSOR_TYPE, 16); public static final Registry> RESOURCE_PACK_HOST_TYPE = createConstantBoundRegistry(Registries.RESOURCE_PACK_HOST_TYPE, 16); public static final Registry> COMMON_FUNCTION_TYPE = createConstantBoundRegistry(Registries.COMMON_FUNCTION_TYPE, 128); - public static final Registry> COMMON_CONDITION_TYPE = createConstantBoundRegistry(Registries.COMMON_CONDITION_TYPE, 128); + public static final Registry>> COMMON_CONDITION_TYPE = createConstantBoundRegistry(Registries.COMMON_CONDITION_TYPE, 128); public static final Registry> PLAYER_SELECTOR_TYPE = createConstantBoundRegistry(Registries.PLAYER_SELECTOR_TYPE, 16); public static final Registry> EQUIPMENT_TYPE = createConstantBoundRegistry(Registries.EQUIPMENT_TYPE, 8); public static final Registry> SLOT_DISPLAY_TYPE = createConstantBoundRegistry(Registries.SLOT_DISPLAY_TYPE, 16); diff --git a/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java b/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java index c48b6d21d..d4df7a77a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java +++ b/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java @@ -36,6 +36,7 @@ import net.momirealms.craftengine.core.loot.entry.LootEntryContainerType; import net.momirealms.craftengine.core.loot.function.LootFunctionType; import net.momirealms.craftengine.core.loot.function.formula.Formula; import net.momirealms.craftengine.core.loot.function.formula.FormulaType; +import net.momirealms.craftengine.core.pack.conflict.PathContext; import net.momirealms.craftengine.core.pack.conflict.matcher.PathMatcherType; import net.momirealms.craftengine.core.pack.conflict.resolution.Resolution; import net.momirealms.craftengine.core.pack.conflict.resolution.ResolutionType; @@ -55,7 +56,8 @@ import net.momirealms.craftengine.core.pack.model.definition.tint.Tint; import net.momirealms.craftengine.core.pack.model.definition.tint.TintType; import net.momirealms.craftengine.core.plugin.config.template.argument.TemplateArgument; import net.momirealms.craftengine.core.plugin.config.template.argument.TemplateArgumentType; -import net.momirealms.craftengine.core.plugin.context.ConditionType; +import net.momirealms.craftengine.core.plugin.context.CommonConditionType; +import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.FunctionType; import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; @@ -88,12 +90,12 @@ public final class Registries { public static final ResourceKey>> SELECT_PROPERTY_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("select_property_type")); public static final ResourceKey>>> RECIPE_SERIALIZER = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("recipe_serializer")); public static final ResourceKey>> FORMULA_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("formula_type")); - public static final ResourceKey> PATH_MATCHER_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("path_matcher_type")); + public static final ResourceKey>>> PATH_MATCHER_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("path_matcher_type")); public static final ResourceKey>> RESOLUTION_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("resolution_type")); public static final ResourceKey>> SMITHING_RESULT_PROCESSOR_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("smithing_result_processor_type")); public static final ResourceKey>> RESOURCE_PACK_HOST_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("resource_pack_host_type")); public static final ResourceKey>> COMMON_FUNCTION_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("common_function_type")); - public static final ResourceKey>> COMMON_CONDITION_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("common_condition_type")); + public static final ResourceKey>>> COMMON_CONDITION_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("common_condition_type")); public static final ResourceKey>> PLAYER_SELECTOR_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("player_selector_type")); public static final ResourceKey>> EQUIPMENT_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("equipment_type")); public static final ResourceKey>> SLOT_DISPLAY_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("slot_display_type"));