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 d49ca44c8..ee1f0524f 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 @@ -4,7 +4,7 @@ import net.momirealms.craftengine.bukkit.entity.BukkitEntity; import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine; import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer; import net.momirealms.craftengine.bukkit.world.BukkitWorld; -import net.momirealms.craftengine.bukkit.world.BukkitWorldBlock; +import net.momirealms.craftengine.bukkit.world.BukkitBlockInWorld; import org.bukkit.World; import org.bukkit.block.Block; import org.bukkit.entity.Entity; @@ -26,7 +26,7 @@ public final class BukkitAdaptors { return new BukkitEntity(entity); } - public static BukkitWorldBlock adapt(final Block block) { - return new BukkitWorldBlock(block); + public static BukkitBlockInWorld adapt(final Block block) { + return new BukkitBlockInWorld(block); } } 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 6e18976af..9228904eb 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 @@ -148,10 +148,10 @@ public class CropBlockBehavior extends BushBlockBehavior { int z = FastNMS.INSTANCE.field$Vec3i$z(pos); net.momirealms.craftengine.core.world.World wrappedWorld = new BukkitWorld(world); - int i = this.getAge(immutableBlockState) + this.boneMealBonus.getInt(new LootContext(wrappedWorld, ContextHolder.builder() + int i = this.getAge(immutableBlockState) + this.boneMealBonus.getInt(new LootContext(wrappedWorld, 1, ThreadLocalRandom.current(), ContextHolder.builder() .withParameter(LootParameters.WORLD, wrappedWorld) .withParameter(LootParameters.LOCATION, Vec3d.atCenterOf(new Vec3i(x, y, z))) - .build(), ThreadLocalRandom.current(), 1)); + .build())); int maxAge = this.ageProperty.max; if (i > maxAge) { i = maxAge; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/AxeItemBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/AxeItemBehavior.java index 47b466610..732978b30 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/AxeItemBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/AxeItemBehavior.java @@ -4,7 +4,7 @@ import net.momirealms.craftengine.bukkit.api.CraftEngineBlocks; import net.momirealms.craftengine.bukkit.block.BukkitBlockManager; import net.momirealms.craftengine.bukkit.block.behavior.StrippableBlockBehavior; import net.momirealms.craftengine.bukkit.util.*; -import net.momirealms.craftengine.bukkit.world.BukkitWorldBlock; +import net.momirealms.craftengine.bukkit.world.BukkitBlockInWorld; import net.momirealms.craftengine.core.block.CustomBlock; import net.momirealms.craftengine.core.block.ImmutableBlockState; import net.momirealms.craftengine.core.block.UpdateOption; @@ -43,7 +43,7 @@ public class AxeItemBehavior extends ItemBehavior { @SuppressWarnings("unchecked") @Override public InteractionResult useOnBlock(UseOnContext context) { - BukkitWorldBlock clicked = (BukkitWorldBlock) context.getLevel().getBlockAt(context.getClickedPos()); + BukkitBlockInWorld clicked = (BukkitBlockInWorld) context.getLevel().getBlockAt(context.getClickedPos()); Block block = clicked.block(); ImmutableBlockState state = BukkitBlockManager.instance().getImmutableBlockState(BlockStateUtils.blockDataToId(block.getBlockData())); if (state == null || state.isEmpty()) return InteractionResult.PASS; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/BoneMealItemBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/BoneMealItemBehavior.java index 6d60e9e44..2996694ed 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/BoneMealItemBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/BoneMealItemBehavior.java @@ -8,7 +8,7 @@ import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.util.BlockStateUtils; import net.momirealms.craftengine.bukkit.util.LocationUtils; import net.momirealms.craftengine.bukkit.util.Reflections; -import net.momirealms.craftengine.bukkit.world.BukkitWorldBlock; +import net.momirealms.craftengine.bukkit.world.BukkitBlockInWorld; import net.momirealms.craftengine.core.block.ImmutableBlockState; import net.momirealms.craftengine.core.entity.player.InteractionResult; import net.momirealms.craftengine.core.item.behavior.ItemBehavior; @@ -32,7 +32,7 @@ public class BoneMealItemBehavior extends ItemBehavior { return InteractionResult.PASS; } - BukkitWorldBlock clicked = (BukkitWorldBlock) context.getLevel().getBlockAt(context.getClickedPos()); + BukkitBlockInWorld clicked = (BukkitBlockInWorld) context.getLevel().getBlockAt(context.getClickedPos()); Block block = clicked.block(); ImmutableBlockState state = BukkitBlockManager.instance().getImmutableBlockState(BlockStateUtils.blockDataToId(block.getBlockData())); if (state == null || state.isEmpty()) return InteractionResult.PASS; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/BucketItemBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/BucketItemBehavior.java index e8f90596f..570786360 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/BucketItemBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/BucketItemBehavior.java @@ -4,7 +4,7 @@ import net.momirealms.craftengine.bukkit.api.CraftEngineBlocks; import net.momirealms.craftengine.bukkit.block.BukkitBlockManager; import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine; import net.momirealms.craftengine.bukkit.util.BlockStateUtils; -import net.momirealms.craftengine.bukkit.world.BukkitWorldBlock; +import net.momirealms.craftengine.bukkit.world.BukkitBlockInWorld; import net.momirealms.craftengine.core.block.CustomBlock; import net.momirealms.craftengine.core.block.ImmutableBlockState; import net.momirealms.craftengine.core.block.UpdateOption; @@ -35,7 +35,7 @@ public class BucketItemBehavior extends ItemBehavior { @Override public InteractionResult useOnBlock(UseOnContext context) { if (context.getPlayer().isAdventureMode()) return InteractionResult.PASS; - BukkitWorldBlock clicked = (BukkitWorldBlock) context.getLevel().getBlockAt(context.getClickedPos()); + BukkitBlockInWorld clicked = (BukkitBlockInWorld) context.getLevel().getBlockAt(context.getClickedPos()); Block block = clicked.block(); ImmutableBlockState state = BukkitBlockManager.instance().getImmutableBlockState(BlockStateUtils.blockDataToId(block.getBlockData())); if (state == null || state.isEmpty()) return InteractionResult.PASS; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/WaterBucketItemBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/WaterBucketItemBehavior.java index 1ec481214..af31edd9d 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/WaterBucketItemBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/behavior/WaterBucketItemBehavior.java @@ -4,7 +4,7 @@ import net.momirealms.craftengine.bukkit.api.CraftEngineBlocks; import net.momirealms.craftengine.bukkit.block.BukkitBlockManager; import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine; import net.momirealms.craftengine.bukkit.util.BlockStateUtils; -import net.momirealms.craftengine.bukkit.world.BukkitWorldBlock; +import net.momirealms.craftengine.bukkit.world.BukkitBlockInWorld; import net.momirealms.craftengine.core.block.CustomBlock; import net.momirealms.craftengine.core.block.ImmutableBlockState; import net.momirealms.craftengine.core.block.UpdateOption; @@ -33,7 +33,7 @@ public class WaterBucketItemBehavior extends ItemBehavior { public InteractionResult useOnBlock(UseOnContext context) { if (context.getPlayer().isAdventureMode()) return InteractionResult.PASS; BlockPos pos = context.getClickedPos(); - BukkitWorldBlock clicked = (BukkitWorldBlock) context.getLevel().getBlockAt(pos); + BukkitBlockInWorld clicked = (BukkitBlockInWorld) context.getLevel().getBlockAt(pos); Block block = clicked.block(); ImmutableBlockState state = BukkitBlockManager.instance().getImmutableBlockState(BlockStateUtils.blockDataToId(block.getBlockData())); if (state == null || state.isEmpty()) return InteractionResult.PASS; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorldBlock.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitBlockInWorld.java similarity index 79% rename from bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorldBlock.java rename to bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitBlockInWorld.java index 105ac4443..7411024be 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorldBlock.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitBlockInWorld.java @@ -12,25 +12,26 @@ import net.momirealms.craftengine.core.item.CustomItem; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.context.BlockPlaceContext; import net.momirealms.craftengine.core.plugin.CraftEngine; +import net.momirealms.craftengine.core.plugin.text.minimessage.NamedArgumentTag; import net.momirealms.craftengine.core.util.Key; -import net.momirealms.craftengine.core.world.WorldBlock; +import net.momirealms.craftengine.core.world.BlockInWorld; import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.inventory.ItemStack; import java.util.Optional; -public class BukkitWorldBlock implements WorldBlock { +public class BukkitBlockInWorld implements BlockInWorld { private final Block block; - public BukkitWorldBlock(Block block) { + public BukkitBlockInWorld(Block block) { this.block = block; } @SuppressWarnings("unchecked") @Override public boolean canBeReplaced(BlockPlaceContext context) { - ImmutableBlockState customState = BukkitBlockManager.instance().getImmutableBlockState(BlockStateUtils.blockDataToId(block.getBlockData())); + ImmutableBlockState customState = BukkitBlockManager.instance().getImmutableBlockState(BlockStateUtils.blockDataToId(this.block.getBlockData())); if (customState != null && !customState.isEmpty()) { Key clickedBlockId = customState.owner().value().id(); Item item = (Item) context.getPlayer().getItemInHand(context.getHand()); @@ -45,14 +46,14 @@ public class BukkitWorldBlock implements WorldBlock { } } } - return block.isReplaceable(); + return this.block.isReplaceable(); } @Override public boolean isWaterSource(BlockPlaceContext blockPlaceContext) { try { - Location location = block.getLocation(); - Object serverLevel = FastNMS.INSTANCE.field$CraftWorld$ServerLevel(block.getWorld()); + Location location = this.block.getLocation(); + Object serverLevel = FastNMS.INSTANCE.field$CraftWorld$ServerLevel(this.block.getWorld()); Object fluidData = Reflections.method$Level$getFluidState.invoke(serverLevel, LocationUtils.toBlockPos(location.getBlockX(), location.getBlockY(), location.getBlockZ())); if (fluidData == null) return false; return Reflections.method$FluidState$getType.invoke(fluidData) == Reflections.instance$Fluids$WATER; @@ -62,6 +63,21 @@ public class BukkitWorldBlock implements WorldBlock { } } + @Override + public int x() { + return this.block.getX(); + } + + @Override + public int y() { + return this.block.getY(); + } + + @Override + public int z() { + return this.block.getZ(); + } + public Block block() { return block; } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorld.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorld.java index b63a851ac..d39fdf887 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorld.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorld.java @@ -8,7 +8,7 @@ import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.VersionHelper; import net.momirealms.craftengine.core.world.Vec3d; import net.momirealms.craftengine.core.world.World; -import net.momirealms.craftengine.core.world.WorldBlock; +import net.momirealms.craftengine.core.world.BlockInWorld; import net.momirealms.craftengine.core.world.WorldHeight; import org.bukkit.Location; import org.bukkit.SoundCategory; @@ -51,8 +51,8 @@ public class BukkitWorld implements World { } @Override - public WorldBlock getBlockAt(int x, int y, int z) { - return new BukkitWorldBlock(platformWorld().getBlockAt(x, y, z)); + public BlockInWorld getBlockAt(int x, int y, int z) { + return new BukkitBlockInWorld(platformWorld().getBlockAt(x, y, z)); } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/PlayerBlockActionContext.java b/core/src/main/java/net/momirealms/craftengine/core/block/PlayerBlockActionContext.java new file mode 100644 index 000000000..81b41ad08 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/block/PlayerBlockActionContext.java @@ -0,0 +1,15 @@ +package net.momirealms.craftengine.core.block; + +import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.util.context.ContextHolder; +import net.momirealms.craftengine.core.util.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.world.BlockInWorld; +import org.jetbrains.annotations.NotNull; + +public class PlayerBlockActionContext extends PlayerOptionalContext { + private BlockInWorld block; + + public PlayerBlockActionContext(@NotNull Player player, @NotNull ContextHolder contexts) { + super(player, contexts); + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/font/AbstractFontManager.java b/core/src/main/java/net/momirealms/craftengine/core/font/AbstractFontManager.java index fd0c030a0..bbb3d4b25 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/font/AbstractFontManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/font/AbstractFontManager.java @@ -11,7 +11,7 @@ import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigExce import net.momirealms.craftengine.core.plugin.locale.TranslationManager; import net.momirealms.craftengine.core.util.*; import net.momirealms.craftengine.core.util.context.ContextHolder; -import net.momirealms.craftengine.core.util.context.PlayerContext; +import net.momirealms.craftengine.core.util.context.PlayerOptionalContext; import org.ahocorasick.trie.Token; import org.ahocorasick.trie.Trie; import org.jetbrains.annotations.NotNull; @@ -121,7 +121,7 @@ public abstract class AbstractFontManager implements FontManager { continue; Component content = AdventureHelper.miniMessage().deserialize( emoji.content(), - PlayerContext.of(player, ContextHolder.builder() + PlayerOptionalContext.of(player, ContextHolder.builder() .withOptionalParameter(EmojiParameters.EMOJI, emoji.emojiImage()) .withParameter(EmojiParameters.KEYWORD, emoji.keywords().get(0)) .build()).tagResolvers() @@ -167,7 +167,7 @@ public abstract class AbstractFontManager implements FontManager { continue; emojis.put(fragment, AdventureHelper.miniMessage().deserialize( emoji.content(), - PlayerContext.of(player, ContextHolder.builder() + PlayerOptionalContext.of(player, ContextHolder.builder() .withOptionalParameter(EmojiParameters.EMOJI, emoji.emojiImage()) .withParameter(EmojiParameters.KEYWORD, emoji.keywords().get(0)) .build()).tagResolvers()) @@ -199,7 +199,7 @@ public abstract class AbstractFontManager implements FontManager { continue; emojis.put(fragment, AdventureHelper.miniMessage().deserialize( emoji.content(), - PlayerContext.of(player, + PlayerOptionalContext.of(player, ContextHolder.builder() .withOptionalParameter(EmojiParameters.EMOJI, emoji.emojiImage()) .withParameter(EmojiParameters.KEYWORD, emoji.keywords().get(0)) diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/ItemBuildContext.java b/core/src/main/java/net/momirealms/craftengine/core/item/ItemBuildContext.java index 5f7ccfd0a..fdc53f6e4 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/ItemBuildContext.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/ItemBuildContext.java @@ -2,11 +2,11 @@ package net.momirealms.craftengine.core.item; import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.util.context.ContextHolder; -import net.momirealms.craftengine.core.util.context.PlayerContext; +import net.momirealms.craftengine.core.util.context.PlayerOptionalContext; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class ItemBuildContext extends PlayerContext { +public class ItemBuildContext extends PlayerOptionalContext { public static final ItemBuildContext EMPTY = new ItemBuildContext(null, ContextHolder.EMPTY); public ItemBuildContext(@Nullable Player player, @NotNull ContextHolder contexts) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/LootContext.java b/core/src/main/java/net/momirealms/craftengine/core/loot/LootContext.java index 2ad3dc4f4..b996d1157 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/LootContext.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/LootContext.java @@ -1,5 +1,6 @@ package net.momirealms.craftengine.core.loot; +import net.momirealms.craftengine.core.util.context.CommonContext; import net.momirealms.craftengine.core.util.context.ContextHolder; import net.momirealms.craftengine.core.util.context.ContextKey; import net.momirealms.craftengine.core.world.World; @@ -7,43 +8,26 @@ import net.momirealms.craftengine.core.world.World; import java.util.Optional; import java.util.Random; -public class LootContext { +public class LootContext extends CommonContext { private final World world; - private final ContextHolder contexts; private final Random randomSource; private final float luck; - public LootContext(World world, ContextHolder contexts, Random randomSource, float luck) { + public LootContext(World world, float luck, Random randomSource, ContextHolder contexts) { + super(contexts); this.randomSource = randomSource; - this.contexts = contexts; this.world = world; this.luck = luck; } public Random randomSource() { - return randomSource; - } - - public Optional getOptionalParameter(ContextKey parameter) { - return this.contexts.getOptional(parameter); - } - - public boolean hasParameter(ContextKey parameter) { - return this.contexts.has(parameter); - } - - public T getParameterOrThrow(ContextKey parameter) { - return this.contexts.getOrThrow(parameter); + return this.randomSource; } public float luck() { return luck; } - public ContextHolder contexts() { - return contexts; - } - public World world() { return world; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/LootTable.java b/core/src/main/java/net/momirealms/craftengine/core/loot/LootTable.java index e8b2176ff..152eec336 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/LootTable.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/LootTable.java @@ -80,7 +80,7 @@ public class LootTable { } public ArrayList> getRandomItems(ContextHolder parameters, World world) { - return this.getRandomItems(new LootContext(world, parameters, ThreadLocalRandom.current(), 1)); + return this.getRandomItems(new LootContext(world, 1, ThreadLocalRandom.current(), parameters)); } private ArrayList> getRandomItems(LootContext context) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/condition/AllOfCondition.java b/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionAllOf.java similarity index 83% rename from core/src/main/java/net/momirealms/craftengine/core/loot/condition/AllOfCondition.java rename to core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionAllOf.java index 6c1e9eaa1..6496fa4aa 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/condition/AllOfCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionAllOf.java @@ -6,11 +6,11 @@ import net.momirealms.craftengine.core.util.Key; import java.util.List; import java.util.Map; -public class AllOfCondition implements LootCondition { +public class LootConditionAllOf implements LootCondition { public static final Factory FACTORY = new Factory(); private final List conditions; - public AllOfCondition(List conditions) { + public LootConditionAllOf(List conditions) { this.conditions = conditions; } @@ -30,11 +30,12 @@ public class AllOfCondition implements LootCondition { } public static class Factory implements LootConditionFactory { + @SuppressWarnings("unchecked") @Override public LootCondition create(Map arguments) { List> terms = (List>) arguments.get("terms"); - return new AllOfCondition(LootConditions.fromMapList(terms)); + return new LootConditionAllOf(LootConditions.fromMapList(terms)); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/condition/AnyOfCondition.java b/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionAnyOf.java similarity index 83% rename from core/src/main/java/net/momirealms/craftengine/core/loot/condition/AnyOfCondition.java rename to core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionAnyOf.java index 8ed439c3e..c7267bce6 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/condition/AnyOfCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionAnyOf.java @@ -6,11 +6,11 @@ import net.momirealms.craftengine.core.util.Key; import java.util.List; import java.util.Map; -public class AnyOfCondition implements LootCondition { +public class LootConditionAnyOf implements LootCondition { public static final Factory FACTORY = new Factory(); private final List conditions; - public AnyOfCondition(List conditions) { + public LootConditionAnyOf(List conditions) { this.conditions = conditions; } @@ -34,7 +34,7 @@ public class AnyOfCondition implements LootCondition { @Override public LootCondition create(Map arguments) { List> terms = (List>) arguments.get("terms"); - return new AnyOfCondition(LootConditions.fromMapList(terms)); + return new LootConditionAnyOf(LootConditions.fromMapList(terms)); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/condition/EnchantmentCondition.java b/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionEnchantment.java similarity index 90% rename from core/src/main/java/net/momirealms/craftengine/core/loot/condition/EnchantmentCondition.java rename to core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionEnchantment.java index 067a8a3e1..16e861b4c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/condition/EnchantmentCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionEnchantment.java @@ -10,12 +10,12 @@ import java.util.Map; import java.util.Optional; import java.util.function.Function; -public class EnchantmentCondition implements LootCondition { +public class LootConditionEnchantment implements LootCondition { public static final Factory FACTORY = new Factory(); private final Key id; private final Function expression; - public EnchantmentCondition(Key id, Function expression) { + public LootConditionEnchantment(Key id, Function expression) { this.id = id; this.expression = expression; } @@ -50,7 +50,7 @@ public class EnchantmentCondition implements LootCondition { case ">=" -> expression = (i -> i >= level); default -> throw new IllegalArgumentException("Unknown operator: " + operator); } - return new EnchantmentCondition(Key.of(split[0]), expression); + return new LootConditionEnchantment(Key.of(split[0]), expression); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/condition/FallingCondition.java b/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionFalling.java similarity index 84% rename from core/src/main/java/net/momirealms/craftengine/core/loot/condition/FallingCondition.java rename to core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionFalling.java index 0e4b6324b..b47cb29c0 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/condition/FallingCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionFalling.java @@ -6,9 +6,9 @@ import net.momirealms.craftengine.core.util.Key; import java.util.Map; -public class FallingCondition implements LootCondition { +public class LootConditionFalling implements LootCondition { public static final Factory FACTORY = new Factory(); - public static final FallingCondition INSTANCE = new FallingCondition(); + public static final LootConditionFalling INSTANCE = new LootConditionFalling(); @Override public Key type() { diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/condition/InvertedCondition.java b/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionInverted.java similarity index 80% rename from core/src/main/java/net/momirealms/craftengine/core/loot/condition/InvertedCondition.java rename to core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionInverted.java index 7dc3a9cd7..01d89fa09 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/condition/InvertedCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionInverted.java @@ -5,11 +5,11 @@ import net.momirealms.craftengine.core.util.Key; import java.util.Map; -public class InvertedCondition implements LootCondition { +public class LootConditionInverted implements LootCondition { public static final Factory FACTORY = new Factory(); private final LootCondition condition; - public InvertedCondition(LootCondition condition) { + public LootConditionInverted(LootCondition condition) { this.condition = condition; } @@ -28,7 +28,7 @@ public class InvertedCondition implements LootCondition { @Override public LootCondition create(Map arguments) { Map term = (Map) arguments.get("term"); - return new InvertedCondition(LootConditions.fromMap(term)); + return new LootConditionInverted(LootConditions.fromMap(term)); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/condition/MatchBlockPropertyCondition.java b/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionMatchBlockProperty.java similarity index 90% rename from core/src/main/java/net/momirealms/craftengine/core/loot/condition/MatchBlockPropertyCondition.java rename to core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionMatchBlockProperty.java index 24c91cd6e..c3a30b8f4 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/condition/MatchBlockPropertyCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionMatchBlockProperty.java @@ -12,11 +12,11 @@ import java.util.List; import java.util.Locale; import java.util.Map; -public class MatchBlockPropertyCondition implements LootCondition { +public class LootConditionMatchBlockProperty implements LootCondition { public static final Factory FACTORY = new Factory(); private final List> properties; - public MatchBlockPropertyCondition(List> properties) { + public LootConditionMatchBlockProperty(List> properties) { this.properties = properties; } @@ -55,7 +55,7 @@ public class MatchBlockPropertyCondition implements LootCondition { for (Map.Entry entry : properties.entrySet()) { propertyList.add(new Pair<>(entry.getKey(), entry.getValue().toString())); } - return new MatchBlockPropertyCondition(propertyList); + return new LootConditionMatchBlockProperty(propertyList); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/condition/MatchItemCondition.java b/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionMatchItem.java similarity index 88% rename from core/src/main/java/net/momirealms/craftengine/core/loot/condition/MatchItemCondition.java rename to core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionMatchItem.java index 367ac6ec3..c2b4c4c2b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/condition/MatchItemCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionMatchItem.java @@ -8,12 +8,12 @@ import net.momirealms.craftengine.core.util.MiscUtils; import java.util.*; -public class MatchItemCondition implements LootCondition { +public class LootConditionMatchItem implements LootCondition { public static final Factory FACTORY = new Factory(); private final Set ids; private final boolean regexMatch; - public MatchItemCondition(Collection ids, boolean regexMatch) { + public LootConditionMatchItem(Collection ids, boolean regexMatch) { this.ids = new HashSet<>(ids); this.regexMatch = regexMatch; } @@ -46,7 +46,7 @@ public class MatchItemCondition implements LootCondition { public LootCondition create(Map arguments) { List ids = MiscUtils.getAsStringList(arguments.get("id")); boolean regex = (boolean) arguments.getOrDefault("regex", false); - return new MatchItemCondition(ids, regex); + return new LootConditionMatchItem(ids, regex); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/condition/RandomCondition.java b/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionRandom.java similarity index 85% rename from core/src/main/java/net/momirealms/craftengine/core/loot/condition/RandomCondition.java rename to core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionRandom.java index 50cb43f1e..77a99c196 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/condition/RandomCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionRandom.java @@ -7,11 +7,11 @@ import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; -public class RandomCondition implements LootCondition { +public class LootConditionRandom implements LootCondition { public static final Factory FACTORY = new Factory(); private final float chance; - public RandomCondition(float chance) { + public LootConditionRandom(float chance) { this.chance = chance; } @@ -29,7 +29,7 @@ public class RandomCondition implements LootCondition { @Override public LootCondition create(Map arguments) { float chance = ResourceConfigUtils.getAsFloat(arguments.getOrDefault("value", 0.5f), "value"); - return new RandomCondition(chance); + return new LootConditionRandom(chance); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/condition/SurvivesExplosionCondition.java b/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionSurvivesExplosion.java similarity index 84% rename from core/src/main/java/net/momirealms/craftengine/core/loot/condition/SurvivesExplosionCondition.java rename to core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionSurvivesExplosion.java index 3fd8f8cf6..68ae812da 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/condition/SurvivesExplosionCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionSurvivesExplosion.java @@ -7,9 +7,9 @@ import net.momirealms.craftengine.core.util.Key; import java.util.Map; import java.util.Optional; -public class SurvivesExplosionCondition implements LootCondition { +public class LootConditionSurvivesExplosion implements LootCondition { public static final Factory FACTORY = new Factory(); - private static final SurvivesExplosionCondition INSTANCE = new SurvivesExplosionCondition(); + private static final LootConditionSurvivesExplosion INSTANCE = new LootConditionSurvivesExplosion(); @Override public Key type() { diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/condition/TableBonusCondition.java b/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionTableBonus.java similarity index 88% rename from core/src/main/java/net/momirealms/craftengine/core/loot/condition/TableBonusCondition.java rename to core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionTableBonus.java index 125d5859d..e17179ebc 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/condition/TableBonusCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditionTableBonus.java @@ -13,12 +13,12 @@ import java.util.List; import java.util.Map; import java.util.Optional; -public class TableBonusCondition implements LootCondition { +public class LootConditionTableBonus implements LootCondition { public static final Factory FACTORY = new Factory(); private final Key enchantmentType; private final List values; - public TableBonusCondition(Key enchantmentType, List values) { + public LootConditionTableBonus(Key enchantmentType, List values) { this.enchantmentType = enchantmentType; this.values = values; } @@ -47,13 +47,13 @@ public class TableBonusCondition implements LootCondition { Object chances = arguments.get("chances"); if (chances != null) { if (chances instanceof Number number) { - return new TableBonusCondition(enchantmentType, List.of(number.floatValue())); + return new LootConditionTableBonus(enchantmentType, List.of(number.floatValue())); } else if (chances instanceof List list) { List values = new ArrayList<>(list.size()); for (Object o : list) { values.add(ResourceConfigUtils.getAsFloat(o, "chances")); } - return new TableBonusCondition(enchantmentType, values); + return new LootConditionTableBonus(enchantmentType, values); } } throw new LocalizedResourceConfigException("warning.config.loot_table.condition.table_bonus.missing_chances"); diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditions.java b/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditions.java index fd8f55e2b..d9ba14a51 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditions.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/condition/LootConditions.java @@ -26,16 +26,16 @@ public class LootConditions { public static final Key FALLING_BLOCK = Key.from("craftengine:falling_block"); static { - register(MATCH_ITEM, MatchItemCondition.FACTORY); - register(MATCH_BLOCK_PROPERTY, MatchBlockPropertyCondition.FACTORY); - register(TABLE_BONUS, TableBonusCondition.FACTORY); - register(SURVIVES_EXPLOSION, SurvivesExplosionCondition.FACTORY); - register(ANY_OF, AnyOfCondition.FACTORY); - register(ALL_OF, AllOfCondition.FACTORY); - register(ENCHANTMENT, EnchantmentCondition.FACTORY); - register(INVERTED, InvertedCondition.FACTORY); - register(FALLING_BLOCK, FallingCondition.FACTORY); - register(RANDOM, RandomCondition.FACTORY); + register(MATCH_ITEM, LootConditionMatchItem.FACTORY); + register(MATCH_BLOCK_PROPERTY, LootConditionMatchBlockProperty.FACTORY); + register(TABLE_BONUS, LootConditionTableBonus.FACTORY); + register(SURVIVES_EXPLOSION, LootConditionSurvivesExplosion.FACTORY); + register(ANY_OF, LootConditionAnyOf.FACTORY); + register(ALL_OF, LootConditionAllOf.FACTORY); + register(ENCHANTMENT, LootConditionEnchantment.FACTORY); + register(INVERTED, LootConditionInverted.FACTORY); + register(FALLING_BLOCK, LootConditionFalling.FACTORY); + register(RANDOM, LootConditionRandom.FACTORY); } public static void register(Key key, LootConditionFactory factory) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/function/ApplyBonusCountFunction.java b/core/src/main/java/net/momirealms/craftengine/core/loot/function/LootFunctionApplyBonusCount.java similarity index 95% rename from core/src/main/java/net/momirealms/craftengine/core/loot/function/ApplyBonusCountFunction.java rename to core/src/main/java/net/momirealms/craftengine/core/loot/function/LootFunctionApplyBonusCount.java index 3e55a198f..230b66eac 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/function/ApplyBonusCountFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/function/LootFunctionApplyBonusCount.java @@ -19,12 +19,12 @@ import java.util.Map; import java.util.Optional; import java.util.concurrent.ThreadLocalRandom; -public class ApplyBonusCountFunction extends AbstractLootConditionalFunction { +public class LootFunctionApplyBonusCount extends AbstractLootConditionalFunction { public static final Factory FACTORY = new Factory<>(); private final Key enchantment; private final Formula formula; - public ApplyBonusCountFunction(List predicates, Key enchantment, Formula formula) { + public LootFunctionApplyBonusCount(List predicates, Key enchantment, Formula formula) { super(predicates); this.enchantment = enchantment; this.formula = formula; @@ -57,7 +57,7 @@ public class ApplyBonusCountFunction extends AbstractLootConditionalFunction< List conditions = Optional.ofNullable(arguments.get("conditions")) .map(it -> LootConditions.fromMapList((List>) it)) .orElse(Collections.emptyList()); - return new ApplyBonusCountFunction<>(conditions, Key.from(enchantment), Formulas.fromMap(formulaMap)); + return new LootFunctionApplyBonusCount<>(conditions, Key.from(enchantment), Formulas.fromMap(formulaMap)); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/function/DropExpFunction.java b/core/src/main/java/net/momirealms/craftengine/core/loot/function/LootFunctionDropExp.java similarity index 88% rename from core/src/main/java/net/momirealms/craftengine/core/loot/function/DropExpFunction.java rename to core/src/main/java/net/momirealms/craftengine/core/loot/function/LootFunctionDropExp.java index cecd00e2e..24c353736 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/function/DropExpFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/function/LootFunctionDropExp.java @@ -15,11 +15,11 @@ import java.util.List; import java.util.Map; import java.util.Optional; -public class DropExpFunction extends AbstractLootConditionalFunction { +public class LootFunctionDropExp extends AbstractLootConditionalFunction { public static final Factory FACTORY = new Factory<>(); private final NumberProvider value; - public DropExpFunction(NumberProvider value, List predicates) { + public LootFunctionDropExp(NumberProvider value, List predicates) { super(predicates); this.value = value; } @@ -44,7 +44,7 @@ public class DropExpFunction extends AbstractLootConditionalFunction { List conditions = Optional.ofNullable(arguments.get("conditions")) .map(it -> LootConditions.fromMapList((List>) it)) .orElse(Collections.emptyList()); - return new DropExpFunction<>(NumberProviders.fromObject(value), conditions); + return new LootFunctionDropExp<>(NumberProviders.fromObject(value), conditions); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/function/ExplosionDecayFunction.java b/core/src/main/java/net/momirealms/craftengine/core/loot/function/LootFunctionExplosionDecay.java similarity index 88% rename from core/src/main/java/net/momirealms/craftengine/core/loot/function/ExplosionDecayFunction.java rename to core/src/main/java/net/momirealms/craftengine/core/loot/function/LootFunctionExplosionDecay.java index 9a3fc8689..7a8c8ff61 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/function/ExplosionDecayFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/function/LootFunctionExplosionDecay.java @@ -9,10 +9,10 @@ import net.momirealms.craftengine.core.util.Key; import java.util.*; -public class ExplosionDecayFunction extends AbstractLootConditionalFunction { +public class LootFunctionExplosionDecay extends AbstractLootConditionalFunction { public static final Factory FACTORY = new Factory<>(); - public ExplosionDecayFunction(List predicates) { + public LootFunctionExplosionDecay(List predicates) { super(predicates); } @@ -46,7 +46,7 @@ public class ExplosionDecayFunction extends AbstractLootConditionalFunction conditions = Optional.ofNullable(arguments.get("conditions")) .map(it -> LootConditions.fromMapList((List>) it)) .orElse(Collections.emptyList()); - return new ExplosionDecayFunction<>(conditions); + return new LootFunctionExplosionDecay<>(conditions); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/function/SetCountFunction.java b/core/src/main/java/net/momirealms/craftengine/core/loot/function/LootFunctionSetCount.java similarity index 86% rename from core/src/main/java/net/momirealms/craftengine/core/loot/function/SetCountFunction.java rename to core/src/main/java/net/momirealms/craftengine/core/loot/function/LootFunctionSetCount.java index 969c778f9..85aafdcc7 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/function/SetCountFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/function/LootFunctionSetCount.java @@ -14,13 +14,13 @@ import java.util.List; import java.util.Map; import java.util.Optional; -public class SetCountFunction extends AbstractLootConditionalFunction { +public class LootFunctionSetCount extends AbstractLootConditionalFunction { public static final Factory FACTORY = new Factory<>(); private final NumberProvider value; private final boolean add; - public SetCountFunction(List conditions, NumberProvider value, boolean add) { + public LootFunctionSetCount(List conditions, NumberProvider value, boolean add) { super(conditions); this.value = value; this.add = add; @@ -47,7 +47,7 @@ public class SetCountFunction extends AbstractLootConditionalFunction { List conditions = Optional.ofNullable(arguments.get("conditions")) .map(it -> LootConditions.fromMapList((List>) it)) .orElse(Collections.emptyList()); - return new SetCountFunction<>(conditions, NumberProviders.fromObject(value), add); + return new LootFunctionSetCount<>(conditions, NumberProviders.fromObject(value), add); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/function/LootFunctions.java b/core/src/main/java/net/momirealms/craftengine/core/loot/function/LootFunctions.java index 17a88c0c7..24cdb87c7 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/function/LootFunctions.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/function/LootFunctions.java @@ -23,10 +23,10 @@ public class LootFunctions { public static final Key DROP_EXP = Key.from("craftengine:drop_exp"); static { - register(SET_COUNT, SetCountFunction.FACTORY); - register(EXPLOSION_DECAY, ExplosionDecayFunction.FACTORY); - register(APPLY_BONUS, ApplyBonusCountFunction.FACTORY); - register(DROP_EXP, DropExpFunction.FACTORY); + register(SET_COUNT, LootFunctionSetCount.FACTORY); + register(EXPLOSION_DECAY, LootFunctionExplosionDecay.FACTORY); + register(APPLY_BONUS, LootFunctionApplyBonusCount.FACTORY); + register(DROP_EXP, LootFunctionDropExp.FACTORY); } public static void register(Key key, LootFunctionFactory factory) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java b/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java index bc4831cec..ff722cd59 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java @@ -7,7 +7,7 @@ import net.momirealms.craftengine.core.font.BitmapImage; import net.momirealms.craftengine.core.font.Font; import net.momirealms.craftengine.core.item.EquipmentData; import net.momirealms.craftengine.core.pack.conflict.PathContext; -import net.momirealms.craftengine.core.pack.conflict.resolution.ConditionalResolution; +import net.momirealms.craftengine.core.pack.conflict.resolution.ResolutionConditional; import net.momirealms.craftengine.core.pack.host.ResourcePackHost; import net.momirealms.craftengine.core.pack.host.ResourcePackHosts; import net.momirealms.craftengine.core.pack.host.impl.NoneHost; @@ -1159,7 +1159,7 @@ public abstract class AbstractPackManager implements PackManager { PathContext relativeCTX = PathContext.of(relative); PathContext targetCTX = PathContext.of(targetPath); PathContext fileCTX = PathContext.of(file); - for (ConditionalResolution resolution : Config.resolutions()) { + for (ResolutionConditional resolution : Config.resolutions()) { if (resolution.matcher().test(relativeCTX)) { resolution.resolution().run(targetCTX, fileCTX); return FileVisitResult.CONTINUE; diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/AllOfPathMatcher.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherAllOf.java similarity index 79% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/AllOfPathMatcher.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherAllOf.java index 325f7632b..70daf8447 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/AllOfPathMatcher.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherAllOf.java @@ -10,18 +10,13 @@ import net.momirealms.craftengine.core.util.context.Condition; import java.util.List; import java.util.Map; -public class AllOfPathMatcher extends AllOfCondition implements PathMatcher { +public class PathMatcherAllOf extends AllOfCondition implements PathMatcher { public static final Factory FACTORY = new Factory(); - public AllOfPathMatcher(List> conditions) { + public PathMatcherAllOf(List> conditions) { super(conditions); } - @Override - public Key type() { - return PathMatchers.ALL_OF; - } - public static class Factory implements PathMatcherFactory { @SuppressWarnings("unchecked") @@ -30,10 +25,10 @@ public class AllOfPathMatcher extends AllOfCondition implements Pat Object termsObj = arguments.get("terms"); if (termsObj instanceof List list) { List> terms = (List>) list; - return new AllOfPathMatcher(PathMatchers.fromMapList(terms)); + return new PathMatcherAllOf(PathMatchers.fromMapList(terms)); } else if (termsObj instanceof Map) { Map terms = MiscUtils.castToMap(termsObj, false); - return new AllOfPathMatcher(PathMatchers.fromMapList(List.of(terms))); + return new PathMatcherAllOf(PathMatchers.fromMapList(List.of(terms))); } else { throw new LocalizedException("warning.config.conflict_matcher.all_of.missing_terms"); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/AnyOfPathMatcher.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherAnyOf.java similarity index 76% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/AnyOfPathMatcher.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherAnyOf.java index 4138629e2..efb1d584c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/AnyOfPathMatcher.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherAnyOf.java @@ -2,7 +2,6 @@ package net.momirealms.craftengine.core.pack.conflict.matcher; import net.momirealms.craftengine.core.pack.conflict.PathContext; import net.momirealms.craftengine.core.plugin.locale.LocalizedException; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.condition.AnyOfCondition; import net.momirealms.craftengine.core.util.context.Condition; @@ -10,18 +9,13 @@ import net.momirealms.craftengine.core.util.context.Condition; import java.util.List; import java.util.Map; -public class AnyOfPathMatcher extends AnyOfCondition implements PathMatcher { +public class PathMatcherAnyOf extends AnyOfCondition implements PathMatcher { public static final Factory FACTORY = new Factory(); - public AnyOfPathMatcher(List> conditions) { + public PathMatcherAnyOf(List> conditions) { super(conditions); } - @Override - public Key type() { - return PathMatchers.ANY_OF; - } - public static class Factory implements PathMatcherFactory { @SuppressWarnings("unchecked") @@ -30,10 +24,10 @@ public class AnyOfPathMatcher extends AnyOfCondition implements Pat Object termsObj = arguments.get("terms"); if (termsObj instanceof List list) { List> terms = (List>) list; - return new AnyOfPathMatcher(PathMatchers.fromMapList(terms)); + return new PathMatcherAnyOf(PathMatchers.fromMapList(terms)); } else if (termsObj instanceof Map) { Map terms = MiscUtils.castToMap(termsObj, false); - return new AnyOfPathMatcher(PathMatchers.fromMapList(List.of(terms))); + return new PathMatcherAnyOf(PathMatchers.fromMapList(List.of(terms))); } else { throw new LocalizedException("warning.config.conflict_matcher.any_of.missing_terms"); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathContainsMatcher.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherContains.java similarity index 87% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathContainsMatcher.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherContains.java index b11b30f2a..77ee9f683 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathContainsMatcher.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherContains.java @@ -7,11 +7,11 @@ import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; -public class PathContainsMatcher implements PathMatcher { +public class PathMatcherContains implements PathMatcher { public static final Factory FACTORY = new Factory(); private final String path; - public PathContainsMatcher(String path) { + public PathMatcherContains(String path) { this.path = path; } @@ -31,7 +31,7 @@ public class PathContainsMatcher implements PathMatcher { @Override public PathMatcher create(Map arguments) { String path = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("path"), () -> new LocalizedException("warning.config.conflict_matcher.contains.missing_path")); - return new PathContainsMatcher(path); + return new PathMatcherContains(path); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ExactPathMatcher.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherExact.java similarity index 88% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ExactPathMatcher.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherExact.java index 34b55bb4d..7864822fa 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ExactPathMatcher.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherExact.java @@ -7,11 +7,11 @@ import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; -public class ExactPathMatcher implements PathMatcher { +public class PathMatcherExact implements PathMatcher { public static final Factory FACTORY = new Factory(); private final String path; - public ExactPathMatcher(String path) { + public PathMatcherExact(String path) { this.path = path; } @@ -31,7 +31,7 @@ public class ExactPathMatcher implements PathMatcher { @Override public PathMatcher create(Map arguments) { String path = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("path"), () -> new LocalizedException("warning.config.conflict_matcher.exact.missing_path")); - return new ExactPathMatcher(path); + return new PathMatcherExact(path); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/FilenameMatcher.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherFilename.java similarity index 87% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/FilenameMatcher.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherFilename.java index e221ebfd2..3a33b6442 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/FilenameMatcher.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherFilename.java @@ -7,11 +7,11 @@ import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.util.Map; -public class FilenameMatcher implements PathMatcher { +public class PathMatcherFilename implements PathMatcher { public static final Factory FACTORY = new Factory(); private final String name; - public FilenameMatcher(String name) { + public PathMatcherFilename(String name) { this.name = name; } @@ -31,7 +31,7 @@ public class FilenameMatcher implements PathMatcher { @Override public PathMatcher create(Map arguments) { String name = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("name"), () -> new LocalizedException("warning.config.conflict_matcher.filename.missing_name")); - return new FilenameMatcher(name); + return new PathMatcherFilename(name); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/InvertedPathMatcher.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherInverted.java similarity index 79% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/InvertedPathMatcher.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherInverted.java index d200f979e..c1d6060fb 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/InvertedPathMatcher.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherInverted.java @@ -9,25 +9,20 @@ import net.momirealms.craftengine.core.util.condition.InvertedCondition; import java.util.Map; -public class InvertedPathMatcher extends InvertedCondition implements PathMatcher { +public class PathMatcherInverted extends InvertedCondition implements PathMatcher { public static final Factory FACTORY = new Factory(); - public InvertedPathMatcher(PathMatcher condition) { + public PathMatcherInverted(PathMatcher condition) { super(condition); } - @Override - public Key type() { - return PathMatchers.INVERTED; - } - public static class Factory implements PathMatcherFactory { @Override public PathMatcher create(Map arguments) { Object inverted = ResourceConfigUtils.requireNonNullOrThrow(arguments.get("term"), () -> new LocalizedException("warning.config.conflict_matcher.inverted.missing_term")); Map term = MiscUtils.castToMap(inverted, false); - return new InvertedPathMatcher(PathMatchers.fromMap(term)); + return new PathMatcherInverted(PathMatchers.fromMap(term)); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ParentPathPrefixMatcher.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherParentPrefix.java similarity index 87% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ParentPathPrefixMatcher.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherParentPrefix.java index 9b753bebd..fb3bbafa7 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ParentPathPrefixMatcher.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherParentPrefix.java @@ -8,11 +8,11 @@ import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.nio.file.Path; import java.util.Map; -public class ParentPathPrefixMatcher implements PathMatcher { +public class PathMatcherParentPrefix implements PathMatcher { public static final Factory FACTORY = new Factory(); private final String prefix; - public ParentPathPrefixMatcher(String prefix) { + public PathMatcherParentPrefix(String prefix) { this.prefix = prefix; } @@ -34,7 +34,7 @@ public class ParentPathPrefixMatcher implements PathMatcher { @Override public PathMatcher create(Map arguments) { String prefix = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("prefix"), () -> new LocalizedException("warning.config.conflict_matcher.parent_prefix.missing_prefix")); - return new ParentPathPrefixMatcher(prefix); + return new PathMatcherParentPrefix(prefix); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ParentPathSuffixMatcher.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherParentSuffix.java similarity index 87% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ParentPathSuffixMatcher.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherParentSuffix.java index e91fc8e1a..971cdd82b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/ParentPathSuffixMatcher.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatcherParentSuffix.java @@ -8,11 +8,11 @@ import net.momirealms.craftengine.core.util.ResourceConfigUtils; import java.nio.file.Path; import java.util.Map; -public class ParentPathSuffixMatcher implements PathMatcher { +public class PathMatcherParentSuffix implements PathMatcher { public static final Factory FACTORY = new Factory(); private final String suffix; - public ParentPathSuffixMatcher(String suffix) { + public PathMatcherParentSuffix(String suffix) { this.suffix = suffix; } @@ -34,7 +34,7 @@ public class ParentPathSuffixMatcher implements PathMatcher { @Override public PathMatcher create(Map arguments) { String suffix = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("suffix"), () -> new LocalizedException("warning.config.conflict_matcher.parent_suffix.missing_suffix")); - return new ParentPathSuffixMatcher(suffix); + return new PathMatcherParentSuffix(suffix); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatchers.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatchers.java index a9de55bfd..7316e0d58 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatchers.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/matcher/PathMatchers.java @@ -8,6 +8,7 @@ import net.momirealms.craftengine.core.registry.WritableRegistry; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.util.ResourceKey; +import net.momirealms.craftengine.core.util.condition.AllOfCondition; import java.util.ArrayList; import java.util.List; @@ -25,15 +26,15 @@ public class PathMatchers { public static final Key INVERTED = Key.of("craftengine:inverted"); static { - register(PARENT_PATH_SUFFIX, ParentPathSuffixMatcher.FACTORY); - register(PARENT_PATH_PREFIX, ParentPathPrefixMatcher.FACTORY); + register(PARENT_PATH_SUFFIX, PathMatcherParentSuffix.FACTORY); + register(PARENT_PATH_PREFIX, PathMatcherParentPrefix.FACTORY); register(PATTERN, PathPatternMatcher.FACTORY); - register(EXACT, ExactPathMatcher.FACTORY); - register(FILENAME, FilenameMatcher.FACTORY); - register(ANY_OF, AnyOfPathMatcher.FACTORY); - register(ALL_OF, AllOfPathMatcher.FACTORY); - register(INVERTED, InvertedPathMatcher.FACTORY); - register(CONTAINS, PathContainsMatcher.FACTORY); + register(EXACT, PathMatcherExact.FACTORY); + register(FILENAME, PathMatcherFilename.FACTORY); + register(ANY_OF, PathMatcherAnyOf.FACTORY); + register(ALL_OF, PathMatcherAllOf.FACTORY); + register(INVERTED, PathMatcherInverted.FACTORY); + register(CONTAINS, PathMatcherContains.FACTORY); } public static void register(Key key, PathMatcherFactory factory) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ConditionalResolution.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionConditional.java similarity index 85% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ConditionalResolution.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionConditional.java index f54c04c39..0c79d0c23 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ConditionalResolution.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionConditional.java @@ -8,7 +8,7 @@ import net.momirealms.craftengine.core.util.MiscUtils; import java.util.Map; -public record ConditionalResolution(PathMatcher matcher, Resolution resolution) implements Resolution { +public record ResolutionConditional(PathMatcher matcher, Resolution resolution) implements Resolution { public static final Factory FACTORY = new Factory(); @Override @@ -26,10 +26,10 @@ public record ConditionalResolution(PathMatcher matcher, Resolution resolution) public static class Factory implements ResolutionFactory { @Override - public ConditionalResolution create(Map arguments) { + public ResolutionConditional create(Map arguments) { Map term = MiscUtils.castToMap(arguments.get("term"), false); Map resolution = MiscUtils.castToMap(arguments.get("resolution"), false); - return new ConditionalResolution(PathMatchers.fromMap(term), Resolutions.fromMap(resolution)); + return new ResolutionConditional(PathMatchers.fromMap(term), Resolutions.fromMap(resolution)); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergeAltasResolution.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergeAltas.java similarity index 93% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergeAltasResolution.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergeAltas.java index 6cced38f0..6f75bbb4d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergeAltasResolution.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergeAltas.java @@ -12,9 +12,9 @@ import java.io.IOException; import java.util.HashSet; import java.util.Map; -public class MergeAltasResolution implements Resolution { +public class ResolutionMergeAltas implements Resolution { public static final Factory FACTORY = new Factory(); - public static final MergeAltasResolution INSTANCE = new MergeAltasResolution(); + public static final ResolutionMergeAltas INSTANCE = new ResolutionMergeAltas(); @Override public void run(PathContext existing, PathContext conflict) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergeJsonResolution.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergeJson.java similarity index 90% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergeJsonResolution.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergeJson.java index aca0b9425..88679856d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergeJsonResolution.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergeJson.java @@ -9,11 +9,11 @@ import net.momirealms.craftengine.core.util.Key; import java.io.IOException; import java.util.Map; -public class MergeJsonResolution implements Resolution { +public class ResolutionMergeJson implements Resolution { public static final Factory FACTORY = new Factory(); private final boolean deeply; - public MergeJsonResolution(boolean deeply) { + public ResolutionMergeJson(boolean deeply) { this.deeply = deeply; } @@ -44,7 +44,7 @@ public class MergeJsonResolution implements Resolution { @Override public Resolution create(Map arguments) { boolean deeply = (boolean) arguments.getOrDefault("deeply", false); - return new MergeJsonResolution(deeply); + return new ResolutionMergeJson(deeply); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergePackMcMetaResolution.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergePackMcMeta.java similarity index 97% rename from core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergePackMcMetaResolution.java rename to core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergePackMcMeta.java index 1ebeadd67..186a1c3eb 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/MergePackMcMetaResolution.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/ResolutionMergePackMcMeta.java @@ -11,11 +11,11 @@ import java.io.IOException; import java.nio.file.Path; import java.util.Map; -public class MergePackMcMetaResolution implements Resolution { +public class ResolutionMergePackMcMeta implements Resolution { public static final Factory FACTORY = new Factory(); private final String description; - public MergePackMcMetaResolution(String description) { + public ResolutionMergePackMcMeta(String description) { this.description = description; } @@ -209,7 +209,7 @@ public class MergePackMcMetaResolution implements Resolution { @Override public Resolution create(Map arguments) { String description = arguments.getOrDefault("description", "CraftEngine ResourcePack").toString(); - return new MergePackMcMetaResolution(description); + return new ResolutionMergePackMcMeta(description); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/Resolutions.java b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/Resolutions.java index 38f7754ca..86a3ae54d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/Resolutions.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/conflict/resolution/Resolutions.java @@ -20,10 +20,10 @@ public class Resolutions { static { register(RETAIN_MATCHING, RetainMatchingResolution.FACTORY); - register(MERGE_JSON, MergeJsonResolution.FACTORY); - register(CONDITIONAL, ConditionalResolution.FACTORY); - register(MERGE_PACK_MCMETA, MergePackMcMetaResolution.FACTORY); - register(MERGE_ATLAS, MergeAltasResolution.FACTORY); + register(MERGE_JSON, ResolutionMergeJson.FACTORY); + register(CONDITIONAL, ResolutionConditional.FACTORY); + register(MERGE_PACK_MCMETA, ResolutionMergePackMcMeta.FACTORY); + register(MERGE_ATLAS, ResolutionMergeAltas.FACTORY); } public static void register(Key key, ResolutionFactory factory) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java index e823d35e4..be4757d67 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java @@ -13,7 +13,7 @@ import dev.dejvokep.boostedyaml.settings.updater.UpdaterSettings; import dev.dejvokep.boostedyaml.utils.format.NodeRole; import net.kyori.adventure.text.Component; import net.momirealms.craftengine.core.entity.furniture.ColliderType; -import net.momirealms.craftengine.core.pack.conflict.resolution.ConditionalResolution; +import net.momirealms.craftengine.core.pack.conflict.resolution.ResolutionConditional; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.PluginProperties; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; @@ -54,7 +54,7 @@ public class Config { protected boolean resource_pack$remove_tinted_leaves_particle; protected boolean resource_pack$generate_mod_assets; protected boolean resource_pack$override_uniform_font; - protected List resource_pack$duplicated_files_handler; + protected List resource_pack$duplicated_files_handler; protected List resource_pack$merge_external_folders; protected boolean resource_pack$protection$crash_tools$method_1; @@ -245,7 +245,7 @@ public class Config { try { resource_pack$duplicated_files_handler = config.getMapList("resource-pack.duplicated-files-handler").stream().map(it -> { Map args = MiscUtils.castToMap(it, false); - return ConditionalResolution.FACTORY.create(args); + return ResolutionConditional.FACTORY.create(args); }).toList(); } catch (LocalizedResourceConfigException e) { TranslationManager.instance().log(e.node(), e.arguments()); @@ -479,7 +479,7 @@ public class Config { return instance.resource_pack$delivery$file_to_upload; } - public static List resolutions() { + public static List resolutions() { return instance.resource_pack$duplicated_files_handler; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/category/ItemBrowserManagerImpl.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/category/ItemBrowserManagerImpl.java index 6bed70f13..60dd2120f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/category/ItemBrowserManagerImpl.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/category/ItemBrowserManagerImpl.java @@ -17,7 +17,7 @@ import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.util.context.ContextHolder; -import net.momirealms.craftengine.core.util.context.PlayerContext; +import net.momirealms.craftengine.core.util.context.PlayerOptionalContext; import java.nio.file.Path; import java.util.*; @@ -177,7 +177,7 @@ public class ItemBrowserManagerImpl implements ItemBrowserManager { } }) .build() - .title(AdventureHelper.miniMessage().deserialize(Constants.BROWSER_TITLE, PlayerContext.of(player, ContextHolder.EMPTY).tagResolvers())) + .title(AdventureHelper.miniMessage().deserialize(Constants.BROWSER_TITLE, PlayerOptionalContext.of(player, ContextHolder.EMPTY).tagResolvers())) .refresh() .open(player); } @@ -292,7 +292,7 @@ public class ItemBrowserManagerImpl implements ItemBrowserManager { } }) .build() - .title(AdventureHelper.miniMessage().deserialize(Constants.CATEGORY_TITLE, PlayerContext.of(player, ContextHolder.EMPTY).tagResolvers())) + .title(AdventureHelper.miniMessage().deserialize(Constants.CATEGORY_TITLE, PlayerOptionalContext.of(player, ContextHolder.EMPTY).tagResolvers())) .refresh() .open(player); } @@ -353,7 +353,7 @@ public class ItemBrowserManagerImpl implements ItemBrowserManager { } }) .build() - .title(AdventureHelper.miniMessage().deserialize(Constants.RECIPE_NONE_TITLE, PlayerContext.of(player, ContextHolder.EMPTY).tagResolvers())) + .title(AdventureHelper.miniMessage().deserialize(Constants.RECIPE_NONE_TITLE, PlayerOptionalContext.of(player, ContextHolder.EMPTY).tagResolvers())) .refresh() .open(player); } @@ -578,7 +578,7 @@ public class ItemBrowserManagerImpl implements ItemBrowserManager { } }) .build() - .title(AdventureHelper.miniMessage().deserialize(Constants.RECIPE_SMITHING_TRANSFORM_TITLE, PlayerContext.of(player, ContextHolder.EMPTY).tagResolvers())) + .title(AdventureHelper.miniMessage().deserialize(Constants.RECIPE_SMITHING_TRANSFORM_TITLE, PlayerOptionalContext.of(player, ContextHolder.EMPTY).tagResolvers())) .refresh() .open(player); } @@ -711,7 +711,7 @@ public class ItemBrowserManagerImpl implements ItemBrowserManager { } }) .build() - .title(AdventureHelper.miniMessage().deserialize(Constants.RECIPE_STONECUTTING_TITLE, PlayerContext.of(player, ContextHolder.EMPTY).tagResolvers())) + .title(AdventureHelper.miniMessage().deserialize(Constants.RECIPE_STONECUTTING_TITLE, PlayerOptionalContext.of(player, ContextHolder.EMPTY).tagResolvers())) .refresh() .open(player); } @@ -861,7 +861,7 @@ public class ItemBrowserManagerImpl implements ItemBrowserManager { } }) .build() - .title(AdventureHelper.miniMessage().deserialize(title, PlayerContext.of(player, ContextHolder.EMPTY).tagResolvers())) + .title(AdventureHelper.miniMessage().deserialize(title, PlayerOptionalContext.of(player, ContextHolder.EMPTY).tagResolvers())) .refresh() .open(player); } @@ -1056,7 +1056,7 @@ public class ItemBrowserManagerImpl implements ItemBrowserManager { } }) .build() - .title(AdventureHelper.miniMessage().deserialize(Constants.RECIPE_CRAFTING_TITLE, PlayerContext.of(player, ContextHolder.EMPTY).tagResolvers())) + .title(AdventureHelper.miniMessage().deserialize(Constants.RECIPE_CRAFTING_TITLE, PlayerOptionalContext.of(player, ContextHolder.EMPTY).tagResolvers())) .refresh() .open(player); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/MiniMessageTextContext.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/MiniMessageTextContext.java index 5fe4279ec..fea64a87b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/MiniMessageTextContext.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/MiniMessageTextContext.java @@ -2,7 +2,6 @@ package net.momirealms.craftengine.core.plugin.text.minimessage; import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import net.momirealms.craftengine.core.util.context.Context; -import net.momirealms.craftengine.core.util.context.ContextHolder; public interface MiniMessageTextContext extends Context { diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/NamedArgumentTag.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/NamedArgumentTag.java index 67f2b335f..b48a8c43c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/NamedArgumentTag.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/NamedArgumentTag.java @@ -12,6 +12,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Objects; +import java.util.Optional; public class NamedArgumentTag implements TagResolver { private static final String NAME_0 = "argument"; @@ -29,11 +30,12 @@ public class NamedArgumentTag implements TagResolver { return null; } String argumentKey = arguments.popOr("No argument key provided").toString(); - ContextKey key = ContextKey.of(Key.of(argumentKey)); - if (!this.context.contexts().has(key)) { + ContextKey key = ContextKey.of(Key.withDefaultNamespace(argumentKey, "craftengine")); + Optional optional = this.context.getOptionalParameter(key); + if (optional.isEmpty()) { throw ctx.newException("Invalid argument key", arguments); } - return Tag.selfClosingInserting(AdventureHelper.miniMessage().deserialize(this.context.contexts().getOrThrow(key), this.context.tagResolvers())); + return Tag.selfClosingInserting(AdventureHelper.miniMessage().deserialize(String.valueOf(optional.get()), this.context.tagResolvers())); } @Override 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 59d7b9711..e3333d608 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 @@ -9,7 +9,7 @@ import net.momirealms.craftengine.core.item.recipe.CustomSmithingTransformRecipe import net.momirealms.craftengine.core.item.recipe.RecipeFactory; import net.momirealms.craftengine.core.loot.condition.LootConditionFactory; import net.momirealms.craftengine.core.loot.entry.LootEntryContainerFactory; -import net.momirealms.craftengine.core.loot.function.ApplyBonusCountFunction; +import net.momirealms.craftengine.core.loot.function.LootFunctionApplyBonusCount; import net.momirealms.craftengine.core.loot.function.LootFunctionFactory; import net.momirealms.craftengine.core.loot.number.NumberProviderFactory; import net.momirealms.craftengine.core.pack.conflict.matcher.PathMatcherFactory; @@ -43,7 +43,7 @@ public class BuiltInRegistries { public static final Registry CONDITION_PROPERTY_FACTORY = createRegistry(Registries.CONDITION_PROPERTY_FACTORY); public static final Registry SELECT_PROPERTY_FACTORY = createRegistry(Registries.SELECT_PROPERTY_FACTORY); public static final Registry> RECIPE_FACTORY = createRegistry(Registries.RECIPE_FACTORY); - public static final Registry FORMULA_FACTORY = createRegistry(Registries.FORMULA_FACTORY); + public static final Registry FORMULA_FACTORY = createRegistry(Registries.FORMULA_FACTORY); public static final Registry PATH_MATCHER_FACTORY = createRegistry(Registries.PATH_MATCHER_FACTORY); public static final Registry RESOLUTION_FACTORY = createRegistry(Registries.RESOLUTION_FACTORY); public static final Registry SMITHING_RESULT_PROCESSOR_FACTORY = createRegistry(Registries.SMITHING_RESULT_PROCESSOR_FACTORY); 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 07e1e4ef8..0071569c5 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 @@ -9,7 +9,7 @@ import net.momirealms.craftengine.core.item.recipe.CustomSmithingTransformRecipe import net.momirealms.craftengine.core.item.recipe.RecipeFactory; import net.momirealms.craftengine.core.loot.condition.LootConditionFactory; import net.momirealms.craftengine.core.loot.entry.LootEntryContainerFactory; -import net.momirealms.craftengine.core.loot.function.ApplyBonusCountFunction; +import net.momirealms.craftengine.core.loot.function.LootFunctionApplyBonusCount; import net.momirealms.craftengine.core.loot.function.LootFunctionFactory; import net.momirealms.craftengine.core.loot.number.NumberProviderFactory; import net.momirealms.craftengine.core.pack.conflict.matcher.PathMatcherFactory; @@ -44,7 +44,7 @@ public class Registries { public static final ResourceKey> CONDITION_PROPERTY_FACTORY = new ResourceKey<>(ROOT_REGISTRY, Key.withDefaultNamespace("condition_property_factory")); public static final ResourceKey> SELECT_PROPERTY_FACTORY = new ResourceKey<>(ROOT_REGISTRY, Key.withDefaultNamespace("select_property_factory")); public static final ResourceKey>> RECIPE_FACTORY = new ResourceKey<>(ROOT_REGISTRY, Key.withDefaultNamespace("recipe_factory")); - public static final ResourceKey> FORMULA_FACTORY = new ResourceKey<>(ROOT_REGISTRY, Key.withDefaultNamespace("formula_factory")); + public static final ResourceKey> FORMULA_FACTORY = new ResourceKey<>(ROOT_REGISTRY, Key.withDefaultNamespace("formula_factory")); public static final ResourceKey> PATH_MATCHER_FACTORY = new ResourceKey<>(ROOT_REGISTRY, Key.withDefaultNamespace("path_matcher_factory")); public static final ResourceKey> RESOLUTION_FACTORY = new ResourceKey<>(ROOT_REGISTRY, Key.withDefaultNamespace("resolution_factory")); public static final ResourceKey> SMITHING_RESULT_PROCESSOR_FACTORY = new ResourceKey<>(ROOT_REGISTRY, Key.withDefaultNamespace("smithing_result_processor_factory")); diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/condition/AllOfCondition.java b/core/src/main/java/net/momirealms/craftengine/core/util/condition/AllOfCondition.java index c50420e13..3abcf3ef1 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/condition/AllOfCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/condition/AllOfCondition.java @@ -1,5 +1,6 @@ package net.momirealms.craftengine.core.util.condition; +import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.context.Condition; import java.util.List; @@ -20,4 +21,9 @@ public abstract class AllOfCondition implements Condition { } return true; } + + @Override + public Key type() { + return CommonConditions.ALL_OF; + } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/condition/AnyOfCondition.java b/core/src/main/java/net/momirealms/craftengine/core/util/condition/AnyOfCondition.java index bb2e08e4a..b9803a62b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/condition/AnyOfCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/condition/AnyOfCondition.java @@ -1,5 +1,6 @@ package net.momirealms.craftengine.core.util.condition; +import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.context.Condition; import java.util.List; @@ -20,4 +21,9 @@ public abstract class AnyOfCondition implements Condition { } return false; } + + @Override + public Key type() { + return CommonConditions.ANY_OF; + } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/condition/CommonConditions.java b/core/src/main/java/net/momirealms/craftengine/core/util/condition/CommonConditions.java new file mode 100644 index 000000000..017c51d11 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/condition/CommonConditions.java @@ -0,0 +1,11 @@ +package net.momirealms.craftengine.core.util.condition; + +import net.momirealms.craftengine.core.util.Key; + +public final class CommonConditions { + private CommonConditions() {} + + public static final Key ALL_OF = Key.of("craftengine:all_of"); + public static final Key ANY_OF = Key.of("craftengine:any_of"); + public static final Key INVERTED = Key.of("craftengine:inverted"); +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/condition/InvertedCondition.java b/core/src/main/java/net/momirealms/craftengine/core/util/condition/InvertedCondition.java index 6fa42c944..7c2304344 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/condition/InvertedCondition.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/condition/InvertedCondition.java @@ -1,5 +1,6 @@ package net.momirealms.craftengine.core.util.condition; +import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.context.Condition; public abstract class InvertedCondition implements Condition { @@ -13,4 +14,9 @@ public abstract class InvertedCondition implements Condition { public boolean test(CTX ctx) { return !this.condition.test(ctx); } + + @Override + public Key type() { + return CommonConditions.INVERTED; + } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/context/CommonContext.java b/core/src/main/java/net/momirealms/craftengine/core/util/context/CommonContext.java index 7941d363a..ef6754308 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/context/CommonContext.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/context/CommonContext.java @@ -1,14 +1,32 @@ package net.momirealms.craftengine.core.util.context; -public abstract class CommonContext implements Context { - protected final ContextHolder holder; +import java.util.Optional; - public CommonContext(ContextHolder holder) { - this.holder = holder; +public abstract class CommonContext implements Context { + protected final ContextHolder contexts; + + public CommonContext(ContextHolder contexts) { + this.contexts = contexts; } @Override public ContextHolder contexts() { - return holder; + return contexts; + } + + @Override + public Optional getOptionalParameter(ContextKey parameter) { + return this.contexts.getOptional(parameter); + } + + @Override + public T getParameterOrThrow(ContextKey parameter) { + return this.contexts.getOrThrow(parameter); + } + + @Override + public CommonContext withParameter(ContextKey parameter, T value) { + this.contexts.withParameter(parameter, value); + return this; } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/context/CommonParameters.java b/core/src/main/java/net/momirealms/craftengine/core/util/context/CommonParameters.java index 5544449b7..339e41e93 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/context/CommonParameters.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/context/CommonParameters.java @@ -1,4 +1,9 @@ package net.momirealms.craftengine.core.util.context; -public class CommonParameters { +public final class CommonParameters { + + private CommonParameters() {} + + public static ContextKey RANDOM = ContextKey.of("random"); + public static ContextKey LAST_RANDOM = ContextKey.of("last_random"); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/context/Context.java b/core/src/main/java/net/momirealms/craftengine/core/util/context/Context.java index 5901daaa4..56ff668c4 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/context/Context.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/context/Context.java @@ -1,6 +1,14 @@ package net.momirealms.craftengine.core.util.context; +import java.util.Optional; + public interface Context { ContextHolder contexts(); + + Optional getOptionalParameter(ContextKey parameter); + + T getParameterOrThrow(ContextKey parameter); + + Context withParameter(ContextKey parameter, T value); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/context/ContextKey.java b/core/src/main/java/net/momirealms/craftengine/core/util/context/ContextKey.java index 4ea446ffb..4c690da88 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/context/ContextKey.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/context/ContextKey.java @@ -22,7 +22,7 @@ public class ContextKey { @NotNull public static ContextKey of(@NotNull String id) { - return new ContextKey<>(Key.of(id)); + return new ContextKey<>(Key.withDefaultNamespace(id, "craftengine")); } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/context/LazyContextParameterProvider.java b/core/src/main/java/net/momirealms/craftengine/core/util/context/LazyContextParameterProvider.java new file mode 100644 index 000000000..796df1230 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/context/LazyContextParameterProvider.java @@ -0,0 +1,21 @@ +package net.momirealms.craftengine.core.util.context; + +import java.util.Optional; + +public interface LazyContextParameterProvider { + + Optional getOptionalParameter(ContextKey parameter); + + static LazyContextParameterProvider dummy() { + return DummyContextParameterProvider.INSTANCE; + } + + class DummyContextParameterProvider implements LazyContextParameterProvider { + static final DummyContextParameterProvider INSTANCE = new DummyContextParameterProvider(); + + @Override + public Optional getOptionalParameter(ContextKey parameter) { + return Optional.empty(); + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/context/PlayerContext.java b/core/src/main/java/net/momirealms/craftengine/core/util/context/PlayerContext.java deleted file mode 100644 index ff44eb60a..000000000 --- a/core/src/main/java/net/momirealms/craftengine/core/util/context/PlayerContext.java +++ /dev/null @@ -1,37 +0,0 @@ -package net.momirealms.craftengine.core.util.context; - -import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; -import net.momirealms.craftengine.core.entity.player.Player; -import net.momirealms.craftengine.core.plugin.text.minimessage.*; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class PlayerContext extends CommonContext implements MiniMessageTextContext { - public static final PlayerContext EMPTY = new PlayerContext(null, ContextHolder.EMPTY); - private final Player player; - private TagResolver[] tagResolvers; - - public PlayerContext(@Nullable Player player, @NotNull ContextHolder contexts) { - super(contexts); - this.player = player; - } - - @NotNull - public static PlayerContext of(@Nullable Player player, @NotNull ContextHolder contexts) { - return new PlayerContext(player, contexts); - } - - @Nullable - public Player player() { - return this.player; - } - - @Override - @NotNull - public TagResolver[] tagResolvers() { - if (this.tagResolvers == null) { - this.tagResolvers = new TagResolver[]{ShiftTag.INSTANCE, ImageTag.INSTANCE, new PlaceholderTag(this.player), new I18NTag(this), new NamedArgumentTag(this)}; - } - return this.tagResolvers; - } -} diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/context/PlayerOptionalContext.java b/core/src/main/java/net/momirealms/craftengine/core/util/context/PlayerOptionalContext.java new file mode 100644 index 000000000..e3f711135 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/context/PlayerOptionalContext.java @@ -0,0 +1,87 @@ +package net.momirealms.craftengine.core.util.context; + +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; +import net.momirealms.craftengine.core.entity.Entity; +import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.plugin.text.minimessage.*; +import net.momirealms.craftengine.core.util.MCUtils; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import java.util.function.Function; + +public class PlayerOptionalContext extends CommonContext implements MiniMessageTextContext { + public static final PlayerOptionalContext EMPTY = new PlayerOptionalContext(null, ContextHolder.EMPTY); + private final Player player; + private final LazyContextParameterProvider playerParameterProvider; + private TagResolver[] tagResolvers; + + public PlayerOptionalContext(@Nullable Player player, @NotNull ContextHolder contexts) { + super(contexts); + this.player = player; + this.playerParameterProvider = player == null ? LazyContextParameterProvider.dummy() : new PlayerParameterGetter(player); + } + + @NotNull + public static PlayerOptionalContext of(@Nullable Player player, @NotNull ContextHolder contexts) { + return new PlayerOptionalContext(player, contexts); + } + + @Nullable + public Player player() { + return this.player; + } + + @Override + @NotNull + public TagResolver[] tagResolvers() { + if (this.tagResolvers == null) { + this.tagResolvers = new TagResolver[]{ShiftTag.INSTANCE, ImageTag.INSTANCE, new PlaceholderTag(this.player), new I18NTag(this), new NamedArgumentTag(this)}; + } + return this.tagResolvers; + } + + @Override + public Optional getOptionalParameter(ContextKey parameter) { + Optional optional = this.playerParameterProvider.getOptionalParameter(parameter); + if (optional.isPresent()) { + return optional; + } + return super.getOptionalParameter(parameter); + } + + @Override + public T getParameterOrThrow(ContextKey parameter) { + return this.playerParameterProvider.getOptionalParameter(parameter).orElseGet(() -> super.getParameterOrThrow(parameter)); + } + + public static class PlayerParameterGetter implements LazyContextParameterProvider { + private static final Map, Function> CONTEXT_FUNCTIONS = new HashMap<>(); + static { + CONTEXT_FUNCTIONS.put(PlayerParameters.X, Entity::x); + CONTEXT_FUNCTIONS.put(PlayerParameters.Y, Entity::y); + CONTEXT_FUNCTIONS.put(PlayerParameters.Z, Entity::z); + CONTEXT_FUNCTIONS.put(PlayerParameters.BLOCK_X, p -> MCUtils.fastFloor(p.x())); + CONTEXT_FUNCTIONS.put(PlayerParameters.BLOCK_Y, p -> MCUtils.fastFloor(p.y())); + CONTEXT_FUNCTIONS.put(PlayerParameters.BLOCK_Z, p -> MCUtils.fastFloor(p.z())); + CONTEXT_FUNCTIONS.put(PlayerParameters.NAME, Player::name); + CONTEXT_FUNCTIONS.put(PlayerParameters.UUID, Player::uuid); + } + + private final Player player; + + public PlayerParameterGetter(@NotNull Player player) { + this.player = Objects.requireNonNull(player); + } + + @SuppressWarnings("unchecked") + @Override + public Optional getOptionalParameter(ContextKey parameter) { + return (Optional) Optional.ofNullable(CONTEXT_FUNCTIONS.get(parameter)).map(f -> f.apply(this.player)); + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/context/PlayerParameters.java b/core/src/main/java/net/momirealms/craftengine/core/util/context/PlayerParameters.java new file mode 100644 index 000000000..469e5a6c6 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/context/PlayerParameters.java @@ -0,0 +1,18 @@ +package net.momirealms.craftengine.core.util.context; + +import net.momirealms.craftengine.core.util.Key; + +import java.util.UUID; + +public final class PlayerParameters { + private PlayerParameters() {} + + public static final ContextKey X = new ContextKey<>(Key.of("craftengine:player.x")); + public static final ContextKey Y = new ContextKey<>(Key.of("craftengine:player.y")); + public static final ContextKey Z = new ContextKey<>(Key.of("craftengine:player.z")); + public static final ContextKey BLOCK_X = new ContextKey<>(Key.of("craftengine:player.block_x")); + public static final ContextKey BLOCK_Y = new ContextKey<>(Key.of("craftengine:player.block_y")); + public static final ContextKey BLOCK_Z = new ContextKey<>(Key.of("craftengine:player.block_z")); + public static final ContextKey NAME = new ContextKey<>(Key.of("craftengine:player.name")); + public static final ContextKey UUID = new ContextKey<>(Key.of("craftengine:player.uuid")); +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/world/WorldBlock.java b/core/src/main/java/net/momirealms/craftengine/core/world/BlockInWorld.java similarity index 81% rename from core/src/main/java/net/momirealms/craftengine/core/world/WorldBlock.java rename to core/src/main/java/net/momirealms/craftengine/core/world/BlockInWorld.java index 4da8df826..192d2c984 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/world/WorldBlock.java +++ b/core/src/main/java/net/momirealms/craftengine/core/world/BlockInWorld.java @@ -2,7 +2,7 @@ package net.momirealms.craftengine.core.world; import net.momirealms.craftengine.core.item.context.BlockPlaceContext; -public interface WorldBlock { +public interface BlockInWorld { default boolean canBeReplaced(BlockPlaceContext blockPlaceContext) { return false; @@ -11,4 +11,10 @@ public interface WorldBlock { default boolean isWaterSource(BlockPlaceContext blockPlaceContext) { return false; } + + int x(); + + int y(); + + int z(); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/world/World.java b/core/src/main/java/net/momirealms/craftengine/core/world/World.java index 36979368c..5817a5e1f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/world/World.java +++ b/core/src/main/java/net/momirealms/craftengine/core/world/World.java @@ -15,9 +15,9 @@ public interface World { WorldHeight worldHeight(); - WorldBlock getBlockAt(int x, int y, int z); + BlockInWorld getBlockAt(int x, int y, int z); - default WorldBlock getBlockAt(final BlockPos pos) { + default BlockInWorld getBlockAt(final BlockPos pos) { return getBlockAt(pos.x(), pos.y(), pos.z()); }