From b51ee588a88a1b6848a49d35e117f6ab32a361ba Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Fri, 26 Dec 2025 20:17:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E6=96=B9=E5=9D=97=E8=A1=8C=E4=B8=BAid?= =?UTF-8?q?=E8=BD=AC=E8=87=B3=E5=90=84=E4=B8=AA=E5=AE=9E=E7=8E=B0=E5=86=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bukkit/api/BukkitAdaptors.java | 2 - .../bukkit/api/CraftEngineBlocks.java | 1 - .../bukkit/block/BlockEventListener.java | 1 - .../AbstractCanSurviveBlockBehavior.java | 1 - .../behavior/AttachedStemBlockBehavior.java | 5 +- .../block/behavior/BouncingBlockBehavior.java | 6 +- .../block/behavior/BuddingBlockBehavior.java | 5 +- .../block/behavior/BukkitBlockBehavior.java | 2 +- .../block/behavior/BukkitBlockBehaviors.java | 140 ++++++----------- .../block/behavior/BushBlockBehavior.java | 8 +- .../block/behavior/ButtonBlockBehavior.java | 10 +- .../behavior/ChangeOverTimeBlockBehavior.java | 10 +- .../block/behavior/ChimeBlockBehavior.java | 6 +- .../behavior/ConcretePowderBlockBehavior.java | 6 +- .../block/behavior/CropBlockBehavior.java | 7 +- .../DirectionalAttachedBlockBehavior.java | 5 +- .../block/behavior/DoorBlockBehavior.java | 11 +- .../behavior/DoubleHighBlockBehavior.java | 7 +- .../behavior/DropExperienceBlockBehavior.java | 6 +- ...hedHorizontalDirectionalBlockBehavior.java | 10 +- .../block/behavior/FallingBlockBehavior.java | 7 +- .../block/behavior/FenceBlockBehavior.java | 5 +- .../behavior/FenceGateBlockBehavior.java | 11 +- .../block/behavior/GrassBlockBehavior.java | 5 +- .../block/behavior/HangableBlockBehavior.java | 7 +- .../block/behavior/HangingBlockBehavior.java | 6 +- .../block/behavior/LampBlockBehavior.java | 6 +- .../block/behavior/LeavesBlockBehavior.java | 6 +- .../behavior/LiquidFlowableBlockBehavior.java | 7 +- .../behavior/MultiHighBlockBehavior.java | 6 +- .../behavior/NearLiquidBlockBehavior.java | 7 +- .../block/behavior/OnLiquidBlockBehavior.java | 6 +- .../behavior/PressurePlateBlockBehavior.java | 10 +- .../block/behavior/SaplingBlockBehavior.java | 5 +- .../block/behavior/SeatBlockBehavior.java | 6 +- .../behavior/SimpleParticleBlockBehavior.java | 7 +- .../behavior/SimpleStorageBlockBehavior.java | 6 +- .../block/behavior/SlabBlockBehavior.java | 5 +- .../block/behavior/SnowyBlockBehavior.java | 6 +- .../block/behavior/SofaBlockBehavior.java | 10 +- .../behavior/StackableBlockBehavior.java | 5 +- .../block/behavior/StairsBlockBehavior.java | 10 +- .../block/behavior/StemBlockBehavior.java | 5 +- .../behavior/StrippableBlockBehavior.java | 6 +- .../behavior/SturdyBaseBlockBehavior.java | 6 +- .../SurfaceSpreadingBlockBehavior.java | 10 +- .../behavior/ToggleableLampBlockBehavior.java | 7 +- .../block/behavior/TrapDoorBlockBehavior.java | 7 +- .../behavior/VerticalCropBlockBehavior.java | 6 +- .../WallTorchParticleBlockBehavior.java | 7 +- .../bukkit/entity/BukkitEntity.java | 1 - .../bukkit/item/BukkitCustomItem.java | 20 +-- .../bukkit/item/LegacyNetworkItemHandler.java | 10 +- .../bukkit/item/ModernNetworkItemHandler.java | 10 +- .../item/factory/UniversalItemFactory.java | 6 +- .../bukkit/loot/BukkitVanillaLootManager.java | 1 - .../plugin/injector/BlockStateGenerator.java | 1 - .../plugin/user/BukkitServerPlayer.java | 1 - .../bukkit/util/InteractUtils.java | 4 +- .../bukkit/util/LocationUtils.java | 1 - .../bukkit/world/BukkitWorldManager.java | 1 + .../craftengine/core/block/BlockBehavior.java | 1 + .../block/behavior/BlockBehaviorType.java | 6 + .../core/block/behavior/BlockBehaviors.java | 17 +- .../behavior/FurnitureBehaviorTypes.java | 2 +- .../core/item/AbstractCustomItem.java | 18 +-- .../core/item/AbstractItemManager.java | 20 +-- .../craftengine/core/item/CustomItem.java | 14 +- .../craftengine/core/item/Item.java | 4 +- .../core/item/ItemDataModifierFactory.java | 8 - .../core/item/ItemProcessorFactory.java | 8 + .../craftengine/core/item/ItemSettings.java | 18 +-- .../equipment/ComponentBasedEquipment.java | 8 +- .../core/item/equipment/Equipment.java | 4 +- .../item/equipment/TrimBasedEquipment.java | 12 +- .../item/modifier/JukeboxSongModifier.java | 40 ----- .../ArgumentsProcessor.java} | 21 +-- .../AttributeModifiersProcessor.java} | 25 ++- .../BlockStateProcessor.java} | 23 ++- .../ComponentsProcessor.java} | 19 +-- .../ConditionalProcessor.java} | 31 ++-- .../CustomModelDataProcessor.java} | 21 +-- .../CustomNameProcessor.java} | 21 +-- .../DyedColorProcessor.java} | 23 ++- .../EnchantmentsProcessor.java} | 19 +-- .../EquippableAssetIdProcessor.java} | 11 +- .../EquippableProcessor.java} | 21 +-- .../ExternalSourceProcessor.java} | 21 +-- .../FoodProcessor.java} | 21 +-- .../HideTooltipProcessor.java} | 19 +-- .../IdProcessor.java} | 11 +- .../ItemModelProcessor.java} | 21 +-- .../ItemNameProcessor.java} | 21 +-- .../ItemProcessor.java} | 6 +- .../item/processor/ItemProcessorType.java | 7 + .../ItemProcessors.java} | 147 +++++++++--------- .../ItemVersionProcessor.java} | 11 +- .../item/processor/JukeboxSongProcessor.java | 35 +++++ .../MaxDamageProcessor.java} | 21 +-- ...OverwritableCustomModelDataProcessor.java} | 21 +-- .../OverwritableItemModelProcessor.java} | 21 +-- .../OverwritableItemNameProcessor.java} | 25 ++- .../PDCProcessor.java} | 21 +-- .../RemoveComponentProcessor.java} | 21 +-- .../SimpleNetworkItemProcessor.java} | 4 +- .../TagsProcessor.java} | 19 +-- .../TooltipStyleProcessor.java} | 21 +-- .../TrimProcessor.java} | 21 +-- .../UnbreakableProcessor.java} | 21 +-- .../lore/DynamicLoreProcessor.java} | 37 ++--- .../lore/LoreModification.java | 2 +- .../lore/LoreModificationHolder.java | 2 +- .../lore/LoreProcessor.java} | 49 +++--- .../lore/OverwritableLoreProcessor.java} | 35 ++--- .../result/ApplyItemDataPostProcessor.java | 8 +- .../item/recipe/result/PostProcessors.java | 10 +- .../core/item/updater/ItemUpdateConfig.java | 6 +- .../item/updater/impl/ApplyDataOperation.java | 16 +- .../core/loot/function/ApplyDataFunction.java | 16 +- .../function/MerchantTradeFunction.java | 8 +- .../core/registry/BuiltInRegistries.java | 8 +- .../craftengine/core/registry/Registries.java | 8 +- .../craftengine/core/world/CEWorld.java | 2 +- 123 files changed, 756 insertions(+), 910 deletions(-) create mode 100644 core/src/main/java/net/momirealms/craftengine/core/block/behavior/BlockBehaviorType.java delete mode 100644 core/src/main/java/net/momirealms/craftengine/core/item/ItemDataModifierFactory.java create mode 100644 core/src/main/java/net/momirealms/craftengine/core/item/ItemProcessorFactory.java delete mode 100644 core/src/main/java/net/momirealms/craftengine/core/item/modifier/JukeboxSongModifier.java rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/ArgumentsModifier.java => processor/ArgumentsProcessor.java} (79%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/AttributeModifiersModifier.java => processor/AttributeModifiersProcessor.java} (92%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/BlockStateModifier.java => processor/BlockStateProcessor.java} (77%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/ComponentsModifier.java => processor/ComponentsProcessor.java} (86%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/ConditionalModifier.java => processor/ConditionalProcessor.java} (59%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/CustomModelDataModifier.java => processor/CustomModelDataProcessor.java} (65%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/CustomNameModifier.java => processor/CustomNameProcessor.java} (73%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/DyedColorModifier.java => processor/DyedColorProcessor.java} (66%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/EnchantmentsModifier.java => processor/EnchantmentsProcessor.java} (88%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/EquippableAssetIdModifier.java => processor/EquippableAssetIdProcessor.java} (79%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/EquippableModifier.java => processor/EquippableProcessor.java} (61%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/ExternalModifier.java => processor/ExternalSourceProcessor.java} (84%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/FoodModifier.java => processor/FoodProcessor.java} (68%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/HideTooltipModifier.java => processor/HideTooltipProcessor.java} (94%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/IdModifier.java => processor/IdProcessor.java} (68%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/ItemModelModifier.java => processor/ItemModelProcessor.java} (56%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/ItemNameModifier.java => processor/ItemNameProcessor.java} (69%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/ItemDataModifier.java => processor/ItemProcessor.java} (78%) create mode 100644 core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemProcessorType.java rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/ItemDataModifiers.java => processor/ItemProcessors.java} (55%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/ItemVersionModifier.java => processor/ItemVersionProcessor.java} (80%) create mode 100644 core/src/main/java/net/momirealms/craftengine/core/item/processor/JukeboxSongProcessor.java rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/MaxDamageModifier.java => processor/MaxDamageProcessor.java} (60%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/OverwritableCustomModelDataModifier.java => processor/OverwritableCustomModelDataProcessor.java} (65%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/OverwritableItemModelModifier.java => processor/OverwritableItemModelProcessor.java} (56%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/OverwritableItemNameModifier.java => processor/OverwritableItemNameProcessor.java} (62%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/PDCModifier.java => processor/PDCProcessor.java} (71%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/RemoveComponentModifier.java => processor/RemoveComponentProcessor.java} (69%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/SimpleNetworkItemDataModifier.java => processor/SimpleNetworkItemProcessor.java} (94%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/TagsModifier.java => processor/TagsProcessor.java} (90%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/TooltipStyleModifier.java => processor/TooltipStyleProcessor.java} (57%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/TrimModifier.java => processor/TrimProcessor.java} (72%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/UnbreakableModifier.java => processor/UnbreakableProcessor.java} (67%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/lore/DynamicLoreModifier.java => processor/lore/DynamicLoreProcessor.java} (57%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier => processor}/lore/LoreModification.java (96%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier => processor}/lore/LoreModificationHolder.java (83%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/lore/LoreModifier.java => processor/lore/LoreProcessor.java} (72%) rename core/src/main/java/net/momirealms/craftengine/core/item/{modifier/lore/OverwritableLoreModifier.java => processor/lore/OverwritableLoreProcessor.java} (58%) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/BukkitAdaptors.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/BukkitAdaptors.java index 2d3df3f32..cb3d992cc 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/BukkitAdaptors.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/BukkitAdaptors.java @@ -6,9 +6,7 @@ import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine; import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer; import net.momirealms.craftengine.bukkit.world.BukkitExistingBlock; import net.momirealms.craftengine.bukkit.world.BukkitWorld; -import net.momirealms.craftengine.bukkit.world.BukkitWorldManager; import net.momirealms.craftengine.core.item.Item; -import net.momirealms.craftengine.core.world.CEWorld; import org.bukkit.World; import org.bukkit.block.Block; import org.bukkit.entity.Entity; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/CraftEngineBlocks.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/CraftEngineBlocks.java index 8eb56a10e..fb17140bd 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/CraftEngineBlocks.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/CraftEngineBlocks.java @@ -6,7 +6,6 @@ import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine; import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer; import net.momirealms.craftengine.bukkit.util.BlockStateUtils; import net.momirealms.craftengine.bukkit.util.LocationUtils; -import net.momirealms.craftengine.bukkit.world.BukkitWorld; import net.momirealms.craftengine.core.block.CustomBlock; import net.momirealms.craftengine.core.block.ImmutableBlockState; import net.momirealms.craftengine.core.block.UpdateOption; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BlockEventListener.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BlockEventListener.java index 0853b586f..89f3279c5 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BlockEventListener.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BlockEventListener.java @@ -10,7 +10,6 @@ import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MBlocks; import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer; import net.momirealms.craftengine.bukkit.util.*; import net.momirealms.craftengine.bukkit.world.BukkitExistingBlock; -import net.momirealms.craftengine.bukkit.world.BukkitWorld; import net.momirealms.craftengine.core.block.ImmutableBlockState; import net.momirealms.craftengine.core.entity.player.InteractionHand; import net.momirealms.craftengine.core.item.CustomItem; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/AbstractCanSurviveBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/AbstractCanSurviveBlockBehavior.java index 5bec5aff5..f13a79fc8 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/AbstractCanSurviveBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/AbstractCanSurviveBlockBehavior.java @@ -5,7 +5,6 @@ import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MBlocks; import net.momirealms.craftengine.bukkit.util.BlockStateUtils; import net.momirealms.craftengine.bukkit.util.LocationUtils; -import net.momirealms.craftengine.bukkit.world.BukkitWorld; import net.momirealms.craftengine.core.block.CustomBlock; import net.momirealms.craftengine.core.block.ImmutableBlockState; import net.momirealms.craftengine.core.world.Vec3d; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/AttachedStemBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/AttachedStemBlockBehavior.java index a156a4f61..9a3d39063 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/AttachedStemBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/AttachedStemBlockBehavior.java @@ -22,7 +22,8 @@ import java.util.Optional; import java.util.concurrent.Callable; public class AttachedStemBlockBehavior extends BukkitBlockBehavior implements IsPathFindableBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:attached_stem_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final Property facingProperty; private final Key fruit; private final Key stem; @@ -85,7 +86,7 @@ public class AttachedStemBlockBehavior extends BukkitBlockBehavior implements Is return null; } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BouncingBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BouncingBlockBehavior.java index b29f312a7..d780ac63f 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BouncingBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BouncingBlockBehavior.java @@ -9,6 +9,7 @@ import net.momirealms.craftengine.core.block.CustomBlock; import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; import net.momirealms.craftengine.core.block.behavior.FallOnBlockBehavior; import net.momirealms.craftengine.core.plugin.CraftEngine; +import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.util.VersionHelper; import net.momirealms.craftengine.core.world.Vec3d; @@ -18,7 +19,8 @@ import java.util.Map; import java.util.concurrent.Callable; public class BouncingBlockBehavior extends BukkitBlockBehavior implements FallOnBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:bouncing_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final double bounceHeight; private final boolean syncPlayerPosition; private final double fallDamageMultiplier; @@ -77,7 +79,7 @@ public class BouncingBlockBehavior extends BukkitBlockBehavior implements FallOn } } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BuddingBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BuddingBlockBehavior.java index 0fab2a5ca..b9d671890 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BuddingBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BuddingBlockBehavior.java @@ -19,7 +19,8 @@ import java.util.Map; import java.util.concurrent.Callable; public class BuddingBlockBehavior extends BukkitBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:budding_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final float growthChance; private final List blocks; @@ -86,7 +87,7 @@ public class BuddingBlockBehavior extends BukkitBlockBehavior { && FastNMS.INSTANCE.field$FluidState$amount(FastNMS.INSTANCE.field$BlockBehaviour$BlockStateBase$fluidState(state)) == 8; } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BukkitBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BukkitBlockBehavior.java index 79f31a798..d1742cac4 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BukkitBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BukkitBlockBehavior.java @@ -22,7 +22,7 @@ import java.util.Optional; import java.util.concurrent.Callable; import java.util.function.BiConsumer; -public class BukkitBlockBehavior extends AbstractBlockBehavior { +public abstract class BukkitBlockBehavior extends AbstractBlockBehavior { private static final Map>> HARD_CODED_PROPERTY_DATA = new HashMap<>(); static { HARD_CODED_PROPERTY_DATA.put("axis", (behavior, property) -> { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BukkitBlockBehaviors.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BukkitBlockBehaviors.java index a6c163446..e4178bae2 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BukkitBlockBehaviors.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BukkitBlockBehaviors.java @@ -1,102 +1,58 @@ package net.momirealms.craftengine.bukkit.block.behavior; +import net.momirealms.craftengine.core.block.behavior.BlockBehaviorType; import net.momirealms.craftengine.core.block.behavior.BlockBehaviors; -import net.momirealms.craftengine.core.block.behavior.EmptyBlockBehavior; import net.momirealms.craftengine.core.util.Key; public class BukkitBlockBehaviors extends BlockBehaviors { - public static final Key BUSH_BLOCK = Key.from("craftengine:bush_block"); - public static final Key HANGING_BLOCK = Key.from("craftengine:hanging_block"); - public static final Key FALLING_BLOCK = Key.from("craftengine:falling_block"); - public static final Key LEAVES_BLOCK = Key.from("craftengine:leaves_block"); - public static final Key STRIPPABLE_BLOCK = Key.from("craftengine:strippable_block"); - public static final Key SAPLING_BLOCK = Key.from("craftengine:sapling_block"); - public static final Key ON_LIQUID_BLOCK = Key.from("craftengine:on_liquid_block"); - public static final Key NEAR_LIQUID_BLOCK = Key.from("craftengine:near_liquid_block"); - public static final Key CONCRETE_POWDER_BLOCK = Key.from("craftengine:concrete_powder_block"); - public static final Key VERTICAL_CROP_BLOCK = Key.from("craftengine:vertical_crop_block"); - public static final Key CROP_BLOCK = Key.from("craftengine:crop_block"); - public static final Key GRASS_BLOCK = Key.from("craftengine:grass_block"); - public static final Key LAMP_BLOCK = Key.from("craftengine:lamp_block"); - public static final Key TRAPDOOR_BLOCK = Key.from("craftengine:trapdoor_block"); - public static final Key DOOR_BLOCK = Key.from("craftengine:door_block"); - public static final Key STACKABLE_BLOCK = Key.from("craftengine:stackable_block"); - public static final Key STURDY_BASE_BLOCK = Key.from("craftengine:sturdy_base_block"); - public static final Key FENCE_GATE_BLOCK = Key.from("craftengine:fence_gate_block"); - public static final Key SLAB_BLOCK = Key.from("craftengine:slab_block"); - public static final Key STAIRS_BLOCK = Key.from("craftengine:stairs_block"); - public static final Key PRESSURE_PLATE_BLOCK = Key.from("craftengine:pressure_plate_block"); - public static final Key DOUBLE_HIGH_BLOCK = Key.from("craftengine:double_high_block"); - public static final Key CHANGE_OVER_TIME_BLOCK = Key.from("craftengine:change_over_time_block"); - public static final Key SIMPLE_STORAGE_BLOCK = Key.from("craftengine:simple_storage_block"); - public static final Key TOGGLEABLE_LAMP_BLOCK = Key.from("craftengine:toggleable_lamp_block"); - public static final Key SOFA_BLOCK = Key.from("craftengine:sofa_block"); - public static final Key BOUNCING_BLOCK = Key.from("craftengine:bouncing_block"); - public static final Key DIRECTIONAL_ATTACHED_BLOCK = Key.from("craftengine:directional_attached_block"); - public static final Key LIQUID_FLOWABLE_BLOCK = Key.from("craftengine:liquid_flowable_block"); - public static final Key SIMPLE_PARTICLE_BLOCK = Key.from("craftengine:simple_particle_block"); - public static final Key WALL_TORCH_PARTICLE_BLOCK = Key.from("craftengine:wall_torch_particle_block"); - public static final Key FENCE_BLOCK = Key.from("craftengine:fence_block"); - public static final Key BUTTON_BLOCK = Key.from("craftengine:button_block"); - public static final Key FACE_ATTACHED_HORIZONTAL_DIRECTIONAL_BLOCK = Key.from("craftengine:face_attached_horizontal_directional_block"); - public static final Key STEM_BLOCK = Key.from("craftengine:stem_block"); - public static final Key ATTACHED_STEM_BLOCK = Key.from("craftengine:attached_stem_block"); - public static final Key CHIME_BLOCK = Key.from("craftengine:chime_block"); - public static final Key BUDDING_BLOCK = Key.from("craftengine:budding_block"); - public static final Key SEAT_BLOCK = Key.from("craftengine:seat_block"); - public static final Key SURFACE_SPREADING_BLOCK = Key.from("craftengine:surface_spreading_block"); - public static final Key SNOWY_BLOCK = Key.from("craftengine:snowy_block"); - public static final Key HANGABLE_BLOCK = Key.from("craftengine:hangable_block"); - public static final Key DROP_EXPERIENCE_BLOCK = Key.from("craftengine:drop_experience_block"); - public static final Key DROP_EXP_BLOCK = Key.from("craftengine:drop_exp_block"); - public static final Key MULTI_HIGH_BLOCK = Key.from("craftengine:multi_high_block"); + private BukkitBlockBehaviors() {} + + public static final BlockBehaviorType BUSH_BLOCK = register(BushBlockBehavior.ID, BushBlockBehavior.FACTORY); + public static final BlockBehaviorType HANGING_BLOCK = register(HangingBlockBehavior.ID, HangingBlockBehavior.FACTORY); + public static final BlockBehaviorType FALLING_BLOCK = register(FallingBlockBehavior.ID, FallingBlockBehavior.FACTORY); + public static final BlockBehaviorType LEAVES_BLOCK = register(LeavesBlockBehavior.ID, LeavesBlockBehavior.FACTORY); + public static final BlockBehaviorType STRIPPABLE_BLOCK = register(StrippableBlockBehavior.ID, StrippableBlockBehavior.FACTORY); + public static final BlockBehaviorType SAPLING_BLOCK = register(SaplingBlockBehavior.ID, SaplingBlockBehavior.FACTORY); + public static final BlockBehaviorType ON_LIQUID_BLOCK = register(OnLiquidBlockBehavior.ID, OnLiquidBlockBehavior.FACTORY); + public static final BlockBehaviorType NEAR_LIQUID_BLOCK = register(NearLiquidBlockBehavior.ID, NearLiquidBlockBehavior.FACTORY); + public static final BlockBehaviorType CONCRETE_POWDER_BLOCK = register(ConcretePowderBlockBehavior.ID, ConcretePowderBlockBehavior.FACTORY); + public static final BlockBehaviorType VERTICAL_CROP_BLOCK = register(VerticalCropBlockBehavior.ID, VerticalCropBlockBehavior.FACTORY); + public static final BlockBehaviorType CROP_BLOCK = register(CropBlockBehavior.ID, CropBlockBehavior.FACTORY); + public static final BlockBehaviorType GRASS_BLOCK = register(GrassBlockBehavior.ID, GrassBlockBehavior.FACTORY); + public static final BlockBehaviorType LAMP_BLOCK = register(LampBlockBehavior.ID, LampBlockBehavior.FACTORY); + public static final BlockBehaviorType TRAPDOOR_BLOCK = register(TrapDoorBlockBehavior.ID, TrapDoorBlockBehavior.FACTORY); + public static final BlockBehaviorType DOOR_BLOCK = register(DoorBlockBehavior.ID, DoorBlockBehavior.FACTORY); + public static final BlockBehaviorType STACKABLE_BLOCK = register(StairsBlockBehavior.ID, StackableBlockBehavior.FACTORY); + public static final BlockBehaviorType STURDY_BASE_BLOCK = register(StairsBlockBehavior.ID, SturdyBaseBlockBehavior.FACTORY); + public static final BlockBehaviorType FENCE_GATE_BLOCK = register(FenceGateBlockBehavior.ID, FenceGateBlockBehavior.FACTORY); + public static final BlockBehaviorType SLAB_BLOCK = register(SlabBlockBehavior.ID, SlabBlockBehavior.FACTORY); + public static final BlockBehaviorType STAIRS_BLOCK = register(StairsBlockBehavior.ID, StairsBlockBehavior.FACTORY); + public static final BlockBehaviorType PRESSURE_PLATE_BLOCK = register(PressurePlateBlockBehavior.ID, PressurePlateBlockBehavior.FACTORY); + public static final BlockBehaviorType DOUBLE_HIGH_BLOCK = register(DoubleHighBlockBehavior.ID, DoubleHighBlockBehavior.FACTORY); + public static final BlockBehaviorType CHANGE_OVER_TIME_BLOCK = register(ChangeOverTimeBlockBehavior.ID, ChangeOverTimeBlockBehavior.FACTORY); + public static final BlockBehaviorType SIMPLE_STORAGE_BLOCK = register(SimpleParticleBlockBehavior.ID, SimpleStorageBlockBehavior.FACTORY); + public static final BlockBehaviorType TOGGLEABLE_LAMP_BLOCK = register(ToggleableLampBlockBehavior.ID, ToggleableLampBlockBehavior.FACTORY); + public static final BlockBehaviorType SOFA_BLOCK = register(SofaBlockBehavior.ID, SofaBlockBehavior.FACTORY); + public static final BlockBehaviorType BOUNCING_BLOCK = register(BouncingBlockBehavior.ID, BouncingBlockBehavior.FACTORY); + public static final BlockBehaviorType DIRECTIONAL_ATTACHED_BLOCK = register(DirectionalAttachedBlockBehavior.ID, DirectionalAttachedBlockBehavior.FACTORY); + public static final BlockBehaviorType LIQUID_FLOWABLE_BLOCK = register(LiquidFlowableBlockBehavior.ID, LiquidFlowableBlockBehavior.FACTORY); + public static final BlockBehaviorType SIMPLE_PARTICLE_BLOCK = register(SimpleParticleBlockBehavior.ID, SimpleParticleBlockBehavior.FACTORY); + public static final BlockBehaviorType WALL_TORCH_PARTICLE_BLOCK = register(WallTorchParticleBlockBehavior.ID, WallTorchParticleBlockBehavior.FACTORY); + public static final BlockBehaviorType FENCE_BLOCK = register(FenceBlockBehavior.ID, FenceBlockBehavior.FACTORY); + public static final BlockBehaviorType BUTTON_BLOCK = register(ButtonBlockBehavior.ID, ButtonBlockBehavior.FACTORY); + public static final BlockBehaviorType FACE_ATTACHED_HORIZONTAL_DIRECTIONAL_BLOCK = register(FaceAttachedHorizontalDirectionalBlockBehavior.ID, FaceAttachedHorizontalDirectionalBlockBehavior.FACTORY); + public static final BlockBehaviorType STEM_BLOCK = register(StemBlockBehavior.ID, StemBlockBehavior.FACTORY); + public static final BlockBehaviorType ATTACHED_STEM_BLOCK = register(AttachedStemBlockBehavior.ID, AttachedStemBlockBehavior.FACTORY); + public static final BlockBehaviorType CHIME_BLOCK = register(ChimeBlockBehavior.ID, ChimeBlockBehavior.FACTORY); + public static final BlockBehaviorType BUDDING_BLOCK = register(BuddingBlockBehavior.ID, BuddingBlockBehavior.FACTORY); + public static final BlockBehaviorType SEAT_BLOCK = register(SeatBlockBehavior.ID, SeatBlockBehavior.FACTORY); + public static final BlockBehaviorType SURFACE_SPREADING_BLOCK = register(SurfaceSpreadingBlockBehavior.ID, SurfaceSpreadingBlockBehavior.FACTORY); + public static final BlockBehaviorType SNOWY_BLOCK = register(SnowyBlockBehavior.ID, SnowyBlockBehavior.FACTORY); + public static final BlockBehaviorType HANGABLE_BLOCK = register(HangableBlockBehavior.ID, HangableBlockBehavior.FACTORY); + public static final BlockBehaviorType DROP_EXPERIENCE_BLOCK = register(DropExperienceBlockBehavior.ID, DropExperienceBlockBehavior.FACTORY); + public static final BlockBehaviorType DROP_EXP_BLOCK = register(Key.from("craftengine:drop_exp_block"), DropExperienceBlockBehavior.FACTORY); + public static final BlockBehaviorType MULTI_HIGH_BLOCK = register(MultiHighBlockBehavior.ID, MultiHighBlockBehavior.FACTORY); public static void init() { - register(EMPTY, (block, args) -> EmptyBlockBehavior.INSTANCE); - register(FALLING_BLOCK, FallingBlockBehavior.FACTORY); - register(BUSH_BLOCK, BushBlockBehavior.FACTORY); - register(HANGING_BLOCK, HangingBlockBehavior.FACTORY); - register(LEAVES_BLOCK, LeavesBlockBehavior.FACTORY); - register(STRIPPABLE_BLOCK, StrippableBlockBehavior.FACTORY); - register(SAPLING_BLOCK, SaplingBlockBehavior.FACTORY); - register(ON_LIQUID_BLOCK, OnLiquidBlockBehavior.FACTORY); - register(NEAR_LIQUID_BLOCK, NearLiquidBlockBehavior.FACTORY); - register(CONCRETE_POWDER_BLOCK, ConcretePowderBlockBehavior.FACTORY); - register(VERTICAL_CROP_BLOCK, VerticalCropBlockBehavior.FACTORY); - register(CROP_BLOCK, CropBlockBehavior.FACTORY); - register(GRASS_BLOCK, GrassBlockBehavior.FACTORY); - register(LAMP_BLOCK, LampBlockBehavior.FACTORY); - register(TRAPDOOR_BLOCK, TrapDoorBlockBehavior.FACTORY); - register(DOOR_BLOCK, DoorBlockBehavior.FACTORY); - register(STACKABLE_BLOCK, StackableBlockBehavior.FACTORY); - register(STURDY_BASE_BLOCK, SturdyBaseBlockBehavior.FACTORY); - register(FENCE_GATE_BLOCK, FenceGateBlockBehavior.FACTORY); - register(SLAB_BLOCK, SlabBlockBehavior.FACTORY); - register(STAIRS_BLOCK, StairsBlockBehavior.FACTORY); - register(PRESSURE_PLATE_BLOCK, PressurePlateBlockBehavior.FACTORY); - register(DOUBLE_HIGH_BLOCK, DoubleHighBlockBehavior.FACTORY); - register(CHANGE_OVER_TIME_BLOCK, ChangeOverTimeBlockBehavior.FACTORY); - register(SIMPLE_STORAGE_BLOCK, SimpleStorageBlockBehavior.FACTORY); - register(TOGGLEABLE_LAMP_BLOCK, ToggleableLampBlockBehavior.FACTORY); - register(SOFA_BLOCK, SofaBlockBehavior.FACTORY); - register(BOUNCING_BLOCK, BouncingBlockBehavior.FACTORY); - register(DIRECTIONAL_ATTACHED_BLOCK, DirectionalAttachedBlockBehavior.FACTORY); - register(LIQUID_FLOWABLE_BLOCK, LiquidFlowableBlockBehavior.FACTORY); - register(SIMPLE_PARTICLE_BLOCK, SimpleParticleBlockBehavior.FACTORY); - register(WALL_TORCH_PARTICLE_BLOCK, WallTorchParticleBlockBehavior.FACTORY); - register(FENCE_BLOCK, FenceBlockBehavior.FACTORY); - register(BUTTON_BLOCK, ButtonBlockBehavior.FACTORY); - register(FACE_ATTACHED_HORIZONTAL_DIRECTIONAL_BLOCK, FaceAttachedHorizontalDirectionalBlockBehavior.FACTORY); - register(STEM_BLOCK, StemBlockBehavior.FACTORY); - register(ATTACHED_STEM_BLOCK, AttachedStemBlockBehavior.FACTORY); - register(CHIME_BLOCK, ChimeBlockBehavior.FACTORY); - register(BUDDING_BLOCK, BuddingBlockBehavior.FACTORY); - register(SEAT_BLOCK, SeatBlockBehavior.FACTORY); - register(SURFACE_SPREADING_BLOCK, SurfaceSpreadingBlockBehavior.FACTORY); - register(SNOWY_BLOCK, SnowyBlockBehavior.FACTORY); - register(HANGABLE_BLOCK, HangableBlockBehavior.FACTORY); - register(DROP_EXPERIENCE_BLOCK, DropExperienceBlockBehavior.FACTORY); - register(DROP_EXP_BLOCK, DropExperienceBlockBehavior.FACTORY); - register(MULTI_HIGH_BLOCK, MultiHighBlockBehavior.FACTORY); } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BushBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BushBlockBehavior.java index 8a807c7e0..f05cead44 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BushBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BushBlockBehavior.java @@ -20,7 +20,8 @@ import org.bukkit.Registry; import java.util.*; public class BushBlockBehavior extends AbstractCanSurviveBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:bush_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); protected final List tagsCanSurviveOn; protected final Set blockStatesCanSurviveOn; protected final Set customBlocksCansSurviveOn; @@ -28,7 +29,8 @@ public class BushBlockBehavior extends AbstractCanSurviveBlockBehavior { protected final boolean stackable; protected final int maxHeight; - public BushBlockBehavior(CustomBlock block, int delay, boolean blacklist, boolean stackable, int maxHeight, List tagsCanSurviveOn, Set blockStatesCanSurviveOn, Set customBlocksCansSurviveOn) { + public BushBlockBehavior(CustomBlock block, int delay, boolean blacklist, boolean stackable, int maxHeight, + List tagsCanSurviveOn, Set blockStatesCanSurviveOn, Set customBlocksCansSurviveOn) { super(block, delay); this.blacklistMode = blacklist; this.stackable = stackable; @@ -38,7 +40,7 @@ public class BushBlockBehavior extends AbstractCanSurviveBlockBehavior { this.customBlocksCansSurviveOn = customBlocksCansSurviveOn; } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ButtonBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ButtonBlockBehavior.java index 627462991..0b4294900 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ButtonBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ButtonBlockBehavior.java @@ -18,10 +18,7 @@ import net.momirealms.craftengine.core.block.properties.Property; import net.momirealms.craftengine.core.entity.player.InteractionResult; import net.momirealms.craftengine.core.item.context.UseOnContext; import net.momirealms.craftengine.core.sound.SoundData; -import net.momirealms.craftengine.core.util.Direction; -import net.momirealms.craftengine.core.util.HorizontalDirection; -import net.momirealms.craftengine.core.util.ResourceConfigUtils; -import net.momirealms.craftengine.core.util.VersionHelper; +import net.momirealms.craftengine.core.util.*; import javax.annotation.Nullable; import java.util.Map; @@ -29,7 +26,8 @@ import java.util.Optional; import java.util.concurrent.Callable; public class ButtonBlockBehavior extends BukkitBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:button_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final BooleanProperty poweredProperty; private final int ticksToStayPressed; private final boolean canButtonBeActivatedByArrows; @@ -197,7 +195,7 @@ public class ButtonBlockBehavior extends BukkitBlockBehavior { FastNMS.INSTANCE.method$LevelAccessor$gameEvent(level, player, gameEvent, pos); } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @SuppressWarnings({"unchecked", "DuplicatedCode"}) @Override diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ChangeOverTimeBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ChangeOverTimeBlockBehavior.java index 49ad41749..7a30cf1a7 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ChangeOverTimeBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ChangeOverTimeBlockBehavior.java @@ -8,10 +8,7 @@ import net.momirealms.craftengine.core.block.CustomBlock; import net.momirealms.craftengine.core.block.UpdateOption; import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; import net.momirealms.craftengine.core.plugin.CraftEngine; -import net.momirealms.craftengine.core.util.LazyReference; -import net.momirealms.craftengine.core.util.MiscUtils; -import net.momirealms.craftengine.core.util.RandomUtils; -import net.momirealms.craftengine.core.util.ResourceConfigUtils; +import net.momirealms.craftengine.core.util.*; import net.momirealms.sparrow.nbt.CompoundTag; import java.util.List; @@ -19,7 +16,8 @@ import java.util.Map; import java.util.concurrent.Callable; public class ChangeOverTimeBlockBehavior extends BukkitBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:change_over_time_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final float changeSpeed; private final String nextBlock; private final LazyReference lazyState; @@ -64,7 +62,7 @@ public class ChangeOverTimeBlockBehavior extends BukkitBlockBehavior { }); } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ChimeBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ChimeBlockBehavior.java index 4b286d52e..ce9135a60 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ChimeBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ChimeBlockBehavior.java @@ -7,6 +7,7 @@ import net.momirealms.craftengine.core.block.BlockBehavior; import net.momirealms.craftengine.core.block.CustomBlock; import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; import net.momirealms.craftengine.core.sound.SoundData; +import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; @@ -14,7 +15,8 @@ import java.util.Optional; import java.util.concurrent.Callable; public class ChimeBlockBehavior extends BukkitBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:chime_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final SoundData hitSound; public ChimeBlockBehavior(CustomBlock customBlock, SoundData hitSound) { @@ -29,7 +31,7 @@ public class ChimeBlockBehavior extends BukkitBlockBehavior { FastNMS.INSTANCE.method$LevelAccessor$playSound(args[0], null, blockPos, sound, CoreReflections.instance$SoundSource$BLOCKS, hitSound.volume().get(), hitSound.pitch().get()); } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ConcretePowderBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ConcretePowderBlockBehavior.java index 91e96fda6..69e04c0ad 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ConcretePowderBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ConcretePowderBlockBehavior.java @@ -17,6 +17,7 @@ import net.momirealms.craftengine.core.block.parser.BlockStateParser; import net.momirealms.craftengine.core.item.context.BlockPlaceContext; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.util.Direction; +import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.LazyReference; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import org.bukkit.block.BlockState; @@ -27,7 +28,8 @@ import java.util.Map; import java.util.concurrent.Callable; public class ConcretePowderBlockBehavior extends BukkitBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:concrete_powder_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final LazyReference<@Nullable ImmutableBlockState> targetBlock; public ConcretePowderBlockBehavior(CustomBlock block, String targetBlock) { @@ -125,7 +127,7 @@ public class ConcretePowderBlockBehavior extends BukkitBlockBehavior { return flag; } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/CropBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/CropBlockBehavior.java index 656c3f6d8..204c86b62 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/CropBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/CropBlockBehavior.java @@ -6,7 +6,6 @@ import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflect import net.momirealms.craftengine.bukkit.util.BlockStateUtils; import net.momirealms.craftengine.bukkit.util.LocationUtils; import net.momirealms.craftengine.bukkit.util.ParticleUtils; -import net.momirealms.craftengine.bukkit.world.BukkitWorld; import net.momirealms.craftengine.core.block.BlockBehavior; import net.momirealms.craftengine.core.block.CustomBlock; import net.momirealms.craftengine.core.block.ImmutableBlockState; @@ -25,6 +24,7 @@ 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.ItemUtils; +import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.RandomUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.world.Vec3d; @@ -39,7 +39,8 @@ import java.util.concurrent.Callable; @SuppressWarnings("DuplicatedCode") public class CropBlockBehavior extends BukkitBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:crop_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final IntegerProperty ageProperty; private final float growSpeed; private final int minGrowLight; @@ -189,7 +190,7 @@ public class CropBlockBehavior extends BukkitBlockBehavior { } } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @SuppressWarnings("unchecked") @Override diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DirectionalAttachedBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DirectionalAttachedBlockBehavior.java index 7ec5c5c21..165b813a3 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DirectionalAttachedBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DirectionalAttachedBlockBehavior.java @@ -26,7 +26,8 @@ import java.util.*; import java.util.concurrent.Callable; public class DirectionalAttachedBlockBehavior extends BukkitBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:directional_attached_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final Property facingProperty; private final boolean isSixDirection; private final List tagsCanSurviveOn; @@ -132,7 +133,7 @@ public class DirectionalAttachedBlockBehavior extends BukkitBlockBehavior { return null; } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DoorBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DoorBlockBehavior.java index eead27298..a7d008c67 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DoorBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DoorBlockBehavior.java @@ -10,7 +10,6 @@ import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer; import net.momirealms.craftengine.bukkit.util.BlockStateUtils; import net.momirealms.craftengine.bukkit.util.DirectionUtils; import net.momirealms.craftengine.bukkit.util.LocationUtils; -import net.momirealms.craftengine.bukkit.world.BukkitWorld; import net.momirealms.craftengine.core.block.BlockBehavior; import net.momirealms.craftengine.core.block.CustomBlock; import net.momirealms.craftengine.core.block.ImmutableBlockState; @@ -27,10 +26,7 @@ import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.context.BlockPlaceContext; import net.momirealms.craftengine.core.item.context.UseOnContext; import net.momirealms.craftengine.core.sound.SoundData; -import net.momirealms.craftengine.core.util.Direction; -import net.momirealms.craftengine.core.util.HorizontalDirection; -import net.momirealms.craftengine.core.util.ResourceConfigUtils; -import net.momirealms.craftengine.core.util.VersionHelper; +import net.momirealms.craftengine.core.util.*; import net.momirealms.craftengine.core.world.*; import org.bukkit.Bukkit; import org.bukkit.GameEvent; @@ -49,7 +45,8 @@ import java.util.concurrent.Callable; @SuppressWarnings("DuplicatedCode") public class DoorBlockBehavior extends AbstractCanSurviveBlockBehavior implements IsPathFindableBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:door_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final Property halfProperty; private final Property facingProperty; private final Property hingeProperty; @@ -345,7 +342,7 @@ public class DoorBlockBehavior extends AbstractCanSurviveBlockBehavior implement } @SuppressWarnings("unchecked") - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { Property half = (Property) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("half"), "warning.config.block.behavior.door.missing_half"); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DoubleHighBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DoubleHighBlockBehavior.java index 069e156f0..cd085cdf7 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DoubleHighBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DoubleHighBlockBehavior.java @@ -8,7 +8,6 @@ import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer; import net.momirealms.craftengine.bukkit.util.BlockStateUtils; import net.momirealms.craftengine.bukkit.util.DirectionUtils; import net.momirealms.craftengine.bukkit.util.LocationUtils; -import net.momirealms.craftengine.bukkit.world.BukkitWorld; import net.momirealms.craftengine.core.block.BlockBehavior; import net.momirealms.craftengine.core.block.CustomBlock; import net.momirealms.craftengine.core.block.ImmutableBlockState; @@ -19,6 +18,7 @@ import net.momirealms.craftengine.core.block.properties.type.DoubleBlockHalf; import net.momirealms.craftengine.core.entity.player.InteractionHand; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.context.BlockPlaceContext; +import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.world.*; import org.bukkit.inventory.ItemStack; @@ -28,7 +28,8 @@ import java.util.Optional; import java.util.concurrent.Callable; public class DoubleHighBlockBehavior extends AbstractCanSurviveBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:double_high_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final Property halfProperty; public DoubleHighBlockBehavior(CustomBlock customBlock, Property halfProperty) { @@ -141,7 +142,7 @@ public class DoubleHighBlockBehavior extends AbstractCanSurviveBlockBehavior { } @SuppressWarnings("unchecked") - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DropExperienceBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DropExperienceBlockBehavior.java index d6b6262fb..788415bd7 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DropExperienceBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DropExperienceBlockBehavior.java @@ -19,6 +19,7 @@ import net.momirealms.craftengine.core.plugin.context.event.EventConditions; 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.BlockPos; @@ -33,7 +34,8 @@ import java.util.concurrent.Callable; import java.util.function.Predicate; public class DropExperienceBlockBehavior extends BukkitBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:drop_experience_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final NumberProvider amount; private final Predicate condition; @@ -87,7 +89,7 @@ public class DropExperienceBlockBehavior extends BukkitBlockBehavior { world.dropExp(dropPos, finalAmount); } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/FaceAttachedHorizontalDirectionalBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/FaceAttachedHorizontalDirectionalBlockBehavior.java index dae5a50b3..fe15c7e97 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/FaceAttachedHorizontalDirectionalBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/FaceAttachedHorizontalDirectionalBlockBehavior.java @@ -13,10 +13,7 @@ import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; import net.momirealms.craftengine.core.block.properties.Property; import net.momirealms.craftengine.core.block.properties.type.AnchorType; import net.momirealms.craftengine.core.item.context.BlockPlaceContext; -import net.momirealms.craftengine.core.util.Direction; -import net.momirealms.craftengine.core.util.HorizontalDirection; -import net.momirealms.craftengine.core.util.ResourceConfigUtils; -import net.momirealms.craftengine.core.util.Tuple; +import net.momirealms.craftengine.core.util.*; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -26,7 +23,8 @@ import java.util.Set; import java.util.concurrent.Callable; public class FaceAttachedHorizontalDirectionalBlockBehavior extends BukkitBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:face_attached_horizontal_directional_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final Property anchorTypeProperty; private final Property facingProperty; private final List tagsCanSurviveOn; @@ -135,7 +133,7 @@ public class FaceAttachedHorizontalDirectionalBlockBehavior extends BukkitBlockB }; } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @SuppressWarnings("unchecked") @Override diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/FallingBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/FallingBlockBehavior.java index 83b4297fc..04016b15f 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/FallingBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/FallingBlockBehavior.java @@ -8,12 +8,12 @@ import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; import net.momirealms.craftengine.bukkit.util.BlockStateUtils; import net.momirealms.craftengine.bukkit.util.LocationUtils; -import net.momirealms.craftengine.bukkit.world.BukkitWorld; import net.momirealms.craftengine.core.block.BlockBehavior; import net.momirealms.craftengine.core.block.CustomBlock; import net.momirealms.craftengine.core.block.ImmutableBlockState; import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; import net.momirealms.craftengine.core.sound.SoundData; +import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.world.Vec3d; import net.momirealms.craftengine.core.world.WorldPosition; @@ -23,7 +23,8 @@ import java.util.Optional; import java.util.concurrent.Callable; public class FallingBlockBehavior extends BukkitBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:falling_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final float hurtAmount; private final int maxHurt; private final SoundData landSound; @@ -113,7 +114,7 @@ public class FallingBlockBehavior extends BukkitBlockBehavior { } } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @SuppressWarnings("unchecked") @Override diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/FenceBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/FenceBlockBehavior.java index bb84f9bd7..2ca5a79c4 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/FenceBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/FenceBlockBehavior.java @@ -32,7 +32,8 @@ import java.util.Optional; import java.util.concurrent.Callable; public class FenceBlockBehavior extends BukkitBlockBehavior implements IsPathFindableBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:fence_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final BooleanProperty northProperty; private final BooleanProperty eastProperty; private final BooleanProperty southProperty; @@ -137,7 +138,7 @@ public class FenceBlockBehavior extends BukkitBlockBehavior implements IsPathFin return superMethod.call(); } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/FenceGateBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/FenceGateBlockBehavior.java index 3b7d39e84..2b2acf19b 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/FenceGateBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/FenceGateBlockBehavior.java @@ -10,7 +10,6 @@ import net.momirealms.craftengine.bukkit.util.BlockStateUtils; import net.momirealms.craftengine.bukkit.util.DirectionUtils; import net.momirealms.craftengine.bukkit.util.InteractUtils; import net.momirealms.craftengine.bukkit.util.LocationUtils; -import net.momirealms.craftengine.bukkit.world.BukkitWorld; import net.momirealms.craftengine.core.block.*; import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; import net.momirealms.craftengine.core.block.behavior.IsPathFindableBlockBehavior; @@ -22,10 +21,7 @@ import net.momirealms.craftengine.core.item.ItemKeys; import net.momirealms.craftengine.core.item.context.BlockPlaceContext; import net.momirealms.craftengine.core.item.context.UseOnContext; import net.momirealms.craftengine.core.sound.SoundData; -import net.momirealms.craftengine.core.util.Direction; -import net.momirealms.craftengine.core.util.HorizontalDirection; -import net.momirealms.craftengine.core.util.ResourceConfigUtils; -import net.momirealms.craftengine.core.util.VersionHelper; +import net.momirealms.craftengine.core.util.*; import net.momirealms.craftengine.core.world.BlockPos; import net.momirealms.craftengine.core.world.Vec3d; import net.momirealms.craftengine.core.world.World; @@ -43,7 +39,8 @@ import java.util.concurrent.Callable; @SuppressWarnings("DuplicatedCode") public class FenceGateBlockBehavior extends BukkitBlockBehavior implements IsPathFindableBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:sturdy_base_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final Property facingProperty; private final Property inWallProperty; private final Property openProperty; @@ -278,7 +275,7 @@ public class FenceGateBlockBehavior extends BukkitBlockBehavior implements IsPat return facing != null && facing.axis() == direction.toDirection().clockWise().axis(); } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override @SuppressWarnings("unchecked") diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/GrassBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/GrassBlockBehavior.java index 359ff4a9c..392550f7b 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/GrassBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/GrassBlockBehavior.java @@ -29,7 +29,8 @@ import java.util.Optional; @SuppressWarnings("DuplicatedCode") public class GrassBlockBehavior extends BukkitBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:grass_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final Key feature; public GrassBlockBehavior(CustomBlock block, Key feature) { @@ -155,7 +156,7 @@ public class GrassBlockBehavior extends BukkitBlockBehavior { } } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { String feature = ResourceConfigUtils.requireNonEmptyStringOrThrow(ResourceConfigUtils.get(arguments, "feature", "placed-feature"), "warning.config.block.behavior.grass.missing_feature"); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/HangableBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/HangableBlockBehavior.java index a02fdd2f9..c68a2a000 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/HangableBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/HangableBlockBehavior.java @@ -14,14 +14,17 @@ import net.momirealms.craftengine.core.block.behavior.IsPathFindableBlockBehavio import net.momirealms.craftengine.core.block.properties.BooleanProperty; import net.momirealms.craftengine.core.item.context.BlockPlaceContext; import net.momirealms.craftengine.core.util.Direction; +import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import org.jetbrains.annotations.Nullable; import java.util.Map; import java.util.concurrent.Callable; +// todo 修改 public class HangableBlockBehavior extends BukkitBlockBehavior implements IsPathFindableBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:hangable_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final BooleanProperty hanging; public HangableBlockBehavior(CustomBlock customBlock, BooleanProperty hanging) { @@ -82,7 +85,7 @@ public class HangableBlockBehavior extends BukkitBlockBehavior implements IsPath return false; } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/HangingBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/HangingBlockBehavior.java index 06724bc9f..047e4cce3 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/HangingBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/HangingBlockBehavior.java @@ -5,6 +5,7 @@ import net.momirealms.craftengine.bukkit.util.LocationUtils; import net.momirealms.craftengine.core.block.BlockBehavior; import net.momirealms.craftengine.core.block.CustomBlock; import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; +import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.util.Tuple; @@ -13,7 +14,8 @@ import java.util.Map; import java.util.Set; public class HangingBlockBehavior extends BushBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final BlockBehaviorFactory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:hanging_block"); public HangingBlockBehavior(CustomBlock block, int delay, boolean blacklist, boolean stackable, List tagsCanSurviveOn, Set blocksCansSurviveOn, Set customBlocksCansSurviveOn) { super(block, delay, blacklist, stackable, -1, tagsCanSurviveOn, blocksCansSurviveOn, customBlocksCansSurviveOn); @@ -26,7 +28,7 @@ public class HangingBlockBehavior extends BushBlockBehavior { return mayPlaceOn(belowState, world, belowPos); } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/LampBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/LampBlockBehavior.java index 432837793..a567844b6 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/LampBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/LampBlockBehavior.java @@ -9,6 +9,7 @@ import net.momirealms.craftengine.core.block.ImmutableBlockState; import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; import net.momirealms.craftengine.core.block.properties.Property; import net.momirealms.craftengine.core.item.context.BlockPlaceContext; +import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; @@ -17,7 +18,8 @@ import java.util.concurrent.Callable; @SuppressWarnings("DuplicatedCode") public class LampBlockBehavior extends BukkitBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:lamp_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final Property litProperty; public LampBlockBehavior(CustomBlock block, Property litProperty) { @@ -70,7 +72,7 @@ public class LampBlockBehavior extends BukkitBlockBehavior { } @SuppressWarnings("unchecked") - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { Property lit = (Property) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("lit"), "warning.config.block.behavior.lamp.missing_lit"); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/LeavesBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/LeavesBlockBehavior.java index 3d921fb77..5ce0d811f 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/LeavesBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/LeavesBlockBehavior.java @@ -24,7 +24,8 @@ import java.util.Optional; import java.util.concurrent.Callable; public class LeavesBlockBehavior extends BukkitBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:leaves_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private static final Object LOG_TAG = BlockTags.getOrCreate(Key.of("minecraft", "logs")); private final int maxDistance; private final Property distanceProperty; @@ -160,7 +161,8 @@ public class LeavesBlockBehavior extends BukkitBlockBehavior { } @SuppressWarnings("unchecked") - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { + @Override public BlockBehavior create(CustomBlock block, Map arguments) { Property persistent = (Property) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("persistent"), "warning.config.block.behavior.leaves.missing_persistent"); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/LiquidFlowableBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/LiquidFlowableBlockBehavior.java index 764c1452a..bf63e3957 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/LiquidFlowableBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/LiquidFlowableBlockBehavior.java @@ -7,13 +7,15 @@ import net.momirealms.craftengine.core.block.CustomBlock; import net.momirealms.craftengine.core.block.UpdateOption; import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; import net.momirealms.craftengine.core.block.behavior.PlaceLiquidBlockBehavior; +import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.world.WorldEvents; import java.util.Map; import java.util.concurrent.Callable; public class LiquidFlowableBlockBehavior extends BukkitBlockBehavior implements PlaceLiquidBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:liquid_flowable_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); public LiquidFlowableBlockBehavior(CustomBlock customBlock) { super(customBlock); @@ -40,7 +42,8 @@ public class LiquidFlowableBlockBehavior extends BukkitBlockBehavior implements return true; } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { + @Override public BlockBehavior create(CustomBlock block, Map arguments) { return new LiquidFlowableBlockBehavior(block); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/MultiHighBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/MultiHighBlockBehavior.java index 15bb0068e..ab9442c21 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/MultiHighBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/MultiHighBlockBehavior.java @@ -19,6 +19,7 @@ import net.momirealms.craftengine.core.entity.player.InteractionHand; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.context.BlockPlaceContext; import net.momirealms.craftengine.core.util.Direction; +import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.world.*; import org.bukkit.inventory.ItemStack; @@ -28,7 +29,8 @@ import java.util.Optional; import java.util.concurrent.Callable; public class MultiHighBlockBehavior extends BukkitBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:multi_high_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); public final IntegerProperty highProperty; public MultiHighBlockBehavior(CustomBlock customBlock, IntegerProperty highProperty) { @@ -240,7 +242,7 @@ public class MultiHighBlockBehavior extends BukkitBlockBehavior { return state.with(property, property.min); } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/NearLiquidBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/NearLiquidBlockBehavior.java index 9c9b02c65..8239fd01a 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/NearLiquidBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/NearLiquidBlockBehavior.java @@ -9,6 +9,7 @@ import net.momirealms.craftengine.core.block.BlockBehavior; import net.momirealms.craftengine.core.block.CustomBlock; import net.momirealms.craftengine.core.block.ImmutableBlockState; import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; +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.BlockPos; @@ -18,9 +19,10 @@ import java.util.Map; import java.util.Optional; public class NearLiquidBlockBehavior extends AbstractCanSurviveBlockBehavior { + public static final Key ID = Key.from("craftengine:near_liquid_block"); private static final List WATER = List.of(MFluids.WATER, MFluids.FLOWING_WATER); private static final List LAVA = List.of(MFluids.LAVA, MFluids.FLOWING_LAVA); - public static final Factory FACTORY = new Factory(); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final boolean onWater; private final boolean onLava; private final boolean stackable; @@ -42,7 +44,8 @@ public class NearLiquidBlockBehavior extends AbstractCanSurviveBlockBehavior { return this.onLava; } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { + @Override public BlockBehavior create(CustomBlock block, Map arguments) { List liquidTypes = MiscUtils.getAsStringList(arguments.getOrDefault("liquid-type", List.of("water"))); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/OnLiquidBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/OnLiquidBlockBehavior.java index e71780c7c..5a5fdef60 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/OnLiquidBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/OnLiquidBlockBehavior.java @@ -9,6 +9,7 @@ import net.momirealms.craftengine.core.block.BlockBehavior; import net.momirealms.craftengine.core.block.CustomBlock; import net.momirealms.craftengine.core.block.ImmutableBlockState; import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; +import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; @@ -17,7 +18,8 @@ import java.util.Map; import java.util.Optional; public class OnLiquidBlockBehavior extends AbstractCanSurviveBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:on_liquid_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final boolean onWater; private final boolean onLava; private final boolean stackable; @@ -37,7 +39,7 @@ public class OnLiquidBlockBehavior extends AbstractCanSurviveBlockBehavior { return this.onLava; } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { List liquidTypes = MiscUtils.getAsStringList(arguments.getOrDefault("liquid-type", List.of("water"))); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/PressurePlateBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/PressurePlateBlockBehavior.java index 3d8263e77..d012f594d 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/PressurePlateBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/PressurePlateBlockBehavior.java @@ -16,10 +16,7 @@ import net.momirealms.craftengine.core.block.ImmutableBlockState; import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; import net.momirealms.craftengine.core.block.properties.Property; import net.momirealms.craftengine.core.sound.SoundData; -import net.momirealms.craftengine.core.util.Direction; -import net.momirealms.craftengine.core.util.PressurePlateSensitivity; -import net.momirealms.craftengine.core.util.ResourceConfigUtils; -import net.momirealms.craftengine.core.util.VersionHelper; +import net.momirealms.craftengine.core.util.*; import net.momirealms.craftengine.core.world.World; import net.momirealms.craftengine.core.world.WorldEvents; import org.bukkit.GameEvent; @@ -31,7 +28,8 @@ import java.util.Optional; import java.util.concurrent.Callable; public class PressurePlateBlockBehavior extends BukkitBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:pressure_plate_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final Property poweredProperty; private final SoundData onSound; private final SoundData offSound; @@ -220,7 +218,7 @@ public class PressurePlateBlockBehavior extends BukkitBlockBehavior { return true; } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @SuppressWarnings("unchecked") @Override diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SaplingBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SaplingBlockBehavior.java index 3d53ce579..8bebe7b51 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SaplingBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SaplingBlockBehavior.java @@ -34,7 +34,8 @@ import java.util.concurrent.Callable; @SuppressWarnings("DuplicatedCode") public class SaplingBlockBehavior extends BukkitBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:sapling_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final Key feature; private final IntegerProperty stageProperty; private final double boneMealSuccessChance; @@ -169,7 +170,7 @@ public class SaplingBlockBehavior extends BukkitBlockBehavior { return InteractionResult.SUCCESS; } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @SuppressWarnings("unchecked") @Override diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SeatBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SeatBlockBehavior.java index c54f6eb66..524726539 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SeatBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SeatBlockBehavior.java @@ -15,13 +15,15 @@ import net.momirealms.craftengine.core.entity.player.InteractionResult; import net.momirealms.craftengine.core.entity.seat.SeatConfig; import net.momirealms.craftengine.core.item.context.UseOnContext; import net.momirealms.craftengine.core.util.HorizontalDirection; +import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.world.BlockPos; import net.momirealms.craftengine.core.world.CEWorld; import java.util.Map; public class SeatBlockBehavior extends BukkitBlockBehavior implements EntityBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:seat_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final Property directionProperty; private final SeatConfig[] seats; @@ -64,7 +66,7 @@ public class SeatBlockBehavior extends BukkitBlockBehavior implements EntityBloc } } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @SuppressWarnings("unchecked") @Override diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SimpleParticleBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SimpleParticleBlockBehavior.java index d75184789..960ac0239 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SimpleParticleBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SimpleParticleBlockBehavior.java @@ -10,6 +10,7 @@ import net.momirealms.craftengine.core.block.behavior.EntityBlockBehavior; import net.momirealms.craftengine.core.block.entity.BlockEntity; import net.momirealms.craftengine.core.block.entity.BlockEntityType; import net.momirealms.craftengine.core.block.entity.tick.BlockEntityTicker; +import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.world.BlockPos; import net.momirealms.craftengine.core.world.CEWorld; @@ -19,7 +20,8 @@ import java.util.List; import java.util.Map; public class SimpleParticleBlockBehavior extends BukkitBlockBehavior implements EntityBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:simple_particle_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); public final ParticleConfig[] particles; public final int tickInterval; @@ -53,7 +55,8 @@ public class SimpleParticleBlockBehavior extends BukkitBlockBehavior implements return EntityBlockBehavior.createTickerHelper(SimpleParticleBlockEntity::tick); } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { + @Override public BlockBehavior create(CustomBlock block, Map arguments) { List particles = ResourceConfigUtils.parseConfigAsList(ResourceConfigUtils.get(arguments, "particles", "particle"), ParticleConfig::fromMap$blockEntity); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SimpleStorageBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SimpleStorageBlockBehavior.java index 28271e87e..7551d203e 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SimpleStorageBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SimpleStorageBlockBehavior.java @@ -21,6 +21,7 @@ import net.momirealms.craftengine.core.item.context.UseOnContext; import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; import net.momirealms.craftengine.core.sound.SoundData; 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 net.momirealms.craftengine.core.world.BlockPos; @@ -38,7 +39,8 @@ import java.util.Optional; import java.util.concurrent.Callable; public class SimpleStorageBlockBehavior extends BukkitBlockBehavior implements EntityBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:simple_storage_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final String containerTitle; private final int rows; private final SoundData openSound; @@ -198,7 +200,7 @@ public class SimpleStorageBlockBehavior extends BukkitBlockBehavior implements E return null; } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @SuppressWarnings("unchecked") @Override diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SlabBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SlabBlockBehavior.java index ad8fb235b..9c57567c8 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SlabBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SlabBlockBehavior.java @@ -27,7 +27,8 @@ import java.util.Optional; import java.util.concurrent.Callable; public class SlabBlockBehavior extends BukkitBlockBehavior implements IsPathFindableBlockBehavior, CanBeReplacedBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:slab_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final Property typeProperty; public SlabBlockBehavior(CustomBlock block, Property typeProperty) { @@ -114,7 +115,7 @@ public class SlabBlockBehavior extends BukkitBlockBehavior implements IsPathFind return false; } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @SuppressWarnings("unchecked") @Override diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SnowyBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SnowyBlockBehavior.java index c4ec18874..b35fc0ed7 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SnowyBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SnowyBlockBehavior.java @@ -11,13 +11,15 @@ import net.momirealms.craftengine.core.block.ImmutableBlockState; import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; import net.momirealms.craftengine.core.block.properties.BooleanProperty; import net.momirealms.craftengine.core.item.context.BlockPlaceContext; +import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; import java.util.concurrent.Callable; public class SnowyBlockBehavior extends BukkitBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:snowy_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final BooleanProperty snowyProperty; public SnowyBlockBehavior(CustomBlock customBlock, BooleanProperty snowyProperty) { @@ -44,7 +46,7 @@ public class SnowyBlockBehavior extends BukkitBlockBehavior { return FastNMS.INSTANCE.method$BlockStateBase$is(state, MTagKeys.Block$SNOW); } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SofaBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SofaBlockBehavior.java index 4259fd8e4..086517df0 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SofaBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SofaBlockBehavior.java @@ -12,10 +12,7 @@ import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; import net.momirealms.craftengine.core.block.properties.Property; import net.momirealms.craftengine.core.block.properties.type.SofaShape; import net.momirealms.craftengine.core.item.context.BlockPlaceContext; -import net.momirealms.craftengine.core.util.Direction; -import net.momirealms.craftengine.core.util.HorizontalDirection; -import net.momirealms.craftengine.core.util.ResourceConfigUtils; -import net.momirealms.craftengine.core.util.VersionHelper; +import net.momirealms.craftengine.core.util.*; import net.momirealms.craftengine.core.world.BlockPos; import java.util.Map; @@ -23,7 +20,8 @@ import java.util.Optional; import java.util.concurrent.Callable; public class SofaBlockBehavior extends BukkitBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:sofa_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final Property facingProperty; private final Property shapeProperty; @@ -99,7 +97,7 @@ public class SofaBlockBehavior extends BukkitBlockBehavior { return anotherState.get(anotherBehavior.facingProperty) != state.get(this.facingProperty); } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override @SuppressWarnings("unchecked") diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/StackableBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/StackableBlockBehavior.java index f569d013b..6ca8a6742 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/StackableBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/StackableBlockBehavior.java @@ -22,7 +22,8 @@ import java.util.List; import java.util.Map; public class StackableBlockBehavior extends BukkitBlockBehavior implements CanBeReplacedBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:stackable_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final IntegerProperty amountProperty; private final List items; private final String propertyName; @@ -71,7 +72,7 @@ public class StackableBlockBehavior extends BukkitBlockBehavior implements CanBe return blockState.cycle(property); } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/StairsBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/StairsBlockBehavior.java index 1fa475582..9f2eb8e39 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/StairsBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/StairsBlockBehavior.java @@ -13,10 +13,7 @@ import net.momirealms.craftengine.core.block.properties.Property; import net.momirealms.craftengine.core.block.properties.type.SingleBlockHalf; import net.momirealms.craftengine.core.block.properties.type.StairsShape; import net.momirealms.craftengine.core.item.context.BlockPlaceContext; -import net.momirealms.craftengine.core.util.Direction; -import net.momirealms.craftengine.core.util.HorizontalDirection; -import net.momirealms.craftengine.core.util.ResourceConfigUtils; -import net.momirealms.craftengine.core.util.VersionHelper; +import net.momirealms.craftengine.core.util.*; import net.momirealms.craftengine.core.world.BlockPos; import java.util.Map; @@ -25,7 +22,8 @@ import java.util.concurrent.Callable; @SuppressWarnings("DuplicatedCode") public class StairsBlockBehavior extends BukkitBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:stairs_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final Property facingProperty; private final Property halfProperty; private final Property shapeProperty; @@ -125,7 +123,7 @@ public class StairsBlockBehavior extends BukkitBlockBehavior { return anotherState.get(anotherBehavior.facingProperty) != state.get(this.facingProperty) || anotherState.get(anotherBehavior.halfProperty) != state.get(this.halfProperty); } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override @SuppressWarnings("unchecked") diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/StemBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/StemBlockBehavior.java index 452528c54..3fc7cc5c0 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/StemBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/StemBlockBehavior.java @@ -23,7 +23,8 @@ import java.util.Optional; import java.util.concurrent.Callable; public class StemBlockBehavior extends BukkitBlockBehavior implements IsPathFindableBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:stem_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final IntegerProperty ageProperty; private final Key fruit; private final Key attachedStem; @@ -124,7 +125,7 @@ public class StemBlockBehavior extends BukkitBlockBehavior implements IsPathFind return flag1 || flag2; } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/StrippableBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/StrippableBlockBehavior.java index bbe9837ae..91541a682 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/StrippableBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/StrippableBlockBehavior.java @@ -5,6 +5,7 @@ import net.momirealms.craftengine.core.block.BlockStateWrapper; import net.momirealms.craftengine.core.block.CustomBlock; import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; import net.momirealms.craftengine.core.plugin.CraftEngine; +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; @@ -14,7 +15,8 @@ import java.util.List; import java.util.Map; public class StrippableBlockBehavior extends BukkitBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:strippable_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final String stripped; private final LazyReference lazyState; private final List excludedProperties; @@ -41,7 +43,7 @@ public class StrippableBlockBehavior extends BukkitBlockBehavior { return properties; } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SturdyBaseBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SturdyBaseBlockBehavior.java index b4ce8fe4c..e6a59de65 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SturdyBaseBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SturdyBaseBlockBehavior.java @@ -9,6 +9,7 @@ import net.momirealms.craftengine.core.block.CustomBlock; import net.momirealms.craftengine.core.block.ImmutableBlockState; import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; import net.momirealms.craftengine.core.util.Direction; +import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; @@ -18,7 +19,8 @@ import java.util.Map; import java.util.Optional; public class SturdyBaseBlockBehavior extends AbstractCanSurviveBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:sturdy_base_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final Direction direction; private final boolean stackable; private final boolean checkFull; @@ -60,7 +62,7 @@ public class SturdyBaseBlockBehavior extends AbstractCanSurviveBlockBehavior { return optionalCustomState.filter(immutableBlockState -> immutableBlockState.owner().value() == super.customBlock).isPresent(); } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SurfaceSpreadingBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SurfaceSpreadingBlockBehavior.java index b0a67e4dd..a7020e4b7 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SurfaceSpreadingBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/SurfaceSpreadingBlockBehavior.java @@ -11,10 +11,7 @@ import net.momirealms.craftengine.core.block.ImmutableBlockState; import net.momirealms.craftengine.core.block.UpdateOption; import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; import net.momirealms.craftengine.core.block.properties.Property; -import net.momirealms.craftengine.core.util.LazyReference; -import net.momirealms.craftengine.core.util.RandomUtils; -import net.momirealms.craftengine.core.util.ResourceConfigUtils; -import net.momirealms.craftengine.core.util.VersionHelper; +import net.momirealms.craftengine.core.util.*; import org.jetbrains.annotations.Nullable; import java.util.Map; @@ -22,7 +19,8 @@ import java.util.Objects; import java.util.concurrent.Callable; public class SurfaceSpreadingBlockBehavior extends BukkitBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:surface_spreading_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final int requiredLight; private final LazyReference baseBlock; private final Property snowyProperty; @@ -101,7 +99,7 @@ public class SurfaceSpreadingBlockBehavior extends BukkitBlockBehavior { return canBeGrass(state, level, pos) && !FastNMS.INSTANCE.method$FluidState$is(FastNMS.INSTANCE.method$BlockGetter$getFluidState(level, blockPos), MTagKeys.Fluid$WATER); } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @SuppressWarnings("unchecked") @Override diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ToggleableLampBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ToggleableLampBlockBehavior.java index 4fbb1b43f..e1ed05c52 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ToggleableLampBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/ToggleableLampBlockBehavior.java @@ -11,6 +11,7 @@ import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; import net.momirealms.craftengine.core.block.properties.Property; import net.momirealms.craftengine.core.entity.player.InteractionResult; import net.momirealms.craftengine.core.item.context.UseOnContext; +import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; @@ -18,7 +19,8 @@ import java.util.Optional; import java.util.concurrent.Callable; public class ToggleableLampBlockBehavior extends BukkitBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:toggleable_lamp_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final Property litProperty; private final Property poweredProperty; private final boolean canOpenWithHand; @@ -88,7 +90,8 @@ public class ToggleableLampBlockBehavior extends BukkitBlockBehavior { } @SuppressWarnings("unchecked") - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { + @Override public BlockBehavior create(CustomBlock block, Map arguments) { boolean canOpenWithHand = ResourceConfigUtils.getAsBoolean(ResourceConfigUtils.get(arguments, "can-open-with-hand", "can-toggle-with-hand"), "can-toggle-with-hand"); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/TrapDoorBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/TrapDoorBlockBehavior.java index 6d9c8b4b0..42317c698 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/TrapDoorBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/TrapDoorBlockBehavior.java @@ -9,7 +9,6 @@ import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MFluids; import net.momirealms.craftengine.bukkit.util.BlockStateUtils; import net.momirealms.craftengine.bukkit.util.InteractUtils; import net.momirealms.craftengine.bukkit.util.LocationUtils; -import net.momirealms.craftengine.bukkit.world.BukkitWorld; import net.momirealms.craftengine.core.block.BlockBehavior; import net.momirealms.craftengine.core.block.CustomBlock; import net.momirealms.craftengine.core.block.ImmutableBlockState; @@ -43,7 +42,8 @@ import java.util.concurrent.Callable; @SuppressWarnings("DuplicatedCode") public class TrapDoorBlockBehavior extends BukkitBlockBehavior implements IsPathFindableBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:trapdoor_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final Property halfProperty; private final Property facingProperty; private final Property poweredProperty; @@ -229,7 +229,8 @@ public class TrapDoorBlockBehavior extends BukkitBlockBehavior implements IsPath } @SuppressWarnings("unchecked") - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { + @Override public BlockBehavior create(CustomBlock block, Map arguments) { Property half = (Property) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("half"), "warning.config.block.behavior.trapdoor.missing_half"); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/VerticalCropBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/VerticalCropBlockBehavior.java index 8b6352748..60f46347d 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/VerticalCropBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/VerticalCropBlockBehavior.java @@ -12,6 +12,7 @@ import net.momirealms.craftengine.core.block.UpdateOption; import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; import net.momirealms.craftengine.core.block.properties.IntegerProperty; import net.momirealms.craftengine.core.block.properties.Property; +import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.RandomUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.util.VersionHelper; @@ -22,7 +23,8 @@ import java.util.Optional; import java.util.concurrent.Callable; public class VerticalCropBlockBehavior extends BukkitBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:vertical_crop_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); private final int maxHeight; private final IntegerProperty ageProperty; private final float growSpeed; @@ -78,7 +80,7 @@ public class VerticalCropBlockBehavior extends BukkitBlockBehavior { } } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { @SuppressWarnings("unchecked") @Override diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/WallTorchParticleBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/WallTorchParticleBlockBehavior.java index b88216a98..99cd80ea5 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/WallTorchParticleBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/WallTorchParticleBlockBehavior.java @@ -13,6 +13,7 @@ import net.momirealms.craftengine.core.block.entity.tick.BlockEntityTicker; import net.momirealms.craftengine.core.block.properties.Property; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.util.HorizontalDirection; +import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.world.BlockPos; import net.momirealms.craftengine.core.world.CEWorld; @@ -22,7 +23,8 @@ import java.util.List; import java.util.Map; public class WallTorchParticleBlockBehavior extends BukkitBlockBehavior implements EntityBlockBehavior { - public static final Factory FACTORY = new Factory(); + public static final Key ID = Key.from("craftengine:wall_torch_particle_block"); + public static final BlockBehaviorFactory FACTORY = new Factory(); public final ParticleConfig[] particles; public final int tickInterval; public final Property facingProperty; @@ -62,7 +64,8 @@ public class WallTorchParticleBlockBehavior extends BukkitBlockBehavior implemen return EntityBlockBehavior.createTickerHelper(WallTorchParticleBlockEntity::tick); } - public static class Factory implements BlockBehaviorFactory { + private static class Factory implements BlockBehaviorFactory { + @SuppressWarnings("unchecked") @Override public BlockBehavior create(CustomBlock block, Map arguments) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/BukkitEntity.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/BukkitEntity.java index 7059606c8..b52d7da3c 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/BukkitEntity.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/BukkitEntity.java @@ -4,7 +4,6 @@ import net.momirealms.craftengine.bukkit.api.BukkitAdaptors; import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.util.EntityUtils; import net.momirealms.craftengine.bukkit.util.LocationUtils; -import net.momirealms.craftengine.bukkit.world.BukkitWorld; import net.momirealms.craftengine.core.entity.AbstractEntity; import net.momirealms.craftengine.core.entity.data.EntityData; import net.momirealms.craftengine.core.util.Direction; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitCustomItem.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitCustomItem.java index b397eb9b6..fb3d9f49a 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitCustomItem.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitCustomItem.java @@ -4,7 +4,7 @@ import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine; import net.momirealms.craftengine.core.item.*; import net.momirealms.craftengine.core.item.behavior.ItemBehavior; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; +import net.momirealms.craftengine.core.item.processor.ItemProcessor; import net.momirealms.craftengine.core.item.updater.ItemUpdateConfig; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.event.EventTrigger; @@ -24,7 +24,7 @@ public class BukkitCustomItem extends AbstractCustomItem { public BukkitCustomItem(boolean isVanillaItem, UniqueKey id, Object item, Object clientItem, Key materialKey, Key clientBoundMaterialKey, List behaviors, - List> modifiers, List> clientBoundModifiers, + List> modifiers, List> clientBoundModifiers, ItemSettings settings, Map>> events, ItemUpdateConfig updater) { @@ -37,7 +37,7 @@ public class BukkitCustomItem extends AbstractCustomItem { public ItemStack buildItemStack(ItemBuildContext context, int count) { ItemStack item = FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(FastNMS.INSTANCE.constructor$ItemStack(this.item, count)); Item wrapped = BukkitCraftEngine.instance().itemManager().wrap(item); - for (ItemDataModifier modifier : this.modifiers) { + for (ItemProcessor modifier : this.modifiers) { modifier.apply(wrapped, context); } return wrapped.getItem(); @@ -47,7 +47,7 @@ public class BukkitCustomItem extends AbstractCustomItem { public Item buildItem(ItemBuildContext context, int count) { ItemStack item = FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(FastNMS.INSTANCE.constructor$ItemStack(this.item, count)); Item wrapped = BukkitCraftEngine.instance().itemManager().wrap(item); - for (ItemDataModifier modifier : dataModifiers()) { + for (ItemProcessor modifier : dataModifiers()) { modifier.apply(wrapped, context); } return wrapped; @@ -78,8 +78,8 @@ public class BukkitCustomItem extends AbstractCustomItem { private final Object clientBoundItem; private final Map>> events = new EnumMap<>(EventTrigger.class); private final List behaviors = new ArrayList<>(4); - private final List> modifiers = new ArrayList<>(4); - private final List> clientBoundModifiers = new ArrayList<>(4); + private final List> modifiers = new ArrayList<>(4); + private final List> clientBoundModifiers = new ArrayList<>(4); private ItemSettings settings; private ItemUpdateConfig updater; @@ -113,25 +113,25 @@ public class BukkitCustomItem extends AbstractCustomItem { } @Override - public Builder dataModifier(ItemDataModifier modifier) { + public Builder dataModifier(ItemProcessor modifier) { this.modifiers.add(modifier); return this; } @Override - public Builder dataModifiers(List> modifiers) { + public Builder dataModifiers(List> modifiers) { this.modifiers.addAll(modifiers); return this; } @Override - public Builder clientBoundDataModifier(ItemDataModifier modifier) { + public Builder clientBoundDataModifier(ItemProcessor modifier) { this.clientBoundModifiers.add(modifier); return this; } @Override - public Builder clientBoundDataModifiers(List> modifiers) { + public Builder clientBoundDataModifiers(List> modifiers) { this.clientBoundModifiers.addAll(modifiers); return null; } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/LegacyNetworkItemHandler.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/LegacyNetworkItemHandler.java index 264f0c49e..0fa36b196 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/LegacyNetworkItemHandler.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/LegacyNetworkItemHandler.java @@ -6,8 +6,8 @@ import net.momirealms.craftengine.core.item.CustomItem; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.NetworkItemBuildContext; import net.momirealms.craftengine.core.item.NetworkItemHandler; -import net.momirealms.craftengine.core.item.modifier.ArgumentsModifier; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; +import net.momirealms.craftengine.core.item.processor.ArgumentsProcessor; +import net.momirealms.craftengine.core.item.processor.ItemProcessor; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.plugin.context.Context; @@ -209,7 +209,7 @@ public final class LegacyNetworkItemHandler implements NetworkItemHandler modifier : customItem.clientBoundDataModifiers()) { + for (ItemProcessor modifier : customItem.clientBoundDataModifiers()) { modifier.prepareNetworkItem(wrapped, context, tag); } // 应用阶段 - for (ItemDataModifier modifier : customItem.clientBoundDataModifiers()) { + for (ItemProcessor modifier : customItem.clientBoundDataModifiers()) { modifier.apply(wrapped, context); } // 如果拦截物品的描述名称等 diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ModernNetworkItemHandler.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ModernNetworkItemHandler.java index 532a84788..8e66fdc14 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ModernNetworkItemHandler.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ModernNetworkItemHandler.java @@ -3,8 +3,8 @@ package net.momirealms.craftengine.bukkit.item; import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.item.*; -import net.momirealms.craftengine.core.item.modifier.ArgumentsModifier; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; +import net.momirealms.craftengine.core.item.processor.ArgumentsProcessor; +import net.momirealms.craftengine.core.item.processor.ItemProcessor; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.plugin.context.Context; @@ -184,7 +184,7 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler modifier : customItem.clientBoundDataModifiers()) { + for (ItemProcessor modifier : customItem.clientBoundDataModifiers()) { modifier.prepareNetworkItem(original, context, tag); } // 应用阶段 - for (ItemDataModifier modifier : customItem.clientBoundDataModifiers()) { + for (ItemProcessor modifier : customItem.clientBoundDataModifiers()) { modifier.apply(wrapped, context); } // 如果拦截物品的描述名称等 diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/UniversalItemFactory.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/UniversalItemFactory.java index 9ebdcfa15..eba01fab6 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/UniversalItemFactory.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/UniversalItemFactory.java @@ -9,7 +9,7 @@ import net.momirealms.craftengine.core.attribute.AttributeModifier; import net.momirealms.craftengine.core.item.data.Enchantment; import net.momirealms.craftengine.core.item.data.FireworkExplosion; import net.momirealms.craftengine.core.item.data.Trim; -import net.momirealms.craftengine.core.item.modifier.IdModifier; +import net.momirealms.craftengine.core.item.processor.IdProcessor; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.util.Color; import net.momirealms.craftengine.core.util.Key; @@ -69,14 +69,14 @@ public class UniversalItemFactory extends BukkitItemFactory { @Override protected Optional customId(LegacyItemWrapper item) { - Object id = item.getJavaTag(IdModifier.CRAFT_ENGINE_ID); + Object id = item.getJavaTag(IdProcessor.CRAFT_ENGINE_ID); if (id == null) return Optional.empty(); return Optional.of(Key.of(id.toString())); } @Override protected void customId(LegacyItemWrapper item, Key id) { - item.setTag(id.toString(), IdModifier.CRAFT_ENGINE_ID); + item.setTag(id.toString(), IdProcessor.CRAFT_ENGINE_ID); } @Override diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/loot/BukkitVanillaLootManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/loot/BukkitVanillaLootManager.java index 510659653..70d1c6f53 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/loot/BukkitVanillaLootManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/loot/BukkitVanillaLootManager.java @@ -6,7 +6,6 @@ import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MBlocks; import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer; import net.momirealms.craftengine.bukkit.util.BlockStateUtils; import net.momirealms.craftengine.bukkit.util.KeyUtils; -import net.momirealms.craftengine.bukkit.world.BukkitWorld; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.loot.AbstractVanillaLootManager; import net.momirealms.craftengine.core.loot.LootTable; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/BlockStateGenerator.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/BlockStateGenerator.java index 6b4057a02..1438f40a1 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/BlockStateGenerator.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/BlockStateGenerator.java @@ -22,7 +22,6 @@ import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflect import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MBlockStateProperties; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MLootContextParams; import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer; -import net.momirealms.craftengine.bukkit.world.BukkitWorld; import net.momirealms.craftengine.core.block.BlockSettings; import net.momirealms.craftengine.core.block.DelegatingBlockState; import net.momirealms.craftengine.core.block.ImmutableBlockState; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/user/BukkitServerPlayer.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/user/BukkitServerPlayer.java index 228478b8c..5acb4bd2b 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/user/BukkitServerPlayer.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/user/BukkitServerPlayer.java @@ -22,7 +22,6 @@ import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MAttributeH import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MMobEffects; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.NetworkReflections; import net.momirealms.craftengine.bukkit.util.*; -import net.momirealms.craftengine.bukkit.world.BukkitWorld; import net.momirealms.craftengine.core.advancement.AdvancementType; import net.momirealms.craftengine.core.block.BlockStateWrapper; import net.momirealms.craftengine.core.block.ImmutableBlockState; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/InteractUtils.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/InteractUtils.java index 68bcce69a..18361ad57 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/InteractUtils.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/InteractUtils.java @@ -17,7 +17,7 @@ import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemKeys; import net.momirealms.craftengine.core.item.behavior.ItemBehavior; import net.momirealms.craftengine.core.item.context.BlockPlaceContext; -import net.momirealms.craftengine.core.item.modifier.AttributeModifiersModifier; +import net.momirealms.craftengine.core.item.processor.AttributeModifiersProcessor; import net.momirealms.craftengine.core.item.recipe.RecipeType; import net.momirealms.craftengine.core.item.recipe.UniqueIdItem; import net.momirealms.craftengine.core.item.recipe.input.SingleItemInput; @@ -1051,7 +1051,7 @@ public final class InteractUtils { public static boolean isFullHealth(Entity entity) { if (entity instanceof LivingEntity living) { - Key key = AttributeModifiersModifier.getNativeAttributeName(Key.of("max_health")); + Key key = AttributeModifiersProcessor.getNativeAttributeName(Key.of("max_health")); Attribute maxHealthAttr = Registry.ATTRIBUTE.get(KeyUtils.toNamespacedKey(key)); if (maxHealthAttr == null) return false; AttributeInstance attribute = living.getAttribute(maxHealthAttr); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/LocationUtils.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/LocationUtils.java index c1b662f16..ab2203588 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/LocationUtils.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/LocationUtils.java @@ -2,7 +2,6 @@ package net.momirealms.craftengine.bukkit.util; import net.momirealms.craftengine.bukkit.api.BukkitAdaptors; import net.momirealms.craftengine.bukkit.nms.FastNMS; -import net.momirealms.craftengine.bukkit.world.BukkitWorld; import net.momirealms.craftengine.core.world.BlockPos; import net.momirealms.craftengine.core.world.Vec3d; import net.momirealms.craftengine.core.world.WorldPosition; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorldManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorldManager.java index 84d5788ed..1c4c3b409 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorldManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorldManager.java @@ -334,6 +334,7 @@ public class BukkitWorldManager implements WorldManager, Listener { } public void handleChunkGenerate(CEWorld ceWorld, ChunkPos chunkPos, Object chunkAccess) { + if (ceWorld.isChunkLoaded(chunkPos.longKey)) return; Object[] sections = FastNMS.INSTANCE.method$ChunkAccess$getSections(chunkAccess); CEChunk ceChunk; try { diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/BlockBehavior.java b/core/src/main/java/net/momirealms/craftengine/core/block/BlockBehavior.java index 6d794219f..c9cb5a257 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/BlockBehavior.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/BlockBehavior.java @@ -18,6 +18,7 @@ import org.jetbrains.annotations.Nullable; import java.util.Optional; import java.util.concurrent.Callable; +// todo move the package on 1.0 public abstract class BlockBehavior { @SuppressWarnings("unchecked") diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/behavior/BlockBehaviorType.java b/core/src/main/java/net/momirealms/craftengine/core/block/behavior/BlockBehaviorType.java new file mode 100644 index 000000000..e2761796f --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/block/behavior/BlockBehaviorType.java @@ -0,0 +1,6 @@ +package net.momirealms.craftengine.core.block.behavior; + +import net.momirealms.craftengine.core.util.Key; + +public record BlockBehaviorType(Key id, BlockBehaviorFactory factory) { +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/behavior/BlockBehaviors.java b/core/src/main/java/net/momirealms/craftengine/core/block/behavior/BlockBehaviors.java index d109bc77d..8e96be052 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/behavior/BlockBehaviors.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/behavior/BlockBehaviors.java @@ -14,21 +14,26 @@ import org.jetbrains.annotations.Nullable; import java.util.Map; public class BlockBehaviors { - public static final Key EMPTY = Key.from("craftengine:empty"); + public static final BlockBehaviorType EMPTY = register(Key.from("craftengine:empty"), (block, args) -> EmptyBlockBehavior.INSTANCE); - public static void register(Key key, BlockBehaviorFactory factory) { - ((WritableRegistry) BuiltInRegistries.BLOCK_BEHAVIOR_FACTORY) - .register(ResourceKey.create(Registries.BLOCK_BEHAVIOR_FACTORY.location(), key), factory); + protected BlockBehaviors() { + } + + public static BlockBehaviorType register(Key key, BlockBehaviorFactory factory) { + BlockBehaviorType type = new BlockBehaviorType(key, factory); + ((WritableRegistry) BuiltInRegistries.BLOCK_BEHAVIOR_TYPE) + .register(ResourceKey.create(Registries.BLOCK_BEHAVIOR_TYPE.location(), key), type); + return type; } public static BlockBehavior fromMap(CustomBlock block, @Nullable Map map) { if (map == null || map.isEmpty()) return EmptyBlockBehavior.INSTANCE; String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), "warning.config.block.behavior.missing_type"); Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE); - BlockBehaviorFactory factory = BuiltInRegistries.BLOCK_BEHAVIOR_FACTORY.getValue(key); + BlockBehaviorType factory = BuiltInRegistries.BLOCK_BEHAVIOR_TYPE.getValue(key); if (factory == null) { throw new LocalizedResourceConfigException("warning.config.block.behavior.invalid_type", type); } - return factory.create(block, map); + return factory.factory().create(block, map); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/behavior/FurnitureBehaviorTypes.java b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/behavior/FurnitureBehaviorTypes.java index 9647f33fb..f7dc3b075 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/behavior/FurnitureBehaviorTypes.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/behavior/FurnitureBehaviorTypes.java @@ -29,7 +29,7 @@ public class FurnitureBehaviorTypes { public static FurnitureBehaviorType register(Key id, FurnitureBehaviorFactory factory) { FurnitureBehaviorType type = new FurnitureBehaviorType<>(id, factory); ((WritableRegistry>) BuiltInRegistries.FURNITURE_BEHAVIOR_TYPE) - .register(ResourceKey.create(Registries.BLOCK_BEHAVIOR_FACTORY.location(), id), type); + .register(ResourceKey.create(Registries.BLOCK_BEHAVIOR_TYPE.location(), id), type); return type; } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/AbstractCustomItem.java b/core/src/main/java/net/momirealms/craftengine/core/item/AbstractCustomItem.java index e9480ff1b..b4853798c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/AbstractCustomItem.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/AbstractCustomItem.java @@ -1,7 +1,7 @@ package net.momirealms.craftengine.core.item; import net.momirealms.craftengine.core.item.behavior.ItemBehavior; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; +import net.momirealms.craftengine.core.item.processor.ItemProcessor; import net.momirealms.craftengine.core.item.updater.ItemUpdateConfig; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.event.EventTrigger; @@ -20,8 +20,8 @@ public abstract class AbstractCustomItem implements CustomItem { protected final UniqueKey id; protected final Key material; protected final Key clientBoundMaterial; - protected final ItemDataModifier[] modifiers; - protected final ItemDataModifier[] clientBoundModifiers; + protected final ItemProcessor[] modifiers; + protected final ItemProcessor[] clientBoundModifiers; protected final List behaviors; protected final ItemSettings settings; protected final Map>> events; @@ -30,8 +30,8 @@ public abstract class AbstractCustomItem implements CustomItem { @SuppressWarnings("unchecked") public AbstractCustomItem(boolean isVanillaItem, UniqueKey id, Key material, Key clientBoundMaterial, List behaviors, - List> modifiers, - List> clientBoundModifiers, + List> modifiers, + List> clientBoundModifiers, ItemSettings settings, Map>> events, ItemUpdateConfig updater) { @@ -41,9 +41,9 @@ public abstract class AbstractCustomItem implements CustomItem { this.clientBoundMaterial = clientBoundMaterial; this.events = events; // unchecked cast - this.modifiers = modifiers.toArray(new ItemDataModifier[0]); + this.modifiers = modifiers.toArray(new ItemProcessor[0]); // unchecked cast - this.clientBoundModifiers = clientBoundModifiers.toArray(new ItemDataModifier[0]); + this.clientBoundModifiers = clientBoundModifiers.toArray(new ItemProcessor[0]); this.behaviors = List.copyOf(behaviors); this.settings = settings; this.updater = updater; @@ -82,7 +82,7 @@ public abstract class AbstractCustomItem implements CustomItem { } @Override - public ItemDataModifier[] dataModifiers() { + public ItemProcessor[] dataModifiers() { return this.modifiers; } @@ -97,7 +97,7 @@ public abstract class AbstractCustomItem implements CustomItem { } @Override - public ItemDataModifier[] clientBoundDataModifiers() { + public ItemProcessor[] clientBoundDataModifiers() { return this.clientBoundModifiers; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItemManager.java b/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItemManager.java index 07de2f0be..50e319222 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItemManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItemManager.java @@ -5,7 +5,7 @@ import com.google.gson.JsonPrimitive; import net.momirealms.craftengine.core.item.behavior.ItemBehavior; import net.momirealms.craftengine.core.item.behavior.ItemBehaviors; import net.momirealms.craftengine.core.item.equipment.*; -import net.momirealms.craftengine.core.item.modifier.*; +import net.momirealms.craftengine.core.item.processor.*; import net.momirealms.craftengine.core.item.updater.ItemUpdateConfig; import net.momirealms.craftengine.core.item.updater.ItemUpdateResult; import net.momirealms.craftengine.core.item.updater.ItemUpdater; @@ -70,7 +70,7 @@ public abstract class AbstractItemManager extends AbstractModelGenerator impl super(plugin); this.itemParser = new ItemParser(); this.equipmentParser = new EquipmentParser(); - ItemDataModifiers.init(); + ItemProcessors.init(); } public ItemParser itemParser() { @@ -574,17 +574,17 @@ public abstract class AbstractItemManager extends AbstractModelGenerator impl } if (customModelData > 0 && (hasModelSection || forceCustomModelData)) { - if (clientBoundModel) itemBuilder.clientBoundDataModifier(new OverwritableCustomModelDataModifier<>(customModelData)); - else itemBuilder.dataModifier(new CustomModelDataModifier<>(customModelData)); + if (clientBoundModel) itemBuilder.clientBoundDataModifier(new OverwritableCustomModelDataProcessor<>(customModelData)); + else itemBuilder.dataModifier(new CustomModelDataProcessor<>(customModelData)); } if (itemModel != null && (hasModelSection || forceItemModel)) { - if (clientBoundModel) itemBuilder.clientBoundDataModifier(new OverwritableItemModelModifier<>(itemModel)); - else itemBuilder.dataModifier(new ItemModelModifier<>(itemModel)); + if (clientBoundModel) itemBuilder.clientBoundDataModifier(new OverwritableItemModelProcessor<>(itemModel)); + else itemBuilder.dataModifier(new ItemModelProcessor<>(itemModel)); } // 应用物品数据 try { - ItemDataModifiers.applyDataModifiers(MiscUtils.castToMap(section.get("data"), true), itemBuilder::dataModifier); + ItemProcessors.applyDataModifiers(MiscUtils.castToMap(section.get("data"), true), itemBuilder::dataModifier); } catch (LocalizedResourceConfigException e) { collector.add(e); } @@ -592,7 +592,7 @@ public abstract class AbstractItemManager extends AbstractModelGenerator impl // 应用客户端侧数据 try { if (VersionHelper.PREMIUM) { - ItemDataModifiers.applyDataModifiers(MiscUtils.castToMap(section.get("client-bound-data"), true), itemBuilder::clientBoundDataModifier); + ItemProcessors.applyDataModifiers(MiscUtils.castToMap(section.get("client-bound-data"), true), itemBuilder::clientBoundDataModifier); } } catch (LocalizedResourceConfigException e) { collector.add(e); @@ -600,7 +600,7 @@ public abstract class AbstractItemManager extends AbstractModelGenerator impl // 如果不是原版物品,那么加入ce的标识符 if (!isVanillaItem) - itemBuilder.dataModifier(new IdModifier<>(id)); + itemBuilder.dataModifier(new IdProcessor<>(id)); // 事件 Map>> eventTriggerListMap; @@ -648,7 +648,7 @@ public abstract class AbstractItemManager extends AbstractModelGenerator impl } ItemUpdateConfig config = new ItemUpdateConfig(versions); itemBuilder.updater(config); - itemBuilder.dataModifier(new ItemVersionModifier<>(config.maxVersion())); + itemBuilder.dataModifier(new ItemVersionProcessor<>(config.maxVersion())); } // 构建自定义物品 diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/CustomItem.java b/core/src/main/java/net/momirealms/craftengine/core/item/CustomItem.java index f5bbdb308..e62ed6855 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/CustomItem.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/CustomItem.java @@ -1,7 +1,7 @@ package net.momirealms.craftengine.core.item; import net.momirealms.craftengine.core.item.behavior.ItemBehavior; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; +import net.momirealms.craftengine.core.item.processor.ItemProcessor; import net.momirealms.craftengine.core.item.updater.ItemUpdateConfig; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.event.EventTrigger; @@ -35,11 +35,11 @@ public interface CustomItem extends BuildableItem { Key clientBoundMaterial(); - ItemDataModifier[] dataModifiers(); + ItemProcessor[] dataModifiers(); boolean hasClientBoundDataModifier(); - ItemDataModifier[] clientBoundDataModifiers(); + ItemProcessor[] clientBoundDataModifiers(); ItemSettings settings(); @@ -63,13 +63,13 @@ public interface CustomItem extends BuildableItem { Builder material(Key material); - Builder dataModifier(ItemDataModifier modifier); + Builder dataModifier(ItemProcessor modifier); - Builder dataModifiers(List> modifiers); + Builder dataModifiers(List> modifiers); - Builder clientBoundDataModifier(ItemDataModifier modifier); + Builder clientBoundDataModifier(ItemProcessor modifier); - Builder clientBoundDataModifiers(List> modifiers); + Builder clientBoundDataModifiers(List> modifiers); Builder behavior(ItemBehavior behavior); diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/Item.java b/core/src/main/java/net/momirealms/craftengine/core/item/Item.java index 5b7c2f563..53c40643d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/Item.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/Item.java @@ -10,7 +10,7 @@ import net.momirealms.craftengine.core.item.data.Enchantment; import net.momirealms.craftengine.core.item.data.FireworkExplosion; import net.momirealms.craftengine.core.item.data.JukeboxPlayable; import net.momirealms.craftengine.core.item.data.Trim; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; +import net.momirealms.craftengine.core.item.processor.ItemProcessor; import net.momirealms.craftengine.core.item.setting.EquipmentData; import net.momirealms.craftengine.core.util.Color; import net.momirealms.craftengine.core.util.Key; @@ -228,7 +228,7 @@ public interface Item { void merge(Item another); - default Item apply(ItemDataModifier modifier, ItemBuildContext context) { + default Item apply(ItemProcessor modifier, ItemBuildContext context) { return modifier.apply(this, context); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/ItemDataModifierFactory.java b/core/src/main/java/net/momirealms/craftengine/core/item/ItemDataModifierFactory.java deleted file mode 100644 index 446ed2272..000000000 --- a/core/src/main/java/net/momirealms/craftengine/core/item/ItemDataModifierFactory.java +++ /dev/null @@ -1,8 +0,0 @@ -package net.momirealms.craftengine.core.item; - -import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; - -public interface ItemDataModifierFactory { - - ItemDataModifier create(Object arg); -} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/ItemProcessorFactory.java b/core/src/main/java/net/momirealms/craftengine/core/item/ItemProcessorFactory.java new file mode 100644 index 000000000..8e3aac5ab --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/item/ItemProcessorFactory.java @@ -0,0 +1,8 @@ +package net.momirealms.craftengine.core.item; + +import net.momirealms.craftengine.core.item.processor.ItemProcessor; + +public interface ItemProcessorFactory { + + ItemProcessor create(Object arg); +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java b/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java index ed04a975e..50bf02632 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java @@ -5,9 +5,9 @@ import net.momirealms.craftengine.core.entity.display.ItemDisplayContext; import net.momirealms.craftengine.core.entity.projectile.ProjectileMeta; import net.momirealms.craftengine.core.item.equipment.ComponentBasedEquipment; import net.momirealms.craftengine.core.item.equipment.Equipment; -import net.momirealms.craftengine.core.item.modifier.EquippableModifier; -import net.momirealms.craftengine.core.item.modifier.FoodModifier; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; +import net.momirealms.craftengine.core.item.processor.EquippableProcessor; +import net.momirealms.craftengine.core.item.processor.FoodProcessor; +import net.momirealms.craftengine.core.item.processor.ItemProcessor; import net.momirealms.craftengine.core.item.recipe.remainder.CraftRemainder; import net.momirealms.craftengine.core.item.recipe.remainder.CraftRemainders; import net.momirealms.craftengine.core.item.setting.*; @@ -57,25 +57,25 @@ public class ItemSettings { private ItemSettings() {} - public List> modifiers() { - ArrayList> modifiers = new ArrayList<>(); + public List> modifiers() { + ArrayList> modifiers = new ArrayList<>(); if (this.equipment != null) { EquipmentData data = this.equipment.equipmentData(); if (data != null) { - modifiers.add(new EquippableModifier<>(data)); + modifiers.add(new EquippableProcessor<>(data)); } if (!this.equipment.clientBoundModel().asBoolean(Config.globalClientboundModel())) { modifiers.addAll(this.equipment.equipment().modifiers()); } } if (VersionHelper.isOrAbove1_20_5() && this.foodData != null) { - modifiers.add(new FoodModifier<>(this.foodData.nutrition(), this.foodData.saturation(), false)); + modifiers.add(new FoodProcessor<>(this.foodData.nutrition(), this.foodData.saturation(), false)); } return modifiers; } - public List> clientBoundModifiers() { - ArrayList> modifiers = new ArrayList<>(); + public List> clientBoundModifiers() { + ArrayList> modifiers = new ArrayList<>(); if (this.equipment != null) { if (this.equipment.clientBoundModel().asBoolean(Config.globalClientboundModel())) { modifiers.addAll(this.equipment.equipment().modifiers()); diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/equipment/ComponentBasedEquipment.java b/core/src/main/java/net/momirealms/craftengine/core/item/equipment/ComponentBasedEquipment.java index 079732a56..696b526f6 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/equipment/ComponentBasedEquipment.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/equipment/ComponentBasedEquipment.java @@ -2,8 +2,8 @@ package net.momirealms.craftengine.core.item.equipment; import com.google.gson.JsonArray; import com.google.gson.JsonObject; -import net.momirealms.craftengine.core.item.modifier.EquippableAssetIdModifier; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; +import net.momirealms.craftengine.core.item.processor.EquippableAssetIdProcessor; +import net.momirealms.craftengine.core.item.processor.ItemProcessor; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; @@ -31,8 +31,8 @@ public class ComponentBasedEquipment extends AbstractEquipment implements Suppli } @Override - public List> modifiers() { - return List.of(new EquippableAssetIdModifier<>(this.assetId)); + public List> modifiers() { + return List.of(new EquippableAssetIdProcessor<>(this.assetId)); } public EnumMap> layers() { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/equipment/Equipment.java b/core/src/main/java/net/momirealms/craftengine/core/item/equipment/Equipment.java index d36d1a885..24e9ce98a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/equipment/Equipment.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/equipment/Equipment.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.equipment; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; +import net.momirealms.craftengine.core.item.processor.ItemProcessor; import net.momirealms.craftengine.core.util.Key; import java.util.List; @@ -11,5 +11,5 @@ public interface Equipment { Key type(); - List> modifiers(); + List> modifiers(); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/equipment/TrimBasedEquipment.java b/core/src/main/java/net/momirealms/craftengine/core/item/equipment/TrimBasedEquipment.java index d620d30a0..723e38614 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/equipment/TrimBasedEquipment.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/equipment/TrimBasedEquipment.java @@ -1,9 +1,9 @@ package net.momirealms.craftengine.core.item.equipment; import net.momirealms.craftengine.core.item.DataComponentKeys; -import net.momirealms.craftengine.core.item.modifier.HideTooltipModifier; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; -import net.momirealms.craftengine.core.item.modifier.TrimModifier; +import net.momirealms.craftengine.core.item.processor.HideTooltipProcessor; +import net.momirealms.craftengine.core.item.processor.ItemProcessor; +import net.momirealms.craftengine.core.item.processor.TrimProcessor; import net.momirealms.craftengine.core.pack.AbstractPackManager; import net.momirealms.craftengine.core.util.Key; import org.jetbrains.annotations.Nullable; @@ -39,10 +39,10 @@ public class TrimBasedEquipment extends AbstractEquipment { } @Override - public List> modifiers() { + public List> modifiers() { return List.of( - new TrimModifier<>(Key.of(AbstractPackManager.NEW_TRIM_MATERIAL), this.assetId), - new HideTooltipModifier<>(List.of(DataComponentKeys.TRIM)) + new TrimProcessor<>(Key.of(AbstractPackManager.NEW_TRIM_MATERIAL), this.assetId), + new HideTooltipProcessor<>(List.of(DataComponentKeys.TRIM)) ); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/JukeboxSongModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/JukeboxSongModifier.java deleted file mode 100644 index 7702865f6..000000000 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/JukeboxSongModifier.java +++ /dev/null @@ -1,40 +0,0 @@ -package net.momirealms.craftengine.core.item.modifier; - -import net.momirealms.craftengine.core.item.Item; -import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; -import net.momirealms.craftengine.core.item.data.JukeboxPlayable; -import net.momirealms.craftengine.core.util.Key; - -public class JukeboxSongModifier implements ItemDataModifier { - public static final Factory FACTORY = new Factory<>(); - private final JukeboxPlayable song; - - public JukeboxSongModifier(JukeboxPlayable song) { - this.song = song; - } - - public JukeboxPlayable song() { - return song; - } - - @Override - public Key type() { - return ItemDataModifiers.JUKEBOX_PLAYABLE; - } - - @Override - public Item apply(Item item, ItemBuildContext context) { - item.jukeboxSong(this.song); - return item; - } - - public static class Factory implements ItemDataModifierFactory { - - @Override - public ItemDataModifier create(Object arg) { - String song = arg.toString(); - return new JukeboxSongModifier<>(new JukeboxPlayable(song, true)); - } - } -} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ArgumentsModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ArgumentsProcessor.java similarity index 79% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/ArgumentsModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/ArgumentsProcessor.java index e5a534eba..bf8e4efe9 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ArgumentsModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ArgumentsProcessor.java @@ -1,9 +1,9 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; 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; @@ -16,12 +16,12 @@ import java.util.HashMap; import java.util.Map; import java.util.Optional; -public class ArgumentsModifier implements ItemDataModifier { - public static final Factory FACTORY = new Factory<>(); +public class ArgumentsProcessor implements ItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); public static final String ARGUMENTS_TAG = "craftengine:arguments"; private final Map arguments; - public ArgumentsModifier(Map arguments) { + public ArgumentsProcessor(Map arguments) { this.arguments = arguments; } @@ -29,11 +29,6 @@ public class ArgumentsModifier implements ItemDataModifier { return arguments; } - @Override - public Key type() { - return ItemDataModifiers.ARGUMENTS; - } - @Override public Item apply(Item item, ItemBuildContext context) { if (VersionHelper.isOrAbove1_20_5()) { @@ -54,16 +49,16 @@ public class ArgumentsModifier implements ItemDataModifier { return item; } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { Map data = ResourceConfigUtils.getAsMap(arg, "arguments"); Map arguments = new HashMap<>(); for (Map.Entry entry : data.entrySet()) { arguments.put(entry.getKey(), TextProviders.fromString(entry.getValue().toString())); } - return new ArgumentsModifier<>(arguments); + return new ArgumentsProcessor<>(arguments); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/AttributeModifiersModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/AttributeModifiersProcessor.java similarity index 92% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/AttributeModifiersModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/AttributeModifiersProcessor.java index 2c609babf..49a28c4f9 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/AttributeModifiersModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/AttributeModifiersProcessor.java @@ -1,4 +1,4 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.attribute.AttributeModifier; import net.momirealms.craftengine.core.attribute.Attributes; @@ -6,7 +6,7 @@ import net.momirealms.craftengine.core.attribute.Attributes1_21; import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.util.*; @@ -14,8 +14,8 @@ import org.jetbrains.annotations.Nullable; import java.util.*; -public class AttributeModifiersModifier implements SimpleNetworkItemDataModifier { - public static final Factory FACTORY = new Factory<>(); +public class AttributeModifiersProcessor implements SimpleNetworkItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); public static final Map CONVERTOR = new HashMap<>(); private static final Object[] NBT_PATH = new Object[]{"AttributeModifiers"}; @@ -91,7 +91,7 @@ public class AttributeModifiersModifier implements SimpleNetworkItemDataModif private final List modifiers; - public AttributeModifiersModifier(List modifiers) { + public AttributeModifiersProcessor(List modifiers) { this.modifiers = modifiers; } @@ -99,11 +99,6 @@ public class AttributeModifiersModifier implements SimpleNetworkItemDataModif return this.modifiers; } - @Override - public Key type() { - return ItemDataModifiers.ATTRIBUTE_MODIFIERS; - } - @Override public Item apply(Item item, ItemBuildContext context) { List results = new ArrayList<>(this.modifiers.size()); @@ -133,7 +128,7 @@ public class AttributeModifiersModifier implements SimpleNetworkItemDataModif Optional id, NumberProvider amount, AttributeModifier.Operation operation, - AttributeModifiersModifier.PreModifier.@Nullable PreDisplay display) { + AttributeModifiersProcessor.PreModifier.@Nullable PreDisplay display) { public PreModifier(String type, AttributeModifier.Slot slot, Optional id, NumberProvider amount, AttributeModifier.Operation operation, @Nullable PreDisplay display) { this.amount = amount; @@ -157,13 +152,13 @@ public class AttributeModifiersModifier implements SimpleNetworkItemDataModif } } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { List attributeModifiers = ResourceConfigUtils.parseConfigAsList(arg, (map) -> { String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), "warning.config.item.data.attribute_modifiers.missing_type"); - Key nativeType = AttributeModifiersModifier.getNativeAttributeName(Key.of(type)); + Key nativeType = AttributeModifiersProcessor.getNativeAttributeName(Key.of(type)); AttributeModifier.Slot slot = AttributeModifier.Slot.valueOf(map.getOrDefault("slot", "any").toString().toUpperCase(Locale.ENGLISH)); Optional id = Optional.ofNullable(map.get("id")).map(String::valueOf).map(Key::of); NumberProvider amount = NumberProviders.fromObject(ResourceConfigUtils.requireNonNullOrThrow(map.get("amount"), "warning.config.item.data.attribute_modifiers.missing_amount")); @@ -184,7 +179,7 @@ public class AttributeModifiersModifier implements SimpleNetworkItemDataModif return new PreModifier(nativeType.value(), slot, id, amount, operation, display); }); - return new AttributeModifiersModifier<>(attributeModifiers); + return new AttributeModifiersProcessor<>(attributeModifiers); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/BlockStateModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/BlockStateProcessor.java similarity index 77% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/BlockStateModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/BlockStateProcessor.java index 7ca29a9f5..df0f249aa 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/BlockStateModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/BlockStateProcessor.java @@ -1,11 +1,11 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.block.BlockStateWrapper; import net.momirealms.craftengine.core.block.CustomBlockStateWrapper; import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.LazyReference; @@ -16,20 +16,15 @@ import java.util.HashMap; import java.util.Locale; import java.util.Map; -public class BlockStateModifier implements SimpleNetworkItemDataModifier { - public static final Factory FACTORY = new Factory<>(); +public class BlockStateProcessor implements SimpleNetworkItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); private static final Object[] NBT_PATH = new Object[]{"BlockStateTag"}; private final LazyReference> wrapper; - public BlockStateModifier(LazyReference> wrapper) { + public BlockStateProcessor(LazyReference> wrapper) { this.wrapper = wrapper; } - @Override - public Key type() { - return ItemDataModifiers.BLOCK_STATE; - } - @Override public Item apply(Item item, ItemBuildContext context) { return item.blockState(this.wrapper.get()); @@ -50,19 +45,19 @@ public class BlockStateModifier implements SimpleNetworkItemDataModifier { return DataComponentKeys.BLOCK_STATE; } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { if (arg instanceof Map map) { Map properties = new HashMap<>(); for (Map.Entry entry : map.entrySet()) { properties.put(entry.getKey().toString(), entry.getValue().toString()); } - return new BlockStateModifier<>(LazyReference.lazyReference(() -> properties)); + return new BlockStateProcessor<>(LazyReference.lazyReference(() -> properties)); } else { String stateString = arg.toString(); - return new BlockStateModifier<>(LazyReference.lazyReference(() -> { + return new BlockStateProcessor<>(LazyReference.lazyReference(() -> { BlockStateWrapper blockState = CraftEngine.instance().blockManager().createBlockState(stateString); if (blockState instanceof CustomBlockStateWrapper customBlockStateWrapper) { blockState = customBlockStateWrapper.visualBlockState(); diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ComponentsModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ComponentsProcessor.java similarity index 86% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/ComponentsModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/ComponentsProcessor.java index 57381eed6..a4ee18698 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ComponentsModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ComponentsProcessor.java @@ -1,4 +1,4 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import com.google.gson.JsonElement; import net.momirealms.craftengine.core.item.*; @@ -12,12 +12,12 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -public class ComponentsModifier implements ItemDataModifier { - public static final Factory FACTORY = new Factory<>(); +public class ComponentsProcessor implements ItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); private final List> arguments; private CompoundTag customData = null; - public ComponentsModifier(Map arguments) { + public ComponentsProcessor(Map arguments) { List> pairs = new ArrayList<>(arguments.size()); for (Map.Entry entry : arguments.entrySet()) { Key key = Key.of(entry.getKey()); @@ -50,11 +50,6 @@ public class ComponentsModifier implements ItemDataModifier { return CraftEngine.instance().platform().javaToSparrowNBT(value); } - @Override - public Key type() { - return ItemDataModifiers.COMPONENTS; - } - @Override public Item apply(Item item, ItemBuildContext context) { for (Pair entry : this.arguments) { @@ -87,12 +82,12 @@ public class ComponentsModifier implements ItemDataModifier { return item; } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { Map data = ResourceConfigUtils.getAsMap(arg, "components"); - return new ComponentsModifier<>(data); + return new ComponentsProcessor<>(data); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ConditionalModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ConditionalProcessor.java similarity index 59% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/ConditionalModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/ConditionalProcessor.java index 0929c753f..f60d9d67f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ConditionalModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ConditionalProcessor.java @@ -1,8 +1,8 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.Context; import net.momirealms.craftengine.core.plugin.context.event.EventConditions; @@ -16,25 +16,20 @@ import java.util.List; import java.util.Map; import java.util.function.Predicate; -public class ConditionalModifier implements ItemDataModifier { - public static final Factory FACTORY = new Factory<>(); +public class ConditionalProcessor implements ItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); private final Predicate condition; - private final ItemDataModifier[] modifiers; + private final ItemProcessor[] modifiers; - public ConditionalModifier(Predicate condition, ItemDataModifier[] modifiers) { + public ConditionalProcessor(Predicate condition, ItemProcessor[] modifiers) { this.modifiers = modifiers; this.condition = condition; } - @Override - public Key type() { - return ItemDataModifiers.CONDITIONAL; - } - @Override public Item apply(Item item, ItemBuildContext context) { if (this.condition.test(context)) { - for (ItemDataModifier m : this.modifiers) { + for (ItemProcessor m : this.modifiers) { item = item.apply(m, context); } } @@ -44,23 +39,23 @@ public class ConditionalModifier implements ItemDataModifier { @Override public Item prepareNetworkItem(Item item, ItemBuildContext context, CompoundTag networkData) { if (this.condition.test(context)) { - for (ItemDataModifier m : this.modifiers) { + for (ItemProcessor m : this.modifiers) { item = m.prepareNetworkItem(item, context, networkData); } } return item; } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @SuppressWarnings("unchecked") @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { Map conditionalData = ResourceConfigUtils.getAsMap(arg, "conditional"); List> conditions = ResourceConfigUtils.parseConfigAsList(conditionalData.get("conditions"), EventConditions::fromMap); - List> modifiers = new ArrayList<>(); - ItemDataModifiers.applyDataModifiers(ResourceConfigUtils.getAsMap(conditionalData.get("data"), "conditional.data"), m -> modifiers.add((ItemDataModifier) m)); - return new ConditionalModifier<>(MiscUtils.allOf(conditions), modifiers.toArray(new ItemDataModifier[0])); + List> modifiers = new ArrayList<>(); + ItemProcessors.applyDataModifiers(ResourceConfigUtils.getAsMap(conditionalData.get("data"), "conditional.data"), m -> modifiers.add((ItemProcessor) m)); + return new ConditionalProcessor<>(MiscUtils.allOf(conditions), modifiers.toArray(new ItemProcessor[0])); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomModelDataModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/CustomModelDataProcessor.java similarity index 65% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomModelDataModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/CustomModelDataProcessor.java index b704eac4a..d088c85eb 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomModelDataModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/CustomModelDataProcessor.java @@ -1,18 +1,18 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import org.jetbrains.annotations.Nullable; -public class CustomModelDataModifier implements SimpleNetworkItemDataModifier { - public static final Factory FACTORY = new Factory<>(); +public class CustomModelDataProcessor implements SimpleNetworkItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); private final int argument; - public CustomModelDataModifier(int argument) { + public CustomModelDataProcessor(int argument) { this.argument = argument; } @@ -20,11 +20,6 @@ public class CustomModelDataModifier implements SimpleNetworkItemDataModifier return this.argument; } - @Override - public Key type() { - return ItemDataModifiers.CUSTOM_MODEL_DATA; - } - @Override public Item apply(Item item, ItemBuildContext context) { item.customModelData(argument); @@ -46,12 +41,12 @@ public class CustomModelDataModifier implements SimpleNetworkItemDataModifier return "CustomModelData"; } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { int customModelData = ResourceConfigUtils.getAsInt(arg, "custom-model-data"); - return new CustomModelDataModifier<>(customModelData); + return new CustomModelDataProcessor<>(customModelData); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomNameModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/CustomNameProcessor.java similarity index 73% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomNameModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/CustomNameProcessor.java index 0b9b2653a..df7cc1e8f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomNameModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/CustomNameProcessor.java @@ -1,21 +1,21 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.plugin.text.minimessage.FormattedLine; import net.momirealms.craftengine.core.util.Key; import org.jetbrains.annotations.Nullable; -public class CustomNameModifier implements SimpleNetworkItemDataModifier { - public static final Factory FACTORY = new Factory<>(); +public class CustomNameProcessor implements SimpleNetworkItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); private static final Object[] NBT_PATH = new Object[]{"display", "Name"}; private final String argument; private final FormattedLine line; - public CustomNameModifier(String argument) { + public CustomNameProcessor(String argument) { if (Config.addNonItalicTag()) { if (argument.startsWith("")) { this.argument = argument; @@ -32,11 +32,6 @@ public class CustomNameModifier implements SimpleNetworkItemDataModifier { return argument; } - @Override - public Key type() { - return ItemDataModifiers.CUSTOM_NAME; - } - @Override public Item apply(Item item, ItemBuildContext context) { item.customNameComponent(this.line.parse(context)); @@ -58,12 +53,12 @@ public class CustomNameModifier implements SimpleNetworkItemDataModifier { return "display.Name"; } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { String name = arg.toString(); - return new CustomNameModifier<>(name); + return new CustomNameProcessor<>(name); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/DyedColorModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/DyedColorProcessor.java similarity index 66% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/DyedColorModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/DyedColorProcessor.java index 0d84d467f..7455455b2 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/DyedColorModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/DyedColorProcessor.java @@ -1,21 +1,21 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.util.Color; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import org.jetbrains.annotations.Nullable; import org.joml.Vector3f; -public class DyedColorModifier implements SimpleNetworkItemDataModifier { - public static final Factory FACTORY = new Factory<>(); +public class DyedColorProcessor implements SimpleNetworkItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); private static final Object[] NBT_PATH = new Object[]{"display", "color"}; private final Color color; - public DyedColorModifier(Color color) { + public DyedColorProcessor(Color color) { this.color = color; } @@ -23,11 +23,6 @@ public class DyedColorModifier implements SimpleNetworkItemDataModifier { return color; } - @Override - public Key type() { - return ItemDataModifiers.DYED_COLOR; - } - @Override public Item apply(Item item, ItemBuildContext context) { return item.dyedColor(this.color); @@ -48,15 +43,15 @@ public class DyedColorModifier implements SimpleNetworkItemDataModifier { return "display.color"; } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { if (arg instanceof Integer integer) { - return new DyedColorModifier<>(Color.fromDecimal(integer)); + return new DyedColorProcessor<>(Color.fromDecimal(integer)); } else { Vector3f vector3f = ResourceConfigUtils.getAsVector3f(arg, "dyed-color"); - return new DyedColorModifier<>(Color.fromVector3f(vector3f)); + return new DyedColorProcessor<>(Color.fromVector3f(vector3f)); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EnchantmentsModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/EnchantmentsProcessor.java similarity index 88% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/EnchantmentsModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/EnchantmentsProcessor.java index 4f8b4b539..1a665ae07 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EnchantmentsModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/EnchantmentsProcessor.java @@ -1,4 +1,4 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.*; import net.momirealms.craftengine.core.item.data.Enchantment; @@ -13,14 +13,14 @@ import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Stream; -public class EnchantmentsModifier implements SimpleNetworkItemDataModifier { - public static final Factory FACTORY = new Factory<>(); +public class EnchantmentsProcessor implements SimpleNetworkItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); private static final Object[] STORED_ENCHANTMENTS = new Object[] {"StoredEnchantments"}; private static final Object[] ENCHANTMENTS = new Object[] {"Enchantments"}; private final List enchantments; private final boolean merge; - public EnchantmentsModifier(List enchantments, boolean merge) { + public EnchantmentsProcessor(List enchantments, boolean merge) { this.enchantments = enchantments; this.merge = merge; } @@ -33,11 +33,6 @@ public class EnchantmentsModifier implements SimpleNetworkItemDataModifier return enchantments; } - @Override - public Key type() { - return ItemDataModifiers.ENCHANTMENTS; - } - @Override public Item apply(Item item, ItemBuildContext context) { if (item.vanillaId().equals(ItemKeys.ENCHANTED_BOOK)) { @@ -92,10 +87,10 @@ public class EnchantmentsModifier implements SimpleNetworkItemDataModifier return item.vanillaId().equals(ItemKeys.ENCHANTED_BOOK) ? "StoredEnchantments" : "Enchantments"; } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { Map enchantData = ResourceConfigUtils.getAsMap(arg, "enchantments"); List enchantments = new ArrayList<>(); boolean merge = false; @@ -108,7 +103,7 @@ public class EnchantmentsModifier implements SimpleNetworkItemDataModifier enchantments.add(new Enchantment(Key.of(e.getKey()), number.intValue())); } } - return new EnchantmentsModifier<>(enchantments, merge); + return new EnchantmentsProcessor<>(enchantments, merge); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableAssetIdModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/EquippableAssetIdProcessor.java similarity index 79% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableAssetIdModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/EquippableAssetIdProcessor.java index 3ceb9c999..0c69d29ad 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableAssetIdModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/EquippableAssetIdProcessor.java @@ -1,4 +1,4 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; @@ -9,10 +9,10 @@ import org.jetbrains.annotations.Nullable; import java.util.Optional; -public class EquippableAssetIdModifier implements SimpleNetworkItemDataModifier { +public class EquippableAssetIdProcessor implements SimpleNetworkItemProcessor { private final Key assetId; - public EquippableAssetIdModifier(Key assetsId) { + public EquippableAssetIdProcessor(Key assetsId) { this.assetId = assetsId; } @@ -20,11 +20,6 @@ public class EquippableAssetIdModifier implements SimpleNetworkItemDataModifi return assetId; } - @Override - public Key type() { - return ItemDataModifiers.EQUIPPABLE_ASSET_ID; - } - @Override public Item apply(Item item, ItemBuildContext context) { Optional optionalData = item.equippable(); diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/EquippableProcessor.java similarity index 61% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/EquippableProcessor.java index 51bb9b8ff..bc8686bcc 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/EquippableProcessor.java @@ -1,9 +1,9 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.item.setting.EquipmentData; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; @@ -11,11 +11,11 @@ import org.jetbrains.annotations.Nullable; import java.util.Map; -public class EquippableModifier implements SimpleNetworkItemDataModifier { - public static final Factory FACTORY = new Factory<>(); +public class EquippableProcessor implements SimpleNetworkItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); private final EquipmentData data; - public EquippableModifier(EquipmentData data) { + public EquippableProcessor(EquipmentData data) { this.data = data; } @@ -23,11 +23,6 @@ public class EquippableModifier implements SimpleNetworkItemDataModifier { return data; } - @Override - public Key type() { - return ItemDataModifiers.EQUIPPABLE; - } - @Override public Item apply(Item item, ItemBuildContext context) { return item.equippable(this.data); @@ -38,12 +33,12 @@ public class EquippableModifier implements SimpleNetworkItemDataModifier { return DataComponentKeys.EQUIPPABLE; } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { Map data = ResourceConfigUtils.getAsMap(arg, "equippable"); - return new EquippableModifier<>(EquipmentData.fromMap(data)); + return new EquippableProcessor<>(EquipmentData.fromMap(data)); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ExternalModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ExternalSourceProcessor.java similarity index 84% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/ExternalModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/ExternalSourceProcessor.java index 8ec6eda1a..0ee299077 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ExternalModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ExternalSourceProcessor.java @@ -1,8 +1,8 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.compatibility.ItemSource; import net.momirealms.craftengine.core.util.Key; @@ -12,13 +12,13 @@ import org.jetbrains.annotations.NotNull; import java.util.*; -public class ExternalModifier implements ItemDataModifier { - public static final Factory FACTORY = new Factory<>(); +public class ExternalSourceProcessor implements ItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); private static final ThreadLocal> BUILD_STACK = ThreadLocal.withInitial(LinkedHashSet::new); private final String id; private final LazyReference> provider; - public ExternalModifier(String id, LazyReference> provider) { + public ExternalSourceProcessor(String id, LazyReference> provider) { this.id = id; this.provider = provider; } @@ -27,11 +27,6 @@ public class ExternalModifier implements ItemDataModifier { return id; } - @Override - public Key type() { - return ItemDataModifiers.EXTERNAL; - } - @SuppressWarnings("unchecked") @Override public Item apply(Item item, ItemBuildContext context) { @@ -70,15 +65,15 @@ public class ExternalModifier implements ItemDataModifier { } } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @SuppressWarnings("unchecked") @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { Map data = ResourceConfigUtils.getAsMap(arg, "external"); String plugin = ResourceConfigUtils.requireNonEmptyStringOrThrow(ResourceConfigUtils.get(data, "plugin", "source"), "warning.config.item.data.external.missing_source"); String id = ResourceConfigUtils.requireNonEmptyStringOrThrow(data.get("id"), "warning.config.item.data.external.missing_id"); - return new ExternalModifier<>(id, LazyReference.lazyReference(() -> { + return new ExternalSourceProcessor<>(id, LazyReference.lazyReference(() -> { ItemSource itemSource = CraftEngine.instance().compatibilityManager().getItemSource(plugin.toLowerCase(Locale.ENGLISH)); if (itemSource == null) { CraftEngine.instance().logger().warn("Item source '" + plugin + "' not found for item '" + id + "'"); diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/FoodModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/FoodProcessor.java similarity index 68% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/FoodModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/FoodProcessor.java index 0405c2740..6eed073f8 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/FoodModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/FoodProcessor.java @@ -1,22 +1,22 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import org.jetbrains.annotations.Nullable; import java.util.Map; -public class FoodModifier implements SimpleNetworkItemDataModifier { - public static final Factory FACTORY = new Factory<>(); +public class FoodProcessor implements SimpleNetworkItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); private final int nutrition; private final float saturation; private final boolean canAlwaysEat; - public FoodModifier(int nutrition, float saturation, boolean canAlwaysEat) { + public FoodProcessor(int nutrition, float saturation, boolean canAlwaysEat) { this.canAlwaysEat = canAlwaysEat; this.nutrition = nutrition; this.saturation = saturation; @@ -34,11 +34,6 @@ public class FoodModifier implements SimpleNetworkItemDataModifier { return saturation; } - @Override - public Key type() { - return ItemDataModifiers.FOOD; - } - @Override public Item apply(Item item, ItemBuildContext context) { item.setJavaComponent(DataComponentKeys.FOOD, Map.of( @@ -54,14 +49,14 @@ public class FoodModifier implements SimpleNetworkItemDataModifier { return DataComponentKeys.FOOD; } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { Map data = ResourceConfigUtils.getAsMap(arg, "food"); int nutrition = ResourceConfigUtils.getAsInt(data.get("nutrition"), "nutrition"); float saturation = ResourceConfigUtils.getAsFloat(data.get("saturation"), "saturation"); - return new FoodModifier<>(nutrition, saturation, ResourceConfigUtils.getAsBoolean(data.getOrDefault("can-always-eat", false), "can-always-eat")); + return new FoodProcessor<>(nutrition, saturation, ResourceConfigUtils.getAsBoolean(data.getOrDefault("can-always-eat", false), "can-always-eat")); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/HideTooltipModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/HideTooltipProcessor.java similarity index 94% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/HideTooltipModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/HideTooltipProcessor.java index e63ed942f..4cd9e8f09 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/HideTooltipModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/HideTooltipProcessor.java @@ -1,4 +1,4 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import com.google.common.collect.ImmutableMap; import net.momirealms.craftengine.core.item.*; @@ -15,8 +15,8 @@ import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Stream; -public class HideTooltipModifier implements ItemDataModifier { - public static final Factory FACTORY = new Factory<>(); +public class HideTooltipProcessor implements ItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); public static final Map TO_LEGACY; public static final List COMPONENTS = List.of( DataComponentKeys.UNBREAKABLE, @@ -53,7 +53,7 @@ public class HideTooltipModifier implements ItemDataModifier { private final List components; private final Applier applier; - public HideTooltipModifier(List components) { + public HideTooltipProcessor(List components) { this.components = components; if (VersionHelper.isOrAbove1_21_5()) { this.applier = new ModernApplier<>(components); @@ -124,11 +124,6 @@ public class HideTooltipModifier implements ItemDataModifier { return item; } - @Override - public Key type() { - return ItemDataModifiers.HIDE_TOOLTIP; - } - public interface Applier { void apply(Item item); @@ -232,12 +227,12 @@ public class HideTooltipModifier implements ItemDataModifier { } } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { List components = MiscUtils.getAsStringList(arg).stream().map(Key::of).toList(); - return new HideTooltipModifier<>(components); + return new HideTooltipProcessor<>(components); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/IdModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/IdProcessor.java similarity index 68% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/IdModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/IdProcessor.java index e662cc975..5517a8c67 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/IdModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/IdProcessor.java @@ -1,14 +1,14 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.util.Key; -public class IdModifier implements ItemDataModifier { +public class IdProcessor implements ItemProcessor { public static final String CRAFT_ENGINE_ID = "craftengine:id"; private final Key argument; - public IdModifier(Key argument) { + public IdProcessor(Key argument) { this.argument = argument; } @@ -16,11 +16,6 @@ public class IdModifier implements ItemDataModifier { return this.argument; } - @Override - public Key type() { - return ItemDataModifiers.ID; - } - @Override public Item apply(Item item, ItemBuildContext context) { item.customId(this.argument); diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemModelModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemModelProcessor.java similarity index 56% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemModelModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemModelProcessor.java index be7e74d35..3087dfc1c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemModelModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemModelProcessor.java @@ -1,17 +1,17 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.util.Key; import org.jetbrains.annotations.Nullable; -public class ItemModelModifier implements SimpleNetworkItemDataModifier { - public static final Factory FACTORY = new Factory<>(); +public class ItemModelProcessor implements SimpleNetworkItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); private final Key data; - public ItemModelModifier(Key data) { + public ItemModelProcessor(Key data) { this.data = data; } @@ -19,11 +19,6 @@ public class ItemModelModifier implements SimpleNetworkItemDataModifier { return data; } - @Override - public Key type() { - return ItemDataModifiers.ITEM_MODEL; - } - @Override public Item apply(Item item, ItemBuildContext context) { return item.itemModel(this.data.asString()); @@ -34,12 +29,12 @@ public class ItemModelModifier implements SimpleNetworkItemDataModifier { return DataComponentKeys.ITEM_MODEL; } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { String id = arg.toString(); - return new ItemModelModifier<>(Key.of(id)); + return new ItemModelProcessor<>(Key.of(id)); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemNameModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemNameProcessor.java similarity index 69% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemNameModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemNameProcessor.java index fc4495311..6092770b6 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemNameModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemNameProcessor.java @@ -1,20 +1,20 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.plugin.text.minimessage.FormattedLine; import net.momirealms.craftengine.core.util.Key; import org.jetbrains.annotations.Nullable; -public class ItemNameModifier implements SimpleNetworkItemDataModifier { - public static final Factory FACTORY = new Factory<>(); +public class ItemNameProcessor implements SimpleNetworkItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); private static final Object[] NBT_PATH = new Object[]{"display", "Name"}; private final String argument; private final FormattedLine line; - public ItemNameModifier(String argument) { + public ItemNameProcessor(String argument) { this.argument = argument; this.line = FormattedLine.create(argument); } @@ -23,11 +23,6 @@ public class ItemNameModifier implements SimpleNetworkItemDataModifier { return argument; } - @Override - public Key type() { - return ItemDataModifiers.ITEM_NAME; - } - @Override public Item apply(Item item, ItemBuildContext context) { item.itemNameComponent(this.line.parse(context)); @@ -49,12 +44,12 @@ public class ItemNameModifier implements SimpleNetworkItemDataModifier { return "display.Name"; } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { String name = arg.toString(); - return new ItemNameModifier<>(name); + return new ItemNameProcessor<>(name); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemDataModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemProcessor.java similarity index 78% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemDataModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemProcessor.java index 6a39cf797..e7c6a14b6 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemDataModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemProcessor.java @@ -1,13 +1,11 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.util.Key; import net.momirealms.sparrow.nbt.CompoundTag; -public interface ItemDataModifier { - - Key type(); +public interface ItemProcessor { Item apply(Item item, ItemBuildContext context); diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemProcessorType.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemProcessorType.java new file mode 100644 index 000000000..b5154e2e8 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemProcessorType.java @@ -0,0 +1,7 @@ +package net.momirealms.craftengine.core.item.processor; + +import net.momirealms.craftengine.core.item.ItemProcessorFactory; +import net.momirealms.craftengine.core.util.Key; + +public record ItemProcessorType(Key id, ItemProcessorFactory factory) { +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemDataModifiers.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemProcessors.java similarity index 55% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemDataModifiers.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemProcessors.java index 1360ebdd0..b3d4ceaca 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemDataModifiers.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemProcessors.java @@ -1,9 +1,9 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; -import net.momirealms.craftengine.core.item.modifier.lore.DynamicLoreModifier; -import net.momirealms.craftengine.core.item.modifier.lore.LoreModifier; -import net.momirealms.craftengine.core.item.modifier.lore.OverwritableLoreModifier; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; +import net.momirealms.craftengine.core.item.processor.lore.DynamicLoreProcessor; +import net.momirealms.craftengine.core.item.processor.lore.LoreProcessor; +import net.momirealms.craftengine.core.item.processor.lore.OverwritableLoreProcessor; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.registry.BuiltInRegistries; import net.momirealms.craftengine.core.registry.Registries; @@ -17,60 +17,58 @@ import java.util.Map; import java.util.Optional; import java.util.function.Consumer; -public final class ItemDataModifiers { - private ItemDataModifiers() {} +public final class ItemProcessors { + private ItemProcessors() {} - public static final Key ITEM_MODEL = Key.of("craftengine:item-model"); - public static final Key OVERWRITABLE_ITEM_MODEL = Key.of("craftengine:overwritable-item-model"); + public static final Key ITEM_MODEL = Key.of("craftengine:item_model"); + public static final Key OVERWRITABLE_ITEM_MODEL = Key.of("craftengine:overwritable_item_model"); public static final Key ID = Key.of("craftengine:id"); - public static final Key HIDE_TOOLTIP = Key.of("craftengine:hide-tooltip"); + public static final Key HIDE_TOOLTIP = Key.of("craftengine:hide_tooltip"); public static final Key FOOD = Key.of("craftengine:food"); public static final Key EXTERNAL = Key.of("craftengine:external"); public static final Key EQUIPPABLE = Key.of("craftengine:equippable"); - public static final Key EQUIPPABLE_ASSET_ID = Key.of("craftengine:equippable-asset-id"); + public static final Key EQUIPPABLE_ASSET_ID = Key.of("craftengine:equippable_asset_id"); public static final Key ENCHANTMENT = Key.of("craftengine:enchantment"); public static final Key ENCHANTMENTS = Key.of("craftengine:enchantments"); - public static final Key DYED_COLOR = Key.of("craftengine:dyed-color"); - public static final Key DISPLAY_NAME = Key.of("craftengine:display-name"); - public static final Key CUSTOM_NAME = Key.of("craftengine:custom-name"); - public static final Key CUSTOM_MODEL_DATA = Key.of("craftengine:custom-model-data"); - public static final Key OVERWRITABLE_CUSTOM_MODEL_DATA = Key.of("craftengine:overwritable-custom-model-data"); + public static final Key DYED_COLOR = Key.of("craftengine:dyed_color"); + public static final Key DISPLAY_NAME = Key.of("craftengine:display_name"); + public static final Key CUSTOM_NAME = Key.of("craftengine:custom_name"); + public static final Key CUSTOM_MODEL_DATA = Key.of("craftengine:custom_model_data"); + public static final Key OVERWRITABLE_CUSTOM_MODEL_DATA = Key.of("craftengine:overwritable_custom_model_data"); public static final Key COMPONENTS = Key.of("craftengine:components"); public static final Key COMPONENT = Key.of("craftengine:component"); - public static final Key ATTRIBUTE_MODIFIERS = Key.of("craftengine:attribute-modifiers"); + public static final Key ATTRIBUTE_MODIFIERS = Key.of("craftengine:attribute_modifiers"); public static final Key ATTRIBUTES = Key.of("craftengine:attributes"); public static final Key ARGUMENTS = Key.of("craftengine:arguments"); public static final Key VERSION = Key.of("craftengine:version"); public static final Key PDC = Key.of("craftengine:pdc"); - public static final Key ITEM_NAME = Key.of("craftengine:item-name"); - public static final Key OVERWRITABLE_ITEM_NAME = Key.of("craftengine:overwritable-item-name"); - public static final Key JUKEBOX_PLAYABLE = Key.of("craftengine:jukebox-playable"); - public static final Key REMOVE_COMPONENTS = Key.of("craftengine:remove-components"); - public static final Key REMOVE_COMPONENT = Key.of("craftengine:remove-component"); + public static final Key ITEM_NAME = Key.of("craftengine:item_name"); + public static final Key OVERWRITABLE_ITEM_NAME = Key.of("craftengine:overwritable_item_name"); + public static final Key JUKEBOX_PLAYABLE = Key.of("craftengine:jukebox_playable"); + public static final Key REMOVE_COMPONENTS = Key.of("craftengine:remove_components"); + public static final Key REMOVE_COMPONENT = Key.of("craftengine:remove_component"); public static final Key TAGS = Key.of("craftengine:tags"); public static final Key NBT = Key.of("craftengine:nbt"); - public static final Key TOOLTIP_STYLE = Key.of("craftengine:tooltip-style"); + public static final Key TOOLTIP_STYLE = Key.of("craftengine:tooltip_style"); public static final Key TRIM = Key.of("craftengine:trim"); public static final Key LORE = Key.of("craftengine:lore"); public static final Key UNBREAKABLE = Key.of("craftengine:unbreakable"); - public static final Key DYNAMIC_LORE = Key.of("craftengine:dynamic-lore"); - public static final Key OVERWRITABLE_LORE = Key.of("craftengine:overwritable-lore"); - public static final Key MAX_DAMAGE = Key.of("craftengine:max-damage"); - public static final Key BLOCK_STATE = Key.of("craftengine:block-state"); + public static final Key DYNAMIC_LORE = Key.of("craftengine:dynamic_lore"); + public static final Key OVERWRITABLE_LORE = Key.of("craftengine:overwritable_lore"); + public static final Key MAX_DAMAGE = Key.of("craftengine:max_damage"); + public static final Key BLOCK_STATE = Key.of("craftengine:block_state"); public static final Key CONDITIONAL = Key.of("craftengine:conditional"); public static final Key CONDITION = Key.of("craftengine:condition"); - public static void register(Key key, ItemDataModifierFactory factory) { - ((WritableRegistry>) BuiltInRegistries.ITEM_DATA_MODIFIER_FACTORY) + public static ItemProcessorType register(Key key, ItemProcessorFactory factory) { + ItemProcessorType type = new ItemProcessorType<>(key, factory); + ((WritableRegistry>) BuiltInRegistries.ITEM_DATA_MODIFIER_FACTORY) .register(ResourceKey.create(Registries.ITEM_DATA_MODIFIER_FACTORY.location(), key), factory); - if (key.value().contains("-")) { - ((WritableRegistry>) BuiltInRegistries.ITEM_DATA_MODIFIER_FACTORY) - .register(ResourceKey.create(Registries.ITEM_DATA_MODIFIER_FACTORY.location(), new Key(key.namespace(), key.value().replace("-", "_"))), factory); - } + return type; } @SuppressWarnings("unchecked") - public static void applyDataModifiers(Map dataSection, Consumer> callback) { + public static void applyDataModifiers(Map dataSection, Consumer> callback) { ExceptionCollector errorCollector = new ExceptionCollector<>(); if (dataSection != null) { for (Map.Entry dataEntry : dataSection.entrySet()) { @@ -78,12 +76,13 @@ public final class ItemDataModifiers { if (value == null) continue; String key = dataEntry.getKey(); int idIndex = key.indexOf('#'); - if (idIndex != -1) { + if (idIndex != -1) key = key.substring(0, idIndex); - } + if (key.contains("-")) + key = key.replace("-", "_"); Optional.ofNullable(BuiltInRegistries.ITEM_DATA_MODIFIER_FACTORY.getValue(Key.withDefaultNamespace(key, Key.DEFAULT_NAMESPACE))).ifPresent(factory -> { try { - callback.accept((ItemDataModifier) factory.create(value)); + callback.accept((ItemProcessor) factory.create(value)); } catch (LocalizedResourceConfigException e) { errorCollector.add(e); } @@ -96,51 +95,51 @@ public final class ItemDataModifiers { public static void init() {} static { - register(EXTERNAL, ExternalModifier.FACTORY); - register(LORE, LoreModifier.FACTORY); - register(DYNAMIC_LORE, DynamicLoreModifier.FACTORY); - register(OVERWRITABLE_LORE, OverwritableLoreModifier.FACTORY); - register(DYED_COLOR, DyedColorModifier.FACTORY); - register(TAGS, TagsModifier.FACTORY); - register(NBT, TagsModifier.FACTORY); - register(ATTRIBUTE_MODIFIERS, AttributeModifiersModifier.FACTORY); - register(ATTRIBUTES, AttributeModifiersModifier.FACTORY); - register(CUSTOM_MODEL_DATA, CustomModelDataModifier.FACTORY); - register(UNBREAKABLE, UnbreakableModifier.FACTORY); - register(ENCHANTMENT, EnchantmentsModifier.FACTORY); - register(ENCHANTMENTS, EnchantmentsModifier.FACTORY); - register(TRIM, TrimModifier.FACTORY); - register(HIDE_TOOLTIP, HideTooltipModifier.FACTORY); - register(ARGUMENTS, ArgumentsModifier.FACTORY); - register(OVERWRITABLE_ITEM_NAME, OverwritableItemNameModifier.FACTORY); - register(PDC, PDCModifier.FACTORY); - register(BLOCK_STATE, BlockStateModifier.FACTORY); + register(EXTERNAL, ExternalSourceProcessor.FACTORY); + register(LORE, LoreProcessor.FACTORY); + register(DYNAMIC_LORE, DynamicLoreProcessor.FACTORY); + register(OVERWRITABLE_LORE, OverwritableLoreProcessor.FACTORY); + register(DYED_COLOR, DyedColorProcessor.FACTORY); + register(TAGS, TagsProcessor.FACTORY); + register(NBT, TagsProcessor.FACTORY); + register(ATTRIBUTE_MODIFIERS, AttributeModifiersProcessor.FACTORY); + register(ATTRIBUTES, AttributeModifiersProcessor.FACTORY); + register(CUSTOM_MODEL_DATA, CustomModelDataProcessor.FACTORY); + register(UNBREAKABLE, UnbreakableProcessor.FACTORY); + register(ENCHANTMENT, EnchantmentsProcessor.FACTORY); + register(ENCHANTMENTS, EnchantmentsProcessor.FACTORY); + register(TRIM, TrimProcessor.FACTORY); + register(HIDE_TOOLTIP, HideTooltipProcessor.FACTORY); + register(ARGUMENTS, ArgumentsProcessor.FACTORY); + register(OVERWRITABLE_ITEM_NAME, OverwritableItemNameProcessor.FACTORY); + register(PDC, PDCProcessor.FACTORY); + register(BLOCK_STATE, BlockStateProcessor.FACTORY); if (VersionHelper.isOrAbove1_20_5()) { - register(CUSTOM_NAME, CustomNameModifier.FACTORY); - register(ITEM_NAME, ItemNameModifier.FACTORY); - register(DISPLAY_NAME, ItemNameModifier.FACTORY); - register(COMPONENTS, ComponentsModifier.FACTORY); - register(COMPONENT, ComponentsModifier.FACTORY); - register(REMOVE_COMPONENTS, RemoveComponentModifier.FACTORY); - register(REMOVE_COMPONENT, RemoveComponentModifier.FACTORY); - register(FOOD, FoodModifier.FACTORY); - register(MAX_DAMAGE, MaxDamageModifier.FACTORY); + register(CUSTOM_NAME, CustomNameProcessor.FACTORY); + register(ITEM_NAME, ItemNameProcessor.FACTORY); + register(DISPLAY_NAME, ItemNameProcessor.FACTORY); + register(COMPONENTS, ComponentsProcessor.FACTORY); + register(COMPONENT, ComponentsProcessor.FACTORY); + register(REMOVE_COMPONENTS, RemoveComponentProcessor.FACTORY); + register(REMOVE_COMPONENT, RemoveComponentProcessor.FACTORY); + register(FOOD, FoodProcessor.FACTORY); + register(MAX_DAMAGE, MaxDamageProcessor.FACTORY); } else { - register(CUSTOM_NAME, CustomNameModifier.FACTORY); - register(ITEM_NAME, CustomNameModifier.FACTORY); - register(DISPLAY_NAME, CustomNameModifier.FACTORY); + register(CUSTOM_NAME, CustomNameProcessor.FACTORY); + register(ITEM_NAME, CustomNameProcessor.FACTORY); + register(DISPLAY_NAME, CustomNameProcessor.FACTORY); } if (VersionHelper.isOrAbove1_21()) { - register(JUKEBOX_PLAYABLE, JukeboxSongModifier.FACTORY); + register(JUKEBOX_PLAYABLE, JukeboxSongProcessor.FACTORY); } if (VersionHelper.isOrAbove1_21_2()) { - register(TOOLTIP_STYLE, TooltipStyleModifier.FACTORY); - register(ITEM_MODEL, ItemModelModifier.FACTORY); - register(EQUIPPABLE, EquippableModifier.FACTORY); + register(TOOLTIP_STYLE, TooltipStyleProcessor.FACTORY); + register(ITEM_MODEL, ItemModelProcessor.FACTORY); + register(EQUIPPABLE, EquippableProcessor.FACTORY); } if (VersionHelper.PREMIUM) { - register(CONDITIONAL, ConditionalModifier.FACTORY); - register(CONDITION, ConditionalModifier.FACTORY); + register(CONDITIONAL, ConditionalProcessor.FACTORY); + register(CONDITION, ConditionalProcessor.FACTORY); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemVersionModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemVersionProcessor.java similarity index 80% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemVersionModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemVersionProcessor.java index 96b6b0a60..e41a84edf 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemVersionModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemVersionProcessor.java @@ -1,4 +1,4 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; @@ -9,11 +9,11 @@ import net.momirealms.sparrow.nbt.CompoundTag; import java.util.Optional; -public class ItemVersionModifier implements ItemDataModifier { +public class ItemVersionProcessor implements ItemProcessor { public static final String VERSION_TAG = "craftengine:version"; private final int version; - public ItemVersionModifier(int version) { + public ItemVersionProcessor(int version) { this.version = version; } @@ -21,11 +21,6 @@ public class ItemVersionModifier implements ItemDataModifier { return this.version; } - @Override - public Key type() { - return ItemDataModifiers.VERSION; - } - @Override public Item apply(Item item, ItemBuildContext context) { if (VersionHelper.isOrAbove1_20_5()) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/JukeboxSongProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/JukeboxSongProcessor.java new file mode 100644 index 000000000..24717faac --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/JukeboxSongProcessor.java @@ -0,0 +1,35 @@ +package net.momirealms.craftengine.core.item.processor; + +import net.momirealms.craftengine.core.item.Item; +import net.momirealms.craftengine.core.item.ItemBuildContext; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; +import net.momirealms.craftengine.core.item.data.JukeboxPlayable; +import net.momirealms.craftengine.core.util.Key; + +public class JukeboxSongProcessor implements ItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); + private final JukeboxPlayable song; + + public JukeboxSongProcessor(JukeboxPlayable song) { + this.song = song; + } + + public JukeboxPlayable song() { + return song; + } + + @Override + public Item apply(Item item, ItemBuildContext context) { + item.jukeboxSong(this.song); + return item; + } + + private static class Factory implements ItemProcessorFactory { + + @Override + public ItemProcessor create(Object arg) { + String song = arg.toString(); + return new JukeboxSongProcessor<>(new JukeboxPlayable(song, true)); + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/MaxDamageModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/MaxDamageProcessor.java similarity index 60% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/MaxDamageModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/MaxDamageProcessor.java index 35546063f..9490346e9 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/MaxDamageModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/MaxDamageProcessor.java @@ -1,27 +1,22 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.plugin.context.number.NumberProvider; import net.momirealms.craftengine.core.plugin.context.number.NumberProviders; import net.momirealms.craftengine.core.util.Key; import org.jetbrains.annotations.Nullable; -public class MaxDamageModifier implements SimpleNetworkItemDataModifier { - public static final Factory FACTORY = new Factory<>(); +public class MaxDamageProcessor implements SimpleNetworkItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); private final NumberProvider argument; - public MaxDamageModifier(NumberProvider argument) { + public MaxDamageProcessor(NumberProvider argument) { this.argument = argument; } - @Override - public Key type() { - return ItemDataModifiers.MAX_DAMAGE; - } - @Override public Item apply(Item item, ItemBuildContext context) { item.maxDamage(argument.getInt(context)); @@ -33,12 +28,12 @@ public class MaxDamageModifier implements SimpleNetworkItemDataModifier { return DataComponentKeys.MAX_DAMAGE; } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { NumberProvider numberProvider = NumberProviders.fromObject(arg); - return new MaxDamageModifier<>(numberProvider); + return new MaxDamageProcessor<>(numberProvider); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/OverwritableCustomModelDataModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/OverwritableCustomModelDataProcessor.java similarity index 65% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/OverwritableCustomModelDataModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/OverwritableCustomModelDataProcessor.java index 1d0227a15..23b0dd9f6 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/OverwritableCustomModelDataModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/OverwritableCustomModelDataProcessor.java @@ -1,18 +1,18 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import org.jetbrains.annotations.Nullable; -public class OverwritableCustomModelDataModifier implements SimpleNetworkItemDataModifier { - public static final Factory FACTORY = new Factory<>(); +public class OverwritableCustomModelDataProcessor implements SimpleNetworkItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); private final int argument; - public OverwritableCustomModelDataModifier(int argument) { + public OverwritableCustomModelDataProcessor(int argument) { this.argument = argument; } @@ -20,11 +20,6 @@ public class OverwritableCustomModelDataModifier implements SimpleNetworkItem return this.argument; } - @Override - public Key type() { - return ItemDataModifiers.OVERWRITABLE_CUSTOM_MODEL_DATA; - } - @Override public Item apply(Item item, ItemBuildContext context) { if (item.customModelData().isPresent()) return item; @@ -47,12 +42,12 @@ public class OverwritableCustomModelDataModifier implements SimpleNetworkItem return "CustomModelData"; } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { int customModelData = ResourceConfigUtils.getAsInt(arg, "custom-model-data"); - return new OverwritableCustomModelDataModifier<>(customModelData); + return new OverwritableCustomModelDataProcessor<>(customModelData); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/OverwritableItemModelModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/OverwritableItemModelProcessor.java similarity index 56% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/OverwritableItemModelModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/OverwritableItemModelProcessor.java index ecb2a18fa..d2a00b927 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/OverwritableItemModelModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/OverwritableItemModelProcessor.java @@ -1,17 +1,17 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.util.Key; import org.jetbrains.annotations.Nullable; -public class OverwritableItemModelModifier implements SimpleNetworkItemDataModifier { - public static final Factory FACTORY = new Factory<>(); +public class OverwritableItemModelProcessor implements SimpleNetworkItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); private final Key data; - public OverwritableItemModelModifier(Key data) { + public OverwritableItemModelProcessor(Key data) { this.data = data; } @@ -19,11 +19,6 @@ public class OverwritableItemModelModifier implements SimpleNetworkItemDataMo return data; } - @Override - public Key type() { - return ItemDataModifiers.OVERWRITABLE_ITEM_MODEL; - } - @Override public Item apply(Item item, ItemBuildContext context) { if (item.hasNonDefaultComponent(DataComponentKeys.ITEM_MODEL)) return item; @@ -35,12 +30,12 @@ public class OverwritableItemModelModifier implements SimpleNetworkItemDataMo return DataComponentKeys.ITEM_MODEL; } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { String id = arg.toString(); - return new OverwritableItemModelModifier<>(Key.of(id)); + return new OverwritableItemModelProcessor<>(Key.of(id)); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/OverwritableItemNameModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/OverwritableItemNameProcessor.java similarity index 62% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/OverwritableItemNameModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/OverwritableItemNameProcessor.java index 50c20cdb6..11af0d1ce 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/OverwritableItemNameModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/OverwritableItemNameProcessor.java @@ -1,19 +1,19 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.VersionHelper; import org.jetbrains.annotations.Nullable; -public class OverwritableItemNameModifier implements SimpleNetworkItemDataModifier { - public static final Factory FACTORY = new Factory<>(); - private final ItemNameModifier modifier; +public class OverwritableItemNameProcessor implements SimpleNetworkItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); + private final ItemNameProcessor modifier; - public OverwritableItemNameModifier(String argument) { - this.modifier = new ItemNameModifier<>(argument); + public OverwritableItemNameProcessor(String argument) { + this.modifier = new ItemNameProcessor<>(argument); } @Override @@ -30,11 +30,6 @@ public class OverwritableItemNameModifier implements SimpleNetworkItemDataMod return this.modifier.apply(item, context); } - @Override - public Key type() { - return ItemDataModifiers.OVERWRITABLE_ITEM_NAME; - } - @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { return DataComponentKeys.ITEM_NAME; @@ -50,11 +45,11 @@ public class OverwritableItemNameModifier implements SimpleNetworkItemDataMod return "display.Name"; } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { - return new OverwritableItemNameModifier<>(arg.toString()); + public ItemProcessor create(Object arg) { + return new OverwritableItemNameProcessor<>(arg.toString()); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/PDCModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/PDCProcessor.java similarity index 71% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/PDCModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/PDCProcessor.java index 2d1f9c2bf..ea41ce0f1 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/PDCModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/PDCProcessor.java @@ -1,9 +1,9 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; @@ -13,20 +13,15 @@ import net.momirealms.sparrow.nbt.CompoundTag; import java.util.Map; import java.util.Optional; -public class PDCModifier implements ItemDataModifier { +public class PDCProcessor implements ItemProcessor { public static final String BUKKIT_PDC = "PublicBukkitValues"; - public static final Factory FACTORY = new Factory<>(); + public static final ItemProcessorFactory FACTORY = new Factory<>(); private final CompoundTag data; - public PDCModifier(CompoundTag data) { + public PDCProcessor(CompoundTag data) { this.data = data; } - @Override - public Key type() { - return ItemDataModifiers.PDC; - } - @Override public Item apply(Item item, ItemBuildContext context) { if (VersionHelper.isOrAbove1_20_5()) { @@ -39,13 +34,13 @@ public class PDCModifier implements ItemDataModifier { return item; } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { Map data = ResourceConfigUtils.getAsMap(arg, "pdc"); CompoundTag tag = (CompoundTag) CraftEngine.instance().platform().javaToSparrowNBT(data); - return new PDCModifier<>(tag); + return new PDCProcessor<>(tag); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/RemoveComponentModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/RemoveComponentProcessor.java similarity index 69% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/RemoveComponentModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/RemoveComponentProcessor.java index a7ffd1c0b..62c838189 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/RemoveComponentModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/RemoveComponentProcessor.java @@ -1,8 +1,8 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.item.NetworkItemHandler; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; @@ -12,11 +12,11 @@ import net.momirealms.sparrow.nbt.Tag; import java.util.Collections; import java.util.List; -public class RemoveComponentModifier implements ItemDataModifier { - public static final Factory FACTORY = new Factory<>(); +public class RemoveComponentProcessor implements ItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); private final List arguments; - public RemoveComponentModifier(List arguments) { + public RemoveComponentProcessor(List arguments) { this.arguments = arguments; } @@ -24,11 +24,6 @@ public class RemoveComponentModifier implements ItemDataModifier { return Collections.unmodifiableList(this.arguments); } - @Override - public Key type() { - return ItemDataModifiers.REMOVE_COMPONENTS; - } - @Override public Item apply(Item item, ItemBuildContext context) { for (String argument : this.arguments) { @@ -48,12 +43,12 @@ public class RemoveComponentModifier implements ItemDataModifier { return item; } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { List data = MiscUtils.getAsStringList(arg); - return new RemoveComponentModifier<>(data); + return new RemoveComponentProcessor<>(data); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/SimpleNetworkItemDataModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/SimpleNetworkItemProcessor.java similarity index 94% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/SimpleNetworkItemDataModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/SimpleNetworkItemProcessor.java index 2d5664ff0..208d2a3bc 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/SimpleNetworkItemDataModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/SimpleNetworkItemProcessor.java @@ -1,4 +1,4 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; @@ -9,7 +9,7 @@ import net.momirealms.sparrow.nbt.CompoundTag; import net.momirealms.sparrow.nbt.Tag; import org.jetbrains.annotations.Nullable; -public interface SimpleNetworkItemDataModifier extends ItemDataModifier { +public interface SimpleNetworkItemProcessor extends ItemProcessor { @Override default Item prepareNetworkItem(Item item, ItemBuildContext context, CompoundTag networkData) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TagsModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/TagsProcessor.java similarity index 90% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/TagsModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/TagsProcessor.java index 2dcec8ecd..3a32b5aba 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TagsModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/TagsProcessor.java @@ -1,4 +1,4 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.*; import net.momirealms.craftengine.core.util.*; @@ -8,11 +8,11 @@ import net.momirealms.sparrow.nbt.Tag; import java.util.LinkedHashMap; import java.util.Map; -public class TagsModifier implements ItemDataModifier { - public static final Factory FACTORY = new Factory<>(); +public class TagsProcessor implements ItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); private final Map arguments; - public TagsModifier(Map arguments) { + public TagsProcessor(Map arguments) { this.arguments = mapToMap(arguments); } @@ -20,11 +20,6 @@ public class TagsModifier implements ItemDataModifier { return arguments; } - @Override - public Key type() { - return ItemDataModifiers.TAGS; - } - @Override public Item apply(Item item, ItemBuildContext context) { for (Map.Entry entry : this.arguments.entrySet()) { @@ -132,11 +127,11 @@ public class TagsModifier implements ItemDataModifier { static final ParsedValue FAILURE = new ParsedValue(false, null); } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { Map data = ResourceConfigUtils.getAsMap(arg, "nbt"); - return new TagsModifier<>(data); + return new TagsProcessor<>(data); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TooltipStyleModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/TooltipStyleProcessor.java similarity index 57% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/TooltipStyleModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/TooltipStyleProcessor.java index 4f94d8517..586b8b955 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TooltipStyleModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/TooltipStyleProcessor.java @@ -1,17 +1,17 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.util.Key; import org.jetbrains.annotations.Nullable; -public class TooltipStyleModifier implements SimpleNetworkItemDataModifier { - public static final Factory FACTORY = new Factory<>(); +public class TooltipStyleProcessor implements SimpleNetworkItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); private final Key argument; - public TooltipStyleModifier(Key argument) { + public TooltipStyleProcessor(Key argument) { this.argument = argument; } @@ -19,11 +19,6 @@ public class TooltipStyleModifier implements SimpleNetworkItemDataModifier return this.argument; } - @Override - public Key type() { - return ItemDataModifiers.TOOLTIP_STYLE; - } - @Override public Item apply(Item item, ItemBuildContext context) { item.tooltipStyle(argument.toString()); @@ -35,12 +30,12 @@ public class TooltipStyleModifier implements SimpleNetworkItemDataModifier return DataComponentKeys.TOOLTIP_STYLE; } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { String id = arg.toString(); - return new TooltipStyleModifier<>(Key.of(id)); + return new TooltipStyleProcessor<>(Key.of(id)); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TrimModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/TrimProcessor.java similarity index 72% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/TrimModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/TrimProcessor.java index ead1b7d12..ba5c1ea42 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TrimModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/TrimProcessor.java @@ -1,9 +1,9 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.item.data.Trim; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; @@ -12,13 +12,13 @@ import org.jetbrains.annotations.Nullable; import java.util.Locale; import java.util.Map; -public class TrimModifier implements SimpleNetworkItemDataModifier { - public static final Factory FACTORY = new Factory<>(); +public class TrimProcessor implements SimpleNetworkItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); private static final Object[] NBT_PATH = new Object[] {"Trim"}; private final Key material; private final Key pattern; - public TrimModifier(Key material, Key pattern) { + public TrimProcessor(Key material, Key pattern) { this.material = material; this.pattern = pattern; } @@ -31,11 +31,6 @@ public class TrimModifier implements SimpleNetworkItemDataModifier { return pattern; } - @Override - public Key type() { - return ItemDataModifiers.TRIM; - } - @Override public Item apply(Item item, ItemBuildContext context) { return item.trim(new Trim(this.pattern, this.material)); @@ -56,14 +51,14 @@ public class TrimModifier implements SimpleNetworkItemDataModifier { return "Trim"; } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { Map data = ResourceConfigUtils.getAsMap(arg, "trim"); String material = data.get("material").toString().toLowerCase(Locale.ENGLISH); String pattern = data.get("pattern").toString().toLowerCase(Locale.ENGLISH); - return new TrimModifier<>(Key.of(material), Key.of(pattern)); + return new TrimProcessor<>(Key.of(material), Key.of(pattern)); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/UnbreakableModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/UnbreakableProcessor.java similarity index 67% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/UnbreakableModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/UnbreakableProcessor.java index 8d8bd20d2..abc1265a2 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/UnbreakableModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/UnbreakableProcessor.java @@ -1,19 +1,19 @@ -package net.momirealms.craftengine.core.item.modifier; +package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import org.jetbrains.annotations.Nullable; -public class UnbreakableModifier implements SimpleNetworkItemDataModifier { - public static final Factory FACTORY = new Factory<>(); +public class UnbreakableProcessor implements SimpleNetworkItemProcessor { + public static final ItemProcessorFactory FACTORY = new Factory<>(); private static final Object[] NBT_PATH = new Object[]{"Unbreakable"}; private final boolean argument; - public UnbreakableModifier(boolean argument) { + public UnbreakableProcessor(boolean argument) { this.argument = argument; } @@ -21,11 +21,6 @@ public class UnbreakableModifier implements SimpleNetworkItemDataModifier return argument; } - @Override - public Key type() { - return ItemDataModifiers.UNBREAKABLE; - } - @Override public Item apply(Item item, ItemBuildContext context) { item.unbreakable(this.argument); @@ -47,12 +42,12 @@ public class UnbreakableModifier implements SimpleNetworkItemDataModifier return "Unbreakable"; } - public static class Factory implements ItemDataModifierFactory { + private static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { boolean value = ResourceConfigUtils.getAsBoolean(arg, "unbreakable"); - return new UnbreakableModifier<>(value); + return new UnbreakableProcessor<>(value); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/DynamicLoreModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/DynamicLoreProcessor.java similarity index 57% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/DynamicLoreModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/DynamicLoreProcessor.java index 8a97d988e..156ac988e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/DynamicLoreModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/DynamicLoreProcessor.java @@ -1,42 +1,37 @@ -package net.momirealms.craftengine.core.item.modifier.lore; +package net.momirealms.craftengine.core.item.processor.lore; import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifiers; -import net.momirealms.craftengine.core.item.modifier.SimpleNetworkItemDataModifier; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; +import net.momirealms.craftengine.core.item.processor.ItemProcessor; +import net.momirealms.craftengine.core.item.processor.ItemProcessors; +import net.momirealms.craftengine.core.item.processor.SimpleNetworkItemProcessor; import net.momirealms.craftengine.core.util.Key; import java.util.LinkedHashMap; import java.util.Map; import java.util.Optional; -public final class DynamicLoreModifier implements SimpleNetworkItemDataModifier { +public final class DynamicLoreProcessor implements SimpleNetworkItemProcessor { public static final Factory FACTORY = new Factory<>(); public static final String CONTEXT_TAG_KEY = "craftengine:display_context"; - private final Map> displayContexts; - private final LoreModifier defaultModifier; + private final Map> displayContexts; + private final LoreProcessor defaultModifier; - public DynamicLoreModifier(Map> displayContexts) { + public DynamicLoreProcessor(Map> displayContexts) { this.displayContexts = displayContexts; this.defaultModifier = displayContexts.values().iterator().next(); } - public Map> displayContexts() { + public Map> displayContexts() { return displayContexts; } - @Override - public Key type() { - return ItemDataModifiers.DYNAMIC_LORE; - } - @Override public Item apply(Item item, ItemBuildContext context) { String displayContext = Optional.ofNullable(item.getJavaTag(CONTEXT_TAG_KEY)).orElse(this.defaultModifier).toString(); - LoreModifier lore = this.displayContexts.get(displayContext); + LoreProcessor lore = this.displayContexts.get(displayContext); if (lore == null) { lore = this.defaultModifier; } @@ -58,16 +53,16 @@ public final class DynamicLoreModifier implements SimpleNetworkItemDataModifi return "display.Lore"; } - public static class Factory implements ItemDataModifierFactory { + public static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { - Map> dynamicLore = new LinkedHashMap<>(); + public ItemProcessor create(Object arg) { + Map> dynamicLore = new LinkedHashMap<>(); if (arg instanceof Map map) { for (Map.Entry entry : map.entrySet()) { - dynamicLore.put(entry.getKey().toString(), LoreModifier.createLoreModifier(entry.getValue())); + dynamicLore.put(entry.getKey().toString(), LoreProcessor.createLoreModifier(entry.getValue())); } } - return new DynamicLoreModifier<>(dynamicLore); + return new DynamicLoreProcessor<>(dynamicLore); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/LoreModification.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/LoreModification.java similarity index 96% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/LoreModification.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/LoreModification.java index d033da602..d3b20b12a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/LoreModification.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/LoreModification.java @@ -1,4 +1,4 @@ -package net.momirealms.craftengine.core.item.modifier.lore; +package net.momirealms.craftengine.core.item.processor.lore; import net.kyori.adventure.text.Component; import net.momirealms.craftengine.core.item.ItemBuildContext; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/LoreModificationHolder.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/LoreModificationHolder.java similarity index 83% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/LoreModificationHolder.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/LoreModificationHolder.java index 7e2c4df28..de0671085 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/LoreModificationHolder.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/LoreModificationHolder.java @@ -1,4 +1,4 @@ -package net.momirealms.craftengine.core.item.modifier.lore; +package net.momirealms.craftengine.core.item.processor.lore; import org.jetbrains.annotations.NotNull; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/LoreModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/LoreProcessor.java similarity index 72% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/LoreModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/LoreProcessor.java index 61839b7d8..a51ca18e3 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/LoreModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/LoreProcessor.java @@ -1,13 +1,13 @@ -package net.momirealms.craftengine.core.item.modifier.lore; +package net.momirealms.craftengine.core.item.processor.lore; import net.kyori.adventure.text.Component; import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifiers; -import net.momirealms.craftengine.core.item.modifier.SimpleNetworkItemDataModifier; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; +import net.momirealms.craftengine.core.item.processor.ItemProcessor; +import net.momirealms.craftengine.core.item.processor.ItemProcessors; +import net.momirealms.craftengine.core.item.processor.SimpleNetworkItemProcessor; import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.plugin.text.minimessage.FormattedLine; import net.momirealms.craftengine.core.util.Key; @@ -18,15 +18,10 @@ import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.stream.Stream; -public sealed interface LoreModifier extends SimpleNetworkItemDataModifier - permits LoreModifier.EmptyLoreModifier, LoreModifier.CompositeLoreModifier, LoreModifier.DoubleLoreModifier, LoreModifier.SingleLoreModifier { +public sealed interface LoreProcessor extends SimpleNetworkItemProcessor + permits LoreProcessor.EmptyLoreProcessor, LoreProcessor.CompositeLoreProcessor, LoreProcessor.DoubleLoreProcessor, LoreProcessor.SingleLoreProcessor { Factory FACTORY = new Factory<>(); - @Override - default Key type() { - return ItemDataModifiers.LORE; - } - @Override @Nullable default Key componentType(Item item, ItemBuildContext context) { @@ -46,14 +41,14 @@ public sealed interface LoreModifier extends SimpleNetworkItemDataModifier List lore(); - class Factory implements ItemDataModifierFactory { + class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { + public ItemProcessor create(Object arg) { return createLoreModifier(arg); } } - static LoreModifier createLoreModifier(Object arg) { + static LoreProcessor createLoreModifier(Object arg) { List rawLoreData = MiscUtils.getAsList(arg, Object.class); String[] rawLore = new String[rawLoreData.size()]; label_all_string_check: { @@ -65,7 +60,7 @@ public sealed interface LoreModifier extends SimpleNetworkItemDataModifier rawLore[i] = o.toString(); } } - return new SingleLoreModifier<>(new LoreModification(LoreModification.Operation.APPEND, false, + return new SingleLoreProcessor<>(new LoreModification(LoreModification.Operation.APPEND, false, Arrays.stream(rawLore).map(line -> Config.addNonItalicTag() && !line.startsWith("") ? FormattedLine.create("" + line) : FormattedLine.create(line)) .toArray(FormattedLine[]::new))); } @@ -85,14 +80,14 @@ public sealed interface LoreModifier extends SimpleNetworkItemDataModifier } modifications.sort(LoreModificationHolder::compareTo); return switch (modifications.size()) { - case 0 -> new EmptyLoreModifier<>(); - case 1 -> new SingleLoreModifier<>(modifications.get(0).modification()); - case 2 -> new DoubleLoreModifier<>(modifications.get(0).modification(), modifications.get(1).modification()); - default -> new CompositeLoreModifier<>(modifications.stream().map(LoreModificationHolder::modification).toArray(LoreModification[]::new)); + case 0 -> new EmptyLoreProcessor<>(); + case 1 -> new SingleLoreProcessor<>(modifications.get(0).modification()); + case 2 -> new DoubleLoreProcessor<>(modifications.get(0).modification(), modifications.get(1).modification()); + default -> new CompositeLoreProcessor<>(modifications.stream().map(LoreModificationHolder::modification).toArray(LoreModification[]::new)); }; } - non-sealed class EmptyLoreModifier implements LoreModifier { + non-sealed class EmptyLoreProcessor implements LoreProcessor { @Override public Item apply(Item item, ItemBuildContext context) { @@ -105,10 +100,10 @@ public sealed interface LoreModifier extends SimpleNetworkItemDataModifier } } - non-sealed class SingleLoreModifier implements LoreModifier { + non-sealed class SingleLoreProcessor implements LoreProcessor { private final LoreModification modification; - public SingleLoreModifier(LoreModification modification) { + public SingleLoreProcessor(LoreModification modification) { this.modification = modification; } @@ -124,11 +119,11 @@ public sealed interface LoreModifier extends SimpleNetworkItemDataModifier } } - non-sealed class DoubleLoreModifier implements LoreModifier { + non-sealed class DoubleLoreProcessor implements LoreProcessor { private final LoreModification modification1; private final LoreModification modification2; - public DoubleLoreModifier(LoreModification m1, LoreModification m2) { + public DoubleLoreProcessor(LoreModification m1, LoreModification m2) { this.modification1 = m1; this.modification2 = m2; } @@ -145,10 +140,10 @@ public sealed interface LoreModifier extends SimpleNetworkItemDataModifier } } - non-sealed class CompositeLoreModifier implements LoreModifier { + non-sealed class CompositeLoreProcessor implements LoreProcessor { private final LoreModification[] modifications; - public CompositeLoreModifier(LoreModification... modifications) { + public CompositeLoreProcessor(LoreModification... modifications) { this.modifications = modifications; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/OverwritableLoreModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/OverwritableLoreProcessor.java similarity index 58% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/OverwritableLoreModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/OverwritableLoreProcessor.java index 62a9d966e..4a5da9626 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/OverwritableLoreModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/OverwritableLoreProcessor.java @@ -1,27 +1,22 @@ -package net.momirealms.craftengine.core.item.modifier.lore; +package net.momirealms.craftengine.core.item.processor.lore; import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifiers; -import net.momirealms.craftengine.core.item.modifier.SimpleNetworkItemDataModifier; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; +import net.momirealms.craftengine.core.item.processor.ItemProcessor; +import net.momirealms.craftengine.core.item.processor.ItemProcessors; +import net.momirealms.craftengine.core.item.processor.SimpleNetworkItemProcessor; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.VersionHelper; import net.momirealms.sparrow.nbt.CompoundTag; -public final class OverwritableLoreModifier implements SimpleNetworkItemDataModifier { +public final class OverwritableLoreProcessor implements SimpleNetworkItemProcessor { public static final Factory FACTORY = new Factory<>(); - private final LoreModifier loreModifier; + private final LoreProcessor loreProcessor; - public OverwritableLoreModifier(LoreModifier loreModifier) { - this.loreModifier = loreModifier; - } - - @Override - public Key type() { - return ItemDataModifiers.OVERWRITABLE_LORE; + public OverwritableLoreProcessor(LoreProcessor loreProcessor) { + this.loreProcessor = loreProcessor; } @Override @@ -35,7 +30,7 @@ public final class OverwritableLoreModifier implements SimpleNetworkItemDataM return item; } } - return this.loreModifier.apply(item, context); + return this.loreProcessor.apply(item, context); } @Override @@ -53,11 +48,11 @@ public final class OverwritableLoreModifier implements SimpleNetworkItemDataM return "display.Lore"; } - public static class Factory implements ItemDataModifierFactory { + public static class Factory implements ItemProcessorFactory { @Override - public ItemDataModifier create(Object arg) { - LoreModifier lore = LoreModifier.createLoreModifier(arg); - return new OverwritableLoreModifier<>(lore); + public ItemProcessor create(Object arg) { + LoreProcessor lore = LoreProcessor.createLoreModifier(arg); + return new OverwritableLoreProcessor<>(lore); } } @@ -72,6 +67,6 @@ public final class OverwritableLoreModifier implements SimpleNetworkItemDataM return item; } } - return SimpleNetworkItemDataModifier.super.prepareNetworkItem(item, context, networkData); + return SimpleNetworkItemProcessor.super.prepareNetworkItem(item, context, networkData); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/result/ApplyItemDataPostProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/result/ApplyItemDataPostProcessor.java index 3ace66275..b124e7693 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/result/ApplyItemDataPostProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/result/ApplyItemDataPostProcessor.java @@ -2,18 +2,18 @@ package net.momirealms.craftengine.core.item.recipe.result; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; +import net.momirealms.craftengine.core.item.processor.ItemProcessor; public class ApplyItemDataPostProcessor implements PostProcessor { - private final ItemDataModifier[] modifiers; + private final ItemProcessor[] modifiers; - public ApplyItemDataPostProcessor(ItemDataModifier[] modifiers) { + public ApplyItemDataPostProcessor(ItemProcessor[] modifiers) { this.modifiers = modifiers; } @Override public Item process(Item item, ItemBuildContext context) { - for (ItemDataModifier modifier : this.modifiers) { + for (ItemProcessor modifier : this.modifiers) { item.apply(modifier, context); } return item; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/result/PostProcessors.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/result/PostProcessors.java index ae876e8f1..d3f7d8be5 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/result/PostProcessors.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/result/PostProcessors.java @@ -1,7 +1,7 @@ package net.momirealms.craftengine.core.item.recipe.result; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifiers; +import net.momirealms.craftengine.core.item.processor.ItemProcessor; +import net.momirealms.craftengine.core.item.processor.ItemProcessors; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.registry.BuiltInRegistries; import net.momirealms.craftengine.core.registry.Registries; @@ -20,10 +20,10 @@ public class PostProcessors { static { registerPostProcessorType(APPLY_DATA, args -> { - List> modifiers = new ArrayList<>(); + List> modifiers = new ArrayList<>(); Map data = ResourceConfigUtils.getAsMap(args.get("data"), "data"); - ItemDataModifiers.applyDataModifiers(data, modifiers::add); - return new ApplyItemDataPostProcessor<>(modifiers.toArray(new ItemDataModifier[0])); + ItemProcessors.applyDataModifiers(data, modifiers::add); + return new ApplyItemDataPostProcessor<>(modifiers.toArray(new ItemProcessor[0])); }); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/updater/ItemUpdateConfig.java b/core/src/main/java/net/momirealms/craftengine/core/item/updater/ItemUpdateConfig.java index 9ed2df898..911cf2b7d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/updater/ItemUpdateConfig.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/updater/ItemUpdateConfig.java @@ -2,7 +2,7 @@ package net.momirealms.craftengine.core.item.updater; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.modifier.ItemVersionModifier; +import net.momirealms.craftengine.core.item.processor.ItemVersionProcessor; import net.momirealms.sparrow.nbt.NumericTag; import net.momirealms.sparrow.nbt.Tag; import org.jetbrains.annotations.NotNull; @@ -30,7 +30,7 @@ public class ItemUpdateConfig { } public ItemUpdateResult update(Item item, Supplier context) { - Tag versionTag = item.getTag(ItemVersionModifier.VERSION_TAG); + Tag versionTag = item.getTag(ItemVersionProcessor.VERSION_TAG); int currentVersion = 0; if (versionTag instanceof NumericTag numericTag) { currentVersion = numericTag.getAsInt(); @@ -45,7 +45,7 @@ public class ItemUpdateConfig { item = version.apply(item, buildContext); } } - item.setTag(this.maxVersion, ItemVersionModifier.VERSION_TAG); + item.setTag(this.maxVersion, ItemVersionProcessor.VERSION_TAG); return new ItemUpdateResult(item, orginalItem != item, true); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/updater/impl/ApplyDataOperation.java b/core/src/main/java/net/momirealms/craftengine/core/item/updater/impl/ApplyDataOperation.java index 6e7798bf6..5b2b6e872 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/updater/impl/ApplyDataOperation.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/updater/impl/ApplyDataOperation.java @@ -2,8 +2,8 @@ package net.momirealms.craftengine.core.item.updater.impl; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifiers; +import net.momirealms.craftengine.core.item.processor.ItemProcessor; +import net.momirealms.craftengine.core.item.processor.ItemProcessors; import net.momirealms.craftengine.core.item.updater.ItemUpdater; import net.momirealms.craftengine.core.item.updater.ItemUpdaterType; import net.momirealms.craftengine.core.util.Key; @@ -15,16 +15,16 @@ import java.util.Map; public class ApplyDataOperation implements ItemUpdater { public static final Type TYPE = new Type<>(); - private final List> modifiers; + private final List> modifiers; - public ApplyDataOperation(List> modifiers) { + public ApplyDataOperation(List> modifiers) { this.modifiers = modifiers; } @Override public Item update(Item item, ItemBuildContext context) { if (this.modifiers != null) { - for (ItemDataModifier modifier : this.modifiers) { + for (ItemProcessor modifier : this.modifiers) { modifier.apply(item, context); } } @@ -36,10 +36,10 @@ public class ApplyDataOperation implements ItemUpdater { @SuppressWarnings("unchecked") @Override public ItemUpdater create(Key item, Map args) { - List> modifiers = new ArrayList<>(); + List> modifiers = new ArrayList<>(); Map data = ResourceConfigUtils.getAsMap(args.get("data"), "data"); - ItemDataModifiers.applyDataModifiers(data, m -> { - modifiers.add((ItemDataModifier) m); + ItemProcessors.applyDataModifiers(data, m -> { + modifiers.add((ItemProcessor) m); }); return new ApplyDataOperation<>(modifiers); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/function/ApplyDataFunction.java b/core/src/main/java/net/momirealms/craftengine/core/loot/function/ApplyDataFunction.java index a598d10fd..f71e40898 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/function/ApplyDataFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/function/ApplyDataFunction.java @@ -2,8 +2,8 @@ package net.momirealms.craftengine.core.loot.function; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; -import net.momirealms.craftengine.core.item.modifier.ItemDataModifiers; +import net.momirealms.craftengine.core.item.processor.ItemProcessor; +import net.momirealms.craftengine.core.item.processor.ItemProcessors; import net.momirealms.craftengine.core.loot.LootConditions; import net.momirealms.craftengine.core.loot.LootContext; import net.momirealms.craftengine.core.plugin.context.Condition; @@ -14,9 +14,9 @@ import java.util.*; public class ApplyDataFunction extends AbstractLootConditionalFunction { public static final Factory FACTORY = new Factory<>(); - private final ItemDataModifier[] modifiers; + private final ItemProcessor[] modifiers; - public ApplyDataFunction(List> conditions, ItemDataModifier[] modifiers) { + public ApplyDataFunction(List> conditions, ItemProcessor[] modifiers) { super(conditions); this.modifiers = modifiers; } @@ -30,7 +30,7 @@ public class ApplyDataFunction extends AbstractLootConditionalFunction { @Override protected Item applyInternal(Item item, LootContext context) { ItemBuildContext ctx = ItemBuildContext.of(context.player()); - for (ItemDataModifier modifier : this.modifiers) { + for (ItemProcessor modifier : this.modifiers) { item = modifier.apply(item, ctx); } return item; @@ -40,13 +40,13 @@ public class ApplyDataFunction extends AbstractLootConditionalFunction { @SuppressWarnings("unchecked") @Override public LootFunction create(Map arguments) { - List> modifiers = new ArrayList<>(); + List> modifiers = new ArrayList<>(); Map data = ResourceConfigUtils.getAsMap(ResourceConfigUtils.requireNonNullOrThrow(arguments.get("data"), "warning.config.loot_table.function.apply_data.missing_data"), "data"); - ItemDataModifiers.applyDataModifiers(data, modifiers::add); + ItemProcessors.applyDataModifiers(data, modifiers::add); List> conditions = Optional.ofNullable(arguments.get("conditions")) .map(it -> LootConditions.fromMapList((List>) it)) .orElse(Collections.emptyList()); - return new ApplyDataFunction<>(conditions, modifiers.toArray(new ItemDataModifier[0])); + return new ApplyDataFunction<>(conditions, modifiers.toArray(new ItemProcessor[0])); } } } 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 48de8a308..b550c642e 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 @@ -6,8 +6,8 @@ import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemKeys; -import net.momirealms.craftengine.core.item.modifier.ComponentsModifier; -import net.momirealms.craftengine.core.item.modifier.TagsModifier; +import net.momirealms.craftengine.core.item.processor.ComponentsProcessor; +import net.momirealms.craftengine.core.item.processor.TagsProcessor; import net.momirealms.craftengine.core.item.trade.MerchantOffer; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.context.*; @@ -96,10 +96,10 @@ public class MerchantTradeFunction extends AbstractConditio item.count(ResourceConfigUtils.getAsInt(args.get("count"), "count")); } if (VersionHelper.isOrAbove1_20_5() && args.containsKey("components")) { - item = new ComponentsModifier<>(MiscUtils.castToMap(args.get("components"), false)).apply(item, ItemBuildContext.empty()); + item = new ComponentsProcessor<>(MiscUtils.castToMap(args.get("components"), false)).apply(item, ItemBuildContext.empty()); } if (!VersionHelper.isOrAbove1_20_5() && args.containsKey("nbt")) { - item = new TagsModifier<>(MiscUtils.castToMap(args.get("nbt"), false)).apply(item, ItemBuildContext.empty()); + item = new TagsProcessor<>(MiscUtils.castToMap(args.get("nbt"), false)).apply(item, ItemBuildContext.empty()); } return item; } else { 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 85a3de7bd..f341b9fe3 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 @@ -1,14 +1,14 @@ package net.momirealms.craftengine.core.registry; import net.momirealms.craftengine.core.block.CustomBlock; -import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; +import net.momirealms.craftengine.core.block.behavior.BlockBehaviorType; import net.momirealms.craftengine.core.block.entity.BlockEntityType; import net.momirealms.craftengine.core.block.entity.render.element.BlockEntityElementConfigFactory; import net.momirealms.craftengine.core.block.properties.PropertyFactory; import net.momirealms.craftengine.core.entity.furniture.behavior.FurnitureBehaviorType; import net.momirealms.craftengine.core.entity.furniture.element.FurnitureElementConfigFactory; import net.momirealms.craftengine.core.entity.furniture.hitbox.FurnitureHitBoxConfigFactory; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.item.behavior.ItemBehaviorFactory; import net.momirealms.craftengine.core.item.equipment.EquipmentFactory; import net.momirealms.craftengine.core.item.recipe.CustomSmithingTransformRecipe; @@ -52,8 +52,8 @@ import net.momirealms.craftengine.core.util.ResourceKey; public class BuiltInRegistries { public static final Registry BLOCK = createDynamicBoundRegistry(Registries.BLOCK, 512); - public static final Registry BLOCK_BEHAVIOR_FACTORY = createConstantBoundRegistry(Registries.BLOCK_BEHAVIOR_FACTORY, 64); - public static final Registry> ITEM_DATA_MODIFIER_FACTORY = createConstantBoundRegistry(Registries.ITEM_DATA_MODIFIER_FACTORY, 64); + public static final Registry BLOCK_BEHAVIOR_TYPE = createConstantBoundRegistry(Registries.BLOCK_BEHAVIOR_TYPE, 64); + public static final Registry> ITEM_DATA_MODIFIER_FACTORY = createConstantBoundRegistry(Registries.ITEM_DATA_MODIFIER_FACTORY, 64); public static final Registry ITEM_BEHAVIOR_FACTORY = createConstantBoundRegistry(Registries.ITEM_BEHAVIOR_FACTORY, 64); public static final Registry PROPERTY_FACTORY = createConstantBoundRegistry(Registries.PROPERTY_FACTORY, 16); public static final Registry> LOOT_FUNCTION_FACTORY = createConstantBoundRegistry(Registries.LOOT_FUNCTION_FACTORY, 32); 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 102dec975..aea938050 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 @@ -1,14 +1,14 @@ package net.momirealms.craftengine.core.registry; import net.momirealms.craftengine.core.block.CustomBlock; -import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory; +import net.momirealms.craftengine.core.block.behavior.BlockBehaviorType; import net.momirealms.craftengine.core.block.entity.BlockEntityType; import net.momirealms.craftengine.core.block.entity.render.element.BlockEntityElementConfigFactory; import net.momirealms.craftengine.core.block.properties.PropertyFactory; import net.momirealms.craftengine.core.entity.furniture.behavior.FurnitureBehaviorType; import net.momirealms.craftengine.core.entity.furniture.element.FurnitureElementConfigFactory; import net.momirealms.craftengine.core.entity.furniture.hitbox.FurnitureHitBoxConfigFactory; -import net.momirealms.craftengine.core.item.ItemDataModifierFactory; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.item.behavior.ItemBehaviorFactory; import net.momirealms.craftengine.core.item.equipment.EquipmentFactory; import net.momirealms.craftengine.core.item.recipe.CustomSmithingTransformRecipe; @@ -54,9 +54,9 @@ import net.momirealms.craftengine.core.util.ResourceKey; public class Registries { public static final Key ROOT_REGISTRY = Key.withDefaultNamespace("root"); public static final ResourceKey> BLOCK = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("block")); - public static final ResourceKey>> ITEM_DATA_MODIFIER_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("item_data_modifier_factory")); + public static final ResourceKey>> ITEM_DATA_MODIFIER_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("item_data_modifier_factory")); public static final ResourceKey> PROPERTY_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("property_factory")); - public static final ResourceKey> BLOCK_BEHAVIOR_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("block_behavior_factory")); + public static final ResourceKey> BLOCK_BEHAVIOR_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("block_behavior_type")); public static final ResourceKey> ITEM_BEHAVIOR_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("item_behavior_factory")); public static final ResourceKey>> LOOT_FUNCTION_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("loot_function_factory")); public static final ResourceKey>> LOOT_ENTRY_CONTAINER_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("loot_entry_container_factory")); diff --git a/core/src/main/java/net/momirealms/craftengine/core/world/CEWorld.java b/core/src/main/java/net/momirealms/craftengine/core/world/CEWorld.java index df9472248..4631c7cf3 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/world/CEWorld.java +++ b/core/src/main/java/net/momirealms/craftengine/core/world/CEWorld.java @@ -90,7 +90,7 @@ public abstract class CEWorld { } public boolean isChunkLoaded(final long chunkPos) { - return loadedChunkMap.containsKey(chunkPos); + return this.loadedChunkMap.containsKey(chunkPos); } public void addLoadedChunk(CEChunk chunk) {