9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-31 21:06:31 +00:00
This commit is contained in:
jhqwqmc
2025-12-28 10:41:31 +08:00
parent c610cc5d38
commit 2eda5e2863
195 changed files with 960 additions and 951 deletions

View File

@@ -7,7 +7,6 @@ import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
import net.momirealms.craftengine.bukkit.util.DirectionUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.behavior.IsPathFindableBlockBehavior;
import net.momirealms.craftengine.core.block.properties.IntegerProperty;
@@ -22,7 +21,7 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class AttachedStemBlockBehavior extends BukkitBlockBehavior implements IsPathFindableBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<AttachedStemBlockBehavior> FACTORY = new Factory();
private final Property<HorizontalDirection> facingProperty;
private final Key fruit;
private final Key stem;
@@ -85,10 +84,10 @@ public class AttachedStemBlockBehavior extends BukkitBlockBehavior implements Is
return null;
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<AttachedStemBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public AttachedStemBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
@SuppressWarnings("unchecked")
Property<HorizontalDirection> facingProperty = (Property<HorizontalDirection>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("facing"), "warning.config.block.behavior.attached_stem.missing_facing");

View File

@@ -5,7 +5,6 @@ import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine;
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.behavior.FallOnBlockBehavior;
import net.momirealms.craftengine.core.plugin.CraftEngine;
@@ -18,7 +17,7 @@ import java.util.Map;
import java.util.concurrent.Callable;
public class BouncingBlockBehavior extends BukkitBlockBehavior implements FallOnBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<BouncingBlockBehavior> FACTORY = new Factory();
private final double bounceHeight;
private final boolean syncPlayerPosition;
private final double fallDamageMultiplier;
@@ -77,10 +76,10 @@ public class BouncingBlockBehavior extends BukkitBlockBehavior implements FallOn
}
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<BouncingBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public BouncingBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
double bounceHeight = ResourceConfigUtils.getAsDouble(arguments.getOrDefault("bounce-height", 0.66), "bounce-height");
boolean syncPlayerPosition = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("sync-player-position", true), "sync-player-position");
double fallDamageMultiplier = ResourceConfigUtils.getAsDouble(arguments.getOrDefault("fall-damage-multiplier", 0.5), "fall-damage-multiplier");

View File

@@ -8,7 +8,6 @@ import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
import net.momirealms.craftengine.bukkit.util.DirectionUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.BooleanProperty;
import net.momirealms.craftengine.core.block.properties.Property;
@@ -19,7 +18,7 @@ import java.util.Map;
import java.util.concurrent.Callable;
public class BuddingBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<BuddingBlockBehavior> FACTORY = new Factory();
private final float growthChance;
private final List<Key> blocks;
@@ -86,10 +85,10 @@ public class BuddingBlockBehavior extends BukkitBlockBehavior {
&& FastNMS.INSTANCE.field$FluidState$amount(FastNMS.INSTANCE.field$BlockBehaviour$BlockStateBase$fluidState(state)) == 8;
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<BuddingBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public BuddingBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
float growthChance = ResourceConfigUtils.getAsFloat(arguments.getOrDefault("growth-chance", 0.2), "growth-chance");
List<Key> blocks = new ObjectArrayList<>();
MiscUtils.getAsStringList(arguments.get("blocks")).forEach(s -> blocks.add(Key.of(s)));

View File

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

View File

@@ -6,7 +6,6 @@ import net.momirealms.craftengine.bukkit.util.BlockTags;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
@@ -20,7 +19,7 @@ import org.bukkit.Registry;
import java.util.*;
public class BushBlockBehavior extends AbstractCanSurviveBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<BushBlockBehavior> FACTORY = new Factory();
protected final List<Object> tagsCanSurviveOn;
protected final Set<Object> blockStatesCanSurviveOn;
protected final Set<String> customBlocksCansSurviveOn;
@@ -39,10 +38,10 @@ public class BushBlockBehavior extends AbstractCanSurviveBlockBehavior {
this.customBlocksCansSurviveOn = customBlocksCansSurviveOn;
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<BushBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public BushBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
Tuple<List<Object>, Set<Object>, Set<String>> tuple = readTagsAndState(arguments, false);
boolean stackable = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("stackable", false), "stackable");
int maxHeight = ResourceConfigUtils.getAsInt(arguments.getOrDefault("max-height", 0), "max-height");

View File

@@ -11,7 +11,6 @@ import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.UpdateOption;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.BooleanProperty;
import net.momirealms.craftengine.core.block.properties.Property;
@@ -29,7 +28,7 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class ButtonBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<ButtonBlockBehavior> FACTORY = new Factory();
private final BooleanProperty poweredProperty;
private final int ticksToStayPressed;
private final boolean canButtonBeActivatedByArrows;
@@ -197,11 +196,11 @@ public class ButtonBlockBehavior extends BukkitBlockBehavior {
FastNMS.INSTANCE.method$LevelAccessor$gameEvent(level, player, gameEvent, pos);
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<ButtonBlockBehavior> {
@SuppressWarnings({"unchecked", "DuplicatedCode"})
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public ButtonBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
BooleanProperty powered = (BooleanProperty) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("powered"), "warning.config.block.behavior.button.missing_powered");
int ticksToStayPressed = ResourceConfigUtils.getAsInt(arguments.getOrDefault("ticks-to-stay-pressed", 30), "ticks-to-stay-pressed");
boolean canButtonBeActivatedByArrows = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("can-be-activated-by-arrows", true), "can-be-activated-by-arrows");

View File

@@ -5,7 +5,6 @@ import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
import net.momirealms.craftengine.core.block.BlockStateWrapper;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.UpdateOption;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.util.LazyReference;
@@ -19,7 +18,7 @@ import java.util.Map;
import java.util.concurrent.Callable;
public class ChangeOverTimeBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<ChangeOverTimeBlockBehavior> FACTORY = new Factory();
private final float changeSpeed;
private final String nextBlock;
private final LazyReference<BlockStateWrapper> lazyState;
@@ -64,10 +63,10 @@ public class ChangeOverTimeBlockBehavior extends BukkitBlockBehavior {
});
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<ChangeOverTimeBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public ChangeOverTimeBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
float changeSpeed = ResourceConfigUtils.getAsFloat(arguments.getOrDefault("change-speed", 0.05688889F), "change-speed");
String nextBlock = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.getOrDefault("next-block", "minecraft:air"), "warning.config.block.behavior.change_over_time.missing_next_block");
List<String> excludedProperties = MiscUtils.getAsStringList(arguments.get("excluded-properties"));

View File

@@ -4,7 +4,6 @@ import net.momirealms.craftengine.bukkit.nms.FastNMS;
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections;
import net.momirealms.craftengine.bukkit.util.KeyUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.sound.SoundData;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
@@ -14,7 +13,7 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class ChimeBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<ChimeBlockBehavior> FACTORY = new Factory();
private final SoundData hitSound;
public ChimeBlockBehavior(CustomBlock customBlock, SoundData hitSound) {
@@ -29,10 +28,10 @@ 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());
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<ChimeBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public ChimeBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
SoundData hitSound = SoundData.create(ResourceConfigUtils.requireNonNullOrThrow(
Optional.ofNullable(ResourceConfigUtils.getAsMap(arguments.get("sounds"), "sounds"))
.map(sounds -> ResourceConfigUtils.get(sounds, "projectile-hit", "chime"))

View File

@@ -11,7 +11,6 @@ import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.UpdateOption;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.parser.BlockStateParser;
import net.momirealms.craftengine.core.plugin.CraftEngine;
@@ -27,7 +26,7 @@ import java.util.Map;
import java.util.concurrent.Callable;
public class ConcretePowderBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<ConcretePowderBlockBehavior> FACTORY = new Factory();
private final LazyReference<@Nullable ImmutableBlockState> targetBlock;
public ConcretePowderBlockBehavior(CustomBlock block, String targetBlock) {
@@ -125,10 +124,10 @@ public class ConcretePowderBlockBehavior extends BukkitBlockBehavior {
return flag;
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<ConcretePowderBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public ConcretePowderBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
String solidBlock = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("solid-block"), "warning.config.block.behavior.concrete.missing_solid");
return new ConcretePowderBlockBehavior(block, solidBlock);
}

View File

@@ -9,7 +9,6 @@ import net.momirealms.craftengine.bukkit.util.ParticleUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.UpdateOption;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.IntegerProperty;
import net.momirealms.craftengine.core.block.properties.Property;
@@ -38,7 +37,7 @@ import java.util.concurrent.Callable;
@SuppressWarnings("DuplicatedCode")
public class CropBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<CropBlockBehavior> FACTORY = new Factory();
private final IntegerProperty ageProperty;
private final float growSpeed;
private final int minGrowLight;
@@ -188,11 +187,11 @@ public class CropBlockBehavior extends BukkitBlockBehavior {
}
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<CropBlockBehavior> {
@SuppressWarnings("unchecked")
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public CropBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
Property<Integer> ageProperty = (Property<Integer>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("age"), "warning.config.block.behavior.crop.missing_age");
int minGrowLight = ResourceConfigUtils.getAsInt(arguments.getOrDefault("light-requirement", 9), "light-requirement");
float growSpeed = ResourceConfigUtils.getAsFloat(arguments.getOrDefault("grow-speed", 0.125f), "grow-speed");

View File

@@ -9,7 +9,6 @@ import net.momirealms.craftengine.bukkit.util.DirectionUtils;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.Property;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
@@ -26,7 +25,7 @@ import java.util.*;
import java.util.concurrent.Callable;
public class DirectionalAttachedBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<DirectionalAttachedBlockBehavior> FACTORY = new Factory();
private final Property<?> facingProperty;
private final boolean isSixDirection;
private final List<Object> tagsCanSurviveOn;
@@ -132,10 +131,10 @@ public class DirectionalAttachedBlockBehavior extends BukkitBlockBehavior {
return null;
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<DirectionalAttachedBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public DirectionalAttachedBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
Property<?> facing = ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("facing"), "warning.config.block.behavior.directional_attached.missing_facing");
boolean isHorizontalDirection = facing.valueClass() == HorizontalDirection.class;
boolean isDirection = facing.valueClass() == Direction.class;

View File

@@ -13,7 +13,6 @@ import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.UpdateOption;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.behavior.IsPathFindableBlockBehavior;
import net.momirealms.craftengine.core.block.properties.Property;
@@ -48,7 +47,7 @@ import java.util.concurrent.Callable;
@SuppressWarnings("DuplicatedCode")
public class DoorBlockBehavior extends AbstractCanSurviveBlockBehavior implements IsPathFindableBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<DoorBlockBehavior> FACTORY = new Factory();
private final Property<DoubleBlockHalf> halfProperty;
private final Property<HorizontalDirection> facingProperty;
private final Property<DoorHinge> hingeProperty;
@@ -344,9 +343,9 @@ public class DoorBlockBehavior extends AbstractCanSurviveBlockBehavior implement
}
@SuppressWarnings("unchecked")
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<DoorBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public DoorBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
Property<DoubleBlockHalf> half = (Property<DoubleBlockHalf>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("half"), "warning.config.block.behavior.door.missing_half");
Property<HorizontalDirection> facing = (Property<HorizontalDirection>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("facing"), "warning.config.block.behavior.door.missing_facing");
Property<DoorHinge> hinge = (Property<DoorHinge>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("hinge"), "warning.config.block.behavior.door.missing_hinge");

View File

@@ -11,7 +11,6 @@ import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.UpdateOption;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.Property;
import net.momirealms.craftengine.core.block.properties.type.DoubleBlockHalf;
@@ -27,7 +26,7 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class DoubleHighBlockBehavior extends AbstractCanSurviveBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<DoubleHighBlockBehavior> FACTORY = new Factory();
private final Property<DoubleBlockHalf> halfProperty;
public DoubleHighBlockBehavior(CustomBlock customBlock, Property<DoubleBlockHalf> halfProperty) {
@@ -71,8 +70,13 @@ public class DoubleHighBlockBehavior extends AbstractCanSurviveBlockBehavior {
Object state = args[2];
Object player = args[3];
ImmutableBlockState blockState = BlockStateUtils.getOptionalCustomBlockState(state).orElse(null);
if (blockState == null || blockState.isEmpty()) return superMethod.call();
if (blockState == null || blockState.isEmpty()) {
return superMethod.call();
}
BukkitServerPlayer cePlayer = BukkitAdaptors.adapt(FastNMS.INSTANCE.method$ServerPlayer$getBukkitEntity(player));
if (cePlayer == null) {
return superMethod.call();
}
Item<ItemStack> item = cePlayer.getItemInHand(InteractionHand.MAIN_HAND);
if (cePlayer.canInstabuild() || !BlockStateUtils.isCorrectTool(blockState, item)) {
preventDropFromBottomPart(level, pos, blockState, player);
@@ -140,10 +144,10 @@ public class DoubleHighBlockBehavior extends AbstractCanSurviveBlockBehavior {
}
@SuppressWarnings("unchecked")
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<DoubleHighBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public DoubleHighBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
Property<DoubleBlockHalf> half = (Property<DoubleBlockHalf>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("half"), "warning.config.block.behavior.double_high.missing_half");
return new DoubleHighBlockBehavior(block, half);
}

View File

@@ -8,7 +8,6 @@ import net.momirealms.craftengine.bukkit.world.BukkitWorldManager;
import net.momirealms.craftengine.core.block.BlockSettings;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.loot.LootContext;
@@ -33,7 +32,7 @@ import java.util.concurrent.Callable;
import java.util.function.Predicate;
public class DropExperienceBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<DropExperienceBlockBehavior> FACTORY = new Factory();
private final NumberProvider amount;
private final Predicate<Context> condition;
@@ -87,10 +86,10 @@ public class DropExperienceBlockBehavior extends BukkitBlockBehavior {
world.dropExp(dropPos, finalAmount);
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<DropExperienceBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public DropExperienceBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
NumberProvider amount = NumberProviders.fromObject(ResourceConfigUtils.get(arguments, "amount", "count"));
List<Condition<Context>> conditionList = ResourceConfigUtils.parseConfigAsList(ResourceConfigUtils.get(arguments, "conditions", "condition"), CommonConditions::fromMap);
return new DropExperienceBlockBehavior(block, amount, MiscUtils.allOf(conditionList));

View File

@@ -8,7 +8,6 @@ import net.momirealms.craftengine.bukkit.util.DirectionUtils;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
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;
@@ -26,7 +25,7 @@ import java.util.Set;
import java.util.concurrent.Callable;
public class FaceAttachedHorizontalDirectionalBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<FaceAttachedHorizontalDirectionalBlockBehavior> FACTORY = new Factory();
private final Property<AnchorType> anchorTypeProperty;
private final Property<HorizontalDirection> facingProperty;
private final List<Object> tagsCanSurviveOn;
@@ -135,11 +134,11 @@ public class FaceAttachedHorizontalDirectionalBlockBehavior extends BukkitBlockB
};
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<FaceAttachedHorizontalDirectionalBlockBehavior> {
@SuppressWarnings("unchecked")
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public FaceAttachedHorizontalDirectionalBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
Property<AnchorType> anchorType = (Property<AnchorType>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("face"), "warning.config.block.behavior.face_attached_horizontal_directional.missing_face");
Property<HorizontalDirection> facing = (Property<HorizontalDirection>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("facing"), "warning.config.block.behavior.face_attached_horizontal_directional.missing_facing");
Tuple<List<Object>, Set<Object>, Set<String>> tuple = DirectionalAttachedBlockBehavior.readTagsAndState(arguments);

View File

@@ -10,7 +10,6 @@ import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.sound.SoundData;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
@@ -22,7 +21,7 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class FallingBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<FallingBlockBehavior> FACTORY = new Factory();
private final float hurtAmount;
private final int maxHurt;
private final SoundData landSound;
@@ -112,11 +111,11 @@ public class FallingBlockBehavior extends BukkitBlockBehavior {
}
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<FallingBlockBehavior> {
@SuppressWarnings("unchecked")
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public FallingBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
float hurtAmount = ResourceConfigUtils.getAsFloat(arguments.getOrDefault("hurt-amount", -1f), "hurt-amount");
int hurtMax = ResourceConfigUtils.getAsInt(arguments.getOrDefault("max-hurt", -1), "max-hurt");
Map<String, Object> sounds = (Map<String, Object>) arguments.get("sounds");

View File

@@ -9,7 +9,6 @@ import net.momirealms.craftengine.bukkit.util.*;
import net.momirealms.craftengine.core.block.BlockStateWrapper;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.behavior.IsPathFindableBlockBehavior;
import net.momirealms.craftengine.core.block.properties.BooleanProperty;
@@ -32,7 +31,7 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class FenceBlockBehavior extends BukkitBlockBehavior implements IsPathFindableBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<FenceBlockBehavior> FACTORY = new Factory();
private final BooleanProperty northProperty;
private final BooleanProperty eastProperty;
private final BooleanProperty southProperty;
@@ -137,10 +136,10 @@ public class FenceBlockBehavior extends BukkitBlockBehavior implements IsPathFin
return superMethod.call();
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<FenceBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public FenceBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
BooleanProperty north = (BooleanProperty) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("north"), "warning.config.block.behavior.fence.missing_north");
BooleanProperty east = (BooleanProperty) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("east"), "warning.config.block.behavior.fence.missing_east");
BooleanProperty south = (BooleanProperty) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("south"), "warning.config.block.behavior.fence.missing_south");

View File

@@ -14,7 +14,6 @@ import net.momirealms.craftengine.core.block.BlockStateWrapper;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.UpdateOption;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.behavior.IsPathFindableBlockBehavior;
import net.momirealms.craftengine.core.block.properties.Property;
@@ -46,7 +45,7 @@ import java.util.concurrent.Callable;
@SuppressWarnings("DuplicatedCode")
public class FenceGateBlockBehavior extends BukkitBlockBehavior implements IsPathFindableBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<FenceGateBlockBehavior> FACTORY = new Factory();
private final Property<HorizontalDirection> facingProperty;
private final Property<Boolean> inWallProperty;
private final Property<Boolean> openProperty;
@@ -280,11 +279,11 @@ public class FenceGateBlockBehavior extends BukkitBlockBehavior implements IsPat
return facing != null && facing.axis() == direction.toDirection().clockWise().axis();
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<FenceGateBlockBehavior> {
@Override
@SuppressWarnings("unchecked")
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public FenceGateBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
Property<HorizontalDirection> facing = (Property<HorizontalDirection>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("facing"), "warning.config.block.behavior.fence_gate.missing_facing");
Property<Boolean> inWall = (Property<Boolean>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("in_wall"), "warning.config.block.behavior.fence_gate.missing_in_wall");
Property<Boolean> open = (Property<Boolean>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("open"), "warning.config.block.behavior.fence_gate.missing_open");

View File

@@ -11,7 +11,6 @@ import net.momirealms.craftengine.bukkit.util.ParticleUtils;
import net.momirealms.craftengine.bukkit.world.BukkitExistingBlock;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.entity.player.InteractionResult;
import net.momirealms.craftengine.core.entity.player.Player;
@@ -29,7 +28,7 @@ import java.util.Optional;
@SuppressWarnings("DuplicatedCode")
public class GrassBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<GrassBlockBehavior> FACTORY = new Factory();
private final Key feature;
public GrassBlockBehavior(CustomBlock block, Key feature) {
@@ -155,9 +154,9 @@ public class GrassBlockBehavior extends BukkitBlockBehavior {
}
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<GrassBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public GrassBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
String feature = ResourceConfigUtils.requireNonEmptyStringOrThrow(ResourceConfigUtils.get(arguments, "feature", "placed-feature"), "warning.config.block.behavior.grass.missing_feature");
return new GrassBlockBehavior(block, Key.of(feature));
}

View File

@@ -8,7 +8,6 @@ import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.behavior.IsPathFindableBlockBehavior;
import net.momirealms.craftengine.core.block.properties.BooleanProperty;
@@ -20,7 +19,7 @@ import java.util.Map;
import java.util.concurrent.Callable;
public class HangableBlockBehavior extends BukkitBlockBehavior implements IsPathFindableBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<HangableBlockBehavior> FACTORY = new Factory();
private final BooleanProperty hangingProperty;
public HangableBlockBehavior(CustomBlock customBlock, BooleanProperty hangingProperty) {
@@ -75,10 +74,10 @@ public class HangableBlockBehavior extends BukkitBlockBehavior implements IsPath
return false;
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<HangableBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public HangableBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
BooleanProperty hanging = (BooleanProperty) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("hanging"), "warning.config.block.behavior.hangable.missing_hanging");
return new HangableBlockBehavior(block, hanging);
}

View File

@@ -3,7 +3,6 @@ package net.momirealms.craftengine.bukkit.block.behavior;
import net.momirealms.craftengine.bukkit.nms.FastNMS;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import net.momirealms.craftengine.core.util.Tuple;
@@ -13,7 +12,7 @@ import java.util.Map;
import java.util.Set;
public class HangingBlockBehavior extends BushBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<HangingBlockBehavior> FACTORY = new Factory();
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,10 +25,10 @@ public class HangingBlockBehavior extends BushBlockBehavior {
return mayPlaceOn(belowState, world, belowPos);
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<HangingBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public HangingBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
Tuple<List<Object>, Set<Object>, Set<String>> tuple = readTagsAndState(arguments, true);
boolean stackable = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("stackable", false), "stackable");
int delay = ResourceConfigUtils.getAsInt(arguments.getOrDefault("delay", 0), "delay");

View File

@@ -5,7 +5,6 @@ import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.Property;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
@@ -17,7 +16,7 @@ import java.util.concurrent.Callable;
@SuppressWarnings("DuplicatedCode")
public class LampBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<LampBlockBehavior> FACTORY = new Factory();
private final Property<Boolean> litProperty;
public LampBlockBehavior(CustomBlock block, Property<Boolean> litProperty) {
@@ -70,9 +69,9 @@ public class LampBlockBehavior extends BukkitBlockBehavior {
}
@SuppressWarnings("unchecked")
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<LampBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public LampBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
Property<Boolean> lit = (Property<Boolean>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("lit"), "warning.config.block.behavior.lamp.missing_lit");
return new LampBlockBehavior(block, lit);
}

View File

@@ -8,7 +8,6 @@ import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.UpdateOption;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.Property;
import net.momirealms.craftengine.core.util.Direction;
@@ -24,7 +23,7 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class LeavesBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<LeavesBlockBehavior> 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,10 +159,10 @@ public class LeavesBlockBehavior extends BukkitBlockBehavior {
}
@SuppressWarnings("unchecked")
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<LeavesBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public LeavesBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
Property<Boolean> persistent = (Property<Boolean>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("persistent"), "warning.config.block.behavior.leaves.missing_persistent");
Property<Integer> distance = (Property<Integer>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("distance"), "warning.config.block.behavior.leaves.missing_distance");
int actual = distance.possibleValues().getLast();

View File

@@ -4,7 +4,6 @@ import net.momirealms.craftengine.bukkit.nms.FastNMS;
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MFluids;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.UpdateOption;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.behavior.PlaceLiquidBlockBehavior;
import net.momirealms.craftengine.core.world.WorldEvents;
@@ -13,7 +12,7 @@ import java.util.Map;
import java.util.concurrent.Callable;
public class LiquidFlowableBlockBehavior extends BukkitBlockBehavior implements PlaceLiquidBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<LiquidFlowableBlockBehavior> FACTORY = new Factory();
public LiquidFlowableBlockBehavior(CustomBlock customBlock) {
super(customBlock);
@@ -40,10 +39,10 @@ public class LiquidFlowableBlockBehavior extends BukkitBlockBehavior implements
return true;
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<LiquidFlowableBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public LiquidFlowableBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
return new LiquidFlowableBlockBehavior(block);
}
}

View File

@@ -12,7 +12,6 @@ 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;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.IntegerProperty;
import net.momirealms.craftengine.core.entity.player.InteractionHand;
@@ -28,7 +27,7 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class MultiHighBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<MultiHighBlockBehavior> FACTORY = new Factory();
public final IntegerProperty highProperty;
public MultiHighBlockBehavior(CustomBlock customBlock, IntegerProperty highProperty) {
@@ -240,10 +239,10 @@ public class MultiHighBlockBehavior extends BukkitBlockBehavior {
return state.with(property, property.min);
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<MultiHighBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public MultiHighBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
IntegerProperty high = (IntegerProperty) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("high"), "warning.config.block.behavior.multi_high.missing_high");
return new MultiHighBlockBehavior(block, high);
}

View File

@@ -7,7 +7,6 @@ import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
@@ -20,7 +19,7 @@ import java.util.Optional;
public class NearLiquidBlockBehavior extends AbstractCanSurviveBlockBehavior {
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 BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<NearLiquidBlockBehavior> FACTORY = new Factory();
private final boolean onWater;
private final boolean onLava;
private final boolean stackable;
@@ -42,10 +41,10 @@ public class NearLiquidBlockBehavior extends AbstractCanSurviveBlockBehavior {
return this.onLava;
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<NearLiquidBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public NearLiquidBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
List<String> liquidTypes = MiscUtils.getAsStringList(arguments.getOrDefault("liquid-type", List.of("water")));
boolean stackable = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("stackable", false), "stackable");
int delay = ResourceConfigUtils.getAsInt(arguments.getOrDefault("delay", 0), "delay");

View File

@@ -7,7 +7,6 @@ import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
@@ -17,7 +16,7 @@ import java.util.Map;
import java.util.Optional;
public class OnLiquidBlockBehavior extends AbstractCanSurviveBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<OnLiquidBlockBehavior> FACTORY = new Factory();
private final boolean onWater;
private final boolean onLava;
private final boolean stackable;
@@ -37,9 +36,9 @@ public class OnLiquidBlockBehavior extends AbstractCanSurviveBlockBehavior {
return this.onLava;
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<OnLiquidBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public OnLiquidBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
List<String> liquidTypes = MiscUtils.getAsStringList(arguments.getOrDefault("liquid-type", List.of("water")));
boolean stackable = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("stackable", false), "stackable");
int delay = ResourceConfigUtils.getAsInt(arguments.getOrDefault("delay", 0), "delay");

View File

@@ -12,7 +12,6 @@ import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.bukkit.world.BukkitWorldManager;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.Property;
import net.momirealms.craftengine.core.sound.SoundData;
@@ -31,7 +30,7 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class PressurePlateBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<PressurePlateBlockBehavior> FACTORY = new Factory();
private final Property<Boolean> poweredProperty;
private final SoundData onSound;
private final SoundData offSound;
@@ -220,11 +219,11 @@ public class PressurePlateBlockBehavior extends BukkitBlockBehavior {
return true;
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<PressurePlateBlockBehavior> {
@SuppressWarnings("unchecked")
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public PressurePlateBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
Property<Boolean> powered = (Property<Boolean>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("powered"), "warning.config.block.behavior.pressure_plate.missing_powered");
PressurePlateSensitivity pressurePlateSensitivity = PressurePlateSensitivity.byName(arguments.getOrDefault("sensitivity", "everything").toString());
int pressedTime = ResourceConfigUtils.getAsInt(arguments.getOrDefault("pressed-time", 20), "pressed-time");

View File

@@ -11,7 +11,6 @@ import net.momirealms.craftengine.bukkit.util.ParticleUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.UpdateOption;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.IntegerProperty;
import net.momirealms.craftengine.core.block.properties.Property;
@@ -34,7 +33,7 @@ import java.util.concurrent.Callable;
@SuppressWarnings("DuplicatedCode")
public class SaplingBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<SaplingBlockBehavior> FACTORY = new Factory();
private final Key feature;
private final IntegerProperty stageProperty;
private final double boneMealSuccessChance;
@@ -169,11 +168,11 @@ public class SaplingBlockBehavior extends BukkitBlockBehavior {
return InteractionResult.SUCCESS;
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<SaplingBlockBehavior> {
@SuppressWarnings("unchecked")
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public SaplingBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
String feature = ResourceConfigUtils.requireNonEmptyStringOrThrow(ResourceConfigUtils.get(arguments, "feature", "configured-feature"), "warning.config.block.behavior.sapling.missing_feature");
Property<Integer> stageProperty = (Property<Integer>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("stage"), "warning.config.block.behavior.sapling.missing_stage");
double boneMealSuccessChance = ResourceConfigUtils.getAsDouble(arguments.getOrDefault("bone-meal-success-chance", 0.45), "bone-meal-success-chance");

View File

@@ -5,7 +5,6 @@ import net.momirealms.craftengine.bukkit.block.entity.SeatBlockEntity;
import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.behavior.EntityBlockBehavior;
import net.momirealms.craftengine.core.block.entity.BlockEntity;
@@ -21,7 +20,7 @@ import net.momirealms.craftengine.core.world.context.UseOnContext;
import java.util.Map;
public class SeatBlockBehavior extends BukkitBlockBehavior implements EntityBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<SeatBlockBehavior> FACTORY = new Factory();
private final Property<HorizontalDirection> directionProperty;
private final SeatConfig[] seats;
@@ -64,11 +63,11 @@ public class SeatBlockBehavior extends BukkitBlockBehavior implements EntityBloc
}
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<SeatBlockBehavior> {
@SuppressWarnings("unchecked")
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public SeatBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
Property<HorizontalDirection> directionProperty = null;
Property<?> facing = block.getProperty("facing");
if (facing != null && facing.valueClass() == HorizontalDirection.class) {

View File

@@ -4,7 +4,6 @@ import net.momirealms.craftengine.bukkit.block.entity.BukkitBlockEntityTypes;
import net.momirealms.craftengine.bukkit.block.entity.SimpleParticleBlockEntity;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.behavior.EntityBlockBehavior;
import net.momirealms.craftengine.core.block.entity.BlockEntity;
@@ -19,7 +18,7 @@ import java.util.List;
import java.util.Map;
public class SimpleParticleBlockBehavior extends BukkitBlockBehavior implements EntityBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<SimpleParticleBlockBehavior> FACTORY = new Factory();
public final ParticleConfig[] particles;
public final int tickInterval;
@@ -53,10 +52,10 @@ public class SimpleParticleBlockBehavior extends BukkitBlockBehavior implements
return EntityBlockBehavior.createTickerHelper(SimpleParticleBlockEntity::tick);
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<SimpleParticleBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public SimpleParticleBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
List<ParticleConfig> particles = ResourceConfigUtils.parseConfigAsList(ResourceConfigUtils.get(arguments, "particles", "particle"), ParticleConfig::fromMap$blockEntity);
int tickInterval = ResourceConfigUtils.getAsInt(arguments.getOrDefault("tick-interval", 10), "tick-interval");
return new SimpleParticleBlockBehavior(block, particles.toArray(new ParticleConfig[0]), tickInterval);

View File

@@ -10,7 +10,6 @@ import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.bukkit.world.BukkitWorldManager;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.behavior.EntityBlockBehavior;
import net.momirealms.craftengine.core.block.entity.BlockEntity;
@@ -38,7 +37,7 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class SimpleStorageBlockBehavior extends BukkitBlockBehavior implements EntityBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<SimpleStorageBlockBehavior> FACTORY = new Factory();
private final String containerTitle;
private final int rows;
private final SoundData openSound;
@@ -198,11 +197,11 @@ public class SimpleStorageBlockBehavior extends BukkitBlockBehavior implements E
return null;
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<SimpleStorageBlockBehavior> {
@SuppressWarnings("unchecked")
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public SimpleStorageBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
String title = arguments.getOrDefault("title", "").toString();
int rows = MiscUtils.clamp(ResourceConfigUtils.getAsInt(arguments.getOrDefault("rows", 1), "rows"), 1, 6);
Map<String, Object> sounds = (Map<String, Object>) arguments.get("sounds");

View File

@@ -27,7 +27,7 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class SlabBlockBehavior extends BukkitBlockBehavior implements IsPathFindableBlockBehavior, CanBeReplacedBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<SlabBlockBehavior> FACTORY = new Factory();
private final Property<SlabType> typeProperty;
public SlabBlockBehavior(CustomBlock block, Property<SlabType> typeProperty) {
@@ -114,11 +114,11 @@ public class SlabBlockBehavior extends BukkitBlockBehavior implements IsPathFind
return false;
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<SlabBlockBehavior> {
@SuppressWarnings("unchecked")
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public SlabBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
Property<SlabType> type = (Property<SlabType>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("type"), "warning.config.block.behavior.slab.missing_type");
return new SlabBlockBehavior(block, type);
}

View File

@@ -7,7 +7,6 @@ import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.BooleanProperty;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
@@ -17,7 +16,7 @@ import java.util.Map;
import java.util.concurrent.Callable;
public class SnowyBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<SnowyBlockBehavior> FACTORY = new Factory();
private final BooleanProperty snowyProperty;
public SnowyBlockBehavior(CustomBlock customBlock, BooleanProperty snowyProperty) {
@@ -44,10 +43,10 @@ public class SnowyBlockBehavior extends BukkitBlockBehavior {
return FastNMS.INSTANCE.method$BlockStateBase$is(state, MTagKeys.Block$SNOW);
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<SnowyBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public SnowyBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
BooleanProperty snowyProperty = (BooleanProperty) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("snowy"), "warning.config.block.behavior.snowy.missing_snowy");
return new SnowyBlockBehavior(block, snowyProperty);
}

View File

@@ -7,7 +7,6 @@ import net.momirealms.craftengine.bukkit.util.DirectionUtils;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
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;
@@ -23,7 +22,7 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class SofaBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<SofaBlockBehavior> FACTORY = new Factory();
private final Property<HorizontalDirection> facingProperty;
private final Property<SofaShape> shapeProperty;
@@ -99,11 +98,11 @@ public class SofaBlockBehavior extends BukkitBlockBehavior {
return anotherState.get(anotherBehavior.facingProperty) != state.get(this.facingProperty);
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<SofaBlockBehavior> {
@Override
@SuppressWarnings("unchecked")
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public SofaBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
Property<HorizontalDirection> facing = (Property<HorizontalDirection>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("facing"), "warning.config.block.behavior.sofa.missing_facing");
Property<SofaShape> shape = (Property<SofaShape>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("shape"), "warning.config.block.behavior.sofa.missing_shape");
return new SofaBlockBehavior(block, facing, shape);

View File

@@ -4,7 +4,6 @@ import net.momirealms.craftengine.bukkit.block.BukkitBlockManager;
import net.momirealms.craftengine.bukkit.nms.FastNMS;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.UpdateOption;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.util.LazyReference;
import net.momirealms.craftengine.core.util.RandomUtils;
@@ -15,7 +14,7 @@ import java.util.Objects;
import java.util.concurrent.Callable;
public class SpreadingBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<SpreadingBlockBehavior> FACTORY = new Factory();
private final LazyReference<Object> targetBlock;
public SpreadingBlockBehavior(CustomBlock customBlock, String targetBlock) {
@@ -33,10 +32,10 @@ public class SpreadingBlockBehavior extends BukkitBlockBehavior {
}
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<SpreadingBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public SpreadingBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
String targetBlock = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("target-block"), "warning.config.block.behavior.spreading.missing_target_block");
return new SpreadingBlockBehavior(block, targetBlock);
}

View File

@@ -5,7 +5,6 @@ import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.behavior.CanBeReplacedBlockBehavior;
import net.momirealms.craftengine.core.block.properties.IntegerProperty;
@@ -22,7 +21,7 @@ import java.util.List;
import java.util.Map;
public class StackableBlockBehavior extends BukkitBlockBehavior implements CanBeReplacedBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<StackableBlockBehavior> FACTORY = new Factory();
private final IntegerProperty amountProperty;
private final List<Key> items;
private final String propertyName;
@@ -71,10 +70,10 @@ public class StackableBlockBehavior extends BukkitBlockBehavior implements CanBe
return blockState.cycle(property);
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<StackableBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public StackableBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
String propertyName = String.valueOf(arguments.getOrDefault("property", "amount"));
IntegerProperty amount = (IntegerProperty) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty(propertyName), () -> {
throw new LocalizedResourceConfigException("warning.config.block.behavior.stackable.missing_property", propertyName);

View File

@@ -7,7 +7,6 @@ import net.momirealms.craftengine.bukkit.util.DirectionUtils;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.Property;
import net.momirealms.craftengine.core.block.properties.type.SingleBlockHalf;
@@ -25,7 +24,7 @@ import java.util.concurrent.Callable;
@SuppressWarnings("DuplicatedCode")
public class StairsBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<StairsBlockBehavior> FACTORY = new Factory();
private final Property<HorizontalDirection> facingProperty;
private final Property<SingleBlockHalf> halfProperty;
private final Property<StairsShape> shapeProperty;
@@ -125,11 +124,11 @@ public class StairsBlockBehavior extends BukkitBlockBehavior {
return anotherState.get(anotherBehavior.facingProperty) != state.get(this.facingProperty) || anotherState.get(anotherBehavior.halfProperty) != state.get(this.halfProperty);
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<StairsBlockBehavior> {
@Override
@SuppressWarnings("unchecked")
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public StairsBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
Property<HorizontalDirection> facing = (Property<HorizontalDirection>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("facing"), "warning.config.block.behavior.stairs.missing_facing");
Property<SingleBlockHalf> half = (Property<SingleBlockHalf>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("half"), "warning.config.block.behavior.stairs.missing_half");
Property<StairsShape> shape = (Property<StairsShape>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("shape"), "warning.config.block.behavior.stairs.missing_shape");

View File

@@ -11,7 +11,6 @@ import net.momirealms.craftengine.bukkit.util.KeyUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.UpdateOption;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.behavior.IsPathFindableBlockBehavior;
import net.momirealms.craftengine.core.block.properties.IntegerProperty;
@@ -23,7 +22,7 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class StemBlockBehavior extends BukkitBlockBehavior implements IsPathFindableBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<StemBlockBehavior> FACTORY = new Factory();
private final IntegerProperty ageProperty;
private final Key fruit;
private final Key attachedStem;
@@ -124,10 +123,10 @@ public class StemBlockBehavior extends BukkitBlockBehavior implements IsPathFind
return flag1 || flag2;
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<StemBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public StemBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
IntegerProperty ageProperty = (IntegerProperty) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("age"), "warning.config.block.behavior.stem.missing_age");
Key fruit = Key.of(ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("fruit"), "warning.config.block.behavior.stem.missing_fruit"));
Key attachedStem = Key.of(ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("attached-stem"), "warning.config.block.behavior.stem.missing_attached_stem"));

View File

@@ -2,7 +2,6 @@ package net.momirealms.craftengine.bukkit.block.behavior;
import net.momirealms.craftengine.core.block.BlockStateWrapper;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.util.LazyReference;
@@ -14,7 +13,7 @@ import java.util.List;
import java.util.Map;
public class StrippableBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<StrippableBlockBehavior> FACTORY = new Factory();
private final String stripped;
private final LazyReference<BlockStateWrapper> lazyState;
private final List<String> excludedProperties;
@@ -41,10 +40,10 @@ public class StrippableBlockBehavior extends BukkitBlockBehavior {
return properties;
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<StrippableBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public StrippableBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
String stripped = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("stripped"), "warning.config.block.behavior.strippable.missing_stripped");
List<String> excludedProperties = MiscUtils.getAsStringList(arguments.get("excluded-properties"));
return new StrippableBlockBehavior(block, stripped, excludedProperties);

View File

@@ -6,7 +6,6 @@ import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
import net.momirealms.craftengine.bukkit.util.DirectionUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.util.Direction;
import net.momirealms.craftengine.core.util.MiscUtils;
@@ -18,7 +17,7 @@ import java.util.Map;
import java.util.Optional;
public class SturdyBaseBlockBehavior extends AbstractCanSurviveBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<SturdyBaseBlockBehavior> FACTORY = new Factory();
private final Direction direction;
private final boolean stackable;
private final boolean checkFull;
@@ -60,10 +59,10 @@ public class SturdyBaseBlockBehavior extends AbstractCanSurviveBlockBehavior {
return optionalCustomState.filter(immutableBlockState -> immutableBlockState.owner().value() == super.customBlock).isPresent();
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<SturdyBaseBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public SturdyBaseBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
int delay = ResourceConfigUtils.getAsInt(arguments.getOrDefault("delay", 0), "delay");
Direction direction = Direction.valueOf(arguments.getOrDefault("direction", "down").toString().toUpperCase(Locale.ENGLISH));
boolean stackable = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("stackable", false), "stackable");

View File

@@ -8,7 +8,6 @@ import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MTagKeys;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.UpdateOption;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.Property;
import net.momirealms.craftengine.core.util.LazyReference;
@@ -22,7 +21,7 @@ import java.util.Objects;
import java.util.concurrent.Callable;
public class SurfaceSpreadingBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<SurfaceSpreadingBlockBehavior> FACTORY = new Factory();
private final int requiredLight;
private final LazyReference<Object> baseBlock;
private final Property<Boolean> snowyProperty;
@@ -101,11 +100,11 @@ 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);
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<SurfaceSpreadingBlockBehavior> {
@SuppressWarnings("unchecked")
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public SurfaceSpreadingBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
int requiredLight = ResourceConfigUtils.getAsInt(arguments.getOrDefault("required-light", 9), "required-light");
String baseBlock = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.getOrDefault("base-block", "minecraft:dirt"), "warning.config.block.behavior.surface_spreading.missing_base_block");
return new SurfaceSpreadingBlockBehavior(block, requiredLight, baseBlock, (Property<Boolean>) block.getProperty("snowy"));

View File

@@ -6,7 +6,6 @@ import net.momirealms.craftengine.bukkit.util.BlockStateUtils;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.Property;
import net.momirealms.craftengine.core.entity.player.InteractionResult;
@@ -18,7 +17,7 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class ToggleableLampBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<ToggleableLampBlockBehavior> FACTORY = new Factory();
private final Property<Boolean> litProperty;
private final Property<Boolean> poweredProperty;
private final boolean canOpenWithHand;
@@ -88,10 +87,10 @@ public class ToggleableLampBlockBehavior extends BukkitBlockBehavior {
}
@SuppressWarnings("unchecked")
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<ToggleableLampBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public ToggleableLampBlockBehavior 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");
Property<Boolean> lit = (Property<Boolean>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("lit"), "warning.config.block.behavior.toggleable_lamp.missing_lit");
Property<Boolean> powered = (Property<Boolean>) (canOpenWithHand ? block.getProperty("powered") : ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("powered"), "warning.config.block.behavior.toggleable_lamp.missing_powered"));

View File

@@ -12,7 +12,6 @@ import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.UpdateOption;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.behavior.IsPathFindableBlockBehavior;
import net.momirealms.craftengine.core.block.properties.Property;
@@ -42,7 +41,7 @@ import java.util.concurrent.Callable;
@SuppressWarnings("DuplicatedCode")
public class TrapDoorBlockBehavior extends BukkitBlockBehavior implements IsPathFindableBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<TrapDoorBlockBehavior> FACTORY = new Factory();
private final Property<SingleBlockHalf> halfProperty;
private final Property<HorizontalDirection> facingProperty;
private final Property<Boolean> poweredProperty;
@@ -228,10 +227,10 @@ public class TrapDoorBlockBehavior extends BukkitBlockBehavior implements IsPath
}
@SuppressWarnings("unchecked")
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<TrapDoorBlockBehavior> {
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public TrapDoorBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
Property<SingleBlockHalf> half = (Property<SingleBlockHalf>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("half"), "warning.config.block.behavior.trapdoor.missing_half");
Property<HorizontalDirection> facing = (Property<HorizontalDirection>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("facing"), "warning.config.block.behavior.trapdoor.missing_facing");
Property<Boolean> open = (Property<Boolean>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("open"), "warning.config.block.behavior.trapdoor.missing_open");

View File

@@ -8,7 +8,6 @@ import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.UpdateOption;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.properties.IntegerProperty;
import net.momirealms.craftengine.core.block.properties.Property;
@@ -22,7 +21,7 @@ import java.util.Optional;
import java.util.concurrent.Callable;
public class VerticalCropBlockBehavior extends BukkitBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<VerticalCropBlockBehavior> FACTORY = new Factory();
private final int maxHeight;
private final IntegerProperty ageProperty;
private final float growSpeed;
@@ -78,11 +77,11 @@ public class VerticalCropBlockBehavior extends BukkitBlockBehavior {
}
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<VerticalCropBlockBehavior> {
@SuppressWarnings("unchecked")
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public VerticalCropBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
Property<Integer> ageProperty = (Property<Integer>) ResourceConfigUtils.requireNonNullOrThrow(block.getProperty("age"), "warning.config.block.behavior.vertical_crop.missing_age");
int maxHeight = ResourceConfigUtils.getAsInt(arguments.getOrDefault("max-height", 3), "max-height");
boolean direction = arguments.getOrDefault("direction", "up").toString().equalsIgnoreCase("up");

View File

@@ -4,7 +4,6 @@ import net.momirealms.craftengine.bukkit.block.entity.BukkitBlockEntityTypes;
import net.momirealms.craftengine.bukkit.block.entity.WallTorchParticleBlockEntity;
import net.momirealms.craftengine.core.block.CustomBlock;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.behavior.BlockBehavior;
import net.momirealms.craftengine.core.block.behavior.BlockBehaviorFactory;
import net.momirealms.craftengine.core.block.behavior.EntityBlockBehavior;
import net.momirealms.craftengine.core.block.entity.BlockEntity;
@@ -22,7 +21,7 @@ import java.util.List;
import java.util.Map;
public class WallTorchParticleBlockBehavior extends BukkitBlockBehavior implements EntityBlockBehavior {
public static final BlockBehaviorFactory FACTORY = new Factory();
public static final BlockBehaviorFactory<WallTorchParticleBlockBehavior> FACTORY = new Factory();
public final ParticleConfig[] particles;
public final int tickInterval;
public final Property<HorizontalDirection> facingProperty;
@@ -62,11 +61,11 @@ public class WallTorchParticleBlockBehavior extends BukkitBlockBehavior implemen
return EntityBlockBehavior.createTickerHelper(WallTorchParticleBlockEntity::tick);
}
private static class Factory implements BlockBehaviorFactory {
private static class Factory implements BlockBehaviorFactory<WallTorchParticleBlockBehavior> {
@SuppressWarnings("unchecked")
@Override
public BlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
public WallTorchParticleBlockBehavior create(CustomBlock block, Map<String, Object> arguments) {
List<ParticleConfig> particles = ResourceConfigUtils.parseConfigAsList(ResourceConfigUtils.get(arguments, "particles", "particle"), ParticleConfig::fromMap$blockEntity);
int tickInterval = ResourceConfigUtils.getAsInt(arguments.getOrDefault("tick-interval", 10), "tick-interval");
Property<HorizontalDirection> directionProperty = (Property<HorizontalDirection>) block.getProperty("facing");

View File

@@ -36,7 +36,7 @@ import java.util.Map;
import java.util.Optional;
public class AxeItemBehavior extends ItemBehavior {
public static final ItemBehaviorFactory FACTORY = new Factory();
public static final ItemBehaviorFactory<AxeItemBehavior> FACTORY = new Factory();
public static final AxeItemBehavior INSTANCE = new AxeItemBehavior();
private static final Key AXE_STRIP_SOUND = Key.of("minecraft:item.axe.strip");
@@ -112,9 +112,9 @@ public class AxeItemBehavior extends ItemBehavior {
return InteractionResult.SUCCESS_AND_CANCEL;
}
private static class Factory implements ItemBehaviorFactory {
private static class Factory implements ItemBehaviorFactory<AxeItemBehavior> {
@Override
public ItemBehavior create(Pack pack, Path path, String node, Key key, Map<String, Object> arguments) {
public AxeItemBehavior create(Pack pack, Path path, String node, Key key, Map<String, Object> arguments) {
return INSTANCE;
}
}

View File

@@ -18,7 +18,6 @@ import net.momirealms.craftengine.core.entity.player.InteractionResult;
import net.momirealms.craftengine.core.entity.player.Player;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.behavior.BlockBoundItemBehavior;
import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
import net.momirealms.craftengine.core.item.behavior.ItemBehaviorFactory;
import net.momirealms.craftengine.core.pack.Pack;
import net.momirealms.craftengine.core.pack.PendingConfigSection;
@@ -54,7 +53,7 @@ import java.util.Map;
import java.util.Optional;
public class BlockItemBehavior extends BlockBoundItemBehavior {
public static final ItemBehaviorFactory FACTORY = new Factory();
public static final ItemBehaviorFactory<BlockItemBehavior> FACTORY = new Factory();
private final Key blockId;
public BlockItemBehavior(Key blockId) {
@@ -242,9 +241,9 @@ public class BlockItemBehavior extends BlockBoundItemBehavior {
}
}
private static class Factory implements ItemBehaviorFactory {
private static class Factory implements ItemBehaviorFactory<BlockItemBehavior> {
@Override
public ItemBehavior create(Pack pack, Path path, String node, Key key, Map<String, Object> arguments) {
public BlockItemBehavior create(Pack pack, Path path, String node, Key key, Map<String, Object> arguments) {
Object id = arguments.get("block");
if (id == null) {
throw new LocalizedResourceConfigException("warning.config.item.behavior.block.missing_block", new IllegalArgumentException("Missing required parameter 'block' for block_item behavior"));

View File

@@ -7,18 +7,18 @@ import net.momirealms.craftengine.core.util.Key;
public final class BukkitItemBehaviors extends ItemBehaviors {
private BukkitItemBehaviors() {}
public static final ItemBehaviorType BLOCK_ITEM = register(Key.ce("block_item"), BlockItemBehavior.FACTORY);
public static final ItemBehaviorType ON_LIQUID_BLOCK_ITEM = register(Key.ce("liquid_collision_block_item"), LiquidCollisionBlockItemBehavior.FACTORY);
public static final ItemBehaviorType FURNITURE_ITEM = register(Key.ce("furniture_item"), FurnitureItemBehavior.FACTORY);
public static final ItemBehaviorType ON_LIQUID_FURNITURE_ITEM = register(Key.ce("liquid_collision_furniture_item"), LiquidCollisionFurnitureItemBehavior.FACTORY);
public static final ItemBehaviorType FLINT_AND_STEEL_ITEM = register(Key.ce("flint_and_steel_item"), FlintAndSteelItemBehavior.FACTORY);
public static final ItemBehaviorType COMPOSTABLE_ITEM = register(Key.ce("compostable_item"), CompostableItemBehavior.FACTORY);
public static final ItemBehaviorType AXE_ITEM = register(Key.ce("axe_item"), AxeItemBehavior.FACTORY);
public static final ItemBehaviorType DOUBLE_HIGH_BLOCK_ITEM = register(Key.ce("double_high_block_item"), DoubleHighBlockItemBehavior.FACTORY);
public static final ItemBehaviorType WALL_BLOCK_ITEM = register(Key.ce("wall_block_item"), WallBlockItemBehavior.FACTORY);
public static final ItemBehaviorType CEILING_BLOCK_ITEM = register(Key.ce("ceiling_block_item"), CeilingBlockItemBehavior.FACTORY);
public static final ItemBehaviorType GROUND_BLOCK_ITEM = register(Key.ce("ground_block_item"), GroundBlockItemBehavior.FACTORY);
public static final ItemBehaviorType MULTI_HIGH_BLOCK_ITEM = register(Key.ce("multi_high_block_item"), MultiHighBlockItemBehavior.FACTORY);
public static final ItemBehaviorType<BlockItemBehavior> BLOCK_ITEM = register(Key.ce("block_item"), BlockItemBehavior.FACTORY);
public static final ItemBehaviorType<LiquidCollisionBlockItemBehavior> ON_LIQUID_BLOCK_ITEM = register(Key.ce("liquid_collision_block_item"), LiquidCollisionBlockItemBehavior.FACTORY);
public static final ItemBehaviorType<FurnitureItemBehavior> FURNITURE_ITEM = register(Key.ce("furniture_item"), FurnitureItemBehavior.FACTORY);
public static final ItemBehaviorType<LiquidCollisionFurnitureItemBehavior> ON_LIQUID_FURNITURE_ITEM = register(Key.ce("liquid_collision_furniture_item"), LiquidCollisionFurnitureItemBehavior.FACTORY);
public static final ItemBehaviorType<FlintAndSteelItemBehavior> FLINT_AND_STEEL_ITEM = register(Key.ce("flint_and_steel_item"), FlintAndSteelItemBehavior.FACTORY);
public static final ItemBehaviorType<CompostableItemBehavior> COMPOSTABLE_ITEM = register(Key.ce("compostable_item"), CompostableItemBehavior.FACTORY);
public static final ItemBehaviorType<AxeItemBehavior> AXE_ITEM = register(Key.ce("axe_item"), AxeItemBehavior.FACTORY);
public static final ItemBehaviorType<DoubleHighBlockItemBehavior> DOUBLE_HIGH_BLOCK_ITEM = register(Key.ce("double_high_block_item"), DoubleHighBlockItemBehavior.FACTORY);
public static final ItemBehaviorType<WallBlockItemBehavior> WALL_BLOCK_ITEM = register(Key.ce("wall_block_item"), WallBlockItemBehavior.FACTORY);
public static final ItemBehaviorType<CeilingBlockItemBehavior> CEILING_BLOCK_ITEM = register(Key.ce("ceiling_block_item"), CeilingBlockItemBehavior.FACTORY);
public static final ItemBehaviorType<GroundBlockItemBehavior> GROUND_BLOCK_ITEM = register(Key.ce("ground_block_item"), GroundBlockItemBehavior.FACTORY);
public static final ItemBehaviorType<MultiHighBlockItemBehavior> MULTI_HIGH_BLOCK_ITEM = register(Key.ce("multi_high_block_item"), MultiHighBlockItemBehavior.FACTORY);
public static void init() {
}

View File

@@ -1,7 +1,6 @@
package net.momirealms.craftengine.bukkit.item.behavior;
import net.momirealms.craftengine.core.entity.player.InteractionResult;
import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
import net.momirealms.craftengine.core.item.behavior.ItemBehaviorFactory;
import net.momirealms.craftengine.core.pack.Pack;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
@@ -14,7 +13,7 @@ import java.nio.file.Path;
import java.util.Map;
public class CeilingBlockItemBehavior extends BlockItemBehavior {
public static final ItemBehaviorFactory FACTORY = new Factory();
public static final ItemBehaviorFactory<CeilingBlockItemBehavior> FACTORY = new Factory();
public CeilingBlockItemBehavior(Key ceilingBlockId) {
super(ceilingBlockId);
@@ -33,9 +32,9 @@ public class CeilingBlockItemBehavior extends BlockItemBehavior {
return super.place(context);
}
private static class Factory implements ItemBehaviorFactory {
private static class Factory implements ItemBehaviorFactory<CeilingBlockItemBehavior> {
@Override
public ItemBehavior create(Pack pack, Path path, String node, Key key, Map<String, Object> arguments) {
public CeilingBlockItemBehavior create(Pack pack, Path path, String node, Key key, Map<String, Object> arguments) {
Object id = arguments.get("block");
if (id == null) {
throw new LocalizedResourceConfigException("warning.config.item.behavior.ceiling_block.missing_block", new IllegalArgumentException("Missing required parameter 'block' for ceiling_block_item behavior"));

View File

@@ -28,7 +28,7 @@ import java.nio.file.Path;
import java.util.Map;
public class CompostableItemBehavior extends ItemBehavior {
public static final ItemBehaviorFactory FACTORY = new Factory();
public static final ItemBehaviorFactory<CompostableItemBehavior> FACTORY = new Factory();
private final double chance;
public CompostableItemBehavior(double chance) {
@@ -77,9 +77,9 @@ public class CompostableItemBehavior extends ItemBehavior {
return InteractionResult.SUCCESS;
}
private static class Factory implements ItemBehaviorFactory {
private static class Factory implements ItemBehaviorFactory<CompostableItemBehavior> {
@Override
public ItemBehavior create(Pack pack, Path path, String node, Key key, Map<String, Object> arguments) {
public CompostableItemBehavior create(Pack pack, Path path, String node, Key key, Map<String, Object> arguments) {
double chance = ResourceConfigUtils.getAsDouble(arguments.getOrDefault("chance", 0.55), "chance");
return new CompostableItemBehavior(chance);
}

View File

@@ -5,7 +5,6 @@ import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MBlocks;
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MFluids;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.block.UpdateOption;
import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
import net.momirealms.craftengine.core.item.behavior.ItemBehaviorFactory;
import net.momirealms.craftengine.core.pack.Pack;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
@@ -18,7 +17,7 @@ import java.util.List;
import java.util.Map;
public class DoubleHighBlockItemBehavior extends BlockItemBehavior {
public static final ItemBehaviorFactory FACTORY = new Factory();
public static final ItemBehaviorFactory<DoubleHighBlockItemBehavior> FACTORY = new Factory();
public DoubleHighBlockItemBehavior(Key blockId) {
super(blockId);
@@ -36,9 +35,9 @@ public class DoubleHighBlockItemBehavior extends BlockItemBehavior {
return super.placeBlock(location, blockState, revertState);
}
private static class Factory implements ItemBehaviorFactory {
private static class Factory implements ItemBehaviorFactory<DoubleHighBlockItemBehavior> {
@Override
public ItemBehavior create(Pack pack, Path path, String node, Key key, Map<String, Object> arguments) {
public DoubleHighBlockItemBehavior create(Pack pack, Path path, String node, Key key, Map<String, Object> arguments) {
Object id = arguments.get("block");
if (id == null) {
throw new LocalizedResourceConfigException("warning.config.item.behavior.double_high.missing_block");

View File

@@ -30,7 +30,7 @@ import java.util.Map;
public class FlintAndSteelItemBehavior extends ItemBehavior {
public static final FlintAndSteelItemBehavior INSTANCE = new FlintAndSteelItemBehavior();
public static final ItemBehaviorFactory FACTORY = new Factory();
public static final ItemBehaviorFactory<FlintAndSteelItemBehavior> FACTORY = new Factory();
private static final Key FLINT_SOUND = Key.of("item.flintandsteel.use");
@SuppressWarnings("unchecked")
@@ -159,9 +159,9 @@ public class FlintAndSteelItemBehavior extends ItemBehavior {
return InteractionResult.PASS;
}
private static class Factory implements ItemBehaviorFactory {
private static class Factory implements ItemBehaviorFactory<FlintAndSteelItemBehavior> {
@Override
public ItemBehavior create(Pack pack, Path path, String node, Key id, Map<String, Object> arguments) {
public FlintAndSteelItemBehavior create(Pack pack, Path path, String node, Key id, Map<String, Object> arguments) {
return INSTANCE;
}
}

View File

@@ -38,7 +38,7 @@ import java.util.*;
import java.util.function.Predicate;
public class FurnitureItemBehavior extends ItemBehavior {
public static final ItemBehaviorFactory FACTORY = new Factory();
public static final ItemBehaviorFactory<FurnitureItemBehavior> FACTORY = new Factory();
protected static final Set<String> ALLOWED_ANCHOR_TYPES = Set.of("wall", "ceiling", "ground");
private final Key id;
private final Map<AnchorType, Rule> rules;
@@ -210,10 +210,11 @@ public class FurnitureItemBehavior extends ItemBehavior {
return InteractionResult.SUCCESS;
}
private static class Factory implements ItemBehaviorFactory {
private static class Factory implements ItemBehaviorFactory<FurnitureItemBehavior> {
@SuppressWarnings("DuplicatedCode")
@Override
public ItemBehavior create(Pack pack, Path path, String node, Key key, Map<String, Object> arguments) {
public FurnitureItemBehavior create(Pack pack, Path path, String node, Key key, Map<String, Object> arguments) {
Object id = arguments.get("furniture");
if (id == null) {
throw new LocalizedResourceConfigException("warning.config.item.behavior.furniture.missing_furniture", new IllegalArgumentException("Missing required parameter 'furniture' for furniture_item behavior"));

View File

@@ -1,7 +1,6 @@
package net.momirealms.craftengine.bukkit.item.behavior;
import net.momirealms.craftengine.core.entity.player.InteractionResult;
import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
import net.momirealms.craftengine.core.item.behavior.ItemBehaviorFactory;
import net.momirealms.craftengine.core.pack.Pack;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
@@ -14,7 +13,7 @@ import java.nio.file.Path;
import java.util.Map;
public class GroundBlockItemBehavior extends BlockItemBehavior {
public static final ItemBehaviorFactory FACTORY = new Factory();
public static final ItemBehaviorFactory<GroundBlockItemBehavior> FACTORY = new Factory();
public GroundBlockItemBehavior(Key ceilingBlockId) {
super(ceilingBlockId);
@@ -33,9 +32,9 @@ public class GroundBlockItemBehavior extends BlockItemBehavior {
return super.place(context);
}
private static class Factory implements ItemBehaviorFactory {
private static class Factory implements ItemBehaviorFactory<GroundBlockItemBehavior> {
@Override
public ItemBehavior create(Pack pack, Path path, String node, Key key, Map<String, Object> arguments) {
public GroundBlockItemBehavior create(Pack pack, Path path, String node, Key key, Map<String, Object> arguments) {
Object id = arguments.get("block");
if (id == null) {
throw new LocalizedResourceConfigException("warning.config.item.behavior.ground_block.missing_block", new IllegalArgumentException("Missing required parameter 'block' for ground_block_item behavior"));

View File

@@ -8,7 +8,6 @@ import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.entity.player.InteractionHand;
import net.momirealms.craftengine.core.entity.player.InteractionResult;
import net.momirealms.craftengine.core.entity.player.Player;
import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
import net.momirealms.craftengine.core.item.behavior.ItemBehaviorFactory;
import net.momirealms.craftengine.core.pack.Pack;
import net.momirealms.craftengine.core.plugin.CraftEngine;
@@ -27,7 +26,7 @@ import java.nio.file.Path;
import java.util.Map;
public class LiquidCollisionBlockItemBehavior extends BlockItemBehavior {
public static final ItemBehaviorFactory FACTORY = new Factory();
public static final ItemBehaviorFactory<LiquidCollisionBlockItemBehavior> FACTORY = new Factory();
private final int offsetY;
public LiquidCollisionBlockItemBehavior(Key blockId, int offsetY) {
@@ -66,9 +65,9 @@ public class LiquidCollisionBlockItemBehavior extends BlockItemBehavior {
}
}
private static class Factory implements ItemBehaviorFactory {
private static class Factory implements ItemBehaviorFactory<LiquidCollisionBlockItemBehavior> {
@Override
public ItemBehavior create(Pack pack, Path path, String node, Key key, Map<String, Object> arguments) {
public LiquidCollisionBlockItemBehavior create(Pack pack, Path path, String node, Key key, Map<String, Object> arguments) {
Object id = arguments.get("block");
if (id == null) {
throw new LocalizedResourceConfigException("warning.config.item.behavior.liquid_collision.missing_block", new IllegalArgumentException("Missing required parameter 'block' for liquid_collision_block_item behavior"));

View File

@@ -12,7 +12,6 @@ import net.momirealms.craftengine.core.entity.furniture.RotationRule;
import net.momirealms.craftengine.core.entity.player.InteractionHand;
import net.momirealms.craftengine.core.entity.player.InteractionResult;
import net.momirealms.craftengine.core.entity.player.Player;
import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
import net.momirealms.craftengine.core.item.behavior.ItemBehaviorFactory;
import net.momirealms.craftengine.core.pack.Pack;
import net.momirealms.craftengine.core.pack.PendingConfigSection;
@@ -34,7 +33,7 @@ import java.nio.file.Path;
import java.util.*;
public class LiquidCollisionFurnitureItemBehavior extends FurnitureItemBehavior {
public static final ItemBehaviorFactory FACTORY = new Factory();
public static final ItemBehaviorFactory<LiquidCollisionFurnitureItemBehavior> FACTORY = new Factory();
private final List<String> liquidTypes;
private final boolean sourceOnly;
@@ -90,10 +89,11 @@ public class LiquidCollisionFurnitureItemBehavior extends FurnitureItemBehavior
}
}
private static class Factory implements ItemBehaviorFactory {
private static class Factory implements ItemBehaviorFactory<LiquidCollisionFurnitureItemBehavior> {
@SuppressWarnings("DuplicatedCode")
@Override
public ItemBehavior create(Pack pack, Path path, String node, Key key, Map<String, Object> arguments) {
public LiquidCollisionFurnitureItemBehavior create(Pack pack, Path path, String node, Key key, Map<String, Object> arguments) {
Object id = arguments.get("furniture");
if (id == null) {
throw new LocalizedResourceConfigException("warning.config.item.behavior.furniture.missing_furniture", new IllegalArgumentException("Missing required parameter 'furniture' for furniture_item behavior"));

View File

@@ -11,7 +11,6 @@ import net.momirealms.craftengine.core.block.UpdateOption;
import net.momirealms.craftengine.core.block.properties.IntegerProperty;
import net.momirealms.craftengine.core.entity.player.InteractionHand;
import net.momirealms.craftengine.core.entity.player.Player;
import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
import net.momirealms.craftengine.core.item.behavior.ItemBehaviorFactory;
import net.momirealms.craftengine.core.pack.Pack;
import net.momirealms.craftengine.core.plugin.CraftEngine;
@@ -34,7 +33,7 @@ import java.util.List;
import java.util.Map;
public class MultiHighBlockItemBehavior extends BlockItemBehavior {
public static final ItemBehaviorFactory FACTORY = new Factory();
public static final ItemBehaviorFactory<MultiHighBlockItemBehavior> FACTORY = new Factory();
public MultiHighBlockItemBehavior(Key blockId) {
super(blockId);
@@ -104,9 +103,9 @@ public class MultiHighBlockItemBehavior extends BlockItemBehavior {
return super.placeBlock(location, blockState, revertState);
}
private static class Factory implements ItemBehaviorFactory {
private static class Factory implements ItemBehaviorFactory<MultiHighBlockItemBehavior> {
@Override
public ItemBehavior create(Pack pack, Path path, String node, Key key, Map<String, Object> arguments) {
public MultiHighBlockItemBehavior create(Pack pack, Path path, String node, Key key, Map<String, Object> arguments) {
Object id = arguments.get("block");
if (id == null) {
throw new LocalizedResourceConfigException("warning.config.item.behavior.multi_high.missing_block");

View File

@@ -1,7 +1,6 @@
package net.momirealms.craftengine.bukkit.item.behavior;
import net.momirealms.craftengine.core.entity.player.InteractionResult;
import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
import net.momirealms.craftengine.core.item.behavior.ItemBehaviorFactory;
import net.momirealms.craftengine.core.pack.Pack;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
@@ -13,7 +12,7 @@ import java.nio.file.Path;
import java.util.Map;
public class WallBlockItemBehavior extends BlockItemBehavior {
public static final ItemBehaviorFactory FACTORY = new Factory();
public static final ItemBehaviorFactory<WallBlockItemBehavior> FACTORY = new Factory();
public WallBlockItemBehavior(Key wallBlockId) {
super(wallBlockId);
@@ -32,9 +31,9 @@ public class WallBlockItemBehavior extends BlockItemBehavior {
return super.place(context);
}
private static class Factory implements ItemBehaviorFactory {
private static class Factory implements ItemBehaviorFactory<WallBlockItemBehavior> {
@Override
public ItemBehavior create(Pack pack, Path path, String node, Key key, Map<String, Object> arguments) {
public WallBlockItemBehavior create(Pack pack, Path path, String node, Key key, Map<String, Object> arguments) {
Object id = arguments.get("block");
if (id == null) {
throw new LocalizedResourceConfigException("warning.config.item.behavior.wall_block.missing_block", new IllegalArgumentException("Missing required parameter 'block' for wall_block_item behavior"));

View File

@@ -200,7 +200,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener {
this.packetIds = VersionHelper.isOrAbove1_20_5() ? new PacketIds1_20_5() : new PacketIds1_20();
// register packet handlers
this.registerPacketListeners();
PayloadHelper.registerDataTypes();
PayloadHelper.init();
// set up packet senders
this.packetConsumer = FastNMS.INSTANCE::method$Connection$send;
this.packetsConsumer = (connection, packets, sendListener) -> {
@@ -1039,6 +1039,12 @@ public class BukkitNetworkManager implements NetworkManager, Listener {
int packetID = event.packetID();
ByteBufferPacketListenerHolder[] listener = s2cPacketListeners[user.encoderState().ordinal()];
if (packetID >= listener.length) { // fixme 为什么会这样
this.plugin.logger().warn(
"Failed to map the Packet ID " + packetID + " to a PacketType constant. " +
"Bound: CLIENT, Connection state: " + user.encoderState() + ", " +
"Server version: " + VersionHelper.MINECRAFT_VERSION.version(),
new Throwable()
);
return;
}
ByteBufferPacketListenerHolder holder = listener[packetID];
@@ -1055,6 +1061,12 @@ public class BukkitNetworkManager implements NetworkManager, Listener {
int packetID = event.packetID();
ByteBufferPacketListenerHolder[] listener = c2sPacketListeners[user.decoderState().ordinal()];
if (packetID >= listener.length) { // fixme 为什么会这样
this.plugin.logger().warn(
"Failed to map the Packet ID " + packetID + " to a PacketType constant. " +
"Bound: SERVER, Connection state: " + user.encoderState() + ", " +
"Server version: " + VersionHelper.MINECRAFT_VERSION.version(),
new Throwable()
);
return;
}
ByteBufferPacketListenerHolder holder = listener[packetID];

View File

@@ -9,6 +9,7 @@ import net.momirealms.craftengine.bukkit.plugin.network.payload.protocol.VisualB
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.plugin.logger.Debugger;
import net.momirealms.craftengine.core.plugin.network.ModPacket;
import net.momirealms.craftengine.core.plugin.network.ModPacketType;
import net.momirealms.craftengine.core.plugin.network.NetWorkUser;
import net.momirealms.craftengine.core.plugin.network.PayloadChannelKeys;
import net.momirealms.craftengine.core.plugin.network.codec.NetworkCodec;
@@ -17,17 +18,21 @@ import net.momirealms.craftengine.core.registry.WritableRegistry;
import net.momirealms.craftengine.core.util.FriendlyByteBuf;
import net.momirealms.craftengine.core.util.ResourceKey;
public class PayloadHelper {
public final class PayloadHelper {
public static final ModPacketType<ClientCustomBlockPacket> CLIENT_CUSTOM_BLOCK = register(ClientCustomBlockPacket.TYPE, ClientCustomBlockPacket.CODEC);
public static final ModPacketType<CancelBlockUpdatePacket> CANCEL_BLOCK_UPDATE = register(CancelBlockUpdatePacket.TYPE, CancelBlockUpdatePacket.CODEC);
public static final ModPacketType<ClientBlockStateSizePacket> CLIENT_BLOCK_STATE_SIZE = register(ClientBlockStateSizePacket.TYPE, ClientBlockStateSizePacket.CODEC);
public static final ModPacketType<VisualBlockStatePacket> VISUAL_BLOCK_STATE = register(VisualBlockStatePacket.TYPE, VisualBlockStatePacket.CODEC);
public static void registerDataTypes() {
registerDataType(ClientCustomBlockPacket.TYPE, ClientCustomBlockPacket.CODEC);
registerDataType(CancelBlockUpdatePacket.TYPE, CancelBlockUpdatePacket.CODEC);
registerDataType(ClientBlockStateSizePacket.TYPE, ClientBlockStateSizePacket.CODEC);
registerDataType(VisualBlockStatePacket.TYPE, VisualBlockStatePacket.CODEC);
private PayloadHelper() {}
public static void init() {
}
public static <T extends ModPacket> void registerDataType(ResourceKey<NetworkCodec<FriendlyByteBuf, ? extends ModPacket>> key, NetworkCodec<FriendlyByteBuf, T> codec) {
public static <T extends ModPacket> ModPacketType<T> register(ResourceKey<NetworkCodec<FriendlyByteBuf, ? extends ModPacket>> key, NetworkCodec<FriendlyByteBuf, T> codec) {
ModPacketType<T> type = new ModPacketType<>(key.location(), codec);
((WritableRegistry<NetworkCodec<FriendlyByteBuf, ? extends ModPacket>>) BuiltInRegistries.MOD_PACKET).register(key, codec);
return type;
}
public static void sendData(NetWorkUser user, ModPacket data) {

View File

@@ -355,6 +355,10 @@ public class BukkitWorldManager implements WorldManager, Listener {
}
}
public void addCraftEngineDecorations(CEWorld ceWorld, Object chunkGenerator, Object worldGenLevel, Object chunkAccess, Object structureManager) {
}
private void handleChunkLoad(CEWorld ceWorld, Chunk chunk, boolean isNew) {
int chunkX = chunk.getX();
int chunkZ = chunk.getZ();