[1.9+]getBoundingBox

Статус
В этой теме нельзя размещать новые ответы.
917
22
332
Всем доброго дня:)
Подскажите, пожалуйста в чём дело: Создавал я, блок - моделька есть с текстурами тоже всё в порядке. А дальше выставил размер блока методом getBoundingBox:
Код:
    @Override
    public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) {
        return new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.1D, 1.0D);
    }
Похожая тема уже была >клик<, но у меня немножко другая проблема.
Собственно, когда я устанавливаю MaxY на 0.5, получается нормальный полублок, но стоит установить чуть меньше и на этот блок невозможно наступить - игрок как бы становится но тут же соскальзывает, даже если прыгнуть сверху. Кстати на мобов это не действует, но если заспавнить маленького зверя вроде курицы или оцелота, то они начинают получать урон. Создаётся впечатление, что физический размер блока больше чем тот, который выдаёт игра.
P.S
Вопрос не по теме: Сам блок высотой в один пиксель, но тень от него как от обычного. Как это можно исправить?
P.P.S
Спасибо за помощь:)
[merge_posts_bbcode]Добавлено: 02.07.2016 21:31:30[/merge_posts_bbcode]

Неужели вопрос настолько тупой, что никто даже не хочет помогать?

[merge_posts_bbcode]Добавлено: 02.07.2016 21:31:52[/merge_posts_bbcode]

Нет, я правда не догоняю.

[merge_posts_bbcode]Добавлено: 02.07.2016 21:37:35[/merge_posts_bbcode]

пробовал addCollisionBoxesToList, но результат тот же...
 
1,976
68
220
А-эм о_О
ничего не понимаю, у меня тоже оцелота дамажит. Бред какой-то.
А на счёт света - глянь в рельсах.
 
917
22
332
AlexSocol написал(а):
А-эм о_О
ничего не понимаю, у меня тоже оцелота дамажит. Бред какой-то.
Вот и я о том же! Но ведь нажимные плиты, высотой в один пиксель, как-то работают.:ermm: Или там другой принцип?

AlexSocol написал(а):
А на счёт света - глянь в рельсах.
Спасибо, посмотрю.:D
 
1,137
5
3
Код:
public void setBlockBoundsBasedOnState(IBlockAccess p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_)
{
 this.func_150063_b(p_149719_1_.getBlockMetadata(p_149719_2_, p_149719_3_, p_149719_4_));
}

protected void func_150063_b(int p_150063_1_)
{
 boolean flag = this.func_150060_c(p_150063_1_) > 0;
 float f = 0.0625F;

 if (flag)
 {
 this.setBlockBounds(f, 0.0F, f, 1.0F - f, 0.03125F, 1.0F - f);
 }
 else
 {
 this.setBlockBounds(f, 0.0F, f, 1.0F - f, 0.0625F, 1.0F - f);
 }
}

Нашёл вот это, может поможет
 

Icosider

Kotliner
Администратор
3,601
99
663
Крокодил написал(а):
Спасибо, попробую!
Код:
    protected static final AxisAlignedBB PRESSED_AABB = new AxisAlignedBB(0.0625D, 0.0D, 0.0625D, 0.9375D, 0.03125D, 0.9375D);
    protected static final AxisAlignedBB UNPRESSED_AABB = new AxisAlignedBB(0.0625D, 0.0D, 0.0625D, 0.9375D, 0.0625D, 0.9375D);

    public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
    {
        boolean flag = this.getRedstoneStrength(state) > 0;
        return flag ? PRESSED_AABB : UNPRESSED_AABB;
    }

    @Nullable
    public AxisAlignedBB getCollisionBoundingBox(IBlockState blockState, World worldIn, BlockPos pos)
    {
        return NULL_AABB;
    }

    /**
     * Used to determine ambient occlusion and culling when rebuilding chunks for render
     */
    public boolean isOpaqueCube(IBlockState state)
    {
        return false;
    }

    public boolean isFullCube(IBlockState state)
    {
        return false;
    }

    public boolean isPassable(IBlockAccess worldIn, BlockPos pos)
    {
        return true;
    }
 
1,137
5
3
WildHeart написал(а):
Код:
    protected static final AxisAlignedBB PRESSED_AABB = new AxisAlignedBB(0.0625D, 0.0D, 0.0625D, 0.9375D, 0.03125D, 0.9375D);
    protected static final AxisAlignedBB UNPRESSED_AABB = new AxisAlignedBB(0.0625D, 0.0D, 0.0625D, 0.9375D, 0.0625D, 0.9375D);

    public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
    {
        return PRESSED_AABB : UNPRESSED_AABB;
    }

    @Nullable
    public AxisAlignedBB getCollisionBoundingBox(IBlockState blockState, World worldIn, BlockPos pos)
    {
        return NULL_AABB;
    }

    /**
     * Used to determine ambient occlusion and culling when rebuilding chunks for render
     */
    public boolean isOpaqueCube(IBlockState state)
    {
        return false;
    }

    public boolean isFullCube(IBlockState state)
    {
        return false;
    }

    public boolean isPassable(IBlockAccess worldIn, BlockPos pos)
    {
        return true;
    }
Нельзя делать таких конструкций, поправь
|
|
|
\/
Код:
return PRESSED_AABB : UNPRESSED_AABB;
 

Icosider

Kotliner
Администратор
3,601
99
663
wilah написал(а):
WildHeart написал(а):
Код:
    protected static final AxisAlignedBB PRESSED_AABB = new AxisAlignedBB(0.0625D, 0.0D, 0.0625D, 0.9375D, 0.03125D, 0.9375D);
    protected static final AxisAlignedBB UNPRESSED_AABB = new AxisAlignedBB(0.0625D, 0.0D, 0.0625D, 0.9375D, 0.0625D, 0.9375D);

    public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
    {
        return PRESSED_AABB : UNPRESSED_AABB;
    }

    @Nullable
    public AxisAlignedBB getCollisionBoundingBox(IBlockState blockState, World worldIn, BlockPos pos)
    {
        return NULL_AABB;
    }

    /**
     * Used to determine ambient occlusion and culling when rebuilding chunks for render
     */
    public boolean isOpaqueCube(IBlockState state)
    {
        return false;
    }

    public boolean isFullCube(IBlockState state)
    {
        return false;
    }

    public boolean isPassable(IBlockAccess worldIn, BlockPos pos)
    {
        return true;
    }
Нельзя делать таких конструкций, поправь
|
|
|
\/
Код:
return PRESSED_AABB : UNPRESSED_AABB;
Случайно флаг удалил, поправил.
 
917
22
332
Объясните "умному" человеку для чего нужен isOpaqueCube()?
[merge_posts_bbcode]Добавлено: 02.07.2016 23:32:17[/merge_posts_bbcode]

Ой, прошу прощения, isFullCube(). opaque я знаю.
[merge_posts_bbcode]Добавлено: 02.07.2016 23:40:14[/merge_posts_bbcode]

Никто не знает?..
 

Icosider

Kotliner
Администратор
3,601
99
663
Крокодил написал(а):
Объясните "умному" человеку для чего нужен isOpaqueCube()?
[merge_posts_bbcode]Добавлено: 02.07.2016 23:32:17[/merge_posts_bbcode]

Ой, прошу прощения, isFullCube(). opaque я знаю.
[merge_posts_bbcode]Добавлено: 02.07.2016 23:40:14[/merge_posts_bbcode]

Никто не знает?..
Перевод: Полный куб. Если значение true то этот блок будет заполняться. Если значение false то он уже будет считаться кастомным блоком и не будет заполняться и следовательно мы сможем расположить внутри нашего куба тот же цветочный горшок или нажимную плиту.
[merge_posts_bbcode]Добавлено: 03.07.2016 04:34[/merge_posts_bbcode]

Тебе вот это нужно:
Код:
    @Nullable
    public AxisAlignedBB getCollisionBoundingBox(IBlockState blockState, World worldIn, BlockPos pos)
    {
        return NULL_AABB;
    }
В данном случае мы рамку столкновения не делаем и нас не будет откидывать назад(вверх и т.д.) когда мы стоим на блоке.
 
917
22
332
Огромное спасибо, разобрался! Вряд ли я бы справился с этим без вашей помощи:).
Всем спасибо!

Тему можно закрывать.
 
1,976
68
220
WildHeart написал(а):
Перевод: Полный куб. Если значение true то этот блок будет заполняться. Если значение false то он уже будет считаться кастомным блоком и не будет заполняться и следовательно мы сможем расположить внутри нашего куба тот же цветочный горшок или нажимную плиту.
Ты где это нашёл?
[merge_posts_bbcode]Добавлено: 03.07.2016 14:57:00[/merge_posts_bbcode]

Не знаю как у тебя, а у меня нифига так не работает
 
917
22
332
AlexSocol написал(а):
Ты где это нашёл?
[merge_posts_bbcode]Добавлено: 03.07.2016 14:57:00[/merge_posts_bbcode]

Не знаю как у тебя, а у меня нифига так не работает
А я думал что у меня из за корявой модельки не работает...
 

timaxa007

Модератор
5,831
409
672
Тему закрыть?
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху