make standing signs rotatable in normal directions

This commit is contained in:
Sen 2025-07-20 17:05:18 +02:00
parent ba3e80b15c
commit 1b52b26f15
Signed by: sen
GPG key ID: 3AC50A6F47D1B722
8 changed files with 54 additions and 56 deletions

View file

@ -3,9 +3,12 @@ package common.block.tile;
import common.block.Block;
import common.block.ITileEntityProvider;
import common.block.Material;
import common.block.Rotatable;
import common.entity.npc.EntityNPC;
import common.init.Items;
import common.item.CheatTab;
import common.item.Item;
import common.properties.Property;
import common.tileentity.TileEntity;
import common.tileentity.TileEntitySign;
import common.util.BlockPos;
@ -16,7 +19,7 @@ import common.world.IBlockAccess;
import common.world.State;
import common.world.World;
public class BlockSign extends Block implements ITileEntityProvider
public class BlockSign extends Block implements ITileEntityProvider, Rotatable
{
public BlockSign()
{
@ -24,6 +27,8 @@ public class BlockSign extends Block implements ITileEntityProvider
float f = 0.25F;
float f1 = 1.0F;
this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, f1, 0.5F + f);
this.setDefaultState(this.getBaseState().withProperty(FACING, Facing.NORTH));
this.setTab(CheatTab.DECORATION);
}
public boolean onUse(World worldIn, BlockPos pos, State state, EntityNPC playerIn, Facing side, float hitX, float hitY, float hitZ)
@ -127,6 +132,11 @@ public class BlockSign extends Block implements ITileEntityProvider
{
return !this.hasInvalidNeighbor(worldIn, pos) && super.canPlace(worldIn, pos);
}
protected Property[] getProperties()
{
return new Property[] {FACING};
}
public boolean isXrayVisible()
{

View file

@ -1,34 +1,41 @@
package common.block.tile;
import common.block.Block;
import common.block.Rotatable;
import common.entity.npc.EntityNPC;
import common.init.Blocks;
import common.item.CheatTab;
import common.item.Item;
import common.item.ItemStack;
import common.properties.Property;
import common.properties.PropertyInteger;
import common.tileentity.TileEntity;
import common.tileentity.TileEntitySign;
import common.util.BlockPos;
import common.util.ExtMath;
import common.util.Facing;
import common.world.IWorldAccess;
import common.world.State;
import common.world.World;
public class BlockStandingSign extends BlockSign
public class BlockStandingSign extends BlockSign implements Rotatable
{
public static final PropertyInteger ROTATION = PropertyInteger.create("rotation", 0, 15);
public BlockStandingSign()
public void setBlockBounds(IWorldAccess worldIn, BlockPos pos)
{
this.setDefaultState(this.getBaseState().withProperty(ROTATION, Integer.valueOf(0)));
this.setTab(CheatTab.DECORATION);
Facing enumfacing = (Facing)worldIn.getState(pos).getValue(FACING);
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
switch (enumfacing)
{
case NORTH:
case SOUTH:
this.setBlockBounds(0.0f, 0.0f, 0.5f - 0.0625f, 1.0f, 1.0f, 0.5f + 0.0625f);
break;
case WEST:
case EAST:
this.setBlockBounds(0.5f - 0.0625f, 0.0f, 0.0f, 0.5f + 0.0625f, 1.0f, 1.0f);
}
}
/**
* Called when a neighboring block changes.
*/
public void onUpdate(World worldIn, BlockPos pos, State state, Block neighborBlock)
{
if (!worldIn.getState(pos.down()).getBlock().getMaterial().isSolid())
@ -40,11 +47,6 @@ public class BlockStandingSign extends BlockSign
super.onUpdate(worldIn, pos, state, neighborBlock);
}
protected Property[] getProperties()
{
return new Property[] {ROTATION};
}
public boolean place(ItemStack stack, EntityNPC playerIn, World worldIn, BlockPos pos, Facing side, float hitX, float hitY, float hitZ)
{
if (side == Facing.DOWN)
@ -75,8 +77,7 @@ public class BlockStandingSign extends BlockSign
{
if (side == Facing.UP)
{
int i = ExtMath.floord((double)((playerIn.rotYaw + 180.0F) * 16.0F / 360.0F) + 0.5D) & 15;
worldIn.setState(pos, Blocks.sign.getState().withProperty(BlockStandingSign.ROTATION, Integer.valueOf(i)), 3);
worldIn.setState(pos, Blocks.sign.getState().withProperty(BlockStandingSign.FACING, playerIn.getHorizontalFacing().getOpposite()), 3);
}
else
{

View file

@ -2,8 +2,6 @@ package common.block.tile;
import common.block.Block;
import common.block.Rotatable;
import common.item.Item;
import common.properties.Property;
import common.util.BlockPos;
import common.util.Facing;
import common.world.IWorldAccess;
@ -12,12 +10,6 @@ import common.world.World;
public class BlockWallSign extends BlockSign implements Rotatable
{
public BlockWallSign()
{
this.setDefaultState(this.getBaseState().withProperty(FACING, Facing.NORTH));
}
public void setBlockBounds(IWorldAccess worldIn, BlockPos pos)
{
Facing enumfacing = (Facing)worldIn.getState(pos).getValue(FACING);
@ -47,9 +39,6 @@ public class BlockWallSign extends BlockSign implements Rotatable
}
}
/**
* Called when a neighboring block changes.
*/
public void onUpdate(World worldIn, BlockPos pos, State state, Block neighborBlock)
{
Facing enumfacing = (Facing)state.getValue(FACING);
@ -62,11 +51,6 @@ public class BlockWallSign extends BlockSign implements Rotatable
super.onUpdate(worldIn, pos, state, neighborBlock);
}
protected Property[] getProperties()
{
return new Property[] {FACING};
}
protected boolean hasRegisteredItem() {
return false;