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:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) -> {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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")));
|
||||
|
||||
@@ -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")));
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
// 如果拦截物品的描述名称等
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
// 如果拦截物品的描述名称等
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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) {
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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()));
|
||||
}
|
||||
|
||||
// 构建自定义物品
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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());
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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]));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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 + "'");
|
||||
@@ -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"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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()) {
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
Reference in New Issue
Block a user