9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-27 02:49:15 +00:00

将方块行为id转至各个实现内

This commit is contained in:
XiaoMoMi
2025-12-26 20:17:23 +08:00
parent 4420e4ceae
commit b51ee588a8
123 changed files with 756 additions and 910 deletions

View File

@@ -6,9 +6,7 @@ import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine;
import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
import net.momirealms.craftengine.bukkit.world.BukkitExistingBlock;
import net.momirealms.craftengine.bukkit.world.BukkitWorld;
import net.momirealms.craftengine.bukkit.world.BukkitWorldManager;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.world.CEWorld;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.entity.Entity;

View File

@@ -6,7 +6,6 @@ import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine;
import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.bukkit.world.BukkitWorld;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.UpdateOption;

View File

@@ -10,7 +10,6 @@ import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MBlocks;
import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
import net.momirealms.craftengine.bukkit.util.*;
import net.momirealms.craftengine.bukkit.world.BukkitExistingBlock;
import net.momirealms.craftengine.bukkit.world.BukkitWorld;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.entity.player.InteractionHand;
import net.momirealms.craftengine.core.item.CustomItem;

View File

@@ -5,7 +5,6 @@ import net.momirealms.craftengine.bukkit.nms.FastNMS;
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MBlocks;
import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.bukkit.world.BukkitWorld;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.world.Vec3d;

View File

@@ -22,7 +22,8 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class AttachedStemBlockBehavior extends BukkitBlockBehavior implements IsPathFindableBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:attached_stem_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final Property<HorizontalDirection> facingProperty;
private final Key fruit;
private final Key stem;
@@ -85,7 +86,7 @@ public class AttachedStemBlockBehavior extends BukkitBlockBehavior implements Is
return null;
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {

View File

@@ -9,6 +9,7 @@ import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.behavior.FallOnBlockBehavior;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.util.VersionHelper;
import net.momirealms.craftengine.core.world.Vec3d;
@@ -18,7 +19,8 @@ import java.util.Map;
import java.util.concurrent.Callable;
public class BouncingBlockBehavior extends BukkitBlockBehavior implements FallOnBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:bouncing_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final double bounceHeight;
private final boolean syncPlayerPosition;
private final double fallDamageMultiplier;
@@ -77,7 +79,7 @@ public class BouncingBlockBehavior extends BukkitBlockBehavior implements FallOn
}
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {

View File

@@ -19,7 +19,8 @@ import java.util.Map;
import java.util.concurrent.Callable;
public class BuddingBlockBehavior extends BukkitBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:budding_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final float growthChance;
private final List<Key> blocks;
@@ -86,7 +87,7 @@ public class BuddingBlockBehavior extends BukkitBlockBehavior {
&& FastNMS.INSTANCE.field$FluidState$amount(FastNMS.INSTANCE.field$BlockBehaviour$BlockStateBase$fluidState(state)) == 8;
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {

View File

@@ -22,7 +22,7 @@ import java.util.Optional;
import java.util.concurrent.Callable;
import java.util.function.BiConsumer;
public class BukkitBlockBehavior extends AbstractBlockBehavior {
public abstract class BukkitBlockBehavior extends AbstractBlockBehavior {
private static final Map<String, BiConsumer<@NotNull BukkitBlockBehavior, Property<?>>> HARD_CODED_PROPERTY_DATA = new HashMap<>();
static {
HARD_CODED_PROPERTY_DATA.put("axis", (behavior, property) -> {

View File

@@ -1,102 +1,58 @@
package net.momirealms.craftengine.bukkit.block.behavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorType;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviors;
import net.momirealms.craftengine.core.block.behavior.EmptyBlockBehavior;
import net.momirealms.craftengine.core.util.Key;
public class BukkitBlockBehaviors extends BlockBehaviors {
public static final Key BUSH_BLOCK = Key.from("craftengine:bush_block");
public static final Key HANGING_BLOCK = Key.from("craftengine:hanging_block");
public static final Key FALLING_BLOCK = Key.from("craftengine:falling_block");
public static final Key LEAVES_BLOCK = Key.from("craftengine:leaves_block");
public static final Key STRIPPABLE_BLOCK = Key.from("craftengine:strippable_block");
public static final Key SAPLING_BLOCK = Key.from("craftengine:sapling_block");
public static final Key ON_LIQUID_BLOCK = Key.from("craftengine:on_liquid_block");
public static final Key NEAR_LIQUID_BLOCK = Key.from("craftengine:near_liquid_block");
public static final Key CONCRETE_POWDER_BLOCK = Key.from("craftengine:concrete_powder_block");
public static final Key VERTICAL_CROP_BLOCK = Key.from("craftengine:vertical_crop_block");
public static final Key CROP_BLOCK = Key.from("craftengine:crop_block");
public static final Key GRASS_BLOCK = Key.from("craftengine:grass_block");
public static final Key LAMP_BLOCK = Key.from("craftengine:lamp_block");
public static final Key TRAPDOOR_BLOCK = Key.from("craftengine:trapdoor_block");
public static final Key DOOR_BLOCK = Key.from("craftengine:door_block");
public static final Key STACKABLE_BLOCK = Key.from("craftengine:stackable_block");
public static final Key STURDY_BASE_BLOCK = Key.from("craftengine:sturdy_base_block");
public static final Key FENCE_GATE_BLOCK = Key.from("craftengine:fence_gate_block");
public static final Key SLAB_BLOCK = Key.from("craftengine:slab_block");
public static final Key STAIRS_BLOCK = Key.from("craftengine:stairs_block");
public static final Key PRESSURE_PLATE_BLOCK = Key.from("craftengine:pressure_plate_block");
public static final Key DOUBLE_HIGH_BLOCK = Key.from("craftengine:double_high_block");
public static final Key CHANGE_OVER_TIME_BLOCK = Key.from("craftengine:change_over_time_block");
public static final Key SIMPLE_STORAGE_BLOCK = Key.from("craftengine:simple_storage_block");
public static final Key TOGGLEABLE_LAMP_BLOCK = Key.from("craftengine:toggleable_lamp_block");
public static final Key SOFA_BLOCK = Key.from("craftengine:sofa_block");
public static final Key BOUNCING_BLOCK = Key.from("craftengine:bouncing_block");
public static final Key DIRECTIONAL_ATTACHED_BLOCK = Key.from("craftengine:directional_attached_block");
public static final Key LIQUID_FLOWABLE_BLOCK = Key.from("craftengine:liquid_flowable_block");
public static final Key SIMPLE_PARTICLE_BLOCK = Key.from("craftengine:simple_particle_block");
public static final Key WALL_TORCH_PARTICLE_BLOCK = Key.from("craftengine:wall_torch_particle_block");
public static final Key FENCE_BLOCK = Key.from("craftengine:fence_block");
public static final Key BUTTON_BLOCK = Key.from("craftengine:button_block");
public static final Key FACE_ATTACHED_HORIZONTAL_DIRECTIONAL_BLOCK = Key.from("craftengine:face_attached_horizontal_directional_block");
public static final Key STEM_BLOCK = Key.from("craftengine:stem_block");
public static final Key ATTACHED_STEM_BLOCK = Key.from("craftengine:attached_stem_block");
public static final Key CHIME_BLOCK = Key.from("craftengine:chime_block");
public static final Key BUDDING_BLOCK = Key.from("craftengine:budding_block");
public static final Key SEAT_BLOCK = Key.from("craftengine:seat_block");
public static final Key SURFACE_SPREADING_BLOCK = Key.from("craftengine:surface_spreading_block");
public static final Key SNOWY_BLOCK = Key.from("craftengine:snowy_block");
public static final Key HANGABLE_BLOCK = Key.from("craftengine:hangable_block");
public static final Key DROP_EXPERIENCE_BLOCK = Key.from("craftengine:drop_experience_block");
public static final Key DROP_EXP_BLOCK = Key.from("craftengine:drop_exp_block");
public static final Key MULTI_HIGH_BLOCK = Key.from("craftengine:multi_high_block");
private BukkitBlockBehaviors() {}
public static final BlockBehaviorType BUSH_BLOCK = register(BushBlockBehavior.ID, BushBlockBehavior.FACTORY);
public static final BlockBehaviorType HANGING_BLOCK = register(HangingBlockBehavior.ID, HangingBlockBehavior.FACTORY);
public static final BlockBehaviorType FALLING_BLOCK = register(FallingBlockBehavior.ID, FallingBlockBehavior.FACTORY);
public static final BlockBehaviorType LEAVES_BLOCK = register(LeavesBlockBehavior.ID, LeavesBlockBehavior.FACTORY);
public static final BlockBehaviorType STRIPPABLE_BLOCK = register(StrippableBlockBehavior.ID, StrippableBlockBehavior.FACTORY);
public static final BlockBehaviorType SAPLING_BLOCK = register(SaplingBlockBehavior.ID, SaplingBlockBehavior.FACTORY);
public static final BlockBehaviorType ON_LIQUID_BLOCK = register(OnLiquidBlockBehavior.ID, OnLiquidBlockBehavior.FACTORY);
public static final BlockBehaviorType NEAR_LIQUID_BLOCK = register(NearLiquidBlockBehavior.ID, NearLiquidBlockBehavior.FACTORY);
public static final BlockBehaviorType CONCRETE_POWDER_BLOCK = register(ConcretePowderBlockBehavior.ID, ConcretePowderBlockBehavior.FACTORY);
public static final BlockBehaviorType VERTICAL_CROP_BLOCK = register(VerticalCropBlockBehavior.ID, VerticalCropBlockBehavior.FACTORY);
public static final BlockBehaviorType CROP_BLOCK = register(CropBlockBehavior.ID, CropBlockBehavior.FACTORY);
public static final BlockBehaviorType GRASS_BLOCK = register(GrassBlockBehavior.ID, GrassBlockBehavior.FACTORY);
public static final BlockBehaviorType LAMP_BLOCK = register(LampBlockBehavior.ID, LampBlockBehavior.FACTORY);
public static final BlockBehaviorType TRAPDOOR_BLOCK = register(TrapDoorBlockBehavior.ID, TrapDoorBlockBehavior.FACTORY);
public static final BlockBehaviorType DOOR_BLOCK = register(DoorBlockBehavior.ID, DoorBlockBehavior.FACTORY);
public static final BlockBehaviorType STACKABLE_BLOCK = register(StairsBlockBehavior.ID, StackableBlockBehavior.FACTORY);
public static final BlockBehaviorType STURDY_BASE_BLOCK = register(StairsBlockBehavior.ID, SturdyBaseBlockBehavior.FACTORY);
public static final BlockBehaviorType FENCE_GATE_BLOCK = register(FenceGateBlockBehavior.ID, FenceGateBlockBehavior.FACTORY);
public static final BlockBehaviorType SLAB_BLOCK = register(SlabBlockBehavior.ID, SlabBlockBehavior.FACTORY);
public static final BlockBehaviorType STAIRS_BLOCK = register(StairsBlockBehavior.ID, StairsBlockBehavior.FACTORY);
public static final BlockBehaviorType PRESSURE_PLATE_BLOCK = register(PressurePlateBlockBehavior.ID, PressurePlateBlockBehavior.FACTORY);
public static final BlockBehaviorType DOUBLE_HIGH_BLOCK = register(DoubleHighBlockBehavior.ID, DoubleHighBlockBehavior.FACTORY);
public static final BlockBehaviorType CHANGE_OVER_TIME_BLOCK = register(ChangeOverTimeBlockBehavior.ID, ChangeOverTimeBlockBehavior.FACTORY);
public static final BlockBehaviorType SIMPLE_STORAGE_BLOCK = register(SimpleParticleBlockBehavior.ID, SimpleStorageBlockBehavior.FACTORY);
public static final BlockBehaviorType TOGGLEABLE_LAMP_BLOCK = register(ToggleableLampBlockBehavior.ID, ToggleableLampBlockBehavior.FACTORY);
public static final BlockBehaviorType SOFA_BLOCK = register(SofaBlockBehavior.ID, SofaBlockBehavior.FACTORY);
public static final BlockBehaviorType BOUNCING_BLOCK = register(BouncingBlockBehavior.ID, BouncingBlockBehavior.FACTORY);
public static final BlockBehaviorType DIRECTIONAL_ATTACHED_BLOCK = register(DirectionalAttachedBlockBehavior.ID, DirectionalAttachedBlockBehavior.FACTORY);
public static final BlockBehaviorType LIQUID_FLOWABLE_BLOCK = register(LiquidFlowableBlockBehavior.ID, LiquidFlowableBlockBehavior.FACTORY);
public static final BlockBehaviorType SIMPLE_PARTICLE_BLOCK = register(SimpleParticleBlockBehavior.ID, SimpleParticleBlockBehavior.FACTORY);
public static final BlockBehaviorType WALL_TORCH_PARTICLE_BLOCK = register(WallTorchParticleBlockBehavior.ID, WallTorchParticleBlockBehavior.FACTORY);
public static final BlockBehaviorType FENCE_BLOCK = register(FenceBlockBehavior.ID, FenceBlockBehavior.FACTORY);
public static final BlockBehaviorType BUTTON_BLOCK = register(ButtonBlockBehavior.ID, ButtonBlockBehavior.FACTORY);
public static final BlockBehaviorType FACE_ATTACHED_HORIZONTAL_DIRECTIONAL_BLOCK = register(FaceAttachedHorizontalDirectionalBlockBehavior.ID, FaceAttachedHorizontalDirectionalBlockBehavior.FACTORY);
public static final BlockBehaviorType STEM_BLOCK = register(StemBlockBehavior.ID, StemBlockBehavior.FACTORY);
public static final BlockBehaviorType ATTACHED_STEM_BLOCK = register(AttachedStemBlockBehavior.ID, AttachedStemBlockBehavior.FACTORY);
public static final BlockBehaviorType CHIME_BLOCK = register(ChimeBlockBehavior.ID, ChimeBlockBehavior.FACTORY);
public static final BlockBehaviorType BUDDING_BLOCK = register(BuddingBlockBehavior.ID, BuddingBlockBehavior.FACTORY);
public static final BlockBehaviorType SEAT_BLOCK = register(SeatBlockBehavior.ID, SeatBlockBehavior.FACTORY);
public static final BlockBehaviorType SURFACE_SPREADING_BLOCK = register(SurfaceSpreadingBlockBehavior.ID, SurfaceSpreadingBlockBehavior.FACTORY);
public static final BlockBehaviorType SNOWY_BLOCK = register(SnowyBlockBehavior.ID, SnowyBlockBehavior.FACTORY);
public static final BlockBehaviorType HANGABLE_BLOCK = register(HangableBlockBehavior.ID, HangableBlockBehavior.FACTORY);
public static final BlockBehaviorType DROP_EXPERIENCE_BLOCK = register(DropExperienceBlockBehavior.ID, DropExperienceBlockBehavior.FACTORY);
public static final BlockBehaviorType DROP_EXP_BLOCK = register(Key.from("craftengine:drop_exp_block"), DropExperienceBlockBehavior.FACTORY);
public static final BlockBehaviorType MULTI_HIGH_BLOCK = register(MultiHighBlockBehavior.ID, MultiHighBlockBehavior.FACTORY);
public static void init() {
register(EMPTY, (block, args) -> EmptyBlockBehavior.INSTANCE);
register(FALLING_BLOCK, FallingBlockBehavior.FACTORY);
register(BUSH_BLOCK, BushBlockBehavior.FACTORY);
register(HANGING_BLOCK, HangingBlockBehavior.FACTORY);
register(LEAVES_BLOCK, LeavesBlockBehavior.FACTORY);
register(STRIPPABLE_BLOCK, StrippableBlockBehavior.FACTORY);
register(SAPLING_BLOCK, SaplingBlockBehavior.FACTORY);
register(ON_LIQUID_BLOCK, OnLiquidBlockBehavior.FACTORY);
register(NEAR_LIQUID_BLOCK, NearLiquidBlockBehavior.FACTORY);
register(CONCRETE_POWDER_BLOCK, ConcretePowderBlockBehavior.FACTORY);
register(VERTICAL_CROP_BLOCK, VerticalCropBlockBehavior.FACTORY);
register(CROP_BLOCK, CropBlockBehavior.FACTORY);
register(GRASS_BLOCK, GrassBlockBehavior.FACTORY);
register(LAMP_BLOCK, LampBlockBehavior.FACTORY);
register(TRAPDOOR_BLOCK, TrapDoorBlockBehavior.FACTORY);
register(DOOR_BLOCK, DoorBlockBehavior.FACTORY);
register(STACKABLE_BLOCK, StackableBlockBehavior.FACTORY);
register(STURDY_BASE_BLOCK, SturdyBaseBlockBehavior.FACTORY);
register(FENCE_GATE_BLOCK, FenceGateBlockBehavior.FACTORY);
register(SLAB_BLOCK, SlabBlockBehavior.FACTORY);
register(STAIRS_BLOCK, StairsBlockBehavior.FACTORY);
register(PRESSURE_PLATE_BLOCK, PressurePlateBlockBehavior.FACTORY);
register(DOUBLE_HIGH_BLOCK, DoubleHighBlockBehavior.FACTORY);
register(CHANGE_OVER_TIME_BLOCK, ChangeOverTimeBlockBehavior.FACTORY);
register(SIMPLE_STORAGE_BLOCK, SimpleStorageBlockBehavior.FACTORY);
register(TOGGLEABLE_LAMP_BLOCK, ToggleableLampBlockBehavior.FACTORY);
register(SOFA_BLOCK, SofaBlockBehavior.FACTORY);
register(BOUNCING_BLOCK, BouncingBlockBehavior.FACTORY);
register(DIRECTIONAL_ATTACHED_BLOCK, DirectionalAttachedBlockBehavior.FACTORY);
register(LIQUID_FLOWABLE_BLOCK, LiquidFlowableBlockBehavior.FACTORY);
register(SIMPLE_PARTICLE_BLOCK, SimpleParticleBlockBehavior.FACTORY);
register(WALL_TORCH_PARTICLE_BLOCK, WallTorchParticleBlockBehavior.FACTORY);
register(FENCE_BLOCK, FenceBlockBehavior.FACTORY);
register(BUTTON_BLOCK, ButtonBlockBehavior.FACTORY);
register(FACE_ATTACHED_HORIZONTAL_DIRECTIONAL_BLOCK, FaceAttachedHorizontalDirectionalBlockBehavior.FACTORY);
register(STEM_BLOCK, StemBlockBehavior.FACTORY);
register(ATTACHED_STEM_BLOCK, AttachedStemBlockBehavior.FACTORY);
register(CHIME_BLOCK, ChimeBlockBehavior.FACTORY);
register(BUDDING_BLOCK, BuddingBlockBehavior.FACTORY);
register(SEAT_BLOCK, SeatBlockBehavior.FACTORY);
register(SURFACE_SPREADING_BLOCK, SurfaceSpreadingBlockBehavior.FACTORY);
register(SNOWY_BLOCK, SnowyBlockBehavior.FACTORY);
register(HANGABLE_BLOCK, HangableBlockBehavior.FACTORY);
register(DROP_EXPERIENCE_BLOCK, DropExperienceBlockBehavior.FACTORY);
register(DROP_EXP_BLOCK, DropExperienceBlockBehavior.FACTORY);
register(MULTI_HIGH_BLOCK, MultiHighBlockBehavior.FACTORY);
}
}

View File

@@ -20,7 +20,8 @@ import org.bukkit.Registry;
import java.util.*;
public class BushBlockBehavior extends AbstractCanSurviveBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:bush_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
protected final List<Object> tagsCanSurviveOn;
protected final Set<Object> blockStatesCanSurviveOn;
protected final Set<String> customBlocksCansSurviveOn;
@@ -28,7 +29,8 @@ public class BushBlockBehavior extends AbstractCanSurviveBlockBehavior {
protected final boolean stackable;
protected final int maxHeight;
public BushBlockBehavior(CustomBlock block, int delay, boolean blacklist, boolean stackable, int maxHeight, List<Object> tagsCanSurviveOn, Set<Object> blockStatesCanSurviveOn, Set<String> customBlocksCansSurviveOn) {
public BushBlockBehavior(CustomBlock block, int delay, boolean blacklist, boolean stackable, int maxHeight,
List<Object> tagsCanSurviveOn, Set<Object> blockStatesCanSurviveOn, Set<String> customBlocksCansSurviveOn) {
super(block, delay);
this.blacklistMode = blacklist;
this.stackable = stackable;
@@ -38,7 +40,7 @@ public class BushBlockBehavior extends AbstractCanSurviveBlockBehavior {
this.customBlocksCansSurviveOn = customBlocksCansSurviveOn;
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {

View File

@@ -18,10 +18,7 @@ import net.momirealms.craftengine.core.block.properties.Property;
import net.momirealms.craftengine.core.entity.player.InteractionResult;
import net.momirealms.craftengine.core.item.context.UseOnContext;
import net.momirealms.craftengine.core.sound.SoundData;
import net.momirealms.craftengine.core.util.Direction;
import net.momirealms.craftengine.core.util.HorizontalDirection;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.util.VersionHelper;
import net.momirealms.craftengine.core.util.*;
import javax.annotation.Nullable;
import java.util.Map;
@@ -29,7 +26,8 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class ButtonBlockBehavior extends BukkitBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:button_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final BooleanProperty poweredProperty;
private final int ticksToStayPressed;
private final boolean canButtonBeActivatedByArrows;
@@ -197,7 +195,7 @@ public class ButtonBlockBehavior extends BukkitBlockBehavior {
FastNMS.INSTANCE.method$LevelAccessor$gameEvent(level, player, gameEvent, pos);
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@SuppressWarnings({"unchecked", "DuplicatedCode"})
@Override

View File

@@ -8,10 +8,7 @@ import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.UpdateOption;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.util.LazyReference;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.RandomUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.util.*;
import net.momirealms.sparrow.nbt.CompoundTag;
import java.util.List;
@@ -19,7 +16,8 @@ import java.util.Map;
import java.util.concurrent.Callable;
public class ChangeOverTimeBlockBehavior extends BukkitBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:change_over_time_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final float changeSpeed;
private final String nextBlock;
private final LazyReference<BlockStateWrapper> lazyState;
@@ -64,7 +62,7 @@ public class ChangeOverTimeBlockBehavior extends BukkitBlockBehavior {
});
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {

View File

@@ -7,6 +7,7 @@ import net.momirealms.craftengine.core.block.BlockBehavior;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.sound.SoundData;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import java.util.Map;
@@ -14,7 +15,8 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class ChimeBlockBehavior extends BukkitBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:chime_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final SoundData hitSound;
public ChimeBlockBehavior(CustomBlock customBlock, SoundData hitSound) {
@@ -29,7 +31,7 @@ public class ChimeBlockBehavior extends BukkitBlockBehavior {
FastNMS.INSTANCE.method$LevelAccessor$playSound(args[0], null, blockPos, sound, CoreReflections.instance$SoundSource$BLOCKS, hitSound.volume().get(), hitSound.pitch().get());
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {

View File

@@ -17,6 +17,7 @@ import net.momirealms.craftengine.core.block.parser.BlockStateParser;
import net.momirealms.craftengine.core.item.context.BlockPlaceContext;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.util.Direction;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.LazyReference;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import org.bukkit.block.BlockState;
@@ -27,7 +28,8 @@ import java.util.Map;
import java.util.concurrent.Callable;
public class ConcretePowderBlockBehavior extends BukkitBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:concrete_powder_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final LazyReference<@Nullable ImmutableBlockState> targetBlock;
public ConcretePowderBlockBehavior(CustomBlock block, String targetBlock) {
@@ -125,7 +127,7 @@ public class ConcretePowderBlockBehavior extends BukkitBlockBehavior {
return flag;
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {

View File

@@ -6,7 +6,6 @@ import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflect
import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.bukkit.util.ParticleUtils;
import net.momirealms.craftengine.bukkit.world.BukkitWorld;
import net.momirealms.craftengine.core.block.BlockBehavior;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
@@ -25,6 +24,7 @@ import net.momirealms.craftengine.core.plugin.context.number.NumberProvider;
import net.momirealms.craftengine.core.plugin.context.number.NumberProviders;
import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters;
import net.momirealms.craftengine.core.util.ItemUtils;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.RandomUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.world.Vec3d;
@@ -39,7 +39,8 @@ import java.util.concurrent.Callable;
@SuppressWarnings("DuplicatedCode")
public class CropBlockBehavior extends BukkitBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:crop_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final IntegerProperty ageProperty;
private final float growSpeed;
private final int minGrowLight;
@@ -189,7 +190,7 @@ public class CropBlockBehavior extends BukkitBlockBehavior {
}
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@SuppressWarnings("unchecked")
@Override

View File

@@ -26,7 +26,8 @@ import java.util.*;
import java.util.concurrent.Callable;
public class DirectionalAttachedBlockBehavior extends BukkitBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:directional_attached_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final Property<?> facingProperty;
private final boolean isSixDirection;
private final List<Object> tagsCanSurviveOn;
@@ -132,7 +133,7 @@ public class DirectionalAttachedBlockBehavior extends BukkitBlockBehavior {
return null;
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {

View File

@@ -10,7 +10,6 @@ import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
import net.momirealms.craftengine.bukkit.util.DirectionUtils;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.bukkit.world.BukkitWorld;
import net.momirealms.craftengine.core.block.BlockBehavior;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
@@ -27,10 +26,7 @@ import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.context.BlockPlaceContext;
import net.momirealms.craftengine.core.item.context.UseOnContext;
import net.momirealms.craftengine.core.sound.SoundData;
import net.momirealms.craftengine.core.util.Direction;
import net.momirealms.craftengine.core.util.HorizontalDirection;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.util.VersionHelper;
import net.momirealms.craftengine.core.util.*;
import net.momirealms.craftengine.core.world.*;
import org.bukkit.Bukkit;
import org.bukkit.GameEvent;
@@ -49,7 +45,8 @@ import java.util.concurrent.Callable;
@SuppressWarnings("DuplicatedCode")
public class DoorBlockBehavior extends AbstractCanSurviveBlockBehavior implements IsPathFindableBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:door_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final Property<DoubleBlockHalf> halfProperty;
private final Property<HorizontalDirection> facingProperty;
private final Property<DoorHinge> hingeProperty;
@@ -345,7 +342,7 @@ public class DoorBlockBehavior extends AbstractCanSurviveBlockBehavior implement
}
@SuppressWarnings("unchecked")
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
Property<DoubleBlockHalf> half = (Property<DoubleBlockHalf>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("half"), "warning.config.block.behavior.door.missing_half");

View File

@@ -8,7 +8,6 @@ import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
import net.momirealms.craftengine.bukkit.util.DirectionUtils;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.bukkit.world.BukkitWorld;
import net.momirealms.craftengine.core.block.BlockBehavior;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
@@ -19,6 +18,7 @@ import net.momirealms.craftengine.core.block.properties.type.DoubleBlockHalf;
import net.momirealms.craftengine.core.entity.player.InteractionHand;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.context.BlockPlaceContext;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.world.*;
import org.bukkit.inventory.ItemStack;
@@ -28,7 +28,8 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class DoubleHighBlockBehavior extends AbstractCanSurviveBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:double_high_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final Property<DoubleBlockHalf> halfProperty;
public DoubleHighBlockBehavior(CustomBlock customBlock, Property<DoubleBlockHalf> halfProperty) {
@@ -141,7 +142,7 @@ public class DoubleHighBlockBehavior extends AbstractCanSurviveBlockBehavior {
}
@SuppressWarnings("unchecked")
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {

View File

@@ -19,6 +19,7 @@ import net.momirealms.craftengine.core.plugin.context.event.EventConditions;
import net.momirealms.craftengine.core.plugin.context.number.NumberProvider;
import net.momirealms.craftengine.core.plugin.context.number.NumberProviders;
import net.momirealms.craftengine.core.plugin.context.parameter.DirectContextParameters;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.world.BlockPos;
@@ -33,7 +34,8 @@ import java.util.concurrent.Callable;
import java.util.function.Predicate;
public class DropExperienceBlockBehavior extends BukkitBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:drop_experience_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final NumberProvider amount;
private final Predicate<Context> condition;
@@ -87,7 +89,7 @@ public class DropExperienceBlockBehavior extends BukkitBlockBehavior {
world.dropExp(dropPos, finalAmount);
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {

View File

@@ -13,10 +13,7 @@ import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.Property;
import net.momirealms.craftengine.core.block.properties.type.AnchorType;
import net.momirealms.craftengine.core.item.context.BlockPlaceContext;
import net.momirealms.craftengine.core.util.Direction;
import net.momirealms.craftengine.core.util.HorizontalDirection;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.util.Tuple;
import net.momirealms.craftengine.core.util.*;
import org.jetbrains.annotations.Nullable;
import java.util.List;
@@ -26,7 +23,8 @@ import java.util.Set;
import java.util.concurrent.Callable;
public class FaceAttachedHorizontalDirectionalBlockBehavior extends BukkitBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:face_attached_horizontal_directional_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final Property<AnchorType> anchorTypeProperty;
private final Property<HorizontalDirection> facingProperty;
private final List<Object> tagsCanSurviveOn;
@@ -135,7 +133,7 @@ public class FaceAttachedHorizontalDirectionalBlockBehavior extends BukkitBlockB
};
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@SuppressWarnings("unchecked")
@Override

View File

@@ -8,12 +8,12 @@ import net.momirealms.craftengine.bukkit.nms.FastNMS;
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections;
import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.bukkit.world.BukkitWorld;
import net.momirealms.craftengine.core.block.BlockBehavior;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.sound.SoundData;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.world.Vec3d;
import net.momirealms.craftengine.core.world.WorldPosition;
@@ -23,7 +23,8 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class FallingBlockBehavior extends BukkitBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:falling_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final float hurtAmount;
private final int maxHurt;
private final SoundData landSound;
@@ -113,7 +114,7 @@ public class FallingBlockBehavior extends BukkitBlockBehavior {
}
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@SuppressWarnings("unchecked")
@Override

View File

@@ -32,7 +32,8 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class FenceBlockBehavior extends BukkitBlockBehavior implements IsPathFindableBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:fence_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final BooleanProperty northProperty;
private final BooleanProperty eastProperty;
private final BooleanProperty southProperty;
@@ -137,7 +138,7 @@ public class FenceBlockBehavior extends BukkitBlockBehavior implements IsPathFin
return superMethod.call();
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {

View File

@@ -10,7 +10,6 @@ import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
import net.momirealms.craftengine.bukkit.util.DirectionUtils;
import net.momirealms.craftengine.bukkit.util.InteractUtils;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.bukkit.world.BukkitWorld;
import net.momirealms.craftengine.core.block.*;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.behavior.IsPathFindableBlockBehavior;
@@ -22,10 +21,7 @@ import net.momirealms.craftengine.core.item.ItemKeys;
import net.momirealms.craftengine.core.item.context.BlockPlaceContext;
import net.momirealms.craftengine.core.item.context.UseOnContext;
import net.momirealms.craftengine.core.sound.SoundData;
import net.momirealms.craftengine.core.util.Direction;
import net.momirealms.craftengine.core.util.HorizontalDirection;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.util.VersionHelper;
import net.momirealms.craftengine.core.util.*;
import net.momirealms.craftengine.core.world.BlockPos;
import net.momirealms.craftengine.core.world.Vec3d;
import net.momirealms.craftengine.core.world.World;
@@ -43,7 +39,8 @@ import java.util.concurrent.Callable;
@SuppressWarnings("DuplicatedCode")
public class FenceGateBlockBehavior extends BukkitBlockBehavior implements IsPathFindableBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:sturdy_base_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final Property<HorizontalDirection> facingProperty;
private final Property<Boolean> inWallProperty;
private final Property<Boolean> openProperty;
@@ -278,7 +275,7 @@ public class FenceGateBlockBehavior extends BukkitBlockBehavior implements IsPat
return facing != null && facing.axis() == direction.toDirection().clockWise().axis();
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
@SuppressWarnings("unchecked")

View File

@@ -29,7 +29,8 @@ import java.util.Optional;
@SuppressWarnings("DuplicatedCode")
public class GrassBlockBehavior extends BukkitBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:grass_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final Key feature;
public GrassBlockBehavior(CustomBlock block, Key feature) {
@@ -155,7 +156,7 @@ public class GrassBlockBehavior extends BukkitBlockBehavior {
}
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
String feature = ResourceConfigUtils.requireNonEmptyStringOrThrow(ResourceConfigUtils.get(arguments, "feature", "placed-feature"), "warning.config.block.behavior.grass.missing_feature");

View File

@@ -14,14 +14,17 @@ import net.momirealms.craftengine.core.block.behavior.IsPathFindableBlockBehavio
import net.momirealms.craftengine.core.block.properties.BooleanProperty;
import net.momirealms.craftengine.core.item.context.BlockPlaceContext;
import net.momirealms.craftengine.core.util.Direction;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import org.jetbrains.annotations.Nullable;
import java.util.Map;
import java.util.concurrent.Callable;
// todo 修改
public class HangableBlockBehavior extends BukkitBlockBehavior implements IsPathFindableBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:hangable_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final BooleanProperty hanging;
public HangableBlockBehavior(CustomBlock customBlock, BooleanProperty hanging) {
@@ -82,7 +85,7 @@ public class HangableBlockBehavior extends BukkitBlockBehavior implements IsPath
return false;
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {

View File

@@ -5,6 +5,7 @@ import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.block.BlockBehavior;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.util.Tuple;
@@ -13,7 +14,8 @@ import java.util.Map;
import java.util.Set;
public class HangingBlockBehavior extends BushBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:hanging_block");
public HangingBlockBehavior(CustomBlock block, int delay, boolean blacklist, boolean stackable, List<Object> tagsCanSurviveOn, Set<Object> blocksCansSurviveOn, Set<String> customBlocksCansSurviveOn) {
super(block, delay, blacklist, stackable, -1, tagsCanSurviveOn, blocksCansSurviveOn, customBlocksCansSurviveOn);
@@ -26,7 +28,7 @@ public class HangingBlockBehavior extends BushBlockBehavior {
return mayPlaceOn(belowState, world, belowPos);
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {

View File

@@ -9,6 +9,7 @@ import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.Property;
import net.momirealms.craftengine.core.item.context.BlockPlaceContext;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import java.util.Map;
@@ -17,7 +18,8 @@ import java.util.concurrent.Callable;
@SuppressWarnings("DuplicatedCode")
public class LampBlockBehavior extends BukkitBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:lamp_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final Property<Boolean> litProperty;
public LampBlockBehavior(CustomBlock block, Property<Boolean> litProperty) {
@@ -70,7 +72,7 @@ public class LampBlockBehavior extends BukkitBlockBehavior {
}
@SuppressWarnings("unchecked")
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
Property<Boolean> lit = (Property<Boolean>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("lit"), "warning.config.block.behavior.lamp.missing_lit");

View File

@@ -24,7 +24,8 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class LeavesBlockBehavior extends BukkitBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:leaves_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private static final Object LOG_TAG = BlockTags.getOrCreate(Key.of("minecraft", "logs"));
private final int maxDistance;
private final Property<Integer> distanceProperty;
@@ -160,7 +161,8 @@ public class LeavesBlockBehavior extends BukkitBlockBehavior {
}
@SuppressWarnings("unchecked")
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
Property<Boolean> persistent = (Property<Boolean>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("persistent"), "warning.config.block.behavior.leaves.missing_persistent");

View File

@@ -7,13 +7,15 @@ import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.UpdateOption;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.behavior.PlaceLiquidBlockBehavior;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.world.WorldEvents;
import java.util.Map;
import java.util.concurrent.Callable;
public class LiquidFlowableBlockBehavior extends BukkitBlockBehavior implements PlaceLiquidBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:liquid_flowable_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
public LiquidFlowableBlockBehavior(CustomBlock customBlock) {
super(customBlock);
@@ -40,7 +42,8 @@ public class LiquidFlowableBlockBehavior extends BukkitBlockBehavior implements
return true;
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
return new LiquidFlowableBlockBehavior(block);

View File

@@ -19,6 +19,7 @@ import net.momirealms.craftengine.core.entity.player.InteractionHand;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.context.BlockPlaceContext;
import net.momirealms.craftengine.core.util.Direction;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.world.*;
import org.bukkit.inventory.ItemStack;
@@ -28,7 +29,8 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class MultiHighBlockBehavior extends BukkitBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:multi_high_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
public final IntegerProperty highProperty;
public MultiHighBlockBehavior(CustomBlock customBlock, IntegerProperty highProperty) {
@@ -240,7 +242,7 @@ public class MultiHighBlockBehavior extends BukkitBlockBehavior {
return state.with(property, property.min);
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {

View File

@@ -9,6 +9,7 @@ import net.momirealms.craftengine.core.block.BlockBehavior;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.world.BlockPos;
@@ -18,9 +19,10 @@ import java.util.Map;
import java.util.Optional;
public class NearLiquidBlockBehavior extends AbstractCanSurviveBlockBehavior {
public static final Key ID = Key.from("craftengine:near_liquid_block");
private static final List<Object> WATER = List.of(MFluids.WATER, MFluids.FLOWING_WATER);
private static final List<Object> LAVA = List.of(MFluids.LAVA, MFluids.FLOWING_LAVA);
public static final Factory FACTORY = new Factory();
public static final BlockBehaviorFactory FACTORY = new Factory();
private final boolean onWater;
private final boolean onLava;
private final boolean stackable;
@@ -42,7 +44,8 @@ public class NearLiquidBlockBehavior extends AbstractCanSurviveBlockBehavior {
return this.onLava;
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
List<String> liquidTypes = MiscUtils.getAsStringList(arguments.getOrDefault("liquid-type", List.of("water")));

View File

@@ -9,6 +9,7 @@ import net.momirealms.craftengine.core.block.BlockBehavior;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
@@ -17,7 +18,8 @@ import java.util.Map;
import java.util.Optional;
public class OnLiquidBlockBehavior extends AbstractCanSurviveBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:on_liquid_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final boolean onWater;
private final boolean onLava;
private final boolean stackable;
@@ -37,7 +39,7 @@ public class OnLiquidBlockBehavior extends AbstractCanSurviveBlockBehavior {
return this.onLava;
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
List<String> liquidTypes = MiscUtils.getAsStringList(arguments.getOrDefault("liquid-type", List.of("water")));

View File

@@ -16,10 +16,7 @@ import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.Property;
import net.momirealms.craftengine.core.sound.SoundData;
import net.momirealms.craftengine.core.util.Direction;
import net.momirealms.craftengine.core.util.PressurePlateSensitivity;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.util.VersionHelper;
import net.momirealms.craftengine.core.util.*;
import net.momirealms.craftengine.core.world.World;
import net.momirealms.craftengine.core.world.WorldEvents;
import org.bukkit.GameEvent;
@@ -31,7 +28,8 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class PressurePlateBlockBehavior extends BukkitBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:pressure_plate_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final Property<Boolean> poweredProperty;
private final SoundData onSound;
private final SoundData offSound;
@@ -220,7 +218,7 @@ public class PressurePlateBlockBehavior extends BukkitBlockBehavior {
return true;
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@SuppressWarnings("unchecked")
@Override

View File

@@ -34,7 +34,8 @@ import java.util.concurrent.Callable;
@SuppressWarnings("DuplicatedCode")
public class SaplingBlockBehavior extends BukkitBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:sapling_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final Key feature;
private final IntegerProperty stageProperty;
private final double boneMealSuccessChance;
@@ -169,7 +170,7 @@ public class SaplingBlockBehavior extends BukkitBlockBehavior {
return InteractionResult.SUCCESS;
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@SuppressWarnings("unchecked")
@Override

View File

@@ -15,13 +15,15 @@ import net.momirealms.craftengine.core.entity.player.InteractionResult;
import net.momirealms.craftengine.core.entity.seat.SeatConfig;
import net.momirealms.craftengine.core.item.context.UseOnContext;
import net.momirealms.craftengine.core.util.HorizontalDirection;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.world.BlockPos;
import net.momirealms.craftengine.core.world.CEWorld;
import java.util.Map;
public class SeatBlockBehavior extends BukkitBlockBehavior implements EntityBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:seat_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final Property<HorizontalDirection> directionProperty;
private final SeatConfig[] seats;
@@ -64,7 +66,7 @@ public class SeatBlockBehavior extends BukkitBlockBehavior implements EntityBloc
}
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@SuppressWarnings("unchecked")
@Override

View File

@@ -10,6 +10,7 @@ import net.momirealms.craftengine.core.block.behavior.EntityBlockBehavior;
import net.momirealms.craftengine.core.block.entity.BlockEntity;
import net.momirealms.craftengine.core.block.entity.BlockEntityType;
import net.momirealms.craftengine.core.block.entity.tick.BlockEntityTicker;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.world.BlockPos;
import net.momirealms.craftengine.core.world.CEWorld;
@@ -19,7 +20,8 @@ import java.util.List;
import java.util.Map;
public class SimpleParticleBlockBehavior extends BukkitBlockBehavior implements EntityBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:simple_particle_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
public final ParticleConfig[] particles;
public final int tickInterval;
@@ -53,7 +55,8 @@ public class SimpleParticleBlockBehavior extends BukkitBlockBehavior implements
return EntityBlockBehavior.createTickerHelper(SimpleParticleBlockEntity::tick);
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
List<ParticleConfig> particles = ResourceConfigUtils.parseConfigAsList(ResourceConfigUtils.get(arguments, "particles", "particle"), ParticleConfig::fromMap$blockEntity);

View File

@@ -21,6 +21,7 @@ import net.momirealms.craftengine.core.item.context.UseOnContext;
import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext;
import net.momirealms.craftengine.core.sound.SoundData;
import net.momirealms.craftengine.core.util.AdventureHelper;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.world.BlockPos;
@@ -38,7 +39,8 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class SimpleStorageBlockBehavior extends BukkitBlockBehavior implements EntityBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:simple_storage_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final String containerTitle;
private final int rows;
private final SoundData openSound;
@@ -198,7 +200,7 @@ public class SimpleStorageBlockBehavior extends BukkitBlockBehavior implements E
return null;
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@SuppressWarnings("unchecked")
@Override

View File

@@ -27,7 +27,8 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class SlabBlockBehavior extends BukkitBlockBehavior implements IsPathFindableBlockBehavior, CanBeReplacedBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:slab_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final Property<SlabType> typeProperty;
public SlabBlockBehavior(CustomBlock block, Property<SlabType> typeProperty) {
@@ -114,7 +115,7 @@ public class SlabBlockBehavior extends BukkitBlockBehavior implements IsPathFind
return false;
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@SuppressWarnings("unchecked")
@Override

View File

@@ -11,13 +11,15 @@ import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.BooleanProperty;
import net.momirealms.craftengine.core.item.context.BlockPlaceContext;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import java.util.Map;
import java.util.concurrent.Callable;
public class SnowyBlockBehavior extends BukkitBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:snowy_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final BooleanProperty snowyProperty;
public SnowyBlockBehavior(CustomBlock customBlock, BooleanProperty snowyProperty) {
@@ -44,7 +46,7 @@ public class SnowyBlockBehavior extends BukkitBlockBehavior {
return FastNMS.INSTANCE.method$BlockStateBase$is(state, MTagKeys.Block$SNOW);
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {

View File

@@ -12,10 +12,7 @@ import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.Property;
import net.momirealms.craftengine.core.block.properties.type.SofaShape;
import net.momirealms.craftengine.core.item.context.BlockPlaceContext;
import net.momirealms.craftengine.core.util.Direction;
import net.momirealms.craftengine.core.util.HorizontalDirection;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.util.VersionHelper;
import net.momirealms.craftengine.core.util.*;
import net.momirealms.craftengine.core.world.BlockPos;
import java.util.Map;
@@ -23,7 +20,8 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class SofaBlockBehavior extends BukkitBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:sofa_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final Property<HorizontalDirection> facingProperty;
private final Property<SofaShape> shapeProperty;
@@ -99,7 +97,7 @@ public class SofaBlockBehavior extends BukkitBlockBehavior {
return anotherState.get(anotherBehavior.facingProperty) != state.get(this.facingProperty);
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
@SuppressWarnings("unchecked")

View File

@@ -22,7 +22,8 @@ import java.util.List;
import java.util.Map;
public class StackableBlockBehavior extends BukkitBlockBehavior implements CanBeReplacedBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:stackable_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final IntegerProperty amountProperty;
private final List<Key> items;
private final String propertyName;
@@ -71,7 +72,7 @@ public class StackableBlockBehavior extends BukkitBlockBehavior implements CanBe
return blockState.cycle(property);
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {

View File

@@ -13,10 +13,7 @@ import net.momirealms.craftengine.core.block.properties.Property;
import net.momirealms.craftengine.core.block.properties.type.SingleBlockHalf;
import net.momirealms.craftengine.core.block.properties.type.StairsShape;
import net.momirealms.craftengine.core.item.context.BlockPlaceContext;
import net.momirealms.craftengine.core.util.Direction;
import net.momirealms.craftengine.core.util.HorizontalDirection;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.util.VersionHelper;
import net.momirealms.craftengine.core.util.*;
import net.momirealms.craftengine.core.world.BlockPos;
import java.util.Map;
@@ -25,7 +22,8 @@ import java.util.concurrent.Callable;
@SuppressWarnings("DuplicatedCode")
public class StairsBlockBehavior extends BukkitBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:stairs_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final Property<HorizontalDirection> facingProperty;
private final Property<SingleBlockHalf> halfProperty;
private final Property<StairsShape> shapeProperty;
@@ -125,7 +123,7 @@ public class StairsBlockBehavior extends BukkitBlockBehavior {
return anotherState.get(anotherBehavior.facingProperty) != state.get(this.facingProperty) || anotherState.get(anotherBehavior.halfProperty) != state.get(this.halfProperty);
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
@SuppressWarnings("unchecked")

View File

@@ -23,7 +23,8 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class StemBlockBehavior extends BukkitBlockBehavior implements IsPathFindableBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:stem_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final IntegerProperty ageProperty;
private final Key fruit;
private final Key attachedStem;
@@ -124,7 +125,7 @@ public class StemBlockBehavior extends BukkitBlockBehavior implements IsPathFind
return flag1 || flag2;
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {

View File

@@ -5,6 +5,7 @@ import net.momirealms.craftengine.core.block.BlockStateWrapper;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.LazyReference;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
@@ -14,7 +15,8 @@ import java.util.List;
import java.util.Map;
public class StrippableBlockBehavior extends BukkitBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:strippable_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final String stripped;
private final LazyReference<BlockStateWrapper> lazyState;
private final List<String> excludedProperties;
@@ -41,7 +43,7 @@ public class StrippableBlockBehavior extends BukkitBlockBehavior {
return properties;
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {

View File

@@ -9,6 +9,7 @@ import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.util.Direction;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
@@ -18,7 +19,8 @@ import java.util.Map;
import java.util.Optional;
public class SturdyBaseBlockBehavior extends AbstractCanSurviveBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:sturdy_base_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final Direction direction;
private final boolean stackable;
private final boolean checkFull;
@@ -60,7 +62,7 @@ public class SturdyBaseBlockBehavior extends AbstractCanSurviveBlockBehavior {
return optionalCustomState.filter(immutableBlockState -> immutableBlockState.owner().value() == super.customBlock).isPresent();
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {

View File

@@ -11,10 +11,7 @@ import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.UpdateOption;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.Property;
import net.momirealms.craftengine.core.util.LazyReference;
import net.momirealms.craftengine.core.util.RandomUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.util.VersionHelper;
import net.momirealms.craftengine.core.util.*;
import org.jetbrains.annotations.Nullable;
import java.util.Map;
@@ -22,7 +19,8 @@ import java.util.Objects;
import java.util.concurrent.Callable;
public class SurfaceSpreadingBlockBehavior extends BukkitBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:surface_spreading_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final int requiredLight;
private final LazyReference<Object> baseBlock;
private final Property<Boolean> snowyProperty;
@@ -101,7 +99,7 @@ public class SurfaceSpreadingBlockBehavior extends BukkitBlockBehavior {
return canBeGrass(state, level, pos) && !FastNMS.INSTANCE.method$FluidState$is(FastNMS.INSTANCE.method$BlockGetter$getFluidState(level, blockPos), MTagKeys.Fluid$WATER);
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@SuppressWarnings("unchecked")
@Override

View File

@@ -11,6 +11,7 @@ import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.Property;
import net.momirealms.craftengine.core.entity.player.InteractionResult;
import net.momirealms.craftengine.core.item.context.UseOnContext;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import java.util.Map;
@@ -18,7 +19,8 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class ToggleableLampBlockBehavior extends BukkitBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:toggleable_lamp_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final Property<Boolean> litProperty;
private final Property<Boolean> poweredProperty;
private final boolean canOpenWithHand;
@@ -88,7 +90,8 @@ public class ToggleableLampBlockBehavior extends BukkitBlockBehavior {
}
@SuppressWarnings("unchecked")
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
boolean canOpenWithHand = ResourceConfigUtils.getAsBoolean(ResourceConfigUtils.get(arguments, "can-open-with-hand", "can-toggle-with-hand"), "can-toggle-with-hand");

View File

@@ -9,7 +9,6 @@ import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MFluids;
import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
import net.momirealms.craftengine.bukkit.util.InteractUtils;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.bukkit.world.BukkitWorld;
import net.momirealms.craftengine.core.block.BlockBehavior;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
@@ -43,7 +42,8 @@ import java.util.concurrent.Callable;
@SuppressWarnings("DuplicatedCode")
public class TrapDoorBlockBehavior extends BukkitBlockBehavior implements IsPathFindableBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:trapdoor_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final Property<SingleBlockHalf> halfProperty;
private final Property<HorizontalDirection> facingProperty;
private final Property<Boolean> poweredProperty;
@@ -229,7 +229,8 @@ public class TrapDoorBlockBehavior extends BukkitBlockBehavior implements IsPath
}
@SuppressWarnings("unchecked")
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
Property<SingleBlockHalf> half = (Property<SingleBlockHalf>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("half"), "warning.config.block.behavior.trapdoor.missing_half");

View File

@@ -12,6 +12,7 @@ import net.momirealms.craftengine.core.block.UpdateOption;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.IntegerProperty;
import net.momirealms.craftengine.core.block.properties.Property;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.RandomUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.util.VersionHelper;
@@ -22,7 +23,8 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class VerticalCropBlockBehavior extends BukkitBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:vertical_crop_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
private final int maxHeight;
private final IntegerProperty ageProperty;
private final float growSpeed;
@@ -78,7 +80,7 @@ public class VerticalCropBlockBehavior extends BukkitBlockBehavior {
}
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@SuppressWarnings("unchecked")
@Override

View File

@@ -13,6 +13,7 @@ import net.momirealms.craftengine.core.block.entity.tick.BlockEntityTicker;
import net.momirealms.craftengine.core.block.properties.Property;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
import net.momirealms.craftengine.core.util.HorizontalDirection;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.world.BlockPos;
import net.momirealms.craftengine.core.world.CEWorld;
@@ -22,7 +23,8 @@ import java.util.List;
import java.util.Map;
public class WallTorchParticleBlockBehavior extends BukkitBlockBehavior implements EntityBlockBehavior {
public static final Factory FACTORY = new Factory();
public static final Key ID = Key.from("craftengine:wall_torch_particle_block");
public static final BlockBehaviorFactory FACTORY = new Factory();
public final ParticleConfig[] particles;
public final int tickInterval;
public final Property<HorizontalDirection> facingProperty;
@@ -62,7 +64,8 @@ public class WallTorchParticleBlockBehavior extends BukkitBlockBehavior implemen
return EntityBlockBehavior.createTickerHelper(WallTorchParticleBlockEntity::tick);
}
public static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory {
@SuppressWarnings("unchecked")
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {

View File

@@ -4,7 +4,6 @@ import net.momirealms.craftengine.bukkit.api.BukkitAdaptors;
import net.momirealms.craftengine.bukkit.nms.FastNMS;
import net.momirealms.craftengine.bukkit.util.EntityUtils;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.bukkit.world.BukkitWorld;
import net.momirealms.craftengine.core.entity.AbstractEntity;
import net.momirealms.craftengine.core.entity.data.EntityData;
import net.momirealms.craftengine.core.util.Direction;

View File

@@ -4,7 +4,7 @@ import net.momirealms.craftengine.bukkit.nms.FastNMS;
import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine;
import net.momirealms.craftengine.core.item.*;
import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.item.updater.ItemUpdateConfig;
import net.momirealms.craftengine.core.plugin.context.Context;
import net.momirealms.craftengine.core.plugin.context.event.EventTrigger;
@@ -24,7 +24,7 @@ public class BukkitCustomItem extends AbstractCustomItem<ItemStack> {
public BukkitCustomItem(boolean isVanillaItem, UniqueKey id, Object item, Object clientItem, Key materialKey, Key clientBoundMaterialKey,
List<ItemBehavior> behaviors,
List<ItemDataModifier<ItemStack>> modifiers, List<ItemDataModifier<ItemStack>> clientBoundModifiers,
List<ItemProcessor<ItemStack>> modifiers, List<ItemProcessor<ItemStack>> clientBoundModifiers,
ItemSettings settings,
Map<EventTrigger, List<Function<Context>>> events,
ItemUpdateConfig updater) {
@@ -37,7 +37,7 @@ public class BukkitCustomItem extends AbstractCustomItem<ItemStack> {
public ItemStack buildItemStack(ItemBuildContext context, int count) {
ItemStack item = FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(FastNMS.INSTANCE.constructor$ItemStack(this.item, count));
Item<ItemStack> wrapped = BukkitCraftEngine.instance().itemManager().wrap(item);
for (ItemDataModifier<ItemStack> modifier : this.modifiers) {
for (ItemProcessor<ItemStack> modifier : this.modifiers) {
modifier.apply(wrapped, context);
}
return wrapped.getItem();
@@ -47,7 +47,7 @@ public class BukkitCustomItem extends AbstractCustomItem<ItemStack> {
public Item<ItemStack> buildItem(ItemBuildContext context, int count) {
ItemStack item = FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(FastNMS.INSTANCE.constructor$ItemStack(this.item, count));
Item<ItemStack> wrapped = BukkitCraftEngine.instance().itemManager().wrap(item);
for (ItemDataModifier<ItemStack> modifier : dataModifiers()) {
for (ItemProcessor<ItemStack> modifier : dataModifiers()) {
modifier.apply(wrapped, context);
}
return wrapped;
@@ -78,8 +78,8 @@ public class BukkitCustomItem extends AbstractCustomItem<ItemStack> {
private final Object clientBoundItem;
private final Map<EventTrigger, List<Function<Context>>> events = new EnumMap<>(EventTrigger.class);
private final List<ItemBehavior> behaviors = new ArrayList<>(4);
private final List<ItemDataModifier<ItemStack>> modifiers = new ArrayList<>(4);
private final List<ItemDataModifier<ItemStack>> clientBoundModifiers = new ArrayList<>(4);
private final List<ItemProcessor<ItemStack>> modifiers = new ArrayList<>(4);
private final List<ItemProcessor<ItemStack>> clientBoundModifiers = new ArrayList<>(4);
private ItemSettings settings;
private ItemUpdateConfig updater;
@@ -113,25 +113,25 @@ public class BukkitCustomItem extends AbstractCustomItem<ItemStack> {
}
@Override
public Builder<ItemStack> dataModifier(ItemDataModifier<ItemStack> modifier) {
public Builder<ItemStack> dataModifier(ItemProcessor<ItemStack> modifier) {
this.modifiers.add(modifier);
return this;
}
@Override
public Builder<ItemStack> dataModifiers(List<ItemDataModifier<ItemStack>> modifiers) {
public Builder<ItemStack> dataModifiers(List<ItemProcessor<ItemStack>> modifiers) {
this.modifiers.addAll(modifiers);
return this;
}
@Override
public Builder<ItemStack> clientBoundDataModifier(ItemDataModifier<ItemStack> modifier) {
public Builder<ItemStack> clientBoundDataModifier(ItemProcessor<ItemStack> modifier) {
this.clientBoundModifiers.add(modifier);
return this;
}
@Override
public Builder<ItemStack> clientBoundDataModifiers(List<ItemDataModifier<ItemStack>> modifiers) {
public Builder<ItemStack> clientBoundDataModifiers(List<ItemProcessor<ItemStack>> modifiers) {
this.clientBoundModifiers.addAll(modifiers);
return null;
}

View File

@@ -6,8 +6,8 @@ import net.momirealms.craftengine.core.item.CustomItem;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.NetworkItemBuildContext;
import net.momirealms.craftengine.core.item.NetworkItemHandler;
import net.momirealms.craftengine.core.item.modifier.ArgumentsModifier;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.processor.ArgumentsProcessor;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.plugin.config.Config;
import net.momirealms.craftengine.core.plugin.context.Context;
@@ -209,7 +209,7 @@ public final class LegacyNetworkItemHandler implements NetworkItemHandler<ItemSt
// 应用client-bound-data
CompoundTag tag = new CompoundTag();
// 创建context
Tag argumentTag = wrapped.getTag(ArgumentsModifier.ARGUMENTS_TAG);
Tag argumentTag = wrapped.getTag(ArgumentsProcessor.ARGUMENTS_TAG);
NetworkItemBuildContext context;
if (argumentTag instanceof CompoundTag arguments) {
ContextHolder.Builder builder = ContextHolder.builder();
@@ -221,11 +221,11 @@ public final class LegacyNetworkItemHandler implements NetworkItemHandler<ItemSt
context = NetworkItemBuildContext.of(player);
}
// 准备阶段
for (ItemDataModifier<ItemStack> modifier : customItem.clientBoundDataModifiers()) {
for (ItemProcessor<ItemStack> modifier : customItem.clientBoundDataModifiers()) {
modifier.prepareNetworkItem(wrapped, context, tag);
}
// 应用阶段
for (ItemDataModifier<ItemStack> modifier : customItem.clientBoundDataModifiers()) {
for (ItemProcessor<ItemStack> modifier : customItem.clientBoundDataModifiers()) {
modifier.apply(wrapped, context);
}
// 如果拦截物品的描述名称等

View File

@@ -3,8 +3,8 @@ package net.momirealms.craftengine.bukkit.item;
import net.momirealms.craftengine.bukkit.nms.FastNMS;
import net.momirealms.craftengine.core.entity.player.Player;
import net.momirealms.craftengine.core.item.*;
import net.momirealms.craftengine.core.item.modifier.ArgumentsModifier;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.processor.ArgumentsProcessor;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.plugin.config.Config;
import net.momirealms.craftengine.core.plugin.context.Context;
@@ -184,7 +184,7 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler<ItemSt
CompoundTag customData = Optional.ofNullable(wrapped.getSparrowNBTComponent(DataComponentTypes.CUSTOM_DATA))
.map(CompoundTag.class::cast)
.orElseGet(CompoundTag::new);
CompoundTag arguments = customData.getCompound(ArgumentsModifier.ARGUMENTS_TAG);
CompoundTag arguments = customData.getCompound(ArgumentsProcessor.ARGUMENTS_TAG);
// 创建context
NetworkItemBuildContext context;
if (arguments == null) {
@@ -198,11 +198,11 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler<ItemSt
}
// 准备阶段
CompoundTag tag = new CompoundTag();
for (ItemDataModifier<ItemStack> modifier : customItem.clientBoundDataModifiers()) {
for (ItemProcessor<ItemStack> modifier : customItem.clientBoundDataModifiers()) {
modifier.prepareNetworkItem(original, context, tag);
}
// 应用阶段
for (ItemDataModifier<ItemStack> modifier : customItem.clientBoundDataModifiers()) {
for (ItemProcessor<ItemStack> modifier : customItem.clientBoundDataModifiers()) {
modifier.apply(wrapped, context);
}
// 如果拦截物品的描述名称等

View File

@@ -9,7 +9,7 @@ import net.momirealms.craftengine.core.attribute.AttributeModifier;
import net.momirealms.craftengine.core.item.data.Enchantment;
import net.momirealms.craftengine.core.item.data.FireworkExplosion;
import net.momirealms.craftengine.core.item.data.Trim;
import net.momirealms.craftengine.core.item.modifier.IdModifier;
import net.momirealms.craftengine.core.item.processor.IdProcessor;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.util.Color;
import net.momirealms.craftengine.core.util.Key;
@@ -69,14 +69,14 @@ public class UniversalItemFactory extends BukkitItemFactory<LegacyItemWrapper> {
@Override
protected Optional<Key> customId(LegacyItemWrapper item) {
Object id = item.getJavaTag(IdModifier.CRAFT_ENGINE_ID);
Object id = item.getJavaTag(IdProcessor.CRAFT_ENGINE_ID);
if (id == null) return Optional.empty();
return Optional.of(Key.of(id.toString()));
}
@Override
protected void customId(LegacyItemWrapper item, Key id) {
item.setTag(id.toString(), IdModifier.CRAFT_ENGINE_ID);
item.setTag(id.toString(), IdProcessor.CRAFT_ENGINE_ID);
}
@Override

View File

@@ -6,7 +6,6 @@ import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MBlocks;
import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
import net.momirealms.craftengine.bukkit.util.KeyUtils;
import net.momirealms.craftengine.bukkit.world.BukkitWorld;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.loot.AbstractVanillaLootManager;
import net.momirealms.craftengine.core.loot.LootTable;

View File

@@ -22,7 +22,6 @@ import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflect
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MBlockStateProperties;
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MLootContextParams;
import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
import net.momirealms.craftengine.bukkit.world.BukkitWorld;
import net.momirealms.craftengine.core.block.BlockSettings;
import net.momirealms.craftengine.core.block.DelegatingBlockState;
import net.momirealms.craftengine.core.block.ImmutableBlockState;

View File

@@ -22,7 +22,6 @@ import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MAttributeH
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MMobEffects;
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.NetworkReflections;
import net.momirealms.craftengine.bukkit.util.*;
import net.momirealms.craftengine.bukkit.world.BukkitWorld;
import net.momirealms.craftengine.core.advancement.AdvancementType;
import net.momirealms.craftengine.core.block.BlockStateWrapper;
import net.momirealms.craftengine.core.block.ImmutableBlockState;

View File

@@ -17,7 +17,7 @@ import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemKeys;
import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
import net.momirealms.craftengine.core.item.context.BlockPlaceContext;
import net.momirealms.craftengine.core.item.modifier.AttributeModifiersModifier;
import net.momirealms.craftengine.core.item.processor.AttributeModifiersProcessor;
import net.momirealms.craftengine.core.item.recipe.RecipeType;
import net.momirealms.craftengine.core.item.recipe.UniqueIdItem;
import net.momirealms.craftengine.core.item.recipe.input.SingleItemInput;
@@ -1051,7 +1051,7 @@ public final class InteractUtils {
public static boolean isFullHealth(Entity entity) {
if (entity instanceof LivingEntity living) {
Key key = AttributeModifiersModifier.getNativeAttributeName(Key.of("max_health"));
Key key = AttributeModifiersProcessor.getNativeAttributeName(Key.of("max_health"));
Attribute maxHealthAttr = Registry.ATTRIBUTE.get(KeyUtils.toNamespacedKey(key));
if (maxHealthAttr == null) return false;
AttributeInstance attribute = living.getAttribute(maxHealthAttr);

View File

@@ -2,7 +2,6 @@ package net.momirealms.craftengine.bukkit.util;
import net.momirealms.craftengine.bukkit.api.BukkitAdaptors;
import net.momirealms.craftengine.bukkit.nms.FastNMS;
import net.momirealms.craftengine.bukkit.world.BukkitWorld;
import net.momirealms.craftengine.core.world.BlockPos;
import net.momirealms.craftengine.core.world.Vec3d;
import net.momirealms.craftengine.core.world.WorldPosition;

View File

@@ -334,6 +334,7 @@ public class BukkitWorldManager implements WorldManager, Listener {
}
public void handleChunkGenerate(CEWorld ceWorld, ChunkPos chunkPos, Object chunkAccess) {
if (ceWorld.isChunkLoaded(chunkPos.longKey)) return;
Object[] sections = FastNMS.INSTANCE.method$ChunkAccess$getSections(chunkAccess);
CEChunk ceChunk;
try {

View File

@@ -18,6 +18,7 @@ import org.jetbrains.annotations.Nullable;
import java.util.Optional;
import java.util.concurrent.Callable;
// todo move the package on 1.0
public abstract class BlockBehavior {
@SuppressWarnings("unchecked")

View File

@@ -0,0 +1,6 @@
package net.momirealms.craftengine.core.block.behavior;
import net.momirealms.craftengine.core.util.Key;
public record BlockBehaviorType(Key id, BlockBehaviorFactory factory) {
}

View File

@@ -14,21 +14,26 @@ import org.jetbrains.annotations.Nullable;
import java.util.Map;
public class BlockBehaviors {
public static final Key EMPTY = Key.from("craftengine:empty");
public static final BlockBehaviorType EMPTY = register(Key.from("craftengine:empty"), (block, args) -> EmptyBlockBehavior.INSTANCE);
public static void register(Key key, BlockBehaviorFactory factory) {
((WritableRegistry<BlockBehaviorFactory>) BuiltInRegistries.BLOCK_BEHAVIOR_FACTORY)
.register(ResourceKey.create(Registries.BLOCK_BEHAVIOR_FACTORY.location(), key), factory);
protected BlockBehaviors() {
}
public static BlockBehaviorType register(Key key, BlockBehaviorFactory factory) {
BlockBehaviorType type = new BlockBehaviorType(key, factory);
((WritableRegistry<BlockBehaviorType>) BuiltInRegistries.BLOCK_BEHAVIOR_TYPE)
.register(ResourceKey.create(Registries.BLOCK_BEHAVIOR_TYPE.location(), key), type);
return type;
}
public static BlockBehavior fromMap(CustomBlock block, @Nullable Map<String, Object> map) {
if (map == null || map.isEmpty()) return EmptyBlockBehavior.INSTANCE;
String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), "warning.config.block.behavior.missing_type");
Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE);
BlockBehaviorFactory factory = BuiltInRegistries.BLOCK_BEHAVIOR_FACTORY.getValue(key);
BlockBehaviorType factory = BuiltInRegistries.BLOCK_BEHAVIOR_TYPE.getValue(key);
if (factory == null) {
throw new LocalizedResourceConfigException("warning.config.block.behavior.invalid_type", type);
}
return factory.create(block, map);
return factory.factory().create(block, map);
}
}

View File

@@ -29,7 +29,7 @@ public class FurnitureBehaviorTypes {
public static <T extends FurnitureBehavior> FurnitureBehaviorType<T> register(Key id, FurnitureBehaviorFactory<T> factory) {
FurnitureBehaviorType<T> type = new FurnitureBehaviorType<>(id, factory);
((WritableRegistry<FurnitureBehaviorType<?>>) BuiltInRegistries.FURNITURE_BEHAVIOR_TYPE)
.register(ResourceKey.create(Registries.BLOCK_BEHAVIOR_FACTORY.location(), id), type);
.register(ResourceKey.create(Registries.BLOCK_BEHAVIOR_TYPE.location(), id), type);
return type;
}
}

View File

@@ -1,7 +1,7 @@
package net.momirealms.craftengine.core.item;
import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.item.updater.ItemUpdateConfig;
import net.momirealms.craftengine.core.plugin.context.Context;
import net.momirealms.craftengine.core.plugin.context.event.EventTrigger;
@@ -20,8 +20,8 @@ public abstract class AbstractCustomItem<I> implements CustomItem<I> {
protected final UniqueKey id;
protected final Key material;
protected final Key clientBoundMaterial;
protected final ItemDataModifier<I>[] modifiers;
protected final ItemDataModifier<I>[] clientBoundModifiers;
protected final ItemProcessor<I>[] modifiers;
protected final ItemProcessor<I>[] clientBoundModifiers;
protected final List<ItemBehavior> behaviors;
protected final ItemSettings settings;
protected final Map<EventTrigger, List<Function<Context>>> events;
@@ -30,8 +30,8 @@ public abstract class AbstractCustomItem<I> implements CustomItem<I> {
@SuppressWarnings("unchecked")
public AbstractCustomItem(boolean isVanillaItem, UniqueKey id, Key material, Key clientBoundMaterial,
List<ItemBehavior> behaviors,
List<ItemDataModifier<I>> modifiers,
List<ItemDataModifier<I>> clientBoundModifiers,
List<ItemProcessor<I>> modifiers,
List<ItemProcessor<I>> clientBoundModifiers,
ItemSettings settings,
Map<EventTrigger, List<Function<Context>>> events,
ItemUpdateConfig updater) {
@@ -41,9 +41,9 @@ public abstract class AbstractCustomItem<I> implements CustomItem<I> {
this.clientBoundMaterial = clientBoundMaterial;
this.events = events;
// unchecked cast
this.modifiers = modifiers.toArray(new ItemDataModifier[0]);
this.modifiers = modifiers.toArray(new ItemProcessor[0]);
// unchecked cast
this.clientBoundModifiers = clientBoundModifiers.toArray(new ItemDataModifier[0]);
this.clientBoundModifiers = clientBoundModifiers.toArray(new ItemProcessor[0]);
this.behaviors = List.copyOf(behaviors);
this.settings = settings;
this.updater = updater;
@@ -82,7 +82,7 @@ public abstract class AbstractCustomItem<I> implements CustomItem<I> {
}
@Override
public ItemDataModifier<I>[] dataModifiers() {
public ItemProcessor<I>[] dataModifiers() {
return this.modifiers;
}
@@ -97,7 +97,7 @@ public abstract class AbstractCustomItem<I> implements CustomItem<I> {
}
@Override
public ItemDataModifier<I>[] clientBoundDataModifiers() {
public ItemProcessor<I>[] clientBoundDataModifiers() {
return this.clientBoundModifiers;
}

View File

@@ -5,7 +5,7 @@ import com.google.gson.JsonPrimitive;
import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
import net.momirealms.craftengine.core.item.behavior.ItemBehaviors;
import net.momirealms.craftengine.core.item.equipment.*;
import net.momirealms.craftengine.core.item.modifier.*;
import net.momirealms.craftengine.core.item.processor.*;
import net.momirealms.craftengine.core.item.updater.ItemUpdateConfig;
import net.momirealms.craftengine.core.item.updater.ItemUpdateResult;
import net.momirealms.craftengine.core.item.updater.ItemUpdater;
@@ -70,7 +70,7 @@ public abstract class AbstractItemManager<I> extends AbstractModelGenerator impl
super(plugin);
this.itemParser = new ItemParser();
this.equipmentParser = new EquipmentParser();
ItemDataModifiers.init();
ItemProcessors.init();
}
public ItemParser itemParser() {
@@ -574,17 +574,17 @@ public abstract class AbstractItemManager<I> extends AbstractModelGenerator impl
}
if (customModelData > 0 && (hasModelSection || forceCustomModelData)) {
if (clientBoundModel) itemBuilder.clientBoundDataModifier(new OverwritableCustomModelDataModifier<>(customModelData));
else itemBuilder.dataModifier(new CustomModelDataModifier<>(customModelData));
if (clientBoundModel) itemBuilder.clientBoundDataModifier(new OverwritableCustomModelDataProcessor<>(customModelData));
else itemBuilder.dataModifier(new CustomModelDataProcessor<>(customModelData));
}
if (itemModel != null && (hasModelSection || forceItemModel)) {
if (clientBoundModel) itemBuilder.clientBoundDataModifier(new OverwritableItemModelModifier<>(itemModel));
else itemBuilder.dataModifier(new ItemModelModifier<>(itemModel));
if (clientBoundModel) itemBuilder.clientBoundDataModifier(new OverwritableItemModelProcessor<>(itemModel));
else itemBuilder.dataModifier(new ItemModelProcessor<>(itemModel));
}
// 应用物品数据
try {
ItemDataModifiers.applyDataModifiers(MiscUtils.castToMap(section.get("data"), true), itemBuilder::dataModifier);
ItemProcessors.applyDataModifiers(MiscUtils.castToMap(section.get("data"), true), itemBuilder::dataModifier);
} catch (LocalizedResourceConfigException e) {
collector.add(e);
}
@@ -592,7 +592,7 @@ public abstract class AbstractItemManager<I> extends AbstractModelGenerator impl
// 应用客户端侧数据
try {
if (VersionHelper.PREMIUM) {
ItemDataModifiers.applyDataModifiers(MiscUtils.castToMap(section.get("client-bound-data"), true), itemBuilder::clientBoundDataModifier);
ItemProcessors.applyDataModifiers(MiscUtils.castToMap(section.get("client-bound-data"), true), itemBuilder::clientBoundDataModifier);
}
} catch (LocalizedResourceConfigException e) {
collector.add(e);
@@ -600,7 +600,7 @@ public abstract class AbstractItemManager<I> extends AbstractModelGenerator impl
// 如果不是原版物品那么加入ce的标识符
if (!isVanillaItem)
itemBuilder.dataModifier(new IdModifier<>(id));
itemBuilder.dataModifier(new IdProcessor<>(id));
// 事件
Map<EventTrigger, List<net.momirealms.craftengine.core.plugin.context.function.Function<Context>>> eventTriggerListMap;
@@ -648,7 +648,7 @@ public abstract class AbstractItemManager<I> extends AbstractModelGenerator impl
}
ItemUpdateConfig config = new ItemUpdateConfig(versions);
itemBuilder.updater(config);
itemBuilder.dataModifier(new ItemVersionModifier<>(config.maxVersion()));
itemBuilder.dataModifier(new ItemVersionProcessor<>(config.maxVersion()));
}
// 构建自定义物品

View File

@@ -1,7 +1,7 @@
package net.momirealms.craftengine.core.item;
import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.item.updater.ItemUpdateConfig;
import net.momirealms.craftengine.core.plugin.context.Context;
import net.momirealms.craftengine.core.plugin.context.event.EventTrigger;
@@ -35,11 +35,11 @@ public interface CustomItem<I> extends BuildableItem<I> {
Key clientBoundMaterial();
ItemDataModifier<I>[] dataModifiers();
ItemProcessor<I>[] dataModifiers();
boolean hasClientBoundDataModifier();
ItemDataModifier<I>[] clientBoundDataModifiers();
ItemProcessor<I>[] clientBoundDataModifiers();
ItemSettings settings();
@@ -63,13 +63,13 @@ public interface CustomItem<I> extends BuildableItem<I> {
Builder<I> material(Key material);
Builder<I> dataModifier(ItemDataModifier<I> modifier);
Builder<I> dataModifier(ItemProcessor<I> modifier);
Builder<I> dataModifiers(List<ItemDataModifier<I>> modifiers);
Builder<I> dataModifiers(List<ItemProcessor<I>> modifiers);
Builder<I> clientBoundDataModifier(ItemDataModifier<I> modifier);
Builder<I> clientBoundDataModifier(ItemProcessor<I> modifier);
Builder<I> clientBoundDataModifiers(List<ItemDataModifier<I>> modifiers);
Builder<I> clientBoundDataModifiers(List<ItemProcessor<I>> modifiers);
Builder<I> behavior(ItemBehavior behavior);

View File

@@ -10,7 +10,7 @@ import net.momirealms.craftengine.core.item.data.Enchantment;
import net.momirealms.craftengine.core.item.data.FireworkExplosion;
import net.momirealms.craftengine.core.item.data.JukeboxPlayable;
import net.momirealms.craftengine.core.item.data.Trim;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.item.setting.EquipmentData;
import net.momirealms.craftengine.core.util.Color;
import net.momirealms.craftengine.core.util.Key;
@@ -228,7 +228,7 @@ public interface Item<I> {
void merge(Item<I> another);
default Item<I> apply(ItemDataModifier<I> modifier, ItemBuildContext context) {
default Item<I> apply(ItemProcessor<I> modifier, ItemBuildContext context) {
return modifier.apply(this, context);
}

View File

@@ -1,8 +0,0 @@
package net.momirealms.craftengine.core.item;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
public interface ItemDataModifierFactory<I> {
ItemDataModifier<I> create(Object arg);
}

View File

@@ -0,0 +1,8 @@
package net.momirealms.craftengine.core.item;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
public interface ItemProcessorFactory<I> {
ItemProcessor<I> create(Object arg);
}

View File

@@ -5,9 +5,9 @@ import net.momirealms.craftengine.core.entity.display.ItemDisplayContext;
import net.momirealms.craftengine.core.entity.projectile.ProjectileMeta;
import net.momirealms.craftengine.core.item.equipment.ComponentBasedEquipment;
import net.momirealms.craftengine.core.item.equipment.Equipment;
import net.momirealms.craftengine.core.item.modifier.EquippableModifier;
import net.momirealms.craftengine.core.item.modifier.FoodModifier;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.processor.EquippableProcessor;
import net.momirealms.craftengine.core.item.processor.FoodProcessor;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.item.recipe.remainder.CraftRemainder;
import net.momirealms.craftengine.core.item.recipe.remainder.CraftRemainders;
import net.momirealms.craftengine.core.item.setting.*;
@@ -57,25 +57,25 @@ public class ItemSettings {
private ItemSettings() {}
public <I> List<ItemDataModifier<I>> modifiers() {
ArrayList<ItemDataModifier<I>> modifiers = new ArrayList<>();
public <I> List<ItemProcessor<I>> modifiers() {
ArrayList<ItemProcessor<I>> modifiers = new ArrayList<>();
if (this.equipment != null) {
EquipmentData data = this.equipment.equipmentData();
if (data != null) {
modifiers.add(new EquippableModifier<>(data));
modifiers.add(new EquippableProcessor<>(data));
}
if (!this.equipment.clientBoundModel().asBoolean(Config.globalClientboundModel())) {
modifiers.addAll(this.equipment.equipment().modifiers());
}
}
if (VersionHelper.isOrAbove1_20_5() && this.foodData != null) {
modifiers.add(new FoodModifier<>(this.foodData.nutrition(), this.foodData.saturation(), false));
modifiers.add(new FoodProcessor<>(this.foodData.nutrition(), this.foodData.saturation(), false));
}
return modifiers;
}
public <I> List<ItemDataModifier<I>> clientBoundModifiers() {
ArrayList<ItemDataModifier<I>> modifiers = new ArrayList<>();
public <I> List<ItemProcessor<I>> clientBoundModifiers() {
ArrayList<ItemProcessor<I>> modifiers = new ArrayList<>();
if (this.equipment != null) {
if (this.equipment.clientBoundModel().asBoolean(Config.globalClientboundModel())) {
modifiers.addAll(this.equipment.equipment().modifiers());

View File

@@ -2,8 +2,8 @@ package net.momirealms.craftengine.core.item.equipment;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import net.momirealms.craftengine.core.item.modifier.EquippableAssetIdModifier;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.processor.EquippableAssetIdProcessor;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
@@ -31,8 +31,8 @@ public class ComponentBasedEquipment extends AbstractEquipment implements Suppli
}
@Override
public <I> List<ItemDataModifier<I>> modifiers() {
return List.of(new EquippableAssetIdModifier<>(this.assetId));
public <I> List<ItemProcessor<I>> modifiers() {
return List.of(new EquippableAssetIdProcessor<>(this.assetId));
}
public EnumMap<EquipmentLayerType, List<Layer>> layers() {

View File

@@ -1,6 +1,6 @@
package net.momirealms.craftengine.core.item.equipment;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.util.Key;
import java.util.List;
@@ -11,5 +11,5 @@ public interface Equipment {
Key type();
<I> List<ItemDataModifier<I>> modifiers();
<I> List<ItemProcessor<I>> modifiers();
}

View File

@@ -1,9 +1,9 @@
package net.momirealms.craftengine.core.item.equipment;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.modifier.HideTooltipModifier;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.item.modifier.TrimModifier;
import net.momirealms.craftengine.core.item.processor.HideTooltipProcessor;
import net.momirealms.craftengine.core.item.processor.ItemProcessor;
import net.momirealms.craftengine.core.item.processor.TrimProcessor;
import net.momirealms.craftengine.core.pack.AbstractPackManager;
import net.momirealms.craftengine.core.util.Key;
import org.jetbrains.annotations.Nullable;
@@ -39,10 +39,10 @@ public class TrimBasedEquipment extends AbstractEquipment {
}
@Override
public <I> List<ItemDataModifier<I>> modifiers() {
public <I> List<ItemProcessor<I>> modifiers() {
return List.of(
new TrimModifier<>(Key.of(AbstractPackManager.NEW_TRIM_MATERIAL), this.assetId),
new HideTooltipModifier<>(List.of(DataComponentKeys.TRIM))
new TrimProcessor<>(Key.of(AbstractPackManager.NEW_TRIM_MATERIAL), this.assetId),
new HideTooltipProcessor<>(List.of(DataComponentKeys.TRIM))
);
}

View File

@@ -1,40 +0,0 @@
package net.momirealms.craftengine.core.item.modifier;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.data.JukeboxPlayable;
import net.momirealms.craftengine.core.util.Key;
public class JukeboxSongModifier<I> implements ItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
private final JukeboxPlayable song;
public JukeboxSongModifier(JukeboxPlayable song) {
this.song = song;
}
public JukeboxPlayable song() {
return song;
}
@Override
public Key type() {
return ItemDataModifiers.JUKEBOX_PLAYABLE;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
item.jukeboxSong(this.song);
return item;
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
String song = arg.toString();
return new JukeboxSongModifier<>(new JukeboxPlayable(song, true));
}
}
}

View File

@@ -1,9 +1,9 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.plugin.context.text.TextProvider;
import net.momirealms.craftengine.core.plugin.context.text.TextProviders;
import net.momirealms.craftengine.core.util.Key;
@@ -16,12 +16,12 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
public class ArgumentsModifier<I> implements ItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class ArgumentsProcessor<I> implements ItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
public static final String ARGUMENTS_TAG = "craftengine:arguments";
private final Map<String, TextProvider> arguments;
public ArgumentsModifier(Map<String, TextProvider> arguments) {
public ArgumentsProcessor(Map<String, TextProvider> arguments) {
this.arguments = arguments;
}
@@ -29,11 +29,6 @@ public class ArgumentsModifier<I> implements ItemDataModifier<I> {
return arguments;
}
@Override
public Key type() {
return ItemDataModifiers.ARGUMENTS;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
if (VersionHelper.isOrAbove1_20_5()) {
@@ -54,16 +49,16 @@ public class ArgumentsModifier<I> implements ItemDataModifier<I> {
return item;
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
Map<String, Object> data = ResourceConfigUtils.getAsMap(arg, "arguments");
Map<String, TextProvider> arguments = new HashMap<>();
for (Map.Entry<String, Object> entry : data.entrySet()) {
arguments.put(entry.getKey(), TextProviders.fromString(entry.getValue().toString()));
}
return new ArgumentsModifier<>(arguments);
return new ArgumentsProcessor<>(arguments);
}
}
}

View File

@@ -1,4 +1,4 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.attribute.AttributeModifier;
import net.momirealms.craftengine.core.attribute.Attributes;
@@ -6,7 +6,7 @@ import net.momirealms.craftengine.core.attribute.Attributes1_21;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.plugin.context.number.NumberProvider;
import net.momirealms.craftengine.core.plugin.context.number.NumberProviders;
import net.momirealms.craftengine.core.util.*;
@@ -14,8 +14,8 @@ import org.jetbrains.annotations.Nullable;
import java.util.*;
public class AttributeModifiersModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class AttributeModifiersProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
public static final Map<Key, Key> CONVERTOR = new HashMap<>();
private static final Object[] NBT_PATH = new Object[]{"AttributeModifiers"};
@@ -91,7 +91,7 @@ public class AttributeModifiersModifier<I> implements SimpleNetworkItemDataModif
private final List<PreModifier> modifiers;
public AttributeModifiersModifier(List<PreModifier> modifiers) {
public AttributeModifiersProcessor(List<PreModifier> modifiers) {
this.modifiers = modifiers;
}
@@ -99,11 +99,6 @@ public class AttributeModifiersModifier<I> implements SimpleNetworkItemDataModif
return this.modifiers;
}
@Override
public Key type() {
return ItemDataModifiers.ATTRIBUTE_MODIFIERS;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
List<AttributeModifier> results = new ArrayList<>(this.modifiers.size());
@@ -133,7 +128,7 @@ public class AttributeModifiersModifier<I> implements SimpleNetworkItemDataModif
Optional<Key> id,
NumberProvider amount,
AttributeModifier.Operation operation,
AttributeModifiersModifier.PreModifier.@Nullable PreDisplay display) {
AttributeModifiersProcessor.PreModifier.@Nullable PreDisplay display) {
public PreModifier(String type, AttributeModifier.Slot slot, Optional<Key> id, NumberProvider amount, AttributeModifier.Operation operation, @Nullable PreDisplay display) {
this.amount = amount;
@@ -157,13 +152,13 @@ public class AttributeModifiersModifier<I> implements SimpleNetworkItemDataModif
}
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
List<PreModifier> attributeModifiers = ResourceConfigUtils.parseConfigAsList(arg, (map) -> {
String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), "warning.config.item.data.attribute_modifiers.missing_type");
Key nativeType = AttributeModifiersModifier.getNativeAttributeName(Key.of(type));
Key nativeType = AttributeModifiersProcessor.getNativeAttributeName(Key.of(type));
AttributeModifier.Slot slot = AttributeModifier.Slot.valueOf(map.getOrDefault("slot", "any").toString().toUpperCase(Locale.ENGLISH));
Optional<Key> id = Optional.ofNullable(map.get("id")).map(String::valueOf).map(Key::of);
NumberProvider amount = NumberProviders.fromObject(ResourceConfigUtils.requireNonNullOrThrow(map.get("amount"), "warning.config.item.data.attribute_modifiers.missing_amount"));
@@ -184,7 +179,7 @@ public class AttributeModifiersModifier<I> implements SimpleNetworkItemDataModif
return new PreModifier(nativeType.value(), slot, id,
amount, operation, display);
});
return new AttributeModifiersModifier<>(attributeModifiers);
return new AttributeModifiersProcessor<>(attributeModifiers);
}
}
}

View File

@@ -1,11 +1,11 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.block.BlockStateWrapper;
import net.momirealms.craftengine.core.block.CustomBlockStateWrapper;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.LazyReference;
@@ -16,20 +16,15 @@ import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
public class BlockStateModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class BlockStateProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private static final Object[] NBT_PATH = new Object[]{"BlockStateTag"};
private final LazyReference<Map<String, String>> wrapper;
public BlockStateModifier(LazyReference<Map<String, String>> wrapper) {
public BlockStateProcessor(LazyReference<Map<String, String>> wrapper) {
this.wrapper = wrapper;
}
@Override
public Key type() {
return ItemDataModifiers.BLOCK_STATE;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
return item.blockState(this.wrapper.get());
@@ -50,19 +45,19 @@ public class BlockStateModifier<I> implements SimpleNetworkItemDataModifier<I> {
return DataComponentKeys.BLOCK_STATE;
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
if (arg instanceof Map<?, ?> map) {
Map<String, String> properties = new HashMap<>();
for (Map.Entry<?, ?> entry : map.entrySet()) {
properties.put(entry.getKey().toString(), entry.getValue().toString());
}
return new BlockStateModifier<>(LazyReference.lazyReference(() -> properties));
return new BlockStateProcessor<>(LazyReference.lazyReference(() -> properties));
} else {
String stateString = arg.toString();
return new BlockStateModifier<>(LazyReference.lazyReference(() -> {
return new BlockStateProcessor<>(LazyReference.lazyReference(() -> {
BlockStateWrapper blockState = CraftEngine.instance().blockManager().createBlockState(stateString);
if (blockState instanceof CustomBlockStateWrapper customBlockStateWrapper) {
blockState = customBlockStateWrapper.visualBlockState();

View File

@@ -1,4 +1,4 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import com.google.gson.JsonElement;
import net.momirealms.craftengine.core.item.*;
@@ -12,12 +12,12 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class ComponentsModifier<I> implements ItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class ComponentsProcessor<I> implements ItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final List<Pair<Key, Tag>> arguments;
private CompoundTag customData = null;
public ComponentsModifier(Map<String, Object> arguments) {
public ComponentsProcessor(Map<String, Object> arguments) {
List<Pair<Key, Tag>> pairs = new ArrayList<>(arguments.size());
for (Map.Entry<String, Object> entry : arguments.entrySet()) {
Key key = Key.of(entry.getKey());
@@ -50,11 +50,6 @@ public class ComponentsModifier<I> implements ItemDataModifier<I> {
return CraftEngine.instance().platform().javaToSparrowNBT(value);
}
@Override
public Key type() {
return ItemDataModifiers.COMPONENTS;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
for (Pair<Key, Tag> entry : this.arguments) {
@@ -87,12 +82,12 @@ public class ComponentsModifier<I> implements ItemDataModifier<I> {
return item;
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
Map<String, Object> data = ResourceConfigUtils.getAsMap(arg, "components");
return new ComponentsModifier<>(data);
return new ComponentsProcessor<>(data);
}
}
}

View File

@@ -1,8 +1,8 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.plugin.context.Condition;
import net.momirealms.craftengine.core.plugin.context.Context;
import net.momirealms.craftengine.core.plugin.context.event.EventConditions;
@@ -16,25 +16,20 @@ import java.util.List;
import java.util.Map;
import java.util.function.Predicate;
public class ConditionalModifier<I> implements ItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class ConditionalProcessor<I> implements ItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final Predicate<Context> condition;
private final ItemDataModifier<I>[] modifiers;
private final ItemProcessor<I>[] modifiers;
public ConditionalModifier(Predicate<Context> condition, ItemDataModifier<I>[] modifiers) {
public ConditionalProcessor(Predicate<Context> condition, ItemProcessor<I>[] modifiers) {
this.modifiers = modifiers;
this.condition = condition;
}
@Override
public Key type() {
return ItemDataModifiers.CONDITIONAL;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
if (this.condition.test(context)) {
for (ItemDataModifier<I> m : this.modifiers) {
for (ItemProcessor<I> m : this.modifiers) {
item = item.apply(m, context);
}
}
@@ -44,23 +39,23 @@ public class ConditionalModifier<I> implements ItemDataModifier<I> {
@Override
public Item<I> prepareNetworkItem(Item<I> item, ItemBuildContext context, CompoundTag networkData) {
if (this.condition.test(context)) {
for (ItemDataModifier<I> m : this.modifiers) {
for (ItemProcessor<I> m : this.modifiers) {
item = m.prepareNetworkItem(item, context, networkData);
}
}
return item;
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@SuppressWarnings("unchecked")
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
Map<String, Object> conditionalData = ResourceConfigUtils.getAsMap(arg, "conditional");
List<Condition<Context>> conditions = ResourceConfigUtils.parseConfigAsList(conditionalData.get("conditions"), EventConditions::fromMap);
List<ItemDataModifier<I>> modifiers = new ArrayList<>();
ItemDataModifiers.applyDataModifiers(ResourceConfigUtils.getAsMap(conditionalData.get("data"), "conditional.data"), m -> modifiers.add((ItemDataModifier<I>) m));
return new ConditionalModifier<>(MiscUtils.allOf(conditions), modifiers.toArray(new ItemDataModifier[0]));
List<ItemProcessor<I>> modifiers = new ArrayList<>();
ItemProcessors.applyDataModifiers(ResourceConfigUtils.getAsMap(conditionalData.get("data"), "conditional.data"), m -> modifiers.add((ItemProcessor<I>) m));
return new ConditionalProcessor<>(MiscUtils.allOf(conditions), modifiers.toArray(new ItemProcessor[0]));
}
}
}

View File

@@ -1,18 +1,18 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import org.jetbrains.annotations.Nullable;
public class CustomModelDataModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class CustomModelDataProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final int argument;
public CustomModelDataModifier(int argument) {
public CustomModelDataProcessor(int argument) {
this.argument = argument;
}
@@ -20,11 +20,6 @@ public class CustomModelDataModifier<I> implements SimpleNetworkItemDataModifier
return this.argument;
}
@Override
public Key type() {
return ItemDataModifiers.CUSTOM_MODEL_DATA;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
item.customModelData(argument);
@@ -46,12 +41,12 @@ public class CustomModelDataModifier<I> implements SimpleNetworkItemDataModifier
return "CustomModelData";
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
int customModelData = ResourceConfigUtils.getAsInt(arg, "custom-model-data");
return new CustomModelDataModifier<>(customModelData);
return new CustomModelDataProcessor<>(customModelData);
}
}
}

View File

@@ -1,21 +1,21 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.plugin.config.Config;
import net.momirealms.craftengine.core.plugin.text.minimessage.FormattedLine;
import net.momirealms.craftengine.core.util.Key;
import org.jetbrains.annotations.Nullable;
public class CustomNameModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class CustomNameProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private static final Object[] NBT_PATH = new Object[]{"display", "Name"};
private final String argument;
private final FormattedLine line;
public CustomNameModifier(String argument) {
public CustomNameProcessor(String argument) {
if (Config.addNonItalicTag()) {
if (argument.startsWith("<!i>")) {
this.argument = argument;
@@ -32,11 +32,6 @@ public class CustomNameModifier<I> implements SimpleNetworkItemDataModifier<I> {
return argument;
}
@Override
public Key type() {
return ItemDataModifiers.CUSTOM_NAME;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
item.customNameComponent(this.line.parse(context));
@@ -58,12 +53,12 @@ public class CustomNameModifier<I> implements SimpleNetworkItemDataModifier<I> {
return "display.Name";
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
String name = arg.toString();
return new CustomNameModifier<>(name);
return new CustomNameProcessor<>(name);
}
}
}

View File

@@ -1,21 +1,21 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.util.Color;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import org.jetbrains.annotations.Nullable;
import org.joml.Vector3f;
public class DyedColorModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class DyedColorProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private static final Object[] NBT_PATH = new Object[]{"display", "color"};
private final Color color;
public DyedColorModifier(Color color) {
public DyedColorProcessor(Color color) {
this.color = color;
}
@@ -23,11 +23,6 @@ public class DyedColorModifier<I> implements SimpleNetworkItemDataModifier<I> {
return color;
}
@Override
public Key type() {
return ItemDataModifiers.DYED_COLOR;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
return item.dyedColor(this.color);
@@ -48,15 +43,15 @@ public class DyedColorModifier<I> implements SimpleNetworkItemDataModifier<I> {
return "display.color";
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
if (arg instanceof Integer integer) {
return new DyedColorModifier<>(Color.fromDecimal(integer));
return new DyedColorProcessor<>(Color.fromDecimal(integer));
} else {
Vector3f vector3f = ResourceConfigUtils.getAsVector3f(arg, "dyed-color");
return new DyedColorModifier<>(Color.fromVector3f(vector3f));
return new DyedColorProcessor<>(Color.fromVector3f(vector3f));
}
}
}

View File

@@ -1,4 +1,4 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.*;
import net.momirealms.craftengine.core.item.data.Enchantment;
@@ -13,14 +13,14 @@ import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class EnchantmentsModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class EnchantmentsProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private static final Object[] STORED_ENCHANTMENTS = new Object[] {"StoredEnchantments"};
private static final Object[] ENCHANTMENTS = new Object[] {"Enchantments"};
private final List<Enchantment> enchantments;
private final boolean merge;
public EnchantmentsModifier(List<Enchantment> enchantments, boolean merge) {
public EnchantmentsProcessor(List<Enchantment> enchantments, boolean merge) {
this.enchantments = enchantments;
this.merge = merge;
}
@@ -33,11 +33,6 @@ public class EnchantmentsModifier<I> implements SimpleNetworkItemDataModifier<I>
return enchantments;
}
@Override
public Key type() {
return ItemDataModifiers.ENCHANTMENTS;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
if (item.vanillaId().equals(ItemKeys.ENCHANTED_BOOK)) {
@@ -92,10 +87,10 @@ public class EnchantmentsModifier<I> implements SimpleNetworkItemDataModifier<I>
return item.vanillaId().equals(ItemKeys.ENCHANTED_BOOK) ? "StoredEnchantments" : "Enchantments";
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
Map<String, Object> enchantData = ResourceConfigUtils.getAsMap(arg, "enchantments");
List<Enchantment> enchantments = new ArrayList<>();
boolean merge = false;
@@ -108,7 +103,7 @@ public class EnchantmentsModifier<I> implements SimpleNetworkItemDataModifier<I>
enchantments.add(new Enchantment(Key.of(e.getKey()), number.intValue()));
}
}
return new EnchantmentsModifier<>(enchantments, merge);
return new EnchantmentsProcessor<>(enchantments, merge);
}
}
}

View File

@@ -1,4 +1,4 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
@@ -9,10 +9,10 @@ import org.jetbrains.annotations.Nullable;
import java.util.Optional;
public class EquippableAssetIdModifier<I> implements SimpleNetworkItemDataModifier<I> {
public class EquippableAssetIdProcessor<I> implements SimpleNetworkItemProcessor<I> {
private final Key assetId;
public EquippableAssetIdModifier(Key assetsId) {
public EquippableAssetIdProcessor(Key assetsId) {
this.assetId = assetsId;
}
@@ -20,11 +20,6 @@ public class EquippableAssetIdModifier<I> implements SimpleNetworkItemDataModifi
return assetId;
}
@Override
public Key type() {
return ItemDataModifiers.EQUIPPABLE_ASSET_ID;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
Optional<EquipmentData> optionalData = item.equippable();

View File

@@ -1,9 +1,9 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.item.setting.EquipmentData;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
@@ -11,11 +11,11 @@ import org.jetbrains.annotations.Nullable;
import java.util.Map;
public class EquippableModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class EquippableProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final EquipmentData data;
public EquippableModifier(EquipmentData data) {
public EquippableProcessor(EquipmentData data) {
this.data = data;
}
@@ -23,11 +23,6 @@ public class EquippableModifier<I> implements SimpleNetworkItemDataModifier<I> {
return data;
}
@Override
public Key type() {
return ItemDataModifiers.EQUIPPABLE;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
return item.equippable(this.data);
@@ -38,12 +33,12 @@ public class EquippableModifier<I> implements SimpleNetworkItemDataModifier<I> {
return DataComponentKeys.EQUIPPABLE;
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
Map<String, Object> data = ResourceConfigUtils.getAsMap(arg, "equippable");
return new EquippableModifier<>(EquipmentData.fromMap(data));
return new EquippableProcessor<>(EquipmentData.fromMap(data));
}
}
}

View File

@@ -1,8 +1,8 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.plugin.compatibility.ItemSource;
import net.momirealms.craftengine.core.util.Key;
@@ -12,13 +12,13 @@ import org.jetbrains.annotations.NotNull;
import java.util.*;
public class ExternalModifier<I> implements ItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class ExternalSourceProcessor<I> implements ItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private static final ThreadLocal<Set<Dependency>> BUILD_STACK = ThreadLocal.withInitial(LinkedHashSet::new);
private final String id;
private final LazyReference<ItemSource<I>> provider;
public ExternalModifier(String id, LazyReference<ItemSource<I>> provider) {
public ExternalSourceProcessor(String id, LazyReference<ItemSource<I>> provider) {
this.id = id;
this.provider = provider;
}
@@ -27,11 +27,6 @@ public class ExternalModifier<I> implements ItemDataModifier<I> {
return id;
}
@Override
public Key type() {
return ItemDataModifiers.EXTERNAL;
}
@SuppressWarnings("unchecked")
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
@@ -70,15 +65,15 @@ public class ExternalModifier<I> implements ItemDataModifier<I> {
}
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@SuppressWarnings("unchecked")
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
Map<String, Object> data = ResourceConfigUtils.getAsMap(arg, "external");
String plugin = ResourceConfigUtils.requireNonEmptyStringOrThrow(ResourceConfigUtils.get(data, "plugin", "source"), "warning.config.item.data.external.missing_source");
String id = ResourceConfigUtils.requireNonEmptyStringOrThrow(data.get("id"), "warning.config.item.data.external.missing_id");
return new ExternalModifier<>(id, LazyReference.lazyReference(() -> {
return new ExternalSourceProcessor<>(id, LazyReference.lazyReference(() -> {
ItemSource<?> itemSource = CraftEngine.instance().compatibilityManager().getItemSource(plugin.toLowerCase(Locale.ENGLISH));
if (itemSource == null) {
CraftEngine.instance().logger().warn("Item source '" + plugin + "' not found for item '" + id + "'");

View File

@@ -1,22 +1,22 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import org.jetbrains.annotations.Nullable;
import java.util.Map;
public class FoodModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class FoodProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final int nutrition;
private final float saturation;
private final boolean canAlwaysEat;
public FoodModifier(int nutrition, float saturation, boolean canAlwaysEat) {
public FoodProcessor(int nutrition, float saturation, boolean canAlwaysEat) {
this.canAlwaysEat = canAlwaysEat;
this.nutrition = nutrition;
this.saturation = saturation;
@@ -34,11 +34,6 @@ public class FoodModifier<I> implements SimpleNetworkItemDataModifier<I> {
return saturation;
}
@Override
public Key type() {
return ItemDataModifiers.FOOD;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
item.setJavaComponent(DataComponentKeys.FOOD, Map.of(
@@ -54,14 +49,14 @@ public class FoodModifier<I> implements SimpleNetworkItemDataModifier<I> {
return DataComponentKeys.FOOD;
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
Map<String, Object> data = ResourceConfigUtils.getAsMap(arg, "food");
int nutrition = ResourceConfigUtils.getAsInt(data.get("nutrition"), "nutrition");
float saturation = ResourceConfigUtils.getAsFloat(data.get("saturation"), "saturation");
return new FoodModifier<>(nutrition, saturation, ResourceConfigUtils.getAsBoolean(data.getOrDefault("can-always-eat", false), "can-always-eat"));
return new FoodProcessor<>(nutrition, saturation, ResourceConfigUtils.getAsBoolean(data.getOrDefault("can-always-eat", false), "can-always-eat"));
}
}
}

View File

@@ -1,4 +1,4 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import com.google.common.collect.ImmutableMap;
import net.momirealms.craftengine.core.item.*;
@@ -15,8 +15,8 @@ import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class HideTooltipModifier<I> implements ItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class HideTooltipProcessor<I> implements ItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
public static final Map<Key, Integer> TO_LEGACY;
public static final List<Key> COMPONENTS = List.of(
DataComponentKeys.UNBREAKABLE,
@@ -53,7 +53,7 @@ public class HideTooltipModifier<I> implements ItemDataModifier<I> {
private final List<Key> components;
private final Applier<I> applier;
public HideTooltipModifier(List<Key> components) {
public HideTooltipProcessor(List<Key> components) {
this.components = components;
if (VersionHelper.isOrAbove1_21_5()) {
this.applier = new ModernApplier<>(components);
@@ -124,11 +124,6 @@ public class HideTooltipModifier<I> implements ItemDataModifier<I> {
return item;
}
@Override
public Key type() {
return ItemDataModifiers.HIDE_TOOLTIP;
}
public interface Applier<I> {
void apply(Item<I> item);
@@ -232,12 +227,12 @@ public class HideTooltipModifier<I> implements ItemDataModifier<I> {
}
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
List<Key> components = MiscUtils.getAsStringList(arg).stream().map(Key::of).toList();
return new HideTooltipModifier<>(components);
return new HideTooltipProcessor<>(components);
}
}
}

View File

@@ -1,14 +1,14 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.util.Key;
public class IdModifier<I> implements ItemDataModifier<I> {
public class IdProcessor<I> implements ItemProcessor<I> {
public static final String CRAFT_ENGINE_ID = "craftengine:id";
private final Key argument;
public IdModifier(Key argument) {
public IdProcessor(Key argument) {
this.argument = argument;
}
@@ -16,11 +16,6 @@ public class IdModifier<I> implements ItemDataModifier<I> {
return this.argument;
}
@Override
public Key type() {
return ItemDataModifiers.ID;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
item.customId(this.argument);

View File

@@ -1,17 +1,17 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.util.Key;
import org.jetbrains.annotations.Nullable;
public class ItemModelModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class ItemModelProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final Key data;
public ItemModelModifier(Key data) {
public ItemModelProcessor(Key data) {
this.data = data;
}
@@ -19,11 +19,6 @@ public class ItemModelModifier<I> implements SimpleNetworkItemDataModifier<I> {
return data;
}
@Override
public Key type() {
return ItemDataModifiers.ITEM_MODEL;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
return item.itemModel(this.data.asString());
@@ -34,12 +29,12 @@ public class ItemModelModifier<I> implements SimpleNetworkItemDataModifier<I> {
return DataComponentKeys.ITEM_MODEL;
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
String id = arg.toString();
return new ItemModelModifier<>(Key.of(id));
return new ItemModelProcessor<>(Key.of(id));
}
}
}

View File

@@ -1,20 +1,20 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.plugin.text.minimessage.FormattedLine;
import net.momirealms.craftengine.core.util.Key;
import org.jetbrains.annotations.Nullable;
public class ItemNameModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class ItemNameProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private static final Object[] NBT_PATH = new Object[]{"display", "Name"};
private final String argument;
private final FormattedLine line;
public ItemNameModifier(String argument) {
public ItemNameProcessor(String argument) {
this.argument = argument;
this.line = FormattedLine.create(argument);
}
@@ -23,11 +23,6 @@ public class ItemNameModifier<I> implements SimpleNetworkItemDataModifier<I> {
return argument;
}
@Override
public Key type() {
return ItemDataModifiers.ITEM_NAME;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
item.itemNameComponent(this.line.parse(context));
@@ -49,12 +44,12 @@ public class ItemNameModifier<I> implements SimpleNetworkItemDataModifier<I> {
return "display.Name";
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
String name = arg.toString();
return new ItemNameModifier<>(name);
return new ItemNameProcessor<>(name);
}
}
}

View File

@@ -1,13 +1,11 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.sparrow.nbt.CompoundTag;
public interface ItemDataModifier<I> {
Key type();
public interface ItemProcessor<I> {
Item<I> apply(Item<I> item, ItemBuildContext context);

View File

@@ -0,0 +1,7 @@
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.util.Key;
public record ItemProcessorType<T>(Key id, ItemProcessorFactory<T> factory) {
}

View File

@@ -1,9 +1,9 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.modifier.lore.DynamicLoreModifier;
import net.momirealms.craftengine.core.item.modifier.lore.LoreModifier;
import net.momirealms.craftengine.core.item.modifier.lore.OverwritableLoreModifier;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.item.processor.lore.DynamicLoreProcessor;
import net.momirealms.craftengine.core.item.processor.lore.LoreProcessor;
import net.momirealms.craftengine.core.item.processor.lore.OverwritableLoreProcessor;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
import net.momirealms.craftengine.core.registry.BuiltInRegistries;
import net.momirealms.craftengine.core.registry.Registries;
@@ -17,60 +17,58 @@ import java.util.Map;
import java.util.Optional;
import java.util.function.Consumer;
public final class ItemDataModifiers {
private ItemDataModifiers() {}
public final class ItemProcessors {
private ItemProcessors() {}
public static final Key ITEM_MODEL = Key.of("craftengine:item-model");
public static final Key OVERWRITABLE_ITEM_MODEL = Key.of("craftengine:overwritable-item-model");
public static final Key ITEM_MODEL = Key.of("craftengine:item_model");
public static final Key OVERWRITABLE_ITEM_MODEL = Key.of("craftengine:overwritable_item_model");
public static final Key ID = Key.of("craftengine:id");
public static final Key HIDE_TOOLTIP = Key.of("craftengine:hide-tooltip");
public static final Key HIDE_TOOLTIP = Key.of("craftengine:hide_tooltip");
public static final Key FOOD = Key.of("craftengine:food");
public static final Key EXTERNAL = Key.of("craftengine:external");
public static final Key EQUIPPABLE = Key.of("craftengine:equippable");
public static final Key EQUIPPABLE_ASSET_ID = Key.of("craftengine:equippable-asset-id");
public static final Key EQUIPPABLE_ASSET_ID = Key.of("craftengine:equippable_asset_id");
public static final Key ENCHANTMENT = Key.of("craftengine:enchantment");
public static final Key ENCHANTMENTS = Key.of("craftengine:enchantments");
public static final Key DYED_COLOR = Key.of("craftengine:dyed-color");
public static final Key DISPLAY_NAME = Key.of("craftengine:display-name");
public static final Key CUSTOM_NAME = Key.of("craftengine:custom-name");
public static final Key CUSTOM_MODEL_DATA = Key.of("craftengine:custom-model-data");
public static final Key OVERWRITABLE_CUSTOM_MODEL_DATA = Key.of("craftengine:overwritable-custom-model-data");
public static final Key DYED_COLOR = Key.of("craftengine:dyed_color");
public static final Key DISPLAY_NAME = Key.of("craftengine:display_name");
public static final Key CUSTOM_NAME = Key.of("craftengine:custom_name");
public static final Key CUSTOM_MODEL_DATA = Key.of("craftengine:custom_model_data");
public static final Key OVERWRITABLE_CUSTOM_MODEL_DATA = Key.of("craftengine:overwritable_custom_model_data");
public static final Key COMPONENTS = Key.of("craftengine:components");
public static final Key COMPONENT = Key.of("craftengine:component");
public static final Key ATTRIBUTE_MODIFIERS = Key.of("craftengine:attribute-modifiers");
public static final Key ATTRIBUTE_MODIFIERS = Key.of("craftengine:attribute_modifiers");
public static final Key ATTRIBUTES = Key.of("craftengine:attributes");
public static final Key ARGUMENTS = Key.of("craftengine:arguments");
public static final Key VERSION = Key.of("craftengine:version");
public static final Key PDC = Key.of("craftengine:pdc");
public static final Key ITEM_NAME = Key.of("craftengine:item-name");
public static final Key OVERWRITABLE_ITEM_NAME = Key.of("craftengine:overwritable-item-name");
public static final Key JUKEBOX_PLAYABLE = Key.of("craftengine:jukebox-playable");
public static final Key REMOVE_COMPONENTS = Key.of("craftengine:remove-components");
public static final Key REMOVE_COMPONENT = Key.of("craftengine:remove-component");
public static final Key ITEM_NAME = Key.of("craftengine:item_name");
public static final Key OVERWRITABLE_ITEM_NAME = Key.of("craftengine:overwritable_item_name");
public static final Key JUKEBOX_PLAYABLE = Key.of("craftengine:jukebox_playable");
public static final Key REMOVE_COMPONENTS = Key.of("craftengine:remove_components");
public static final Key REMOVE_COMPONENT = Key.of("craftengine:remove_component");
public static final Key TAGS = Key.of("craftengine:tags");
public static final Key NBT = Key.of("craftengine:nbt");
public static final Key TOOLTIP_STYLE = Key.of("craftengine:tooltip-style");
public static final Key TOOLTIP_STYLE = Key.of("craftengine:tooltip_style");
public static final Key TRIM = Key.of("craftengine:trim");
public static final Key LORE = Key.of("craftengine:lore");
public static final Key UNBREAKABLE = Key.of("craftengine:unbreakable");
public static final Key DYNAMIC_LORE = Key.of("craftengine:dynamic-lore");
public static final Key OVERWRITABLE_LORE = Key.of("craftengine:overwritable-lore");
public static final Key MAX_DAMAGE = Key.of("craftengine:max-damage");
public static final Key BLOCK_STATE = Key.of("craftengine:block-state");
public static final Key DYNAMIC_LORE = Key.of("craftengine:dynamic_lore");
public static final Key OVERWRITABLE_LORE = Key.of("craftengine:overwritable_lore");
public static final Key MAX_DAMAGE = Key.of("craftengine:max_damage");
public static final Key BLOCK_STATE = Key.of("craftengine:block_state");
public static final Key CONDITIONAL = Key.of("craftengine:conditional");
public static final Key CONDITION = Key.of("craftengine:condition");
public static <T> void register(Key key, ItemDataModifierFactory<T> factory) {
((WritableRegistry<ItemDataModifierFactory<?>>) BuiltInRegistries.ITEM_DATA_MODIFIER_FACTORY)
public static <T> ItemProcessorType<T> register(Key key, ItemProcessorFactory<T> factory) {
ItemProcessorType<T> type = new ItemProcessorType<>(key, factory);
((WritableRegistry<ItemProcessorFactory<?>>) BuiltInRegistries.ITEM_DATA_MODIFIER_FACTORY)
.register(ResourceKey.create(Registries.ITEM_DATA_MODIFIER_FACTORY.location(), key), factory);
if (key.value().contains("-")) {
((WritableRegistry<ItemDataModifierFactory<?>>) BuiltInRegistries.ITEM_DATA_MODIFIER_FACTORY)
.register(ResourceKey.create(Registries.ITEM_DATA_MODIFIER_FACTORY.location(), new Key(key.namespace(), key.value().replace("-", "_"))), factory);
}
return type;
}
@SuppressWarnings("unchecked")
public static <I> void applyDataModifiers(Map<String, Object> dataSection, Consumer<ItemDataModifier<I>> callback) {
public static <I> void applyDataModifiers(Map<String, Object> dataSection, Consumer<ItemProcessor<I>> callback) {
ExceptionCollector<LocalizedResourceConfigException> errorCollector = new ExceptionCollector<>();
if (dataSection != null) {
for (Map.Entry<String, Object> dataEntry : dataSection.entrySet()) {
@@ -78,12 +76,13 @@ public final class ItemDataModifiers {
if (value == null) continue;
String key = dataEntry.getKey();
int idIndex = key.indexOf('#');
if (idIndex != -1) {
if (idIndex != -1)
key = key.substring(0, idIndex);
}
if (key.contains("-"))
key = key.replace("-", "_");
Optional.ofNullable(BuiltInRegistries.ITEM_DATA_MODIFIER_FACTORY.getValue(Key.withDefaultNamespace(key, Key.DEFAULT_NAMESPACE))).ifPresent(factory -> {
try {
callback.accept((ItemDataModifier<I>) factory.create(value));
callback.accept((ItemProcessor<I>) factory.create(value));
} catch (LocalizedResourceConfigException e) {
errorCollector.add(e);
}
@@ -96,51 +95,51 @@ public final class ItemDataModifiers {
public static void init() {}
static {
register(EXTERNAL, ExternalModifier.FACTORY);
register(LORE, LoreModifier.FACTORY);
register(DYNAMIC_LORE, DynamicLoreModifier.FACTORY);
register(OVERWRITABLE_LORE, OverwritableLoreModifier.FACTORY);
register(DYED_COLOR, DyedColorModifier.FACTORY);
register(TAGS, TagsModifier.FACTORY);
register(NBT, TagsModifier.FACTORY);
register(ATTRIBUTE_MODIFIERS, AttributeModifiersModifier.FACTORY);
register(ATTRIBUTES, AttributeModifiersModifier.FACTORY);
register(CUSTOM_MODEL_DATA, CustomModelDataModifier.FACTORY);
register(UNBREAKABLE, UnbreakableModifier.FACTORY);
register(ENCHANTMENT, EnchantmentsModifier.FACTORY);
register(ENCHANTMENTS, EnchantmentsModifier.FACTORY);
register(TRIM, TrimModifier.FACTORY);
register(HIDE_TOOLTIP, HideTooltipModifier.FACTORY);
register(ARGUMENTS, ArgumentsModifier.FACTORY);
register(OVERWRITABLE_ITEM_NAME, OverwritableItemNameModifier.FACTORY);
register(PDC, PDCModifier.FACTORY);
register(BLOCK_STATE, BlockStateModifier.FACTORY);
register(EXTERNAL, ExternalSourceProcessor.FACTORY);
register(LORE, LoreProcessor.FACTORY);
register(DYNAMIC_LORE, DynamicLoreProcessor.FACTORY);
register(OVERWRITABLE_LORE, OverwritableLoreProcessor.FACTORY);
register(DYED_COLOR, DyedColorProcessor.FACTORY);
register(TAGS, TagsProcessor.FACTORY);
register(NBT, TagsProcessor.FACTORY);
register(ATTRIBUTE_MODIFIERS, AttributeModifiersProcessor.FACTORY);
register(ATTRIBUTES, AttributeModifiersProcessor.FACTORY);
register(CUSTOM_MODEL_DATA, CustomModelDataProcessor.FACTORY);
register(UNBREAKABLE, UnbreakableProcessor.FACTORY);
register(ENCHANTMENT, EnchantmentsProcessor.FACTORY);
register(ENCHANTMENTS, EnchantmentsProcessor.FACTORY);
register(TRIM, TrimProcessor.FACTORY);
register(HIDE_TOOLTIP, HideTooltipProcessor.FACTORY);
register(ARGUMENTS, ArgumentsProcessor.FACTORY);
register(OVERWRITABLE_ITEM_NAME, OverwritableItemNameProcessor.FACTORY);
register(PDC, PDCProcessor.FACTORY);
register(BLOCK_STATE, BlockStateProcessor.FACTORY);
if (VersionHelper.isOrAbove1_20_5()) {
register(CUSTOM_NAME, CustomNameModifier.FACTORY);
register(ITEM_NAME, ItemNameModifier.FACTORY);
register(DISPLAY_NAME, ItemNameModifier.FACTORY);
register(COMPONENTS, ComponentsModifier.FACTORY);
register(COMPONENT, ComponentsModifier.FACTORY);
register(REMOVE_COMPONENTS, RemoveComponentModifier.FACTORY);
register(REMOVE_COMPONENT, RemoveComponentModifier.FACTORY);
register(FOOD, FoodModifier.FACTORY);
register(MAX_DAMAGE, MaxDamageModifier.FACTORY);
register(CUSTOM_NAME, CustomNameProcessor.FACTORY);
register(ITEM_NAME, ItemNameProcessor.FACTORY);
register(DISPLAY_NAME, ItemNameProcessor.FACTORY);
register(COMPONENTS, ComponentsProcessor.FACTORY);
register(COMPONENT, ComponentsProcessor.FACTORY);
register(REMOVE_COMPONENTS, RemoveComponentProcessor.FACTORY);
register(REMOVE_COMPONENT, RemoveComponentProcessor.FACTORY);
register(FOOD, FoodProcessor.FACTORY);
register(MAX_DAMAGE, MaxDamageProcessor.FACTORY);
} else {
register(CUSTOM_NAME, CustomNameModifier.FACTORY);
register(ITEM_NAME, CustomNameModifier.FACTORY);
register(DISPLAY_NAME, CustomNameModifier.FACTORY);
register(CUSTOM_NAME, CustomNameProcessor.FACTORY);
register(ITEM_NAME, CustomNameProcessor.FACTORY);
register(DISPLAY_NAME, CustomNameProcessor.FACTORY);
}
if (VersionHelper.isOrAbove1_21()) {
register(JUKEBOX_PLAYABLE, JukeboxSongModifier.FACTORY);
register(JUKEBOX_PLAYABLE, JukeboxSongProcessor.FACTORY);
}
if (VersionHelper.isOrAbove1_21_2()) {
register(TOOLTIP_STYLE, TooltipStyleModifier.FACTORY);
register(ITEM_MODEL, ItemModelModifier.FACTORY);
register(EQUIPPABLE, EquippableModifier.FACTORY);
register(TOOLTIP_STYLE, TooltipStyleProcessor.FACTORY);
register(ITEM_MODEL, ItemModelProcessor.FACTORY);
register(EQUIPPABLE, EquippableProcessor.FACTORY);
}
if (VersionHelper.PREMIUM) {
register(CONDITIONAL, ConditionalModifier.FACTORY);
register(CONDITION, ConditionalModifier.FACTORY);
register(CONDITIONAL, ConditionalProcessor.FACTORY);
register(CONDITION, ConditionalProcessor.FACTORY);
}
}
}

View File

@@ -1,4 +1,4 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
@@ -9,11 +9,11 @@ import net.momirealms.sparrow.nbt.CompoundTag;
import java.util.Optional;
public class ItemVersionModifier<I> implements ItemDataModifier<I> {
public class ItemVersionProcessor<I> implements ItemProcessor<I> {
public static final String VERSION_TAG = "craftengine:version";
private final int version;
public ItemVersionModifier(int version) {
public ItemVersionProcessor(int version) {
this.version = version;
}
@@ -21,11 +21,6 @@ public class ItemVersionModifier<I> implements ItemDataModifier<I> {
return this.version;
}
@Override
public Key type() {
return ItemDataModifiers.VERSION;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
if (VersionHelper.isOrAbove1_20_5()) {

View File

@@ -0,0 +1,35 @@
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.item.data.JukeboxPlayable;
import net.momirealms.craftengine.core.util.Key;
public class JukeboxSongProcessor<I> implements ItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final JukeboxPlayable song;
public JukeboxSongProcessor(JukeboxPlayable song) {
this.song = song;
}
public JukeboxPlayable song() {
return song;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
item.jukeboxSong(this.song);
return item;
}
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemProcessor<I> create(Object arg) {
String song = arg.toString();
return new JukeboxSongProcessor<>(new JukeboxPlayable(song, true));
}
}
}

View File

@@ -1,27 +1,22 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.plugin.context.number.NumberProvider;
import net.momirealms.craftengine.core.plugin.context.number.NumberProviders;
import net.momirealms.craftengine.core.util.Key;
import org.jetbrains.annotations.Nullable;
public class MaxDamageModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class MaxDamageProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final NumberProvider argument;
public MaxDamageModifier(NumberProvider argument) {
public MaxDamageProcessor(NumberProvider argument) {
this.argument = argument;
}
@Override
public Key type() {
return ItemDataModifiers.MAX_DAMAGE;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
item.maxDamage(argument.getInt(context));
@@ -33,12 +28,12 @@ public class MaxDamageModifier<I> implements SimpleNetworkItemDataModifier<I> {
return DataComponentKeys.MAX_DAMAGE;
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
NumberProvider numberProvider = NumberProviders.fromObject(arg);
return new MaxDamageModifier<>(numberProvider);
return new MaxDamageProcessor<>(numberProvider);
}
}
}

View File

@@ -1,18 +1,18 @@
package net.momirealms.craftengine.core.item.modifier;
package net.momirealms.craftengine.core.item.processor;
import net.momirealms.craftengine.core.item.DataComponentKeys;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
import net.momirealms.craftengine.core.item.ItemProcessorFactory;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import org.jetbrains.annotations.Nullable;
public class OverwritableCustomModelDataModifier<I> implements SimpleNetworkItemDataModifier<I> {
public static final Factory<?> FACTORY = new Factory<>();
public class OverwritableCustomModelDataProcessor<I> implements SimpleNetworkItemProcessor<I> {
public static final ItemProcessorFactory<?> FACTORY = new Factory<>();
private final int argument;
public OverwritableCustomModelDataModifier(int argument) {
public OverwritableCustomModelDataProcessor(int argument) {
this.argument = argument;
}
@@ -20,11 +20,6 @@ public class OverwritableCustomModelDataModifier<I> implements SimpleNetworkItem
return this.argument;
}
@Override
public Key type() {
return ItemDataModifiers.OVERWRITABLE_CUSTOM_MODEL_DATA;
}
@Override
public Item<I> apply(Item<I> item, ItemBuildContext context) {
if (item.customModelData().isPresent()) return item;
@@ -47,12 +42,12 @@ public class OverwritableCustomModelDataModifier<I> implements SimpleNetworkItem
return "CustomModelData";
}
public static class Factory<I> implements ItemDataModifierFactory<I> {
private static class Factory<I> implements ItemProcessorFactory<I> {
@Override
public ItemDataModifier<I> create(Object arg) {
public ItemProcessor<I> create(Object arg) {
int customModelData = ResourceConfigUtils.getAsInt(arg, "custom-model-data");
return new OverwritableCustomModelDataModifier<>(customModelData);
return new OverwritableCustomModelDataProcessor<>(customModelData);
}
}
}

Some files were not shown because too many files have changed in this diff Show More