[1.9+]getBoundingBox

Статус
В этой теме нельзя размещать новые ответы.
883
19
295
Всем доброго дня:)
Подскажите, пожалуйста в чём дело: Создавал я, блок - моделька есть с текстурами тоже всё в порядке. А дальше выставил размер блока методом 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,978
67
196
А-эм о_О
ничего не понимаю, у меня тоже оцелота дамажит. Бред какой-то.
А на счёт света - глянь в рельсах.
 
883
19
295
AlexSocol написал(а):
А-эм о_О
ничего не понимаю, у меня тоже оцелота дамажит. Бред какой-то.
Вот и я о том же! Но ведь нажимные плиты, высотой в один пиксель, как-то работают.:ermm: Или там другой принцип?

AlexSocol написал(а):
А на счёт света - глянь в рельсах.
Спасибо, посмотрю.:D
 
1,138
5
2
Код:
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

iMixin
Администратор
3,285
85
485
Крокодил написал(а):
Спасибо, попробую!
Код:
    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,138
5
2
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

iMixin
Администратор
3,285
85
485
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;
Случайно флаг удалил, поправил.
 
883
19
295
Объясните "умному" человеку для чего нужен 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

iMixin
Администратор
3,285
85
485
Крокодил написал(а):
Объясните "умному" человеку для чего нужен 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;
    }
В данном случае мы рамку столкновения не делаем и нас не будет откидывать назад(вверх и т.д.) когда мы стоим на блоке.
 
1,978
67
196
WildHeart написал(а):
Перевод: Полный куб. Если значение true то этот блок будет заполняться. Если значение false то он уже будет считаться кастомным блоком и не будет заполняться и следовательно мы сможем расположить внутри нашего куба тот же цветочный горшок или нажимную плиту.
Ты где это нашёл?
[merge_posts_bbcode]Добавлено: 03.07.2016 14:57:00[/merge_posts_bbcode]

Не знаю как у тебя, а у меня нифига так не работает
 

timaxa007

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