From b4988d2540a1ea0dbfe44d823e0aab0596a40172 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Sat, 27 Dec 2025 05:07:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=B2=E7=AA=81=E7=AE=A1=E7=90=86=E5=99=A8?= =?UTF-8?q?=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BukkitCompatibilityManager.java | 7 +- .../worldguard/WorldGuardRegionCondition.java | 12 +-- .../craftengine/core/loot/LootConditions.java | 48 +++++----- .../core/pack/AbstractPackManager.java | 4 +- .../core/pack/conflict/PathContext.java | 8 +- ...Contains.java => ContainsPathMatcher.java} | 19 ++-- ...atcherExact.java => ExactPathMatcher.java} | 19 ++-- ...Filename.java => FilenamePathMatcher.java} | 19 ++-- ...efix.java => ParentPrefixPathMatcher.java} | 19 ++-- ...ffix.java => ParentSuffixPathMatcher.java} | 19 ++-- .../conflict/matcher/PathMatcherType.java | 8 ++ .../pack/conflict/matcher/PathMatchers.java | 59 ++++++------ ...rnMatcher.java => PatternPathMatcher.java} | 26 +++--- ...tional.java => ConditionalResolution.java} | 16 ++-- ...geAltas.java => MergeAltasResolution.java} | 16 ++-- ...ergeFont.java => MergeFontResolution.java} | 16 ++-- ...ergeJson.java => MergeJsonResolution.java} | 19 ++-- ...l.java => MergeLegacyModelResolution.java} | 17 ++-- ...ta.java => MergePackMcMetaResolution.java} | 17 ++-- .../pack/conflict/resolution/Resolution.java | 2 - .../resolution/ResolutionFactory.java | 1 - .../conflict/resolution/ResolutionType.java | 6 ++ .../pack/conflict/resolution/Resolutions.java | 39 ++++---- .../resolution/RetainMatchingResolution.java | 17 +--- .../core/pack/host/impl/AlistHost.java | 2 +- .../core/pack/host/impl/DropboxHost.java | 2 +- .../core/pack/host/impl/ExternalHost.java | 2 +- .../core/pack/host/impl/GitLabHost.java | 2 +- .../core/pack/host/impl/LobFileHost.java | 2 +- .../core/pack/host/impl/NoneHost.java | 4 +- .../core/pack/host/impl/OneDriveHost.java | 2 +- .../core/pack/host/impl/S3HostFactory.java | 2 +- .../core/pack/host/impl/SelfHost.java | 2 +- .../craftengine/core/pack/mcmeta/Overlay.java | 2 +- .../core/pack/mcmeta/PackMcMeta.java | 2 +- .../mcmeta/overlay/OverlayCombination.java | 2 +- .../model/generation/ModelGeneration.java | 2 +- .../pack/model/legacy/LegacyItemModel.java | 2 +- .../model/legacy/LegacyOverridesModel.java | 2 +- .../pack/model/simplified/BowModelReader.java | 7 +- .../simplified/ConditionModelReader.java | 5 +- .../model/simplified/CrossbowModelReader.java | 7 +- .../simplified/GeneratedModelReader.java | 5 +- .../core/plugin/config/Config.java | 8 +- .../core/plugin/context/CommonConditions.java | 74 ++++++++------- .../core/plugin/context/CommonFunctions.java | 90 +++++++++---------- .../core/plugin/context/Condition.java | 4 - .../context/condition/AllOfCondition.java | 17 ++-- .../condition/AlwaysFalseCondition.java | 14 +-- .../condition/AlwaysTrueCondition.java | 18 ++-- .../context/condition/AnyOfCondition.java | 16 ++-- .../context/condition/DistanceCondition.java | 14 ++- .../condition/EnchantmentCondition.java | 13 ++- .../condition/ExpressionCondition.java | 14 ++- .../condition/FallingBlockCondition.java | 14 ++- .../context/condition/HandCondition.java | 14 ++- .../context/condition/HasItemCondition.java | 14 ++- .../context/condition/HasPlayerCondition.java | 14 ++- .../condition/InventoryHasItemCondition.java | 13 ++- .../context/condition/InvertedCondition.java | 17 ++-- .../context/condition/IsNullCondition.java | 14 ++- .../condition/MatchBlockCondition.java | 14 ++- .../MatchBlockPropertyCondition.java | 14 ++- .../condition/MatchEntityCondition.java | 14 ++- .../MatchFurnitureVariantCondition.java | 14 ++- .../context/condition/MatchItemCondition.java | 14 ++- .../condition/OnCooldownCondition.java | 14 ++- .../condition/PermissionCondition.java | 14 ++- .../context/condition/RandomCondition.java | 14 ++- .../condition/StringContainsCondition.java | 14 ++- .../condition/StringEqualsCondition.java | 14 ++- .../condition/StringRegexCondition.java | 14 ++- .../condition/SurvivesExplosionCondition.java | 14 ++- .../condition/TableBonusCondition.java | 13 ++- .../context/function/ActionBarFunction.java | 10 +-- .../context/function/AllOfFunction.java | 5 -- .../context/function/BreakBlockFunction.java | 10 +-- .../context/function/CancelEventFunction.java | 10 +-- .../context/function/ClearItemFunction.java | 9 +- .../function/CloseInventoryFunction.java | 10 +-- .../context/function/CommandFunction.java | 10 +-- .../function/CycleBlockPropertyFunction.java | 10 +-- .../context/function/DamageFunction.java | 9 +- .../context/function/DamageItemFunction.java | 10 +-- .../context/function/DropLootFunction.java | 10 +-- .../context/function/DummyFunction.java | 5 -- .../plugin/context/function/Function.java | 2 - .../context/function/IfElseFunction.java | 10 +-- .../context/function/LevelerExpFunction.java | 10 +-- .../function/MerchantTradeFunction.java | 9 +- .../context/function/MessageFunction.java | 10 +-- .../function/MythicMobsSkillFunction.java | 10 +-- .../context/function/OpenWindowFunction.java | 10 +-- .../context/function/ParticleFunction.java | 10 +-- .../context/function/PlaceBlockFunction.java | 10 +-- .../context/function/PlaySoundFunction.java | 9 +- .../function/PlayTotemAnimationFunction.java | 9 +- .../function/PotionEffectFunction.java | 9 +- .../function/RemoveCooldownFunction.java | 10 +-- .../function/RemoveEntityFunction.java | 10 +-- .../function/RemoveFurnitureFunction.java | 10 +-- .../function/RemovePotionEffectFunction.java | 9 +- .../function/ReplaceFurnitureFunction.java | 9 +- .../function/RotateFurnitureFunction.java | 10 +-- .../plugin/context/function/RunFunction.java | 10 +-- .../context/function/SetCooldownFunction.java | 10 +-- .../context/function/SetCountFunction.java | 10 +-- .../context/function/SetExpFunction.java | 10 +-- .../context/function/SetFoodFunction.java | 10 +-- .../context/function/SetLevelFunction.java | 10 +-- .../function/SetSaturationFunction.java | 10 +-- .../context/function/SetVariableFunction.java | 10 +-- .../function/SpawnFurnitureFunction.java | 9 +- .../context/function/SwingHandFunction.java | 10 +-- .../context/function/TeleportFunction.java | 10 +-- .../context/function/TitleFunction.java | 10 +-- .../context/function/ToastFunction.java | 9 +- .../function/TransformBlockFunction.java | 10 +-- .../function/UpdateBlockPropertyFunction.java | 13 +-- .../function/UpdateInteractionFunction.java | 10 +-- .../plugin/context/function/WhenFunction.java | 10 +-- .../core/registry/BuiltInRegistries.java | 6 +- .../craftengine/core/registry/Registries.java | 6 +- 123 files changed, 551 insertions(+), 958 deletions(-) rename core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/{PathMatcherContains.java => ContainsPathMatcher.java} (72%) rename core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/{PathMatcherExact.java => ExactPathMatcher.java} (73%) rename core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/{PathMatcherFilename.java => FilenamePathMatcher.java} (71%) rename core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/{PathMatcherParentPrefix.java => ParentPrefixPathMatcher.java} (73%) rename core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/{PathMatcherParentSuffix.java => ParentSuffixPathMatcher.java} (73%) create mode 100644 core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherType.java rename core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/{PathPatternMatcher.java => PatternPathMatcher.java} (74%) rename core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/{ResolutionConditional.java => ConditionalResolution.java} (70%) rename core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/{ResolutionMergeAltas.java => MergeAltasResolution.java} (81%) rename core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/{ResolutionMergeFont.java => MergeFontResolution.java} (81%) rename core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/{ResolutionMergeJson.java => MergeJsonResolution.java} (75%) rename core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/{ResolutionMergeLegacyModel.java => MergeLegacyModelResolution.java} (84%) rename core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/{ResolutionMergePackMcMeta.java => MergePackMcMetaResolution.java} (96%) create mode 100644 core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionType.java diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/BukkitCompatibilityManager.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/BukkitCompatibilityManager.java index ad92e8050..5e93476d4 100644 --- a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/BukkitCompatibilityManager.java +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/BukkitCompatibilityManager.java @@ -33,7 +33,6 @@ import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine; import net.momirealms.craftengine.core.block.BlockManager; import net.momirealms.craftengine.core.entity.furniture.ExternalModel; import net.momirealms.craftengine.core.entity.player.Player; -import net.momirealms.craftengine.core.loot.LootConditions; import net.momirealms.craftengine.core.plugin.compatibility.*; import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.plugin.context.CommonConditions; @@ -125,12 +124,10 @@ public class BukkitCompatibilityManager implements CompatibilityManager { Key worldGuardRegion = Key.of("worldguard:region"); if (this.hasPlugin("WorldGuard")) { runCatchingHook(() -> { - CommonConditions.register(worldGuardRegion, new WorldGuardRegionCondition.FactoryImpl<>()); - LootConditions.register(worldGuardRegion, new WorldGuardRegionCondition.FactoryImpl<>()); + CommonConditions.register(worldGuardRegion, WorldGuardRegionCondition.factory()); }, "WorldGuard"); } else { - CommonConditions.register(worldGuardRegion, new AlwaysFalseCondition.FactoryImpl<>()); - LootConditions.register(worldGuardRegion, new AlwaysFalseCondition.FactoryImpl<>()); + CommonConditions.register(worldGuardRegion, AlwaysFalseCondition.factory()); } if (this.hasPlugin("Geyser-Spigot")) { this.hasGeyser = true; 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 3013311c9..965de9bf3 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 @@ -8,6 +8,7 @@ import com.sk89q.worldguard.protection.managers.RegionManager; import com.sk89q.worldguard.protection.regions.ProtectedRegion; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; +import net.momirealms.craftengine.core.plugin.context.condition.AlwaysTrueCondition; import net.momirealms.craftengine.core.plugin.context.condition.ConditionFactory; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; import net.momirealms.craftengine.core.util.Key; @@ -33,6 +34,10 @@ public class WorldGuardRegionCondition implements Condition this.regions = regions; } + public static ConditionFactory factory() { + return new Factory<>(); + } + @Override public boolean test(CTX ctx) { if (this.regions.isEmpty()) return false; @@ -55,11 +60,6 @@ public class WorldGuardRegionCondition implements Condition return false; } - @Override - public Key type() { - return TYPE; - } - public enum MatchMode { ANY((p, regions) -> { for (String region : regions) { @@ -85,7 +85,7 @@ public class WorldGuardRegionCondition implements Condition } } - public static class FactoryImpl implements ConditionFactory { + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/LootConditions.java b/core/src/main/java/net/momirealms/craftengine/core/loot/LootConditions.java index e7badf2ff..785b0c048 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/LootConditions.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/LootConditions.java @@ -18,30 +18,30 @@ import java.util.function.Predicate; public class LootConditions { static { - register(CommonConditions.MATCH_ITEM, new MatchItemCondition.FactoryImpl<>()); - register(CommonConditions.MATCH_BLOCK_PROPERTY, new MatchBlockPropertyCondition.FactoryImpl<>()); - register(CommonConditions.TABLE_BONUS, new TableBonusCondition.FactoryImpl<>()); - register(CommonConditions.SURVIVES_EXPLOSION, new SurvivesExplosionCondition.FactoryImpl<>()); - register(CommonConditions.ANY_OF, new AnyOfCondition.FactoryImpl<>(LootConditions::fromMap)); - register(CommonConditions.ALL_OF, new AllOfCondition.FactoryImpl<>(LootConditions::fromMap)); - register(CommonConditions.HAS_PLAYER, new HasPlayerCondition.FactoryImpl<>()); - register(CommonConditions.HAS_ITEM, new HasItemCondition.FactoryImpl<>()); - register(CommonConditions.ENCHANTMENT, new EnchantmentCondition.Factory<>()); - register(CommonConditions.INVERTED, new InvertedCondition.FactoryImpl<>(LootConditions::fromMap)); - register(CommonConditions.FALLING_BLOCK, new FallingBlockCondition.FactoryImpl<>()); - register(CommonConditions.RANDOM, new RandomCondition.FactoryImpl<>()); - register(CommonConditions.DISTANCE, new DistanceCondition.FactoryImpl<>()); - register(CommonConditions.PERMISSION, new PermissionCondition.FactoryImpl<>()); - register(CommonConditions.EQUALS, new StringEqualsCondition.FactoryImpl<>()); - register(CommonConditions.STRING_REGEX, new StringRegexCondition.FactoryImpl<>()); - register(CommonConditions.STRING_EQUALS, new StringEqualsCondition.FactoryImpl<>()); - register(CommonConditions.STRING_CONTAINS, new StringContainsCondition.FactoryImpl<>()); - register(CommonConditions.EXPRESSION, new ExpressionCondition.FactoryImpl<>()); - register(CommonConditions.IS_NULL, new IsNullCondition.FactoryImpl<>()); - register(CommonConditions.HAND, new HandCondition.FactoryImpl<>()); - register(CommonConditions.ON_COOLDOWN, new OnCooldownCondition.FactoryImpl<>()); - register(CommonConditions.INVENTORY_HAS_ITEM, new InventoryHasItemCondition.FactoryImpl<>()); - register(CommonConditions.MATCH_FURNITURE_VARIANT, new MatchFurnitureVariantCondition.FactoryImpl<>()); + register(CommonConditions.MATCH_ITEM, MatchItemCondition.factory()); + register(CommonConditions.MATCH_BLOCK_PROPERTY, MatchBlockPropertyCondition.factory()); + register(CommonConditions.TABLE_BONUS, TableBonusCondition.factory()); + register(CommonConditions.SURVIVES_EXPLOSION, SurvivesExplosionCondition.factory()); + register(CommonConditions.ANY_OF, AnyOfCondition.factory(LootConditions::fromMap)); + register(CommonConditions.ALL_OF, AllOfCondition.factory(LootConditions::fromMap)); + register(CommonConditions.HAS_PLAYER, HasPlayerCondition.factory()); + register(CommonConditions.HAS_ITEM, HasItemCondition.factory()); + register(CommonConditions.ENCHANTMENT, EnchantmentCondition.factory()); + register(CommonConditions.INVERTED, InvertedCondition.factory(LootConditions::fromMap)); + register(CommonConditions.FALLING_BLOCK, FallingBlockCondition.factory()); + register(CommonConditions.RANDOM, RandomCondition.factory()); + register(CommonConditions.DISTANCE, DistanceCondition.factory()); + register(CommonConditions.PERMISSION, PermissionCondition.factory()); + register(CommonConditions.EQUALS, StringEqualsCondition.factory()); + register(CommonConditions.STRING_REGEX, StringRegexCondition.factory()); + register(CommonConditions.STRING_EQUALS, StringEqualsCondition.factory()); + register(CommonConditions.STRING_CONTAINS, StringContainsCondition.factory()); + register(CommonConditions.EXPRESSION, ExpressionCondition.factory()); + register(CommonConditions.IS_NULL, IsNullCondition.factory()); + register(CommonConditions.HAND, HandCondition.factory()); + register(CommonConditions.ON_COOLDOWN, OnCooldownCondition.factory()); + register(CommonConditions.INVENTORY_HAS_ITEM, InventoryHasItemCondition.factory()); + register(CommonConditions.MATCH_FURNITURE_VARIANT, MatchFurnitureVariantCondition.factory()); } public static void register(Key key, ConditionFactory factory) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java b/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java index cf34d5897..865addc5a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java @@ -14,7 +14,7 @@ import net.momirealms.craftengine.core.item.equipment.TrimBasedEquipment; import net.momirealms.craftengine.core.pack.atlas.Atlas; import net.momirealms.craftengine.core.pack.atlas.TexturedModel; import net.momirealms.craftengine.core.pack.conflict.PathContext; -import net.momirealms.craftengine.core.pack.conflict.resolution.ResolutionConditional; +import net.momirealms.craftengine.core.pack.conflict.resolution.ConditionalResolution; import net.momirealms.craftengine.core.pack.host.ResourcePackHost; import net.momirealms.craftengine.core.pack.host.ResourcePackHosts; import net.momirealms.craftengine.core.pack.host.impl.NoneHost; @@ -3296,7 +3296,7 @@ public abstract class AbstractPackManager implements PackManager { PathContext relativeCTX = PathContext.of(relative); PathContext targetCTX = PathContext.of(targetPath); PathContext sourceCTX = PathContext.of(sourcePath); - for (ResolutionConditional resolution : Config.resolutions()) { + for (ConditionalResolution resolution : Config.resolutions()) { if (resolution.matcher().test(relativeCTX)) { resolution.resolution().run(targetCTX, sourceCTX); return; diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/PathContext.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/PathContext.java index d8aaefc24..f3b38cdcd 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/PathContext.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/PathContext.java @@ -5,19 +5,19 @@ import net.momirealms.craftengine.core.plugin.context.ContextHolder; import java.nio.file.Path; -public class PathContext extends AbstractCommonContext { +public final class PathContext extends AbstractCommonContext { private final Path path; - public PathContext(ContextHolder holder, Path path) { + public PathContext(Path path, ContextHolder holder) { super(holder); this.path = path; } public Path path() { - return path; + return this.path; } public static PathContext of(Path path) { - return new PathContext(ContextHolder.empty(), path); + return new PathContext(path, ContextHolder.empty()); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherContains.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ContainsPathMatcher.java similarity index 72% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherContains.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ContainsPathMatcher.java index 6c9cb8076..821e3691f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherContains.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ContainsPathMatcher.java @@ -10,12 +10,9 @@ import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; -public class PathMatcherContains implements Condition { - private final String path; - - public PathMatcherContains(String path) { - this.path = path; - } +public record ContainsPathMatcher(String path) implements Condition { + public static final Key ID = Key.of("craftengine:contains"); + public static final ConditionFactory FACTORY = new Factory(); @Override public boolean test(PathContext path) { @@ -23,17 +20,11 @@ public class PathMatcherContains implements Condition { return pathStr.contains(this.path); } - @Override - public Key type() { - return PathMatchers.CONTAINS; - } - - public static class FactoryImpl implements ConditionFactory { - + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { String path = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("path"), () -> new LocalizedException("warning.config.conflict_matcher.contains.missing_path")); - return new PathMatcherContains(path); + return new ContainsPathMatcher(path); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherExact.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ExactPathMatcher.java similarity index 73% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherExact.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ExactPathMatcher.java index b2f1e800f..b60e64e6d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherExact.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ExactPathMatcher.java @@ -10,12 +10,9 @@ import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; -public class PathMatcherExact implements Condition { - private final String path; - - public PathMatcherExact(String path) { - this.path = path; - } +public record ExactPathMatcher(String path) implements Condition { + public static final ConditionFactory FACTORY = new Factory(); + public static final Key ID = Key.of("craftengine:exact"); @Override public boolean test(PathContext path) { @@ -23,17 +20,11 @@ public class PathMatcherExact implements Condition { return pathStr.equals(this.path); } - @Override - public Key type() { - return PathMatchers.EXACT; - } - - public static class FactoryImpl implements ConditionFactory { - + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { String path = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("path"), () -> new LocalizedException("warning.config.conflict_matcher.exact.missing_path")); - return new PathMatcherExact(path); + return new ExactPathMatcher(path); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherFilename.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/FilenamePathMatcher.java similarity index 71% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherFilename.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/FilenamePathMatcher.java index b7b7f2f26..93282184e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherFilename.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/FilenamePathMatcher.java @@ -9,12 +9,9 @@ import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; -public class PathMatcherFilename implements Condition { - private final String name; - - public PathMatcherFilename(String name) { - this.name = name; - } +public record FilenamePathMatcher(String name) implements Condition { + public static final ConditionFactory FACTORY = new Factory(); + public static final Key ID = Key.of("craftengine:filename"); @Override public boolean test(PathContext path) { @@ -22,17 +19,11 @@ public class PathMatcherFilename implements Condition { return fileName.equals(name); } - @Override - public Key type() { - return PathMatchers.FILENAME; - } - - public static class FactoryImpl implements ConditionFactory { - + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { String name = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("name"), () -> new LocalizedException("warning.config.conflict_matcher.filename.missing_name")); - return new PathMatcherFilename(name); + return new FilenamePathMatcher(name); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherParentPrefix.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ParentPrefixPathMatcher.java similarity index 73% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherParentPrefix.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ParentPrefixPathMatcher.java index 940e8cbe3..731927ec5 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherParentPrefix.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ParentPrefixPathMatcher.java @@ -11,12 +11,9 @@ import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.nio.file.Path; import java.util.Map; -public class PathMatcherParentPrefix implements Condition { - private final String prefix; - - public PathMatcherParentPrefix(String prefix) { - this.prefix = prefix; - } +public record ParentPrefixPathMatcher(String prefix) implements Condition { + public static final ConditionFactory FACTORY = new Factory(); + public static final Key ID = Key.of("craftengine:parent_path_prefix"); @Override public boolean test(PathContext path) { @@ -26,17 +23,11 @@ public class PathMatcherParentPrefix implements Condition { return pathStr.startsWith(this.prefix); } - @Override - public Key type() { - return PathMatchers.PARENT_PATH_PREFIX; - } - - public static class FactoryImpl implements ConditionFactory { - + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { String prefix = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("prefix"), () -> new LocalizedException("warning.config.conflict_matcher.parent_prefix.missing_prefix")); - return new PathMatcherParentPrefix(prefix); + return new ParentPrefixPathMatcher(prefix); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherParentSuffix.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ParentSuffixPathMatcher.java similarity index 73% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherParentSuffix.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ParentSuffixPathMatcher.java index 8110dbcf0..c61f08004 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherParentSuffix.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ParentSuffixPathMatcher.java @@ -11,12 +11,9 @@ import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.nio.file.Path; import java.util.Map; -public class PathMatcherParentSuffix implements Condition { - private final String suffix; - - public PathMatcherParentSuffix(String suffix) { - this.suffix = suffix; - } +public record ParentSuffixPathMatcher(String suffix) implements Condition { + public static final ConditionFactory FACTORY = new Factory(); + public static final Key ID = Key.of("craftengine:parent_path_suffix"); @Override public boolean test(PathContext path) { @@ -26,17 +23,11 @@ public class PathMatcherParentSuffix implements Condition { return pathStr.endsWith(suffix); } - @Override - public Key type() { - return PathMatchers.PARENT_PATH_SUFFIX; - } - - public static class FactoryImpl implements ConditionFactory { - + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { String suffix = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("suffix"), () -> new LocalizedException("warning.config.conflict_matcher.parent_suffix.missing_suffix")); - return new PathMatcherParentSuffix(suffix); + return new ParentSuffixPathMatcher(suffix); } } } 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 new file mode 100644 index 000000000..9e86aed55 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherType.java @@ -0,0 +1,8 @@ +package net.momirealms.craftengine.core.pack.conflict.matcher; + +import net.momirealms.craftengine.core.pack.conflict.PathContext; +import net.momirealms.craftengine.core.plugin.context.condition.ConditionFactory; +import net.momirealms.craftengine.core.util.Key; + +public record PathMatcherType(Key id, ConditionFactory 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 c3674f5c0..87d16d92d 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 @@ -15,29 +15,24 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -public class PathMatchers { - public static final Key EXACT = Key.of("craftengine:exact"); - public static final Key CONTAINS = Key.of("craftengine:contains"); - public static final Key FILENAME = Key.of("craftengine:filename"); - public static final Key PARENT_PATH_SUFFIX = Key.of("craftengine:parent_path_suffix"); - public static final Key PARENT_PATH_PREFIX = Key.of("craftengine:parent_path_prefix"); - public static final Key PATTERN = Key.of("craftengine:pattern"); +public final class PathMatchers { + public static final PathMatcherType ANY_OF = register(Key.of("craftengine:any_of"), AnyOfCondition.factory(PathMatchers::fromMap)); + public static final PathMatcherType ALL_OF = register(Key.of("craftengine:all_of"), AllOfCondition.factory(PathMatchers::fromMap)); + public static final PathMatcherType INVERTED = register(Key.of("craftengine:inverted"), InvertedCondition.factory(PathMatchers::fromMap)); + public static final PathMatcherType CONTAINS = register(ContainsPathMatcher.ID, ContainsPathMatcher.FACTORY); + public static final PathMatcherType EXACT = register(ExactPathMatcher.ID, ExactPathMatcher.FACTORY); + public static final PathMatcherType FILENAME = register(FilenamePathMatcher.ID, FilenamePathMatcher.FACTORY); + public static final PathMatcherType PATTERN = register(PatternPathMatcher.ID, PatternPathMatcher.FACTORY); + public static final PathMatcherType PARENT_PATH_SUFFIX = register(ParentSuffixPathMatcher.ID, ParentSuffixPathMatcher.FACTORY); + public static final PathMatcherType PARENT_PATH_PREFIX = register(ParentPrefixPathMatcher.ID, ParentPrefixPathMatcher.FACTORY); - static { - register(CommonConditions.ANY_OF, new AnyOfCondition.FactoryImpl<>(PathMatchers::fromMap)); - register(CommonConditions.ALL_OF, new AllOfCondition.FactoryImpl<>(PathMatchers::fromMap)); - register(CommonConditions.INVERTED, new InvertedCondition.FactoryImpl<>(PathMatchers::fromMap)); - register(PARENT_PATH_SUFFIX, new PathMatcherParentSuffix.FactoryImpl()); - register(PARENT_PATH_PREFIX, new PathMatcherParentPrefix.FactoryImpl()); - register(PATTERN, new PathPatternMatcher.FactoryImpl()); - register(EXACT, new PathMatcherExact.FactoryImpl()); - register(FILENAME, new PathMatcherFilename.FactoryImpl()); - register(CONTAINS, new PathMatcherContains.FactoryImpl()); - } + private PathMatchers() {} - public static void register(Key key, ConditionFactory factory) { - ((WritableRegistry>) BuiltInRegistries.PATH_MATCHER_FACTORY) - .register(ResourceKey.create(Registries.PATH_MATCHER_FACTORY.location(), key), factory); + 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) { @@ -50,19 +45,15 @@ public class PathMatchers { public static Condition fromMap(Map map) { String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), () -> new LocalizedException("warning.config.conflict_matcher.missing_type")); - Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE); - if (key.value().charAt(0) == '!') { - ConditionFactory factory = BuiltInRegistries.PATH_MATCHER_FACTORY.getValue(new Key(key.namespace(), key.value().substring(1))); - if (factory == null) { - throw new LocalizedException("warning.config.conflict_matcher.invalid_type", type); - } - return new InvertedCondition<>(factory.create(map)); - } else { - ConditionFactory factory = BuiltInRegistries.PATH_MATCHER_FACTORY.getValue(key); - if (factory == null) { - throw new LocalizedException("warning.config.conflict_matcher.invalid_type", type); - } - return factory.create(map); + boolean reverted = type.charAt(0) == '!'; + if (reverted) { + type = type.substring(1); } + Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE); + PathMatcherType matcherType = BuiltInRegistries.PATH_MATCHER_TYPE.getValue(key); + if (matcherType == null) { + throw new LocalizedException("warning.config.conflict_matcher.invalid_type", type); + } + return reverted ? new InvertedCondition<>(matcherType.factory().create(map)) : matcherType.factory().create(map); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathPatternMatcher.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PatternPathMatcher.java similarity index 74% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathPatternMatcher.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PatternPathMatcher.java index cf8c72a11..cc00a461b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathPatternMatcher.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PatternPathMatcher.java @@ -11,38 +11,34 @@ import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; import java.util.regex.Pattern; -public class PathPatternMatcher implements Condition { +public final class PatternPathMatcher implements Condition { + public static final ConditionFactory FACTORY = new Factory(); + public static final Key ID = Key.of("craftengine:pattern"); private final Pattern pattern; - public PathPatternMatcher(String pattern) { + public PatternPathMatcher(String pattern) { this.pattern = Pattern.compile(pattern); } - public PathPatternMatcher(Pattern pattern) { + public PatternPathMatcher(Pattern pattern) { this.pattern = pattern; } + public Pattern pattern() { + return pattern; + } + @Override public boolean test(PathContext path) { String pathStr = CharacterUtils.replaceBackslashWithSlash(path.path().toString()); return this.pattern.matcher(pathStr).matches(); } - @Override - public Key type() { - return PathMatchers.PATTERN; - } - - public Pattern pattern() { - return pattern; - } - - public static class FactoryImpl implements ConditionFactory { - + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { String pattern = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("pattern"), () -> new LocalizedException("warning.config.conflict_matcher.pattern.missing_pattern")); - return new PathPatternMatcher(pattern); + return new PatternPathMatcher(pattern); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionConditional.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ConditionalResolution.java similarity index 70% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionConditional.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ConditionalResolution.java index 4eb182943..d9bc03df5 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionConditional.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ConditionalResolution.java @@ -8,8 +8,9 @@ import net.momirealms.craftengine.core.util.MiscUtils; import java.util.Map; -public record ResolutionConditional(Condition matcher, Resolution resolution) implements Resolution { - public static final Factory FACTORY = new Factory(); +public record ConditionalResolution(Condition matcher, Resolution resolution) implements Resolution { + public static final Key ID = Key.of("craftengine:conditional"); + public static final ResolutionFactory FACTORY = new Factory(); @Override public void run(PathContext existing, PathContext conflict) { @@ -18,18 +19,13 @@ public record ResolutionConditional(Condition matcher, Resolution r } } - @Override - public Key type() { - return Resolutions.CONDITIONAL; - } - - public static class Factory implements ResolutionFactory { + private static class Factory implements ResolutionFactory { @Override - public ResolutionConditional create(Map arguments) { + public ConditionalResolution create(Map arguments) { Map term = MiscUtils.castToMap(arguments.get("term"), false); Map resolution = MiscUtils.castToMap(arguments.get("resolution"), false); - return new ResolutionConditional(PathMatchers.fromMap(term), Resolutions.fromMap(resolution)); + return new ConditionalResolution(PathMatchers.fromMap(term), Resolutions.fromMap(resolution)); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergeAltas.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergeAltasResolution.java similarity index 81% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergeAltas.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergeAltasResolution.java index 4d1547ab5..26aa58c7c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergeAltas.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergeAltasResolution.java @@ -11,9 +11,12 @@ import net.momirealms.craftengine.core.util.Key; import java.util.HashSet; import java.util.Map; -public class ResolutionMergeAltas implements Resolution { - public static final Factory FACTORY = new Factory(); - public static final ResolutionMergeAltas INSTANCE = new ResolutionMergeAltas(); +public final class MergeAltasResolution implements Resolution { + public static final Key ID = Key.of("craftengine:merge_atlas"); + public static final ResolutionFactory FACTORY = new Factory(); + public static final MergeAltasResolution INSTANCE = new MergeAltasResolution(); + + private MergeAltasResolution() {} @Override public void run(PathContext existing, PathContext conflict) { @@ -42,12 +45,7 @@ public class ResolutionMergeAltas implements Resolution { } } - @Override - public Key type() { - return Resolutions.MERGE_ATLAS; - } - - public static class Factory implements ResolutionFactory { + private static class Factory implements ResolutionFactory { @Override public Resolution create(Map arguments) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergeFont.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergeFontResolution.java similarity index 81% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergeFont.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergeFontResolution.java index c8beb26dc..a6028acb5 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergeFont.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergeFontResolution.java @@ -11,9 +11,12 @@ import net.momirealms.craftengine.core.util.Key; import java.util.HashSet; import java.util.Map; -public class ResolutionMergeFont implements Resolution { - public static final Factory FACTORY = new Factory(); - public static final ResolutionMergeFont INSTANCE = new ResolutionMergeFont(); +public final class MergeFontResolution implements Resolution { + public static final Key ID = Key.of("craftengine:merge_font"); + public static final ResolutionFactory FACTORY = new Factory(); + public static final MergeFontResolution INSTANCE = new MergeFontResolution(); + + private MergeFontResolution() {} @Override public void run(PathContext existing, PathContext conflict) { @@ -42,12 +45,7 @@ public class ResolutionMergeFont implements Resolution { } } - @Override - public Key type() { - return Resolutions.MERGE_FONT; - } - - public static class Factory implements ResolutionFactory { + private static class Factory implements ResolutionFactory { @Override public Resolution create(Map arguments) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergeJson.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergeJsonResolution.java similarity index 75% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergeJson.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergeJsonResolution.java index 909091485..f360b2a31 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergeJson.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergeJsonResolution.java @@ -10,13 +10,9 @@ import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.io.IOException; import java.util.Map; -public class ResolutionMergeJson implements Resolution { - public static final Factory FACTORY = new Factory(); - private final boolean deeply; - - public ResolutionMergeJson(boolean deeply) { - this.deeply = deeply; - } +public record MergeJsonResolution(boolean deeply) implements Resolution { + public static final Key ID = Key.of("craftengine:merge_json"); + public static final ResolutionFactory FACTORY = new Factory(); @Override public void run(PathContext existing, PathContext conflict) { @@ -35,17 +31,12 @@ public class ResolutionMergeJson implements Resolution { } } - @Override - public Key type() { - return Resolutions.MERGE_JSON; - } - - public static class Factory implements ResolutionFactory { + private static class Factory implements ResolutionFactory { @Override public Resolution create(Map arguments) { boolean deeply = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("deeply", false), "deeply"); - return new ResolutionMergeJson(deeply); + return new MergeJsonResolution(deeply); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergeLegacyModel.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergeLegacyModelResolution.java similarity index 84% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergeLegacyModel.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergeLegacyModelResolution.java index ac69b0b88..c27917794 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergeLegacyModel.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergeLegacyModelResolution.java @@ -13,8 +13,12 @@ import java.io.IOException; import java.util.Map; import java.util.TreeSet; -public class ResolutionMergeLegacyModel implements Resolution { - public static final Factory FACTORY = new Factory(); +public final class MergeLegacyModelResolution implements Resolution { + public static final Key ID = Key.of("craftengine:merge_legacy_model"); + public static final ResolutionFactory FACTORY = new Factory(); + public static final MergeLegacyModelResolution INSTANCE = new MergeLegacyModelResolution(); + + private MergeLegacyModelResolution() {} @Override public void run(PathContext existing, PathContext conflict) { @@ -61,16 +65,11 @@ public class ResolutionMergeLegacyModel implements Resolution { return element != null && element.isJsonArray(); } - @Override - public Key type() { - return Resolutions.MERGE_LEGACY_MODEL; - } - - public static class Factory implements ResolutionFactory { + private static class Factory implements ResolutionFactory { @Override public Resolution create(Map arguments) { - return new ResolutionMergeLegacyModel(); + return INSTANCE; } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergePackMcMeta.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergePackMcMetaResolution.java similarity index 96% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergePackMcMeta.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergePackMcMetaResolution.java index e0ff95b11..ba2ad9324 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergePackMcMeta.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergePackMcMetaResolution.java @@ -17,9 +17,13 @@ import java.nio.file.Path; import java.util.*; import java.util.function.Consumer; -public class ResolutionMergePackMcMeta implements Resolution { - public static final Factory FACTORY = new Factory(); +public final class MergePackMcMetaResolution implements Resolution { + public static final Key ID = Key.of("craftengine:merge_pack_mcmeta"); + public static final ResolutionFactory FACTORY = new Factory(); public static final Set STANDARD_PACK_KEYS = ImmutableSet.of("pack", "features", "filter", "overlays", "language"); + public static final MergePackMcMetaResolution INSTANCE = new MergePackMcMetaResolution(); + + private MergePackMcMetaResolution() {} public static void merge(Path file1, Path file2) throws IOException { // 第一步,解析全部的mcmeta文件为json对象 @@ -255,15 +259,10 @@ public class ResolutionMergePackMcMeta implements Resolution { } } - @Override - public Key type() { - return Resolutions.MERGE_PACK_MCMETA; - } - - public static class Factory implements ResolutionFactory { + private static class Factory implements ResolutionFactory { @Override public Resolution create(Map arguments) { - return new ResolutionMergePackMcMeta(); + return INSTANCE; } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/Resolution.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/Resolution.java index d1566f811..da0fe52f7 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/Resolution.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/Resolution.java @@ -6,6 +6,4 @@ import net.momirealms.craftengine.core.util.Key; public interface Resolution { void run(PathContext existing, PathContext conflict); - - Key type(); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionFactory.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionFactory.java index 0e6235274..b6533aa87 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionFactory.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionFactory.java @@ -2,7 +2,6 @@ package net.momirealms.craftengine.core.pack.conflict.resolution; import java.util.Map; -@FunctionalInterface public interface ResolutionFactory { Resolution create(Map arguments); diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionType.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionType.java new file mode 100644 index 000000000..c10b7a54b --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionType.java @@ -0,0 +1,6 @@ +package net.momirealms.craftengine.core.pack.conflict.resolution; + +import net.momirealms.craftengine.core.util.Key; + +public record ResolutionType(Key id, ResolutionFactory factory) { +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/Resolutions.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/Resolutions.java index ca5e761b0..31acf6ea6 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/Resolutions.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/Resolutions.java @@ -10,36 +10,31 @@ import net.momirealms.craftengine.core.util.ResourceKey; import java.util.Map; -public class Resolutions { - public static final Key RETAIN_MATCHING = Key.of("craftengine:retain_matching"); - public static final Key MERGE_JSON = Key.of("craftengine:merge_json"); - public static final Key MERGE_ATLAS = Key.of("craftengine:merge_atlas"); - public static final Key MERGE_FONT = Key.of("craftengine:merge_font"); - public static final Key CONDITIONAL = Key.of("craftengine:conditional"); - public static final Key MERGE_PACK_MCMETA = Key.of("craftengine:merge_pack_mcmeta"); - public static final Key MERGE_LEGACY_MODEL = Key.of("craftengine:merge_legacy_model"); +public final class Resolutions { + public static final ResolutionType RETAIN_MATCHING = register(RetainMatchingResolution.ID, RetainMatchingResolution.FACTORY); + public static final ResolutionType MERGE_JSON = register(MergeJsonResolution.ID, MergeJsonResolution.FACTORY); + public static final ResolutionType MERGE_ATLAS = register(MergeAltasResolution.ID, MergeAltasResolution.FACTORY); + public static final ResolutionType MERGE_FONT = register(MergeFontResolution.ID, MergeFontResolution.FACTORY); + public static final ResolutionType CONDITIONAL = register(ConditionalResolution.ID, ConditionalResolution.FACTORY); + public static final ResolutionType MERGE_PACK_MCMETA = register(MergePackMcMetaResolution.ID, MergePackMcMetaResolution.FACTORY); + public static final ResolutionType MERGE_LEGACY_MODEL = register(MergeLegacyModelResolution.ID, MergeLegacyModelResolution.FACTORY); - static { - register(RETAIN_MATCHING, RetainMatchingResolution.FACTORY); - register(MERGE_JSON, ResolutionMergeJson.FACTORY); - register(CONDITIONAL, ResolutionConditional.FACTORY); - register(MERGE_PACK_MCMETA, ResolutionMergePackMcMeta.FACTORY); - register(MERGE_ATLAS, ResolutionMergeAltas.FACTORY); - register(MERGE_LEGACY_MODEL, ResolutionMergeLegacyModel.FACTORY); - register(MERGE_FONT, ResolutionMergeFont.FACTORY); - } + private Resolutions() {} - public static void register(Key key, ResolutionFactory factory) { - ((WritableRegistry) BuiltInRegistries.RESOLUTION_FACTORY).register(ResourceKey.create(Registries.RESOLUTION_FACTORY.location(), key), factory); + public static ResolutionType register(Key key, ResolutionFactory factory) { + ResolutionType type = new ResolutionType(key, factory); + ((WritableRegistry) BuiltInRegistries.RESOLUTION_TYPE) + .register(ResourceKey.create(Registries.RESOLUTION_TYPE.location(), key), type); + return type; } public static Resolution fromMap(Map map) { String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), () -> new LocalizedException("warning.config.conflict_resolution.missing_type")); Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE); - ResolutionFactory factory = BuiltInRegistries.RESOLUTION_FACTORY.getValue(key); - if (factory == null) { + ResolutionType resolutionType = BuiltInRegistries.RESOLUTION_TYPE.getValue(key); + if (resolutionType == null) { throw new LocalizedException("warning.config.conflict_resolution.invalid_type", type); } - return factory.create(map); + return resolutionType.factory().create(map); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/RetainMatchingResolution.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/RetainMatchingResolution.java index 490e46671..750c51d67 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/RetainMatchingResolution.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/RetainMatchingResolution.java @@ -12,13 +12,9 @@ import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.util.Map; -public class RetainMatchingResolution implements Resolution { - public static final Factory FACTORY = new Factory(); - private final Condition matcher; - - public RetainMatchingResolution(Condition matcher) { - this.matcher = matcher; - } +public record RetainMatchingResolution(Condition matcher) implements Resolution { + public static final Key ID = Key.of("craftengine:retain_matching"); + public static final ResolutionFactory FACTORY = new Factory(); @Override public void run(PathContext existing, PathContext conflict) { @@ -31,12 +27,7 @@ public class RetainMatchingResolution implements Resolution { } } - @Override - public Key type() { - return Resolutions.RETAIN_MATCHING; - } - - public static class Factory implements ResolutionFactory { + private static class Factory implements ResolutionFactory { @Override public Resolution create(Map arguments) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/AlistHost.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/AlistHost.java index 256d18f13..24ef56766 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/AlistHost.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/AlistHost.java @@ -32,7 +32,7 @@ import java.time.Duration; import java.util.*; import java.util.concurrent.CompletableFuture; -public class AlistHost implements ResourcePackHost { +public final class AlistHost implements ResourcePackHost { public static final ResourcePackHostFactory FACTORY = new Factory(); private final String apiUrl; private final String userName; diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/DropboxHost.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/DropboxHost.java index 0a684834a..45137b4ba 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/DropboxHost.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/DropboxHost.java @@ -26,7 +26,7 @@ import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.locks.ReentrantLock; -public class DropboxHost implements ResourcePackHost { +public final class DropboxHost implements ResourcePackHost { public static final ResourcePackHostFactory FACTORY = new Factory(); private final String appKey; private final String appSecret; diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/ExternalHost.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/ExternalHost.java index 9e6af36f9..b65e009f2 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/ExternalHost.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/ExternalHost.java @@ -15,7 +15,7 @@ import java.util.Optional; import java.util.UUID; import java.util.concurrent.CompletableFuture; -public class ExternalHost implements ResourcePackHost { +public final class ExternalHost implements ResourcePackHost { public static final ResourcePackHostFactory FACTORY = new Factory(); private final ResourcePackDownloadData downloadData; diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/GitLabHost.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/GitLabHost.java index f43783d37..65e95446e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/GitLabHost.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/GitLabHost.java @@ -26,7 +26,7 @@ import java.nio.file.StandardOpenOption; import java.util.*; import java.util.concurrent.CompletableFuture; -public class GitLabHost implements ResourcePackHost { +public final class GitLabHost implements ResourcePackHost { public static final ResourcePackHostFactory FACTORY = new Factory(); private final String gitlabUrl; private final String accessToken; diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/LobFileHost.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/LobFileHost.java index ee3411b8c..3accf1231 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/LobFileHost.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/LobFileHost.java @@ -32,7 +32,7 @@ import java.security.NoSuchAlgorithmException; import java.util.*; import java.util.concurrent.CompletableFuture; -public class LobFileHost implements ResourcePackHost { +public final class LobFileHost implements ResourcePackHost { public static final ResourcePackHostFactory FACTORY = new Factory(); private final String apiKey; private final ProxySelector proxy; diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/NoneHost.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/NoneHost.java index 99575e589..0830f59ee 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/NoneHost.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/NoneHost.java @@ -12,10 +12,12 @@ import java.util.Map; import java.util.UUID; import java.util.concurrent.CompletableFuture; -public class NoneHost implements ResourcePackHost { +public final class NoneHost implements ResourcePackHost { public static final ResourcePackHostFactory FACTORY = new Factory(); public static final NoneHost INSTANCE = new NoneHost(); + private NoneHost() {} + @Override public CompletableFuture> requestResourcePackDownloadLink(UUID player) { return CompletableFuture.completedFuture(List.of()); diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/OneDriveHost.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/OneDriveHost.java index 921753fa8..389392ee2 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/OneDriveHost.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/OneDriveHost.java @@ -29,7 +29,7 @@ import java.nio.file.StandardOpenOption; import java.util.*; import java.util.concurrent.CompletableFuture; -public class OneDriveHost implements ResourcePackHost { +public final class OneDriveHost implements ResourcePackHost { public static final ResourcePackHostFactory FACTORY = new Factory(); private final String clientId; private final String clientSecret; diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/S3HostFactory.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/S3HostFactory.java index 92956c0e9..875fb557a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/S3HostFactory.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/S3HostFactory.java @@ -8,7 +8,7 @@ import net.momirealms.craftengine.core.plugin.dependency.Dependencies; import java.util.List; import java.util.Map; -public class S3HostFactory implements ResourcePackHostFactory { +public final class S3HostFactory implements ResourcePackHostFactory { public static final ResourcePackHostFactory INSTANCE = new S3HostFactory(); @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/SelfHost.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/SelfHost.java index ba742ae35..a74bc5c92 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/SelfHost.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/SelfHost.java @@ -18,7 +18,7 @@ import java.util.Map; import java.util.UUID; import java.util.concurrent.CompletableFuture; -public class SelfHost implements ResourcePackHost { +public final class SelfHost implements ResourcePackHost { public static final ResourcePackHostFactory FACTORY = new Factory(); private static final SelfHost INSTANCE = new SelfHost(); diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/mcmeta/Overlay.java b/core/src/main/java/net/momirealms/craftengine/core/pack/mcmeta/Overlay.java index 12709b893..9462fdba2 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/mcmeta/Overlay.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/mcmeta/Overlay.java @@ -11,7 +11,7 @@ import net.momirealms.craftengine.core.util.Pair; import java.util.ArrayList; import java.util.List; -public class Overlay { +public final class Overlay { private final PackVersion minVersion; private final PackVersion maxVersion; private final String directory; diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/mcmeta/PackMcMeta.java b/core/src/main/java/net/momirealms/craftengine/core/pack/mcmeta/PackMcMeta.java index 506b150fa..b1ca43a74 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/mcmeta/PackMcMeta.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/mcmeta/PackMcMeta.java @@ -7,7 +7,7 @@ import com.google.gson.JsonObject; import java.util.ArrayList; import java.util.List; -public class PackMcMeta { +public final class PackMcMeta { private final List overlays; public PackMcMeta(JsonObject mcmeta) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/mcmeta/overlay/OverlayCombination.java b/core/src/main/java/net/momirealms/craftengine/core/pack/mcmeta/overlay/OverlayCombination.java index a15bbb88a..9248da42b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/mcmeta/overlay/OverlayCombination.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/mcmeta/overlay/OverlayCombination.java @@ -6,7 +6,7 @@ import org.jetbrains.annotations.Nullable; import java.util.*; -public class OverlayCombination { +public final class OverlayCombination { private final List versionBasedEvents; private final List currentOverlays; private int cursor; diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/generation/ModelGeneration.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/generation/ModelGeneration.java index 83b67fc1c..791b7c697 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/generation/ModelGeneration.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/generation/ModelGeneration.java @@ -17,7 +17,7 @@ import java.util.*; import java.util.function.BiConsumer; import java.util.function.Supplier; -public class ModelGeneration implements Supplier { +public final class ModelGeneration implements Supplier { private static final Map> BUILDER_FUNCTIONS = new HashMap<>(); static { BUILDER_FUNCTIONS.put("textures", (b, data) -> { diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/legacy/LegacyItemModel.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/legacy/LegacyItemModel.java index a54c6002e..df927e406 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/legacy/LegacyItemModel.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/legacy/LegacyItemModel.java @@ -11,7 +11,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -public class LegacyItemModel { +public final class LegacyItemModel { private final List modelsToGenerate; private final String path; private final List overrides; diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/legacy/LegacyOverridesModel.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/legacy/LegacyOverridesModel.java index 05ba88304..6f23a1b9f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/legacy/LegacyOverridesModel.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/legacy/LegacyOverridesModel.java @@ -11,7 +11,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Objects; -public class LegacyOverridesModel implements Comparable { +public final class LegacyOverridesModel implements Comparable { private final Map predicate; private final String model; private final int customModelData; diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/simplified/BowModelReader.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/simplified/BowModelReader.java index 63b78c189..05ed76f9c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/simplified/BowModelReader.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/simplified/BowModelReader.java @@ -2,16 +2,17 @@ package net.momirealms.craftengine.core.pack.model.simplified; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.util.Key; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; import java.util.Map; -public class BowModelReader implements SimplifiedModelReader { +public final class BowModelReader implements SimplifiedModelReader { public static final BowModelReader INSTANCE = new BowModelReader(); @Override - public @Nullable Map convert(List textures, List optionalModelPaths, Key id) { + public @NotNull Map convert(List textures, List optionalModelPaths, Key id) { if (textures.size() != 4) { throw new LocalizedResourceConfigException("warning.config.item.simplified_model.invalid_texture", "4", String.valueOf(textures.size())); } @@ -75,7 +76,7 @@ public class BowModelReader implements SimplifiedModelReader { } @Override - public @Nullable Map convert(List models) { + public @NotNull Map convert(List models) { if (models.size() != 4) { throw new LocalizedResourceConfigException("warning.config.item.simplified_model.invalid_model", "4", String.valueOf(models.size())); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/simplified/ConditionModelReader.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/simplified/ConditionModelReader.java index 28a15a4eb..6d9abff6e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/simplified/ConditionModelReader.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/simplified/ConditionModelReader.java @@ -2,12 +2,13 @@ package net.momirealms.craftengine.core.pack.model.simplified; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.util.Key; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; import java.util.Map; -public class ConditionModelReader implements SimplifiedModelReader { +public final class ConditionModelReader implements SimplifiedModelReader { public static final ConditionModelReader FISHING_ROD = new ConditionModelReader("fishing_rod", "fishing_rod/cast", "_cast"); public static final ConditionModelReader ELYTRA = new ConditionModelReader("generated", "broken", "_broken"); public static final ConditionModelReader SHIELD = new ConditionModelReader("", "using_item", "_blocking"); @@ -58,7 +59,7 @@ public class ConditionModelReader implements SimplifiedModelReader { } @Override - public @Nullable Map convert(List models) { + public @NotNull Map convert(List models) { if (models.size() != 2) { throw new LocalizedResourceConfigException("warning.config.item.simplified_model.invalid_model", "2", String.valueOf(models.size())); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/simplified/CrossbowModelReader.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/simplified/CrossbowModelReader.java index 0c539e21b..ffd9aa509 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/simplified/CrossbowModelReader.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/simplified/CrossbowModelReader.java @@ -2,16 +2,17 @@ package net.momirealms.craftengine.core.pack.model.simplified; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.util.Key; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; import java.util.Map; -public class CrossbowModelReader implements SimplifiedModelReader { +public final class CrossbowModelReader implements SimplifiedModelReader { public static final CrossbowModelReader INSTANCE = new CrossbowModelReader(); @Override - public @Nullable Map convert(List textures, List optionalModelPaths, Key id) { + public @NotNull Map convert(List textures, List optionalModelPaths, Key id) { if (textures.size() != 6) { throw new LocalizedResourceConfigException("warning.config.item.simplified_model.invalid_texture", "6", String.valueOf(textures.size())); } @@ -110,7 +111,7 @@ public class CrossbowModelReader implements SimplifiedModelReader { } @Override - public @Nullable Map convert(List models) { + public @NotNull Map convert(List models) { if (models.size() != 6) { throw new LocalizedResourceConfigException("warning.config.item.simplified_model.invalid_model", "6", String.valueOf(models.size())); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/simplified/GeneratedModelReader.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/simplified/GeneratedModelReader.java index d28c24325..00575b738 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/simplified/GeneratedModelReader.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/simplified/GeneratedModelReader.java @@ -2,13 +2,14 @@ package net.momirealms.craftengine.core.pack.model.simplified; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.util.Key; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.HashMap; import java.util.List; import java.util.Map; -public class GeneratedModelReader implements SimplifiedModelReader { +public final class GeneratedModelReader implements SimplifiedModelReader { public static final GeneratedModelReader GENERATED = new GeneratedModelReader("generated"); public static final GeneratedModelReader HANDHELD = new GeneratedModelReader("handheld"); @@ -49,7 +50,7 @@ public class GeneratedModelReader implements SimplifiedModelReader { } @Override - public @Nullable Map convert(List optionalModelPaths) { + public @NotNull Map convert(List optionalModelPaths) { if (optionalModelPaths.size() >= 2) { return Map.of( "type", "composite", diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java index 7c88cd9ab..5ae1b4ac8 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java @@ -14,7 +14,7 @@ import dev.dejvokep.boostedyaml.utils.format.NodeRole; import net.kyori.adventure.text.Component; import net.momirealms.craftengine.core.entity.furniture.ColliderType; import net.momirealms.craftengine.core.pack.AbstractPackManager; -import net.momirealms.craftengine.core.pack.conflict.resolution.ResolutionConditional; +import net.momirealms.craftengine.core.pack.conflict.resolution.ConditionalResolution; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.PluginProperties; import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; @@ -63,7 +63,7 @@ public class Config { protected boolean resource_pack$remove_tinted_leaves_particle; protected boolean resource_pack$generate_mod_assets; protected boolean resource_pack$override_uniform_font; - protected List resource_pack$duplicated_files_handler; + protected List resource_pack$duplicated_files_handler; protected List resource_pack$merge_external_folders; protected List resource_pack$merge_external_zips; protected Set resource_pack$exclude_file_extensions; @@ -417,7 +417,7 @@ public class Config { try { resource_pack$duplicated_files_handler = config.getMapList("resource-pack.duplicated-files-handler").stream().map(it -> { Map args = MiscUtils.castToMap(it, false); - return ResolutionConditional.FACTORY.create(args); + return (ConditionalResolution) ConditionalResolution.FACTORY.create(args); }).toList(); } catch (LocalizedResourceConfigException e) { TranslationManager.instance().log(e.node(), e.arguments()); @@ -825,7 +825,7 @@ public class Config { return instance.resource_pack$delivery$file_to_upload; } - public static List resolutions() { + public static List resolutions() { return instance.resource_pack$duplicated_files_handler; } 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 a23c7bf4e..425f2dbfe 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 @@ -14,32 +14,32 @@ import java.util.Map; public class CommonConditions { static { - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.HAS_PLAYER, new HasPlayerCondition.FactoryImpl<>()); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.HAS_ITEM, new HasItemCondition.FactoryImpl<>()); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.MATCH_ITEM, new MatchItemCondition.FactoryImpl<>()); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.MATCH_ENTITY, new MatchEntityCondition.FactoryImpl<>()); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.MATCH_BLOCK, new MatchBlockCondition.FactoryImpl<>()); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.MATCH_BLOCK_PROPERTY, new MatchBlockPropertyCondition.FactoryImpl<>()); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.TABLE_BONUS, new TableBonusCondition.FactoryImpl<>()); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.SURVIVES_EXPLOSION, new SurvivesExplosionCondition.FactoryImpl<>()); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.ANY_OF, new AnyOfCondition.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.ALL_OF, new AllOfCondition.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.ENCHANTMENT, new EnchantmentCondition.Factory<>()); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.INVERTED, new InvertedCondition.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.FALLING_BLOCK, new FallingBlockCondition.FactoryImpl<>()); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.RANDOM, new RandomCondition.FactoryImpl<>()); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.DISTANCE, new DistanceCondition.FactoryImpl<>()); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.PERMISSION, new PermissionCondition.FactoryImpl<>()); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.EQUALS, new StringEqualsCondition.FactoryImpl<>()); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.STRING_REGEX, new StringRegexCondition.FactoryImpl<>()); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.STRING_EQUALS, new StringEqualsCondition.FactoryImpl<>()); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.STRING_CONTAINS, new StringContainsCondition.FactoryImpl<>()); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.EXPRESSION, new ExpressionCondition.FactoryImpl<>()); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.IS_NULL, new IsNullCondition.FactoryImpl<>()); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.HAND, new HandCondition.FactoryImpl<>()); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.ON_COOLDOWN, new OnCooldownCondition.FactoryImpl<>()); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.INVENTORY_HAS_ITEM, new InventoryHasItemCondition.FactoryImpl<>()); - register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.MATCH_FURNITURE_VARIANT, new MatchFurnitureVariantCondition.FactoryImpl<>()); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.HAS_PLAYER, HasPlayerCondition.factory()); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.HAS_ITEM, HasItemCondition.factory()); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.MATCH_ITEM, MatchItemCondition.factory()); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.MATCH_ENTITY, MatchEntityCondition.factory()); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.MATCH_BLOCK, MatchBlockCondition.factory()); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.MATCH_BLOCK_PROPERTY, MatchBlockPropertyCondition.factory()); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.TABLE_BONUS, TableBonusCondition.factory()); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.SURVIVES_EXPLOSION, SurvivesExplosionCondition.factory()); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.ANY_OF, AnyOfCondition.factory(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.ALL_OF, AllOfCondition.factory(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.ENCHANTMENT, EnchantmentCondition.factory()); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.INVERTED, InvertedCondition.factory(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.FALLING_BLOCK, FallingBlockCondition.factory()); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.RANDOM, RandomCondition.factory()); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.DISTANCE, DistanceCondition.factory()); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.PERMISSION, PermissionCondition.factory()); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.EQUALS, StringEqualsCondition.factory()); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.STRING_REGEX, StringRegexCondition.factory()); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.STRING_EQUALS, StringEqualsCondition.factory()); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.STRING_CONTAINS, StringContainsCondition.factory()); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.EXPRESSION, ExpressionCondition.factory()); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.IS_NULL, IsNullCondition.factory()); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.HAND, HandCondition.factory()); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.ON_COOLDOWN, OnCooldownCondition.factory()); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.INVENTORY_HAS_ITEM, InventoryHasItemCondition.factory()); + register(net.momirealms.craftengine.core.plugin.context.condition.CommonConditions.MATCH_FURNITURE_VARIANT, MatchFurnitureVariantCondition.factory()); } public static void register(Key key, ConditionFactory factory) { @@ -50,19 +50,15 @@ public class CommonConditions { @SuppressWarnings("unchecked") public static Condition fromMap(Map map) { String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), "warning.config.event.condition.missing_type"); - Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE); - if (type.charAt(0) == '!') { - ConditionFactory factory = BuiltInRegistries.EVENT_CONDITION_FACTORY.getValue(new Key(key.namespace(), key.value().substring(1))); - if (factory == null) { - throw new LocalizedResourceConfigException("warning.config.event.condition.invalid_type", type); - } - return new InvertedCondition<>((Condition) factory.create(map)); - } else { - ConditionFactory factory = BuiltInRegistries.EVENT_CONDITION_FACTORY.getValue(key); - if (factory == null) { - throw new LocalizedResourceConfigException("warning.config.event.condition.invalid_type", type); - } - return (Condition) factory.create(map); + boolean inverted = type.charAt(0) == '!'; + if (inverted) { + type = type.substring(1); } + Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE); + ConditionFactory factory = BuiltInRegistries.EVENT_CONDITION_FACTORY.getValue(key); + if (factory == null) { + throw new LocalizedResourceConfigException("warning.config.event.condition.invalid_type", type); + } + return inverted ? new InvertedCondition<>((Condition) factory.create(map)) : (Condition) factory.create(map); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/CommonFunctions.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/CommonFunctions.java index c020bdd80..26754e086 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/CommonFunctions.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/CommonFunctions.java @@ -15,51 +15,51 @@ import java.util.*; public class CommonFunctions { static { - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.COMMAND, new CommandFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.MESSAGE, new MessageFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.ACTIONBAR, new ActionBarFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.TITLE, new TitleFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.OPEN_WINDOW, new OpenWindowFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.CANCEL_EVENT, new CancelEventFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.RUN, new RunFunction.FactoryImpl<>(CommonFunctions::fromMap, CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.PLACE_BLOCK, new PlaceBlockFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.UPDATE_BLOCK_PROPERTY, new UpdateBlockPropertyFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.TRANSFORM_BLOCK, new TransformBlockFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.BREAK_BLOCK, new BreakBlockFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.UPDATE_INTERACTION_TICK, new UpdateInteractionFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.SET_COUNT, new SetCountFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.DROP_LOOT, new DropLootFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.SWING_HAND, new SwingHandFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.SET_FOOD, new SetFoodFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.SET_SATURATION, new SetSaturationFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.PLAY_SOUND, new PlaySoundFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.PARTICLE, new ParticleFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.POTION_EFFECT, new PotionEffectFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.REMOVE_POTION_EFFECT, new RemovePotionEffectFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.LEVELER_EXP, new LevelerExpFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.SET_COOLDOWN, new SetCooldownFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.REMOVE_COOLDOWN, new RemoveCooldownFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.SPAWN_FURNITURE, new SpawnFurnitureFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.REMOVE_FURNITURE, new RemoveFurnitureFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.REPLACE_FURNITURE, new ReplaceFurnitureFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.ROTATE_FURNITURE, new RotateFurnitureFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.MYTHIC_MOBS_SKILL, new MythicMobsSkillFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.TELEPORT, new TeleportFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.SET_VARIABLE, new SetVariableFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.TOAST, new ToastFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.DAMAGE, new DamageFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.MERCHANT_TRADE, new MerchantTradeFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.REMOVE_ENTITY, new RemoveEntityFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.IF_ELSE, new IfElseFunction.FactoryImpl<>(CommonConditions::fromMap, CommonFunctions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.ALTERNATIVES, new IfElseFunction.FactoryImpl<>(CommonConditions::fromMap, CommonFunctions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.WHEN, new WhenFunction.FactoryImpl<>(CommonConditions::fromMap, CommonFunctions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.DAMAGE_ITEM, new DamageItemFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.CYCLE_BLOCK_PROPERTY, new CycleBlockPropertyFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.SET_EXP, new SetExpFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.SET_LEVEL, new SetLevelFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.PLAY_TOTEM_ANIMATION, new PlayTotemAnimationFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.CLOSE_INVENTORY, new CloseInventoryFunction.FactoryImpl<>(CommonConditions::fromMap)); - register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.CLEAR_ITEM, new ClearItemFunction.FactoryImpl<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.COMMAND, new CommandFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.MESSAGE, new MessageFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.ACTIONBAR, new ActionBarFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.TITLE, new TitleFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.OPEN_WINDOW, new OpenWindowFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.CANCEL_EVENT, new CancelEventFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.RUN, new RunFunction.Factory<>(CommonFunctions::fromMap, CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.PLACE_BLOCK, new PlaceBlockFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.UPDATE_BLOCK_PROPERTY, new UpdateBlockPropertyFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.TRANSFORM_BLOCK, new TransformBlockFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.BREAK_BLOCK, new BreakBlockFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.UPDATE_INTERACTION_TICK, new UpdateInteractionFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.SET_COUNT, new SetCountFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.DROP_LOOT, new DropLootFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.SWING_HAND, new SwingHandFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.SET_FOOD, new SetFoodFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.SET_SATURATION, new SetSaturationFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.PLAY_SOUND, new PlaySoundFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.PARTICLE, new ParticleFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.POTION_EFFECT, new PotionEffectFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.REMOVE_POTION_EFFECT, new RemovePotionEffectFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.LEVELER_EXP, new LevelerExpFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.SET_COOLDOWN, new SetCooldownFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.REMOVE_COOLDOWN, new RemoveCooldownFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.SPAWN_FURNITURE, new SpawnFurnitureFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.REMOVE_FURNITURE, new RemoveFurnitureFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.REPLACE_FURNITURE, new ReplaceFurnitureFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.ROTATE_FURNITURE, new RotateFurnitureFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.MYTHIC_MOBS_SKILL, new MythicMobsSkillFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.TELEPORT, new TeleportFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.SET_VARIABLE, new SetVariableFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.TOAST, new ToastFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.DAMAGE, new DamageFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.MERCHANT_TRADE, new MerchantTradeFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.REMOVE_ENTITY, new RemoveEntityFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.IF_ELSE, new IfElseFunction.Factory<>(CommonConditions::fromMap, CommonFunctions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.ALTERNATIVES, new IfElseFunction.Factory<>(CommonConditions::fromMap, CommonFunctions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.WHEN, new WhenFunction.Factory<>(CommonConditions::fromMap, CommonFunctions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.DAMAGE_ITEM, new DamageItemFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.CYCLE_BLOCK_PROPERTY, new CycleBlockPropertyFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.SET_EXP, new SetExpFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.SET_LEVEL, new SetLevelFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.PLAY_TOTEM_ANIMATION, new PlayTotemAnimationFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.CLOSE_INVENTORY, new CloseInventoryFunction.Factory<>(CommonConditions::fromMap)); + register(net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.CLEAR_ITEM, new ClearItemFunction.Factory<>(CommonConditions::fromMap)); } public static void register(Key key, FunctionFactory factory) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/Condition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/Condition.java index d2b05a7fa..d40a48b9a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/Condition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/Condition.java @@ -1,7 +1,5 @@ package net.momirealms.craftengine.core.plugin.context; -import net.momirealms.craftengine.core.util.Key; - import java.util.function.Predicate; public interface Condition extends Predicate { @@ -10,6 +8,4 @@ public interface Condition extends Predicate { default boolean test(CTX ctx) { return false; } - - Key type(); } 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 761f07dc7..d37eeadcc 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 @@ -3,7 +3,6 @@ package net.momirealms.craftengine.core.plugin.context.condition; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; @@ -13,8 +12,8 @@ import java.util.Map; import java.util.function.Function; import java.util.function.Predicate; -public class AllOfCondition implements Condition { - protected final Predicate condition; +public final class AllOfCondition implements Condition { + private final Predicate condition; public AllOfCondition(List> conditions) { this.condition = MiscUtils.allOf(conditions); @@ -25,17 +24,11 @@ public class AllOfCondition implements Condition { return this.condition.test(ctx); } - @Override - public Key type() { - return CommonConditions.ALL_OF; + public static ConditionFactory factory(Function, Condition> factory) { + return new Factory<>(factory); } - public static class FactoryImpl implements ConditionFactory { - private final Function, Condition> factory; - - public FactoryImpl(Function, Condition> factory) { - this.factory = factory; - } + private record Factory(Function, Condition> factory) implements ConditionFactory { @SuppressWarnings("unchecked") @Override 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 127070193..f2ccdbda6 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 @@ -5,19 +5,21 @@ import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.util.Key; import java.util.Map; +import java.util.function.Function; -public class AlwaysFalseCondition implements Condition { +public final class AlwaysFalseCondition implements Condition { + public static final AlwaysFalseCondition INSTANCE = new AlwaysFalseCondition<>(); - @Override - public Key type() { - return CommonConditions.ALWAYS_FALSE; + public static ConditionFactory factory() { + return new FactoryImpl<>(); } - public static class FactoryImpl implements ConditionFactory { + private static class FactoryImpl implements ConditionFactory { + @SuppressWarnings("unchecked") @Override public Condition create(Map arguments) { - return new AlwaysFalseCondition<>(); + return (Condition) 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 c36d53cb9..0f775059d 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 @@ -2,27 +2,27 @@ package net.momirealms.craftengine.core.plugin.context.condition; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; -import net.momirealms.craftengine.core.util.Key; import java.util.Map; -public class AlwaysTrueCondition implements Condition { - - @Override - public Key type() { - return CommonConditions.ALWAYS_TRUE; - } +public final class AlwaysTrueCondition implements Condition { + public static final AlwaysTrueCondition INSTANCE = new AlwaysTrueCondition(); @Override public boolean test(CTX ctx) { return true; } - public static class FactoryImpl implements ConditionFactory { + public static ConditionFactory factory() { + return new Factory<>(); + } + private static class Factory implements ConditionFactory { + + @SuppressWarnings("unchecked") @Override public Condition create(Map arguments) { - return new AlwaysTrueCondition<>(); + return (Condition) INSTANCE; } } } 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 278bb9421..2bc4c6aa6 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 @@ -13,8 +13,8 @@ import java.util.Map; import java.util.function.Function; import java.util.function.Predicate; -public class AnyOfCondition implements Condition { - protected final Predicate condition; +public final class AnyOfCondition implements Condition { + private final Predicate condition; public AnyOfCondition(List> conditions) { this.condition = MiscUtils.anyOf(conditions); @@ -25,17 +25,11 @@ public class AnyOfCondition implements Condition { return this.condition.test(ctx); } - @Override - public Key type() { - return CommonConditions.ANY_OF; + public static ConditionFactory factory(Function, Condition> factory) { + return new Factory<>(factory); } - public static class FactoryImpl implements ConditionFactory { - private final Function, Condition> factory; - - public FactoryImpl(Function, Condition> factory) { - this.factory = factory; - } + private record Factory(Function, Condition> factory) implements ConditionFactory { @SuppressWarnings("unchecked") @Override 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 24920e9c8..61c2123cc 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 @@ -6,14 +6,13 @@ import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.world.WorldPosition; import java.util.Map; import java.util.Optional; // TODO It's designed for players for the moment, better using entities -public class DistanceCondition implements Condition { +public final class DistanceCondition implements Condition { private final NumberProvider min; private final NumberProvider max; @@ -22,11 +21,6 @@ public class DistanceCondition implements Condition { this.min = min; } - @Override - public Key type() { - return CommonConditions.DISTANCE; - } - @Override public boolean test(CTX ctx) { float min = this.min.getFloat(ctx); @@ -56,7 +50,11 @@ public class DistanceCondition implements Condition { return distanceSquared >= minSquared && distanceSquared <= maxSquared; } - public static class FactoryImpl implements ConditionFactory { + public static ConditionFactory factory() { + return new Factory<>(); + } + + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { 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 fe756f1ff..b6ec74153 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 @@ -13,7 +13,7 @@ import java.util.Map; import java.util.Optional; import java.util.function.Function; -public class EnchantmentCondition implements Condition { +public final class EnchantmentCondition implements Condition { private final Key id; private final Function expression; @@ -22,11 +22,6 @@ public class EnchantmentCondition implements Condition this.id = id; } - @Override - public Key type() { - return CommonConditions.ENCHANTMENT; - } - @Override public boolean test(CTX ctx) { Optional> item = ctx.getOptionalParameter(DirectContextParameters.ITEM_IN_HAND); @@ -36,7 +31,11 @@ public class EnchantmentCondition implements Condition return this.expression.apply(level); } - public static class Factory implements ConditionFactory { + public static ConditionFactory factory() { + return new Factory<>(); + } + + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { 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 b378df015..04c8e592e 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 @@ -8,23 +8,17 @@ import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.text.TextProvider; import net.momirealms.craftengine.core.plugin.context.text.TextProviders; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; -public class ExpressionCondition implements Condition { +public final class ExpressionCondition implements Condition { private final TextProvider expression; public ExpressionCondition(TextProvider expression) { this.expression = expression; } - @Override - public Key type() { - return CommonConditions.EXPRESSION; - } - @Override public boolean test(CTX ctx) { String exp = this.expression.get(ctx).replace("\\<", "<"); // fixme minimessage added a \ before < @@ -37,7 +31,11 @@ public class ExpressionCondition implements Condition } } - public static class FactoryImpl implements ConditionFactory { + public static ConditionFactory factory() { + return new Factory<>(); + } + + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { 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 be4055055..acebcf234 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 @@ -3,23 +3,21 @@ package net.momirealms.craftengine.core.plugin.context.condition; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.util.Key; import java.util.Map; -public class FallingBlockCondition implements Condition { - - @Override - public Key type() { - return CommonConditions.FALLING_BLOCK; - } +public final class FallingBlockCondition implements Condition { @Override public boolean test(CTX ctx) { return ctx.getOptionalParameter(DirectContextParameters.FALLING_BLOCK).orElse(false); } - public static class FactoryImpl implements ConditionFactory { + public static ConditionFactory factory() { + return new Factory<>(); + } + + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { 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 eea93f8c8..1f53f5ee3 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 @@ -6,25 +6,19 @@ import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.util.EnumUtils; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Locale; import java.util.Map; import java.util.Optional; -public class HandCondition implements Condition { +public final class HandCondition implements Condition { private final InteractionHand hand; public HandCondition(InteractionHand hand) { this.hand = hand; } - @Override - public Key type() { - return CommonConditions.HAND; - } - @Override public boolean test(CTX ctx) { Optional optional = ctx.getOptionalParameter(DirectContextParameters.HAND); @@ -35,7 +29,11 @@ public class HandCondition implements Condition { return false; } - public static class FactoryImpl implements ConditionFactory { + public static ConditionFactory factory() { + return new Factory<>(); + } + + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { 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 213ffd206..766ae7505 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 @@ -5,21 +5,15 @@ import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; import net.momirealms.craftengine.core.util.ItemUtils; -import net.momirealms.craftengine.core.util.Key; import java.util.Map; import java.util.Optional; -public class HasItemCondition implements Condition { +public final class HasItemCondition implements Condition { public HasItemCondition() { } - @Override - public Key type() { - return CommonConditions.HAS_ITEM; - } - @Override public boolean test(CTX ctx) { Optional> item = ctx.getOptionalParameter(DirectContextParameters.ITEM_IN_HAND); @@ -28,7 +22,11 @@ public class HasItemCondition implements Condition { return !ItemUtils.isEmpty(itemInHand); } - public static class FactoryImpl implements ConditionFactory { + public static ConditionFactory factory() { + return new Factory<>(); + } + + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { 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 69d6f211e..672073880 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 @@ -3,20 +3,14 @@ package net.momirealms.craftengine.core.plugin.context.condition; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; -import net.momirealms.craftengine.core.util.Key; import java.util.Map; -public class HasPlayerCondition implements Condition { +public final class HasPlayerCondition implements Condition { public HasPlayerCondition() { } - @Override - public Key type() { - return CommonConditions.HAS_PLAYER; - } - @Override public boolean test(CTX ctx) { if (ctx instanceof PlayerOptionalContext context) { @@ -25,7 +19,11 @@ public class HasPlayerCondition implements Condition { return false; } - public static class FactoryImpl implements ConditionFactory { + public static ConditionFactory factory() { + return new Factory<>(); + } + + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { 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 432074e5d..7074ecc43 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 @@ -12,7 +12,7 @@ import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; import java.util.Optional; -public class InventoryHasItemCondition implements Condition { +public final class InventoryHasItemCondition implements Condition { private final Key itemId; private final NumberProvider count; @@ -21,11 +21,6 @@ public class InventoryHasItemCondition implements Condition this.count = count; } - @Override - public Key type() { - return CommonConditions.INVENTORY_HAS_ITEM; - } - @Override public boolean test(CTX ctx) { Optional optionalPlayer = ctx.getOptionalParameter(DirectContextParameters.PLAYER); @@ -36,7 +31,11 @@ public class InventoryHasItemCondition implements Condition return player.clearOrCountMatchingInventoryItems(this.itemId, 0) >= this.count.getInt(ctx); } - public static class FactoryImpl implements ConditionFactory { + public static ConditionFactory factory() { + return new Factory<>(); + } + + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { 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 059339456..e1a891623 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 @@ -3,7 +3,6 @@ package net.momirealms.craftengine.core.plugin.context.condition; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; @@ -12,7 +11,7 @@ import java.util.List; import java.util.Map; import java.util.function.Function; -public class InvertedCondition implements Condition { +public final class InvertedCondition implements Condition { protected final Condition condition; public InvertedCondition(Condition condition) { @@ -24,17 +23,11 @@ public class InvertedCondition implements Condition { return !this.condition.test(ctx); } - @Override - public Key type() { - return CommonConditions.INVERTED; + public static ConditionFactory factory(Function, Condition> factory) { + return new Factory<>(factory); } - public static class FactoryImpl implements ConditionFactory { - private final Function, Condition> factory; - - public FactoryImpl(Function, Condition> factory) { - this.factory = factory; - } + private record Factory(Function, Condition> factory) implements ConditionFactory { @SuppressWarnings("unchecked") @Override @@ -43,7 +36,7 @@ public class InvertedCondition implements Condition { ResourceConfigUtils.get(arguments, "term", "terms"), "warning.config.condition.inverted.missing_term" ); - if (termObj instanceof Map map) { + if (termObj instanceof Map map) { return new InvertedCondition<>(this.factory.apply(MiscUtils.castToMap(map, false))); } else if (termObj instanceof List list) { List> conditions = new ArrayList<>(); diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/IsNullCondition.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/IsNullCondition.java index 010221218..5c5655dc0 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/IsNullCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/condition/IsNullCondition.java @@ -3,31 +3,29 @@ package net.momirealms.craftengine.core.plugin.context.condition; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.ContextKey; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; import java.util.Optional; -public class IsNullCondition implements Condition { +public final class IsNullCondition implements Condition { private final ContextKey key; public IsNullCondition(ContextKey key) { this.key = key; } - @Override - public Key type() { - return CommonConditions.IS_NULL; - } - @Override public boolean test(CTX ctx) { Optional optional = ctx.getOptionalParameter(this.key); return optional.isEmpty(); } - public static class FactoryImpl implements ConditionFactory { + public static ConditionFactory factory() { + return new Factory<>(); + } + + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { 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 7f5e977c4..89fd7b135 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 @@ -6,7 +6,6 @@ import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.world.ExistingBlock; @@ -15,7 +14,7 @@ import net.momirealms.craftengine.core.world.WorldPosition; import java.util.*; -public class MatchBlockCondition implements Condition { +public final class MatchBlockCondition implements Condition { private final Set ids; private final boolean regexMatch; private final NumberProvider x; @@ -30,11 +29,6 @@ public class MatchBlockCondition implements Condition this.z = z; } - @Override - public Key type() { - return CommonConditions.MATCH_BLOCK; - } - @Override public boolean test(CTX ctx) { Optional optionalWorldPosition = ctx.getOptionalParameter(DirectContextParameters.POSITION); @@ -46,7 +40,11 @@ public class MatchBlockCondition implements Condition return false; } - public static class FactoryImpl implements ConditionFactory { + public static ConditionFactory factory() { + return new Factory<>(); + } + + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { 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 41db9e150..9f4297d7d 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 @@ -7,7 +7,6 @@ import net.momirealms.craftengine.core.block.properties.Property; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.Pair; import net.momirealms.craftengine.core.util.ResourceConfigUtils; @@ -15,18 +14,13 @@ import net.momirealms.craftengine.core.world.ExistingBlock; import java.util.*; -public class MatchBlockPropertyCondition implements Condition { +public final class MatchBlockPropertyCondition implements Condition { private final List> properties; public MatchBlockPropertyCondition(List> properties) { this.properties = properties; } - @Override - public Key type() { - return CommonConditions.MATCH_BLOCK_PROPERTY; - } - @Override public boolean test(CTX ctx) { ImmutableBlockState customBlockState = null; @@ -74,7 +68,11 @@ public class MatchBlockPropertyCondition implements Conditi return true; } - public static class FactoryImpl implements ConditionFactory { + public static ConditionFactory factory() { + return new Factory<>(); + } + + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { 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 c1a92cedc..b4dc9171b 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 @@ -5,13 +5,12 @@ import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.*; -public class MatchEntityCondition implements Condition { +public final class MatchEntityCondition implements Condition { private final Set ids; private final boolean regexMatch; @@ -20,18 +19,17 @@ public class MatchEntityCondition implements Condition this.regexMatch = regexMatch; } - @Override - public Key type() { - return CommonConditions.MATCH_ENTITY; - } - @Override public boolean test(CTX ctx) { Optional entity = ctx.getOptionalParameter(DirectContextParameters.ENTITY); return entity.filter(value -> MiscUtils.matchRegex(value.type().asString(), this.ids, this.regexMatch)).isPresent(); } - public static class FactoryImpl implements ConditionFactory { + public static ConditionFactory factory() { + return new Factory<>(); + } + + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { 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 31ded2c60..72eabb618 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 @@ -4,31 +4,29 @@ import net.momirealms.craftengine.core.entity.furniture.Furniture; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.*; -public class MatchFurnitureVariantCondition implements Condition { +public final class MatchFurnitureVariantCondition implements Condition { private final Set variants; public MatchFurnitureVariantCondition(Collection variants) { this.variants = new HashSet<>(variants); } - @Override - public Key type() { - return CommonConditions.MATCH_FURNITURE_VARIANT; - } - @Override public boolean test(CTX ctx) { Optional furniture = ctx.getOptionalParameter(DirectContextParameters.FURNITURE); return furniture.filter(value -> this.variants.contains(value.getCurrentVariant().name())).isPresent(); } - public static class FactoryImpl implements ConditionFactory { + public static ConditionFactory factory() { + return new Factory<>(); + } + + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { 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 ae467cf1b..1bdddef7b 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 @@ -5,13 +5,12 @@ import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.*; -public class MatchItemCondition implements Condition { +public final class MatchItemCondition implements Condition { private final Set ids; private final boolean regexMatch; @@ -20,18 +19,17 @@ public class MatchItemCondition implements Condition { this.regexMatch = regexMatch; } - @Override - public Key type() { - return CommonConditions.MATCH_ITEM; - } - @Override public boolean test(CTX ctx) { Optional> item = ctx.getOptionalParameter(DirectContextParameters.ITEM_IN_HAND); return item.filter(value -> MiscUtils.matchRegex(value.id().asString(), this.ids, this.regexMatch)).isPresent(); } - public static class FactoryImpl implements ConditionFactory { + public static ConditionFactory factory() { + return new Factory<>(); + } + + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { 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 fd47802b5..287a85d93 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 @@ -4,24 +4,18 @@ import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; import java.util.Optional; -public class OnCooldownCondition implements Condition { +public final class OnCooldownCondition implements Condition { private final String key; public OnCooldownCondition(String key) { this.key = key; } - @Override - public Key type() { - return CommonConditions.ON_COOLDOWN; - } - @Override public boolean test(CTX ctx) { Optional player = ctx.getOptionalParameter(DirectContextParameters.PLAYER); @@ -32,7 +26,11 @@ public class OnCooldownCondition implements Condition return false; } - public static class FactoryImpl implements ConditionFactory { + public static ConditionFactory factory() { + return new Factory<>(); + } + + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { 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 2a7a7f829..61046241a 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 @@ -4,31 +4,29 @@ import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; import java.util.Optional; -public class PermissionCondition implements Condition { +public final class PermissionCondition implements Condition { private final String permission; public PermissionCondition(String permission) { this.permission = permission; } - @Override - public Key type() { - return CommonConditions.PERMISSION; - } - @Override public boolean test(CTX ctx) { Optional player = ctx.getOptionalParameter(DirectContextParameters.PLAYER); return player.map(value -> value.hasPermission(this.permission)).orElse(false); } - public static class FactoryImpl implements ConditionFactory { + public static ConditionFactory factory() { + return new Factory<>(); + } + + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { 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 68b44f5da..80058b782 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 @@ -5,13 +5,12 @@ import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.RandomUtils; import java.util.Map; import java.util.Optional; -public class RandomCondition implements Condition { +public final class RandomCondition implements Condition { private final NumberProvider chance; private final boolean previous; @@ -20,11 +19,6 @@ public class RandomCondition implements Condition { this.previous = previous; } - @Override - public Key type() { - return CommonConditions.RANDOM; - } - @Override public boolean test(CTX ctx) { if (this.previous) { @@ -38,7 +32,11 @@ public class RandomCondition implements Condition { } } - public static class FactoryImpl implements ConditionFactory { + public static ConditionFactory factory() { + return new Factory<>(); + } + + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { 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 702bc54d9..f3f903190 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 @@ -4,12 +4,11 @@ import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.text.TextProvider; import net.momirealms.craftengine.core.plugin.context.text.TextProviders; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; -public class StringContainsCondition implements Condition { +public final class StringContainsCondition implements Condition { private final TextProvider value1; private final TextProvider value2; @@ -18,17 +17,16 @@ public class StringContainsCondition implements Condition implements ConditionFactory { + public static ConditionFactory factory() { + return new Factory<>(); + } + + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { 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 d00160f58..8f1c01609 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 @@ -4,12 +4,11 @@ import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.text.TextProvider; import net.momirealms.craftengine.core.plugin.context.text.TextProviders; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; -public class StringEqualsCondition implements Condition { +public final class StringEqualsCondition implements Condition { private final TextProvider value1; private final TextProvider value2; @@ -18,17 +17,16 @@ public class StringEqualsCondition implements Condition implements ConditionFactory { + public static ConditionFactory factory() { + return new Factory<>(); + } + + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { 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 122e14bf2..77578c301 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 @@ -4,12 +4,11 @@ import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.text.TextProvider; import net.momirealms.craftengine.core.plugin.context.text.TextProviders; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; -public class StringRegexCondition implements Condition { +public final class StringRegexCondition implements Condition { private final TextProvider value; private final TextProvider regex; @@ -18,17 +17,16 @@ public class StringRegexCondition implements Condition this.regex = regex; } - @Override - public Key type() { - return CommonConditions.STRING_REGEX; - } - @Override public boolean test(CTX ctx) { return this.value.get(ctx).matches(this.regex.get(ctx)); } - public static class FactoryImpl implements ConditionFactory { + public static ConditionFactory factory() { + return new Factory<>(); + } + + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { 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 ca2713f75..2c9a3fd81 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 @@ -3,18 +3,12 @@ package net.momirealms.craftengine.core.plugin.context.condition; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.RandomUtils; import java.util.Map; import java.util.Optional; -public class SurvivesExplosionCondition implements Condition { - - @Override - public Key type() { - return CommonConditions.SURVIVES_EXPLOSION; - } +public final class SurvivesExplosionCondition implements Condition { @Override public boolean test(CTX ctx) { @@ -26,7 +20,11 @@ public class SurvivesExplosionCondition implements Conditio return true; } - public static class FactoryImpl implements ConditionFactory { + public static ConditionFactory factory() { + return new Factory<>(); + } + + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { 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 20c6fd81a..f5d9049bf 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 @@ -15,7 +15,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; -public class TableBonusCondition implements Condition { +public final class TableBonusCondition implements Condition { private final Key enchantmentType; private final List values; @@ -24,11 +24,6 @@ public class TableBonusCondition implements Condition this.values = values; } - @Override - public Key type() { - return CommonConditions.TABLE_BONUS; - } - @Override public boolean test(CTX ctx) { Optional> item = ctx.getOptionalParameter(DirectContextParameters.ITEM_IN_HAND); @@ -37,7 +32,11 @@ public class TableBonusCondition implements Condition return RandomUtils.generateRandomFloat(0, 1) < f; } - public static class FactoryImpl implements ConditionFactory { + public static ConditionFactory factory() { + return new Factory<>(); + } + + private static class Factory implements ConditionFactory { @Override public Condition create(Map arguments) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ActionBarFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ActionBarFunction.java index bcd5041cb..33a5ea143 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ActionBarFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ActionBarFunction.java @@ -6,7 +6,6 @@ import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextPar import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelector; import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelectors; import net.momirealms.craftengine.core.util.AdventureHelper; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import org.jetbrains.annotations.Nullable; @@ -37,14 +36,9 @@ public class ActionBarFunction extends AbstractConditionalF } } - @Override - public Key type() { - return CommonFunctions.ACTIONBAR; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/AllOfFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/AllOfFunction.java index 1f2810c24..77fac3112 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/AllOfFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/AllOfFunction.java @@ -23,9 +23,4 @@ public class AllOfFunction implements Function { function.run(ctx); } } - - @Override - public Key type() { - return CommonFunctions.ALL_OF; - } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/BreakBlockFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/BreakBlockFunction.java index ad9543d18..c36ab8bba 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/BreakBlockFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/BreakBlockFunction.java @@ -6,7 +6,6 @@ import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; import java.util.List; @@ -31,14 +30,9 @@ public class BreakBlockFunction extends AbstractConditional optionalPlayer.ifPresent(player -> player.breakBlock(MiscUtils.floor(x.getDouble(ctx)), MiscUtils.floor(y.getDouble(ctx)), MiscUtils.floor(z.getDouble(ctx)))); } - @Override - public Key type() { - return CommonFunctions.BREAK_BLOCK; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/CancelEventFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/CancelEventFunction.java index 4c75c7eb9..5594a6f84 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/CancelEventFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/CancelEventFunction.java @@ -4,7 +4,6 @@ import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; import net.momirealms.craftengine.core.util.Cancellable; -import net.momirealms.craftengine.core.util.Key; import java.util.List; import java.util.Map; @@ -22,14 +21,9 @@ public class CancelEventFunction extends AbstractConditiona cancellable.ifPresent(value -> value.setCancelled(true)); } - @Override - public Key type() { - return CommonFunctions.CANCEL_EVENT; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ClearItemFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ClearItemFunction.java index 578266f53..58534900e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ClearItemFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ClearItemFunction.java @@ -33,14 +33,9 @@ public class ClearItemFunction extends AbstractConditionalF player.clearOrCountMatchingInventoryItems(itemId, count.getInt(ctx)); } - @Override - public Key type() { - return CommonFunctions.CLEAR_ITEM; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/CloseInventoryFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/CloseInventoryFunction.java index 4b99be7dd..2a5fa249f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/CloseInventoryFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/CloseInventoryFunction.java @@ -6,7 +6,6 @@ import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelector; import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelectors; -import net.momirealms.craftengine.core.util.Key; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -31,14 +30,9 @@ public class CloseInventoryFunction extends AbstractConditi } } - @Override - public Key type() { - return CommonFunctions.CLOSE_INVENTORY; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/CommandFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/CommandFunction.java index fc6c360fa..1e30043c1 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/CommandFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/CommandFunction.java @@ -9,7 +9,6 @@ import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelector; import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelectors; import net.momirealms.craftengine.core.plugin.context.text.TextProvider; import net.momirealms.craftengine.core.plugin.context.text.TextProviders; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import org.jetbrains.annotations.Nullable; @@ -63,14 +62,9 @@ public class CommandFunction extends AbstractConditionalFun } } - @Override - public Key type() { - return CommonFunctions.COMMAND; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/CycleBlockPropertyFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/CycleBlockPropertyFunction.java index 393468694..1a610e6a6 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/CycleBlockPropertyFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/CycleBlockPropertyFunction.java @@ -8,7 +8,6 @@ import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.world.World; @@ -79,14 +78,9 @@ public class CycleBlockPropertyFunction extends AbstractCon return wrapper.withProperty(this.property, mapValue); } - @Override - public Key type() { - return CommonFunctions.CYCLE_BLOCK_PROPERTY; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DamageFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DamageFunction.java index 6fd52692b..3b58a4247 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DamageFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DamageFunction.java @@ -29,14 +29,9 @@ public class DamageFunction extends AbstractConditionalFunc selector.get(ctx).forEach(p -> p.damage(amount.getDouble(ctx), damageType, null)); } - @Override - public Key type() { - return CommonFunctions.DAMAGE; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DamageItemFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DamageItemFunction.java index e8fdd84a8..198e1278a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DamageItemFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DamageItemFunction.java @@ -9,7 +9,6 @@ import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.util.Key; import java.util.List; import java.util.Map; @@ -37,14 +36,9 @@ public class DamageItemFunction extends AbstractConditional item.hurtAndBreak(amount.getInt(ctx), player, slot); } - @Override - public Key type() { - return CommonFunctions.DAMAGE_ITEM; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DropLootFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DropLootFunction.java index 8fa3930ac..62986492c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DropLootFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DropLootFunction.java @@ -8,7 +8,6 @@ import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.world.World; @@ -54,14 +53,9 @@ public class DropLootFunction extends AbstractConditionalFu } } - @Override - public Key type() { - return CommonFunctions.DROP_LOOT; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DummyFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DummyFunction.java index 080be0808..6c3fa1e12 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DummyFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DummyFunction.java @@ -8,9 +8,4 @@ public class DummyFunction implements Function { @Override public void run(CTX ctx) { } - - @Override - public Key type() { - return CommonFunctions.DUMMY; - } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/Function.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/Function.java index 9296ba624..0c1da132f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/Function.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/Function.java @@ -9,8 +9,6 @@ public interface Function { void run(CTX ctx); - Key type(); - static Function allOf(List> functions) { if (functions == null || functions.isEmpty()) { return new DummyFunction<>(); diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/IfElseFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/IfElseFunction.java index 70611d061..ccd34f5a9 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/IfElseFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/IfElseFunction.java @@ -2,7 +2,6 @@ package net.momirealms.craftengine.core.plugin.context.function; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.Pair; import net.momirealms.craftengine.core.util.ResourceConfigUtils; @@ -29,14 +28,9 @@ public class IfElseFunction extends AbstractConditionalFunc } } - @Override - public Key type() { - return CommonFunctions.IF_ELSE; - } + public static class Factory extends AbstractFunctionalFactory { - public static class FactoryImpl extends AbstractFunctionalFactory { - - public FactoryImpl(java.util.function.Function, Condition> conditionFactory, java.util.function.Function, Function> functionFactory) { + public Factory(java.util.function.Function, Condition> conditionFactory, java.util.function.Function, Function> functionFactory) { super(conditionFactory, functionFactory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/LevelerExpFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/LevelerExpFunction.java index faa46b884..cf34029f0 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/LevelerExpFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/LevelerExpFunction.java @@ -8,7 +8,6 @@ import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelector; import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelectors; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.List; @@ -43,14 +42,9 @@ public class LevelerExpFunction extends AbstractConditional } } - @Override - public Key type() { - return CommonFunctions.LEVELER_EXP; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/MerchantTradeFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/MerchantTradeFunction.java index b550c642e..099ae1000 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/MerchantTradeFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/MerchantTradeFunction.java @@ -48,14 +48,9 @@ public class MerchantTradeFunction extends AbstractConditio } } - @Override - public Key type() { - return CommonFunctions.MESSAGE; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/MessageFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/MessageFunction.java index c69d3663e..ee05d86fd 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/MessageFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/MessageFunction.java @@ -6,7 +6,6 @@ import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextPar import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelector; import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelectors; import net.momirealms.craftengine.core.util.AdventureHelper; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import org.jetbrains.annotations.Nullable; @@ -44,14 +43,9 @@ public class MessageFunction extends AbstractConditionalFun } } - @Override - public Key type() { - return CommonFunctions.MESSAGE; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/MythicMobsSkillFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/MythicMobsSkillFunction.java index 9d97eb14c..20d8efe9c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/MythicMobsSkillFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/MythicMobsSkillFunction.java @@ -4,7 +4,6 @@ import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.List; @@ -27,14 +26,9 @@ public class MythicMobsSkillFunction extends AbstractCondit }); } - @Override - public Key type() { - return CommonFunctions.MYTHIC_MOBS_SKILL; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/OpenWindowFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/OpenWindowFunction.java index bbe2fe3d0..c6e2cabd7 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/OpenWindowFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/OpenWindowFunction.java @@ -10,7 +10,6 @@ import net.momirealms.craftengine.core.plugin.gui.GuiType; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.util.AdventureHelper; import net.momirealms.craftengine.core.util.EnumUtils; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import org.jetbrains.annotations.Nullable; @@ -51,14 +50,9 @@ public class OpenWindowFunction extends AbstractConditional } } - @Override - public Key type() { - return CommonFunctions.OPEN_WINDOW; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ParticleFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ParticleFunction.java index dd4f29458..fb59fb091 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ParticleFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ParticleFunction.java @@ -3,7 +3,6 @@ package net.momirealms.craftengine.core.plugin.context.function; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.world.Position; import net.momirealms.craftengine.core.world.Vec3d; import net.momirealms.craftengine.core.world.World; @@ -32,14 +31,9 @@ public class ParticleFunction extends AbstractConditionalFu } } - @Override - public Key type() { - return CommonFunctions.PARTICLE; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/PlaceBlockFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/PlaceBlockFunction.java index f71b2ae08..6b514efba 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/PlaceBlockFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/PlaceBlockFunction.java @@ -8,7 +8,6 @@ import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.LazyReference; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; @@ -44,14 +43,9 @@ public class PlaceBlockFunction extends AbstractConditional } } - @Override - public Key type() { - return CommonFunctions.PLACE_BLOCK; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/PlaySoundFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/PlaySoundFunction.java index cc71ff1ba..190ddfe49 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/PlaySoundFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/PlaySoundFunction.java @@ -60,14 +60,9 @@ public class PlaySoundFunction extends AbstractConditionalF } } - @Override - public Key type() { - return CommonFunctions.PLAY_SOUND; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/PlayTotemAnimationFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/PlayTotemAnimationFunction.java index 0b1eb11b7..dd1a7c814 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/PlayTotemAnimationFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/PlayTotemAnimationFunction.java @@ -72,14 +72,9 @@ public class PlayTotemAnimationFunction extends AbstractCon } } - @Override - public Key type() { - return CommonFunctions.PLAY_TOTEM_ANIMATION; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/PotionEffectFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/PotionEffectFunction.java index cf87e324c..e124f036d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/PotionEffectFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/PotionEffectFunction.java @@ -45,14 +45,9 @@ public class PotionEffectFunction extends AbstractCondition } } - @Override - public Key type() { - return CommonFunctions.POTION_EFFECT; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RemoveCooldownFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RemoveCooldownFunction.java index 5beae2853..7cc0e35be 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RemoveCooldownFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RemoveCooldownFunction.java @@ -7,7 +7,6 @@ import net.momirealms.craftengine.core.plugin.context.CooldownData; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelector; import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelectors; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.List; @@ -44,14 +43,9 @@ public class RemoveCooldownFunction extends AbstractConditi } } - @Override - public Key type() { - return CommonFunctions.REMOVE_COOLDOWN; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RemoveEntityFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RemoveEntityFunction.java index 7bc203203..ed8119b80 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RemoveEntityFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RemoveEntityFunction.java @@ -4,7 +4,6 @@ import net.momirealms.craftengine.core.entity.Entity; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.util.Key; import java.util.List; import java.util.Map; @@ -20,14 +19,9 @@ public class RemoveEntityFunction extends AbstractCondition ctx.getOptionalParameter(DirectContextParameters.ENTITY).ifPresent(Entity::remove); } - @Override - public Key type() { - return CommonFunctions.REMOVE_ENTITY; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RemoveFurnitureFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RemoveFurnitureFunction.java index 3fb802c80..480e6b5fb 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RemoveFurnitureFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RemoveFurnitureFunction.java @@ -11,7 +11,6 @@ import net.momirealms.craftengine.core.plugin.context.ContextHolder; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; import net.momirealms.craftengine.core.sound.SoundData; import net.momirealms.craftengine.core.sound.SoundSource; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.world.World; import net.momirealms.craftengine.core.world.WorldPosition; @@ -65,14 +64,9 @@ public class RemoveFurnitureFunction extends AbstractCondit } } - @Override - public Key type() { - return CommonFunctions.REMOVE_FURNITURE; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RemovePotionEffectFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RemovePotionEffectFunction.java index 70af392c1..d9d0d22a1 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RemovePotionEffectFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RemovePotionEffectFunction.java @@ -39,14 +39,9 @@ public class RemovePotionEffectFunction extends AbstractCon } } - @Override - public Key type() { - return CommonFunctions.REMOVE_POTION_EFFECT; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ReplaceFurnitureFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ReplaceFurnitureFunction.java index c2bfed095..67244ffbc 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ReplaceFurnitureFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ReplaceFurnitureFunction.java @@ -65,14 +65,9 @@ public class ReplaceFurnitureFunction extends AbstractCondi } } - @Override - public Key type() { - return CommonFunctions.REPLACE_FURNITURE; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RotateFurnitureFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RotateFurnitureFunction.java index e81e52bad..0e3dbefd5 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RotateFurnitureFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RotateFurnitureFunction.java @@ -7,7 +7,6 @@ import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.world.WorldPosition; @@ -48,18 +47,13 @@ public class RotateFurnitureFunction extends AbstractCondit }); } - @Override - public Key type() { - return net.momirealms.craftengine.core.plugin.context.function.CommonFunctions.ROTATE_FURNITURE; - } - public NumberProvider degree() { return this.degree; } - public static class FactoryImpl extends AbstractFactory { + public static class Factory extends AbstractFactory { - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RunFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RunFunction.java index 154bbc919..666c1ce65 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RunFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RunFunction.java @@ -6,7 +6,6 @@ import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.util.VersionHelper; @@ -53,15 +52,10 @@ public class RunFunction extends AbstractConditionalFunctio } } - @Override - public Key type() { - return CommonFunctions.RUN; - } - - public static class FactoryImpl extends AbstractFactory { + public static class Factory extends AbstractFactory { private final java.util.function.Function, Function> functionFactory; - public FactoryImpl(java.util.function.Function, Function> functionFactory, java.util.function.Function, Condition> conditionFactory) { + public Factory(java.util.function.Function, Function> functionFactory, java.util.function.Function, Condition> conditionFactory) { super(conditionFactory); this.functionFactory = functionFactory; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetCooldownFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetCooldownFunction.java index a773bdcb1..20d6fbd1c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetCooldownFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetCooldownFunction.java @@ -7,7 +7,6 @@ import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelector; import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelectors; import net.momirealms.craftengine.core.plugin.context.text.TextProvider; import net.momirealms.craftengine.core.plugin.context.text.TextProviders; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.util.TimeUtils; @@ -50,14 +49,9 @@ public class SetCooldownFunction extends AbstractConditiona } } - @Override - public Key type() { - return CommonFunctions.SET_COOLDOWN; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetCountFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetCountFunction.java index b6cd3f22d..f4f5372ea 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetCountFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetCountFunction.java @@ -6,7 +6,6 @@ import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.List; @@ -36,14 +35,9 @@ public class SetCountFunction extends AbstractConditionalFu } } - @Override - public Key type() { - return CommonFunctions.SET_COUNT; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetExpFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetExpFunction.java index 5e07b336a..fb4b65f30 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetExpFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetExpFunction.java @@ -7,7 +7,6 @@ import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelector; import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelectors; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.List; @@ -33,12 +32,7 @@ public class SetExpFunction extends AbstractConditionalFunc } } - @Override - public Key type() { - return CommonFunctions.SET_EXP; - } - - public static class FactoryImpl extends AbstractFactory { + public static class Factory extends AbstractFactory { private static final BiConsumer ADD_POINTS = Player::giveExperiencePoints; private static final BiConsumer SET_POINTS = (player, experience) -> { if (experience < player.getXpNeededForNextLevel()) { @@ -46,7 +40,7 @@ public class SetExpFunction extends AbstractConditionalFunc } }; - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetFoodFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetFoodFunction.java index 1c77bab4e..baad27291 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetFoodFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetFoodFunction.java @@ -7,7 +7,6 @@ import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelector; import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelectors; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.List; @@ -39,14 +38,9 @@ public class SetFoodFunction extends AbstractConditionalFun } } - @Override - public Key type() { - return CommonFunctions.SET_FOOD; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetLevelFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetLevelFunction.java index e95194529..2438a0b26 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetLevelFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetLevelFunction.java @@ -7,7 +7,6 @@ import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelector; import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelectors; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.List; @@ -33,16 +32,11 @@ public class SetLevelFunction extends AbstractConditionalFu } } - @Override - public Key type() { - return CommonFunctions.SET_LEVEL; - } - - public static class FactoryImpl extends AbstractFactory { + public static class Factory extends AbstractFactory { private static final BiConsumer ADD_LEVELS = Player::giveExperienceLevels; private static final BiConsumer SET_LEVELS = Player::setExperienceLevels; - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetSaturationFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetSaturationFunction.java index 56fbef9d2..1674fa199 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetSaturationFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetSaturationFunction.java @@ -7,7 +7,6 @@ import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelector; import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelectors; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.List; @@ -39,14 +38,9 @@ public class SetSaturationFunction extends AbstractConditio } } - @Override - public Key type() { - return CommonFunctions.SET_SATURATION; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetVariableFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetVariableFunction.java index 4d8c47419..dceae5e63 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetVariableFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SetVariableFunction.java @@ -10,7 +10,6 @@ import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.plugin.context.text.TextProvider; import net.momirealms.craftengine.core.plugin.context.text.TextProviders; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.List; @@ -36,14 +35,9 @@ public class SetVariableFunction extends AbstractConditiona .ifRight(number -> contexts.withParameter(ContextKey.direct("var_" + this.variableName), asInt ? number.getInt(ctx) : number.getDouble(ctx))); } - @Override - public Key type() { - return CommonFunctions.SET_VARIABLE; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SpawnFurnitureFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SpawnFurnitureFunction.java index e7e91d5e2..523226afa 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SpawnFurnitureFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SpawnFurnitureFunction.java @@ -57,14 +57,9 @@ public class SpawnFurnitureFunction extends AbstractConditi CraftEngine.instance().furnitureManager().furnitureById(furnitureId).ifPresent(furniture -> CraftEngine.instance().furnitureManager().place(position, furniture, FurnitureDataAccessor.ofVariant(variant), playSound)); } - @Override - public Key type() { - return CommonFunctions.SPAWN_FURNITURE; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SwingHandFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SwingHandFunction.java index 3f79089c6..73ff6ec2a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SwingHandFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SwingHandFunction.java @@ -5,7 +5,6 @@ import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.util.Key; import java.util.List; import java.util.Locale; @@ -32,14 +31,9 @@ public class SwingHandFunction extends AbstractConditionalF }); } - @Override - public Key type() { - return CommonFunctions.SWING_HAND; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/TeleportFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/TeleportFunction.java index f207afed2..b43bd3459 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/TeleportFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/TeleportFunction.java @@ -10,7 +10,6 @@ import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelector; import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelectors; import net.momirealms.craftengine.core.plugin.context.text.TextProvider; import net.momirealms.craftengine.core.plugin.context.text.TextProviders; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.world.WorldPosition; import org.jetbrains.annotations.Nullable; @@ -68,14 +67,9 @@ public class TeleportFunction extends AbstractConditionalFu } } - @Override - public Key type() { - return CommonFunctions.TELEPORT; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/TitleFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/TitleFunction.java index 97a56b443..314a4533d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/TitleFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/TitleFunction.java @@ -8,7 +8,6 @@ import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextPar import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelector; import net.momirealms.craftengine.core.plugin.context.selector.PlayerSelectors; import net.momirealms.craftengine.core.util.AdventureHelper; -import net.momirealms.craftengine.core.util.Key; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -53,14 +52,9 @@ public class TitleFunction extends AbstractConditionalFunct } } - @Override - public Key type() { - return CommonFunctions.TITLE; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ToastFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ToastFunction.java index 853cc7c28..1930a8665 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ToastFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ToastFunction.java @@ -49,14 +49,9 @@ public class ToastFunction extends AbstractConditionalFunct } } - @Override - public Key type() { - return CommonFunctions.TOAST; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/TransformBlockFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/TransformBlockFunction.java index 2cd56d21e..a8ba173d0 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/TransformBlockFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/TransformBlockFunction.java @@ -8,7 +8,6 @@ import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.LazyReference; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; @@ -62,14 +61,9 @@ public class TransformBlockFunction extends AbstractConditi } } - @Override - public Key type() { - return CommonFunctions.TRANSFORM_BLOCK; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/UpdateBlockPropertyFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/UpdateBlockPropertyFunction.java index dd079a78c..1d9140cec 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/UpdateBlockPropertyFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/UpdateBlockPropertyFunction.java @@ -7,7 +7,6 @@ import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.world.ExistingBlock; @@ -49,14 +48,9 @@ public class UpdateBlockPropertyFunction extends AbstractCo } } - @Override - public Key type() { - return CommonFunctions.UPDATE_BLOCK_PROPERTY; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } @@ -67,8 +61,7 @@ public class UpdateBlockPropertyFunction extends AbstractCo for (Map.Entry entry : state.entrySet()) { properties.putString(entry.getKey(), String.valueOf(entry.getValue())); } - return new UpdateBlockPropertyFunction<>(getPredicates(arguments), NumberProviders.fromObject(arguments.getOrDefault("x", "")), NumberProviders.fromObject(arguments.getOrDefault("y", "")), NumberProviders.fromObject(arguments.getOrDefault("z", "")), Optional.ofNullable(arguments.get("update-flags")).map(NumberProviders::fromObject).orElse(NumberProviders.direct(UpdateOption.UPDATE_ALL.flags())), properties - ); + return new UpdateBlockPropertyFunction<>(getPredicates(arguments), NumberProviders.fromObject(arguments.getOrDefault("x", "")), NumberProviders.fromObject(arguments.getOrDefault("y", "")), NumberProviders.fromObject(arguments.getOrDefault("z", "")), Optional.ofNullable(arguments.get("update-flags")).map(NumberProviders::fromObject).orElse(NumberProviders.direct(UpdateOption.UPDATE_ALL.flags())), properties); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/UpdateInteractionFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/UpdateInteractionFunction.java index 6ef587ad5..2f7577299 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/UpdateInteractionFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/UpdateInteractionFunction.java @@ -4,7 +4,6 @@ import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters; -import net.momirealms.craftengine.core.util.Key; import java.util.List; import java.util.Map; @@ -22,14 +21,9 @@ public class UpdateInteractionFunction extends AbstractCond cancellable.ifPresent(value -> value.updateLastSuccessfulInteractionTick(value.gameTicks())); } - @Override - public Key type() { - return CommonFunctions.UPDATE_INTERACTION_TICK; - } + public static class Factory extends AbstractFactory { - public static class FactoryImpl extends AbstractFactory { - - public FactoryImpl(java.util.function.Function, Condition> factory) { + public Factory(java.util.function.Function, Condition> factory) { super(factory); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/WhenFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/WhenFunction.java index fa55a77a9..fc2c424ae 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/WhenFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/WhenFunction.java @@ -4,7 +4,6 @@ import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.text.TextProvider; import net.momirealms.craftengine.core.plugin.context.text.TextProviders; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.Pair; import net.momirealms.craftengine.core.util.ResourceConfigUtils; @@ -32,14 +31,9 @@ public class WhenFunction extends AbstractConditionalFuncti function.run(ctx); } - @Override - public Key type() { - return CommonFunctions.IF_ELSE; - } + public static class Factory extends AbstractFunctionalFactory { - public static class FactoryImpl extends AbstractFunctionalFactory { - - public FactoryImpl(java.util.function.Function, Condition> conditionFactory, java.util.function.Function, Function> functionFactory) { + public Factory(java.util.function.Function, Condition> conditionFactory, java.util.function.Function, Function> functionFactory) { super(conditionFactory, functionFactory); } 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 e2d63aea2..be830eb70 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 @@ -25,7 +25,9 @@ import net.momirealms.craftengine.core.loot.entry.LootEntryContainerFactory; import net.momirealms.craftengine.core.loot.function.ApplyBonusCountFunction; import net.momirealms.craftengine.core.loot.function.LootFunctionFactory; 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.ResolutionFactory; +import net.momirealms.craftengine.core.pack.conflict.resolution.ResolutionType; import net.momirealms.craftengine.core.pack.host.ResourcePackHostFactory; import net.momirealms.craftengine.core.pack.model.definition.ItemModelType; import net.momirealms.craftengine.core.pack.model.definition.condition.ConditionPropertyFactory; @@ -65,8 +67,8 @@ 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_FACTORY, 16); public static final Registry FORMULA_FACTORY = createConstantBoundRegistry(Registries.FORMULA_FACTORY, 16); - public static final Registry> PATH_MATCHER_FACTORY = createConstantBoundRegistry(Registries.PATH_MATCHER_FACTORY, 16); - public static final Registry RESOLUTION_FACTORY = createConstantBoundRegistry(Registries.RESOLUTION_FACTORY, 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_FACTORY = createConstantBoundRegistry(Registries.SMITHING_RESULT_PROCESSOR_FACTORY, 16); public static final Registry RESOURCE_PACK_HOST_FACTORY = createConstantBoundRegistry(Registries.RESOURCE_PACK_HOST_FACTORY, 16); public static final Registry> EVENT_FUNCTION_FACTORY = createConstantBoundRegistry(Registries.EVENT_FUNCTION_FACTORY, 128); 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 145e36ad8..841af7631 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 @@ -25,7 +25,9 @@ import net.momirealms.craftengine.core.loot.entry.LootEntryContainerFactory; import net.momirealms.craftengine.core.loot.function.ApplyBonusCountFunction; import net.momirealms.craftengine.core.loot.function.LootFunctionFactory; 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.ResolutionFactory; +import net.momirealms.craftengine.core.pack.conflict.resolution.ResolutionType; import net.momirealms.craftengine.core.pack.host.ResourcePackHostFactory; import net.momirealms.craftengine.core.pack.model.definition.ItemModelType; import net.momirealms.craftengine.core.pack.model.definition.condition.ConditionPropertyFactory; @@ -69,8 +71,8 @@ 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_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("recipe_factory")); public static final ResourceKey> FORMULA_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("formula_factory")); - public static final ResourceKey>> PATH_MATCHER_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("path_matcher_factory")); - public static final ResourceKey> RESOLUTION_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("resolution_factory")); + 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_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("smithing_result_processor_factory")); public static final ResourceKey> RESOURCE_PACK_HOST_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("resource_pack_host_factory")); public static final ResourceKey>> EVENT_FUNCTION_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("event_function_factory"));