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"            
        }
}