Skip to content

Commit

Permalink
Hanging Signs on posts
Browse files Browse the repository at this point in the history
  • Loading branch information
Vazkii committed Dec 4, 2023
1 parent 0c2481a commit 29d684d
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 8 deletions.
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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;
Expand All @@ -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 {

Expand Down Expand Up @@ -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);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -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);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

}
1 change: 1 addition & 0 deletions src/main/resources/quark.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
"BeehiveBlockEntityMixin",
"BlockItemMixin",
"BoatMixin",
"CeilingHangingSignBlockMixin",
"ClimateParameterPointMixin",
"CrossbowMultishotMixin",
"DamageEnchantmentMixin",
Expand Down

0 comments on commit 29d684d

Please sign in to comment.