From f371a562f9932f610226a356b27d6ee9e4d5021d Mon Sep 17 00:00:00 2001 From: Frank Date: Wed, 24 May 2023 21:07:51 +0200 Subject: [PATCH] Added more Behaviours --- .../bclib/behaviours/BehaviourBuilders.java | 22 ++++++++++++++ .../behaviours/interfaces/BehaviourPlant.java | 6 ++++ .../behaviours/interfaces/BehaviourSeed.java | 6 ++++ .../behaviours/interfaces/BehaviourSnow.java | 6 ++++ .../bclib/blocks/BaseAttachedBlock.java | 30 ++++++++++++++++++- .../bclib/blocks/BaseBlockNotFull.java | 22 ++++++++++++++ .../bclib/blocks/BaseBlockWithEntity.java | 12 ++++++-- .../betterx/bclib/blocks/BaseWallBlock.java | 3 +- 8 files changed, 103 insertions(+), 4 deletions(-) create mode 100644 src/main/java/org/betterx/bclib/behaviours/interfaces/BehaviourPlant.java create mode 100644 src/main/java/org/betterx/bclib/behaviours/interfaces/BehaviourSeed.java create mode 100644 src/main/java/org/betterx/bclib/behaviours/interfaces/BehaviourSnow.java diff --git a/src/main/java/org/betterx/bclib/behaviours/BehaviourBuilders.java b/src/main/java/org/betterx/bclib/behaviours/BehaviourBuilders.java index acb6bbc1..6409d0e4 100644 --- a/src/main/java/org/betterx/bclib/behaviours/BehaviourBuilders.java +++ b/src/main/java/org/betterx/bclib/behaviours/BehaviourBuilders.java @@ -168,6 +168,19 @@ public class BehaviourBuilders { return p; } + public static BlockBehaviour.Properties createGlass() { + return BlockBehaviour.Properties + .of() + .instrument(NoteBlockInstrument.HAT) + .strength(0.3F) + .sound(SoundType.GLASS) + .noOcclusion() + .isValidSpawn(Blocks::never) + .isRedstoneConductor(Blocks::never) + .isSuffocating(Blocks::never) + .isViewBlocking(Blocks::never); + } + public static BlockBehaviour.Properties applyBasePlantSettings() { return applyBasePlantSettings(false, 0); } @@ -193,4 +206,13 @@ public class BehaviourBuilders { if (light > 0) props.lightLevel(s -> light); return props; } + + public static BlockBehaviour.Properties createSnow() { + return BlockBehaviour.Properties + .of() + .mapColor(MapColor.SNOW) + .requiresCorrectToolForDrops() + .strength(0.2F) + .sound(SoundType.SNOW); + } } diff --git a/src/main/java/org/betterx/bclib/behaviours/interfaces/BehaviourPlant.java b/src/main/java/org/betterx/bclib/behaviours/interfaces/BehaviourPlant.java new file mode 100644 index 00000000..9aa5d6c1 --- /dev/null +++ b/src/main/java/org/betterx/bclib/behaviours/interfaces/BehaviourPlant.java @@ -0,0 +1,6 @@ +package org.betterx.bclib.behaviours.interfaces; + +import org.betterx.bclib.interfaces.tools.AddMineableHoe; + +public interface BehaviourPlant extends AddMineableHoe { +} diff --git a/src/main/java/org/betterx/bclib/behaviours/interfaces/BehaviourSeed.java b/src/main/java/org/betterx/bclib/behaviours/interfaces/BehaviourSeed.java new file mode 100644 index 00000000..6a41e82b --- /dev/null +++ b/src/main/java/org/betterx/bclib/behaviours/interfaces/BehaviourSeed.java @@ -0,0 +1,6 @@ +package org.betterx.bclib.behaviours.interfaces; + +import org.betterx.bclib.interfaces.tools.AddMineableHoe; + +public interface BehaviourSeed extends AddMineableHoe { +} diff --git a/src/main/java/org/betterx/bclib/behaviours/interfaces/BehaviourSnow.java b/src/main/java/org/betterx/bclib/behaviours/interfaces/BehaviourSnow.java new file mode 100644 index 00000000..ebf5b0d9 --- /dev/null +++ b/src/main/java/org/betterx/bclib/behaviours/interfaces/BehaviourSnow.java @@ -0,0 +1,6 @@ +package org.betterx.bclib.behaviours.interfaces; + +import org.betterx.bclib.interfaces.tools.AddMineableShovel; + +public interface BehaviourSnow extends AddMineableShovel { +} diff --git a/src/main/java/org/betterx/bclib/blocks/BaseAttachedBlock.java b/src/main/java/org/betterx/bclib/blocks/BaseAttachedBlock.java index 3ba71ece..1ef4906e 100644 --- a/src/main/java/org/betterx/bclib/blocks/BaseAttachedBlock.java +++ b/src/main/java/org/betterx/bclib/blocks/BaseAttachedBlock.java @@ -1,5 +1,9 @@ package org.betterx.bclib.blocks; +import org.betterx.bclib.behaviours.interfaces.BehaviourGlass; +import org.betterx.bclib.behaviours.interfaces.BehaviourMetal; +import org.betterx.bclib.behaviours.interfaces.BehaviourStone; +import org.betterx.bclib.behaviours.interfaces.BehaviourWood; import org.betterx.bclib.util.BlocksHelper; import net.minecraft.core.BlockPos; @@ -21,7 +25,7 @@ import net.minecraft.world.level.block.state.properties.DirectionProperty; public abstract class BaseAttachedBlock extends BaseBlockNotFull { public static final DirectionProperty FACING = BlockStateProperties.FACING; - public BaseAttachedBlock(Properties settings) { + protected BaseAttachedBlock(Properties settings) { super(settings); registerDefaultState(defaultBlockState().setValue(FACING, Direction.UP)); } @@ -80,4 +84,28 @@ public abstract class BaseAttachedBlock extends BaseBlockNotFull { public BlockState mirror(BlockState state, Mirror mirror) { return BlocksHelper.mirrorHorizontal(state, mirror, FACING); } + + public static class Wood extends BaseAttachedBlock implements BehaviourWood { + public Wood(Properties settings) { + super(settings); + } + } + + public static class Stone extends BaseAttachedBlock implements BehaviourStone { + public Stone(Properties settings) { + super(settings); + } + } + + public static class Metal extends BaseAttachedBlock implements BehaviourMetal { + public Metal(Properties settings) { + super(settings); + } + } + + public static class Glass extends BaseAttachedBlock implements BehaviourGlass { + public Glass(Properties settings) { + super(settings); + } + } } diff --git a/src/main/java/org/betterx/bclib/blocks/BaseBlockNotFull.java b/src/main/java/org/betterx/bclib/blocks/BaseBlockNotFull.java index 22da4b48..266a7081 100644 --- a/src/main/java/org/betterx/bclib/blocks/BaseBlockNotFull.java +++ b/src/main/java/org/betterx/bclib/blocks/BaseBlockNotFull.java @@ -1,5 +1,9 @@ package org.betterx.bclib.blocks; +import org.betterx.bclib.behaviours.interfaces.BehaviourMetal; +import org.betterx.bclib.behaviours.interfaces.BehaviourStone; +import org.betterx.bclib.behaviours.interfaces.BehaviourWood; + import net.minecraft.core.BlockPos; import net.minecraft.world.entity.EntityType; import net.minecraft.world.level.BlockGetter; @@ -21,4 +25,22 @@ public class BaseBlockNotFull extends BaseBlock { public boolean allowsSpawning(BlockState state, BlockGetter view, BlockPos pos, EntityType type) { return false; } + + public static class Wood extends BaseBlockNotFull implements BehaviourWood { + public Wood(Properties settings) { + super(settings); + } + } + + public static class Stone extends BaseBlockNotFull implements BehaviourStone { + public Stone(Properties settings) { + super(settings); + } + } + + public static class Metal extends BaseBlockNotFull implements BehaviourMetal { + public Metal(Properties settings) { + super(settings); + } + } } diff --git a/src/main/java/org/betterx/bclib/blocks/BaseBlockWithEntity.java b/src/main/java/org/betterx/bclib/blocks/BaseBlockWithEntity.java index f2e8b8d4..a29cbc3c 100644 --- a/src/main/java/org/betterx/bclib/blocks/BaseBlockWithEntity.java +++ b/src/main/java/org/betterx/bclib/blocks/BaseBlockWithEntity.java @@ -1,5 +1,7 @@ package org.betterx.bclib.blocks; +import org.betterx.bclib.behaviours.interfaces.BehaviourStone; + import net.minecraft.core.BlockPos; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.BaseEntityBlock; @@ -10,8 +12,8 @@ import net.minecraft.world.level.storage.loot.LootParams; import java.util.Collections; import java.util.List; -public class BaseBlockWithEntity extends BaseEntityBlock { - public BaseBlockWithEntity(Properties settings) { +public abstract class BaseBlockWithEntity extends BaseEntityBlock { + protected BaseBlockWithEntity(Properties settings) { super(settings); } @@ -25,4 +27,10 @@ public class BaseBlockWithEntity extends BaseEntityBlock { public List getDrops(BlockState state, LootParams.Builder builder) { return Collections.singletonList(new ItemStack(this)); } + + public static class Stone extends BaseBlockWithEntity implements BehaviourStone { + public Stone(Properties settings) { + super(settings); + } + } } diff --git a/src/main/java/org/betterx/bclib/blocks/BaseWallBlock.java b/src/main/java/org/betterx/bclib/blocks/BaseWallBlock.java index 91af7bff..de7b3e2c 100644 --- a/src/main/java/org/betterx/bclib/blocks/BaseWallBlock.java +++ b/src/main/java/org/betterx/bclib/blocks/BaseWallBlock.java @@ -1,5 +1,6 @@ package org.betterx.bclib.blocks; +import org.betterx.bclib.behaviours.interfaces.BehaviourWood; import org.betterx.bclib.client.models.BasePatterns; import org.betterx.bclib.client.models.ModelsHelper; import org.betterx.bclib.client.models.PatternsHelper; @@ -124,7 +125,7 @@ public abstract class BaseWallBlock extends WallBlock implements BlockModelProvi return builder.build(); } - public static class Stone extends BaseWallBlock { + public static class Stone extends BaseWallBlock implements BehaviourWood { public Stone(Block source) { super(source); }