Войти или зарегистрироваться

Помогите [Решено]Поставить блок, который смотрит в определенную сторону(?)

Статус
Закрыто для дальнейших ответов.

Морпеч крч

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
_Morpech_
Всем привет, дорогие девелоперы!
Хотел бы спросить, можно ли дополнить f.getBlock().setType(Material.SMOOTH_STAIRS); тем, куда будет смотреть ступенька (стороны North/SOTH и т.д.)? Я просмотрел форумы и ютуб - ничего не нашел
javadoc bukkit пользуюсь плохо)

Буду рад ответу, спасибо за внимание.
 
За это дополнительный параметр отвечает.
 
Можно получить MaterialData блока(находится в его BlockState), закастовать Stairs и поменять направление. Сам не проверял, но предполагаю что сработает.
 
Код:
  public boolean getStairsData(World world, int x, int y, int z, BlockFace dir){
        byte d = 0;
      
        if(dir == BlockFace.WEST){
            d = 0x1;
        }else if(dir == BlockFace.EAST){
            d = 0x0;
        }else if(dir == BlockFace.NORTH){
            d = 0x3;
        }else if(dir == BlockFace.SOUTH){
            d = 0x2;
        }
      
        return world.getBlockAt(x, y, z).setTypeIdAndData(67, d, false);
    }
Но лучше сделать через switch.
 
Код:
  public boolean getStairsData(World world, int x, int y, int z, BlockFace dir){
        byte d = 0;
     
        if(dir == BlockFace.WEST){
            d = 0x1;
        }else if(dir == BlockFace.EAST){
            d = 0x0;
        }else if(dir == BlockFace.NORTH){
            d = 0x3;
        }else if(dir == BlockFace.SOUTH){
            d = 0x2;
        }
     
        return world.getBlockAt(x, y, z).setTypeIdAndData(67, d, false);
    }
Но лучше сделать через switch.
как это правильно использовать? Я много перепробовал.. без успехов
 
Сам не особо понял. Видимо, как-то так:
Код:
  public boolean setStairsDirection(Block b, BlockFace dir){
        byte d = 0;

        switch(dir){
            case WEST:
                d = 0x1;
                break;
            case EAST:
                d = 0x0;
                break;
            case NORTH:
                d = 0x3;
                break;
            case SOUTH:
                d = 0x2;
                break;
        }
 
        return b.setTypeIdAndData(Material.SMOOTH_STAIRS.getId(), d, false);
    }
А в BlockFace указываем направление ступенек.
 
Последнее редактирование:
Сам не особо понял. Видимо, как-то так:
Код:
  public boolean setStairsDirection(Location loc, BlockFace dir){
        byte d = 0;

        switch(dir){
            case WEST:
                d = 0x1;
                break;
            case EAST:
                d = 0x0;
                break;
            case NORTH:
                d = 0x3;
                break;
            case SOUTH:
                d = 0x2;
                break;
        }
 
        return loc.setTypeIdAndData(67, d, false);
    }
А в BlockFace указываем направление ступенек.
Нет, в смысле использовать f.getBlock().setType(Material.SMOOTH_STAIRS) взаимодействии с этим кодом( в данном случае меня интересует только сторона North. Сейчас сильно застопорился на этом моменте :-\
может, мне скинуть весь код?
 
Нет, в смысле использовать f.getBlock().setType(Material.SMOOTH_STAIRS) взаимодействии с этим кодом( в данном случае меня интересует только сторона North. Сейчас сильно застопорился на этом моменте :-\
может, мне скинуть весь код?
loc.getBlock().setTypeIdAndData(Material.SMOOTH_STAIRS.getId(), 0x3, false);
 
loc.getBlock().setTypeIdAndData(Material.SMOOTH_STAIRS.getId(), 0x3, false);
Вот, как раз, на этом моменте я заступорился
KMAnPBSQ6tw.jpg
 
Сделайте просто f.getBlock().setData(0x3).
 
ID давно не используются. А это кастаните в байт, делов то
 
Странно, всегда думал, что это байт. Ну тогда кастуйте, а на deprecated не обращайте внимания.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх