diff --git a/src/main/java/org/violetmoon/quark/content/building/block/WoodPostBlock.java b/src/main/java/org/violetmoon/quark/content/building/block/WoodPostBlock.java index 1485aed33d..a7fa3f0f36 100644 --- a/src/main/java/org/violetmoon/quark/content/building/block/WoodPostBlock.java +++ b/src/main/java/org/violetmoon/quark/content/building/block/WoodPostBlock.java @@ -1,6 +1,10 @@ package org.violetmoon.quark.content.building.block; import org.jetbrains.annotations.NotNull; +import org.violetmoon.quark.base.Quark; +import org.violetmoon.zeta.block.ZetaBlock; +import org.violetmoon.zeta.module.ZetaModule; +import org.violetmoon.zeta.registry.RenderLayerRegistry; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -11,6 +15,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.CeilingHangingSignBlock; import net.minecraft.world.level.block.ChainBlock; import net.minecraft.world.level.block.LanternBlock; import net.minecraft.world.level.block.SimpleWaterloggedBlock; @@ -24,10 +29,6 @@ import net.minecraft.world.level.material.Fluids; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import org.violetmoon.quark.base.Quark; -import org.violetmoon.zeta.block.ZetaBlock; -import org.violetmoon.zeta.module.ZetaModule; -import org.violetmoon.zeta.registry.RenderLayerRegistry; public class WoodPostBlock extends ZetaBlock implements SimpleWaterloggedBlock { @@ -115,7 +116,8 @@ private BlockState getState(Level world, BlockPos pos, Axis axis) { BlockState sideState = world.getBlockState(pos.relative(d)); if((sideState.getBlock() instanceof ChainBlock && sideState.getValue(BlockStateProperties.AXIS) == d.getAxis()) - || (d == Direction.DOWN && sideState.getBlock() instanceof LanternBlock && sideState.getValue(LanternBlock.HANGING))) { + || (d == Direction.DOWN && sideState.getBlock() instanceof LanternBlock && sideState.getValue(LanternBlock.HANGING)) + || (d == Direction.DOWN && sideState.getBlock() instanceof CeilingHangingSignBlock)) { BooleanProperty prop = CHAINED[d.ordinal()]; state = state.setValue(prop, true); } diff --git a/src/main/java/org/violetmoon/quark/content/building/module/WoodenPostsModule.java b/src/main/java/org/violetmoon/quark/content/building/module/WoodenPostsModule.java index fa1c4d610f..bebe1d34ce 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/WoodenPostsModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/WoodenPostsModule.java @@ -45,10 +45,10 @@ public final void setup(ZCommonSetup event) { postsTag = ItemTags.create(new ResourceLocation(Quark.MOD_ID, "posts")); } - public static boolean canLanternConnect(BlockState state, LevelReader worldIn, BlockPos pos, boolean prev) { + public static boolean canHangingBlockConnect(BlockState state, LevelReader worldIn, BlockPos pos, boolean prev) { return prev || (Quark.ZETA.modules.isEnabled(WoodenPostsModule.class) - && state.getValue(LanternBlock.HANGING) + && (!state.hasProperty(LanternBlock.HANGING) || state.getValue(LanternBlock.HANGING)) && worldIn.getBlockState(pos.above()).getBlock() instanceof WoodPostBlock); } diff --git a/src/main/java/org/violetmoon/quark/mixin/CeilingHangingSignBlockMixin.java b/src/main/java/org/violetmoon/quark/mixin/CeilingHangingSignBlockMixin.java new file mode 100644 index 0000000000..87a21a1a59 --- /dev/null +++ b/src/main/java/org/violetmoon/quark/mixin/CeilingHangingSignBlockMixin.java @@ -0,0 +1,22 @@ +package org.violetmoon.quark.mixin; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.violetmoon.quark.content.building.module.WoodenPostsModule; + +import com.llamalad7.mixinextras.injector.ModifyReturnValue; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.CeilingHangingSignBlock; +import net.minecraft.world.level.block.state.BlockState; + +@Mixin(CeilingHangingSignBlock.class) +public class CeilingHangingSignBlockMixin { + + @ModifyReturnValue(method = "canSurvive", at = @At("RETURN")) + private boolean canSurvive(boolean prev, BlockState state, LevelReader worldIn, BlockPos pos) { + return WoodenPostsModule.canHangingBlockConnect(state, worldIn, pos, prev); + } + +} diff --git a/src/main/java/org/violetmoon/quark/mixin/LanternBlockMixin.java b/src/main/java/org/violetmoon/quark/mixin/LanternBlockMixin.java index ec0ed83a47..a8b0804c3f 100644 --- a/src/main/java/org/violetmoon/quark/mixin/LanternBlockMixin.java +++ b/src/main/java/org/violetmoon/quark/mixin/LanternBlockMixin.java @@ -14,7 +14,7 @@ public class LanternBlockMixin { @ModifyReturnValue(method = "canSurvive", at = @At("RETURN")) private boolean canSurvive(boolean prev, BlockState state, LevelReader worldIn, BlockPos pos) { - return WoodenPostsModule.canLanternConnect(state, worldIn, pos, prev); + return WoodenPostsModule.canHangingBlockConnect(state, worldIn, pos, prev); } } diff --git a/src/main/resources/quark.mixins.json b/src/main/resources/quark.mixins.json index ab84384d27..c438655b69 100644 --- a/src/main/resources/quark.mixins.json +++ b/src/main/resources/quark.mixins.json @@ -15,6 +15,7 @@ "BeehiveBlockEntityMixin", "BlockItemMixin", "BoatMixin", + "CeilingHangingSignBlockMixin", "ClimateParameterPointMixin", "CrossbowMultishotMixin", "DamageEnchantmentMixin",