1 nov. 2020, 21:04
Bonjour !
J’ai créé 2 property pour mon block et j’aimerais les utiliser pour un model.
Problème, je n’y arrive pas.
Merci d’avance pour l’aide
public class BlockActivator extends Block implements IHasModel
{
private boolean canPower = false;
public static final PropertyInteger BLOCK_TYPE = PropertyInteger.create("power", 0, 6);
public static final PropertyDirection FACING = BlockHorizontal.FACING;
public BlockActivator(String name, Material material)
{
super(material);
setUnlocalizedName(name);
setRegistryName(name);
setCreativeTab(Main.REDSKYLL_TAB);
setHardness(8.0F);
BlockInit.BLOCKS.add(this);
ItemInit.ITEMS.add(new ItemBlock(this).setRegistryName(this.getRegistryName()));
}
@Override
public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state)
{
this.setDefaultFacing(worldIn, pos, state);
this.setDefaultState(this.blockState.getBaseState().withProperty(BLOCK_TYPE, Integer.valueOf(0)));
}
private void setDefaultFacing(World worldIn, BlockPos pos, IBlockState state)
{
if(!worldIn.isRemote)
{
IBlockState iblockstate = worldIn.getBlockState(pos.north());
IBlockState iblockstate1 = worldIn.getBlockState(pos.south());
IBlockState iblockstate2 = worldIn.getBlockState(pos.west());
IBlockState iblockstate3 = worldIn.getBlockState(pos.east());
EnumFacing enumfacing = (EnumFacing)state.getValue(FACING);
if(enumfacing == EnumFacing.NORTH && iblockstate.isFullBlock() && !iblockstate1.isFullBlock())
{
enumfacing = EnumFacing.SOUTH;
}
else if(enumfacing == EnumFacing.SOUTH && iblockstate1.isFullBlock() && !iblockstate.isFullBlock())
{
enumfacing = EnumFacing.NORTH;
}
else if(enumfacing == EnumFacing.WEST && iblockstate2.isFullBlock() && !iblockstate3.isFullBlock())
{
enumfacing = EnumFacing.EAST;
}
else if(enumfacing == EnumFacing.EAST && iblockstate3.isFullBlock() && !iblockstate2.isFullBlock())
{
enumfacing = EnumFacing.WEST;
}
worldIn.setBlockState(pos, state.withProperty(FACING, enumfacing), 2);
}
}
@Override
public IBlockState getStateForPlacement(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer)
{
return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite());
}
@Override
public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack)
{
worldIn.setBlockState(pos, state.withProperty(FACING, placer.getHorizontalFacing().getOpposite()), 2);
}
@Override
public IBlockState withRotation(IBlockState state, Rotation rot)
{
return state.withProperty(FACING, rot.rotate((EnumFacing)state.getValue(FACING)));
}
@Override
public int getMetaFromState(IBlockState state)
{
return ((EnumFacing)state.getValue(FACING)).getIndex();
}
@Override
public IBlockState getStateFromMeta(int meta)
{
EnumFacing enumfacing = EnumFacing.getFront(meta);
if(enumfacing.getAxis() == EnumFacing.Axis.Y)
{
enumfacing = EnumFacing.NORTH;
}
return this.getDefaultState().withProperty(FACING, enumfacing);
}
@Override
public boolean hasComparatorInputOverride(IBlockState state)
{
return true;
}
@Override
public int getComparatorInputOverride(IBlockState blockState, World worldIn, BlockPos pos)
{
return SeatUtil.isSomeoneSitting(worldIn, pos.getX(), pos.getY(), pos.getZ()) ? 1 : 0;
}
@Override
public IBlockState withMirror(IBlockState state, Mirror mirrorIn)
{
return state.withRotation(mirrorIn.toRotation((EnumFacing)state.getValue(FACING)));
}
@Override
protected BlockStateContainer createBlockState()
{
return new BlockStateContainer(this, new IProperty[] {FACING, BLOCK_TYPE});
}
@Override
public boolean isOpaqueCube(IBlockState state)
{
return false;
}
@Override
public boolean isFullCube(IBlockState state)
{
return false;
}
@Override
public boolean isFullBlock(IBlockState state)
{
return false;
}
@Override
public void registerModels()
{
Main.proxy.registerItemRederer(Item.getItemFromBlock(this), 0);
}
@Override
public boolean canProvidePower(IBlockState state)
{
return this.canPower;
}
public int getWeakPower(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side)
{
if (!this.canPower)
{
return 0;
}
else
{
return 15;
}
}
@Override
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
{
return super.onBlockActivated(worldIn, pos, state, playerIn, hand, facing, hitX, hitY, hitZ);
}
@Override
public int getStrongPower(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side)
{
return !this.canPower ? 0 : blockState.getWeakPower(blockAccess, pos, side);
}
@Override
public void neighborChanged(IBlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos)
{
if(worldIn.isBlockPowered(pos.west()) && worldIn.getBlockState(pos.west()).getBlock() instanceof BlockRedstoneRepeater)
{
this.canPower = true;
}
else
{
this.canPower = false;
}
}
}
{
"variants": {
"facing=north,power=0": {
"model": "redskyll:activator"
},
"facing=north,power=1": {
"model": "redskyll:activator_on"
},
"facing=north,power=2": {
"model": "redskyll:activator_off"
},
"facing=north,power=3": {
"model": "redskyll:activator"
},
"facing=north,power=4": {
"model": "redskyll:activator"
},
"facing=north,power=5": {
"model": "redskyll:activator"
},
"facing=north,power=6": {
"model": "redskyll:activator"
},
"facing=south,power=0": {
"model": "redskyll:activator"
},
"facing=south,power=1": {
"model": "redskyll:activator_on"
},
"facing=south,power=2": {
"model": "redskyll:activator_off"
},
"facing=south,power=3": {
"model": "redskyll:activator"
},
"facing=south,power=4": {
"model": "redskyll:activator"
},
"facing=south,power=5": {
"model": "redskyll:activator"
},
"facing=south,power=6": {
"model": "redskyll:activator"
},
"facing=east,power=0": {
"model": "redskyll:activator"
},
"facing=east,power=1": {
"model": "redskyll:activator_on"
},
"facing=east,power=2": {
"model": "redskyll:activator_off"
},
"facing=east,power=3": {
"model": "redskyll:activator"
},
"facing=east,power=4": {
"model": "redskyll:activator"
},
"facing=east,power=5": {
"model": "redskyll:activator"
},
"facing=east,power=6": {
"model": "redskyll:activator"
},
"facing=west,power=0": {
"model": "redskyll:activator"
},
"facing=west,power=1": {
"model": "redskyll:activator_on"
},
"facing=west,power=2": {
"model": "redskyll:activator_off"
},
"facing=west,power=3": {
"model": "redskyll:activator"
},
"facing=west,power=4": {
"model": "redskyll:activator"
},
"facing=west,power=5": {
"model": "redskyll:activator"
},
"facing=west,power=6": {
"model": "redskyll:activator"
}
}