BlockState неверно работает.

Версия Minecraft
1.12.2
5,018
47
783
В общем делаю я свой блок с блокстейтом. Мне нужно, чтобы при правом клике по нему, мой Boolean блокстейта менялся по кругу хотя бы для начала.
А он не меняется

Java:
    @Override
    @Override
    public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos)
    {
          return state.withProperty(WITH_COAL, Boolean.valueOf(true));
    }
    @Override
    public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
    {
        state.cycleProperty(WITH_COAL);
        return true;
    }
 
Последнее редактирование:
5,018
47
783
Я жестко туплю уже второй день и никак не могу понять где мне ставить фалсе
(вообще у меня в конструкторе false как дефаулт стейт указано)

Запилите кто нить гайд по блокстейтам и как их юзать :\
 
Последнее редактирование:

Icosider

Kotliner
Администратор
3,600
99
663
Я жестко туплю уже второй день и никак не могу понять где мне ставить фалсе
(вообще у меня в конструкторе false как дефаулт стейт указано)

Запилите кто нить гайд по блокстейтам и как их юзать :\
Уже пилится. Дефолт стейт это то что будет инициализировано и установлено по дефолту.
 
5,018
47
783
Я понимаю. А почему cycleProperty не работает? Сколько не кликаю, нет результат
 
5,018
47
783
!state.cycleProperty(WITH_COAL) вот добавь вместо Булиан.valueOf, и зачем ты его поставил? Зачем говнокодишь?
Так было в ванильной траве :)
Вот так?

Java:
    @Override
    public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos)
    {
        return state.cycleProperty(WITH_COAL);
    }
 
4,045
63
645
Во первых, снеси нафик getActualState().
Он тебе и мешает...
Во вторых, где ты блок в мире ставишь?
Что-то не увидел. Это метод cycleProperty()? Не заглядывал в него... Но при щелчке нужно устанавливать блок в мире.
 

Icosider

Kotliner
Администратор
3,600
99
663
Во первых, снеси нафик getActualState().
Он тебе и мешает...
Во вторых, где ты блок в мире ставишь?
Что-то не увидел. Это метод cycleProperty()? Не заглядывал в него... Но при щелчке нужно устанавливать блок в мире.
Менять стейт а не блок ставить-_-
 
5,018
47
783
cycleProperty()
Как там написано, после максимального значения проперти устанавливается минимальное и по кругу так
 
5,018
47
783
Java:
public class CumpfireBlock extends BasicBlockWithCustomModel{
    public static final PropertyBool WITH_COAL = PropertyBool.create("withcoal");
    public CumpfireBlock(Material materialIn, String name, float hardness, float resistanse, String hravLevel,int level, SoundType soundtype) {
        super(materialIn, name, hardness, resistanse, hravLevel, level, soundtype);
        this.setDefaultState(this.blockState.getBaseState().withProperty(WITH_COAL, Boolean.valueOf(false)));

    }
    protected static final AxisAlignedBB block_AABB = new AxisAlignedBB(0.04D, 0.0D, 0.04D, 0.96D, 0.15D, 0.96D);




    @Override
    public boolean isOpaqueCube(IBlockState state) {
        return false;
    }

    @Override
    @SideOnly(Side.CLIENT)
    public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side) {
        return false;
    }
    @Override
    public int getMetaFromState(IBlockState state)
    {
        return 0;
    }
    @Override
    protected BlockStateContainer createBlockState()
    {
        return new BlockStateContainer(this, new IProperty[] {WITH_COAL});
    }
    @Override
    public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos)
    {
        return state.cycleProperty(WITH_COAL);
    }
    @Override
    public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
    {
        state.cycleProperty(WITH_COAL);
        return true;
    }
    @Override
    @SideOnly(Side.CLIENT)
    public boolean isFullCube(IBlockState state) {
        return false;
    }
    public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
    {
        return block_AABB;
    }
Вот весь класс. Может не так что делаю?
 
5,018
47
783
5,018
47
783
Вся суть такова. Я для начала хочу просто на булеане научится. Потом будет так - можно будет подкладывать уголь\дрова в костер и чтобы это рендерилось. Максимум пять кусочков. В общем, хороший рабочий костер, но без tile enitity
Новая концепция)
 
4,045
63
645

Icosider

Kotliner
Администратор
3,600
99
663
Вся суть такова. Я для начала хочу просто на булеане научится. Потом будет так - можно будет подкладывать уголь\дрова в костер и чтобы это рендерилось. Максимум пять кусочков. В общем, хороший рабочий костер, но без tile enitity
Новая концепция)
Ору
 
4,045
63
645
5,018
47
783
Забей на костёр )))
Я его уже давно реализовал... Увидишь в следующем обновлении :Р
Правда с тайлом.
Да у меня тоже с тайлом есть, еще в октябре того года его сделал мне thunder))
Я собственно уже все сделал почти, осталось только вот это декоративное подкладывание угля сделать
У меня жарится энтитиитем который сверху валяется, с огоньками, все как положено0
 
5,018
47
783
А по твоему, без замены блока можно изменить стейт? Нуко, нуко? Как? Или я совсем тупой.

Легко... Просто удаляй.
Я меняю не блок, а модель блока, а это делается через блокстейт
 
4,045
63
645
Модель блока у тебя связана со стейтом... Стейт ты меняешь через мир. В каком месте ты его меняешь, я не заметил...
Заметил только гедАктуалСтейт, который всё время показывает одно и то же.
 
Сверху