Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
ну у поршня есть лимит что он может сдвинуть 12 блоков, но не больше и я хочу чтобы если по соседству с поршнем есть наблюдатель, то поршень может сдвинуть на 12 блоков больше.Block#getRelative(BlockFace face) позволяет получить соседний блок, проверяешь на то что он наблюдатель. намчет выдвижения поршня не понял, объясни подробнее
При выдвижении поршня получаешь сторону, в которую он выдвигается (BlockFace), из него получаешь противоположную сторону - getOppositeFace(), по нему получаешь блок, стоящий позади поршня. Проверяешь, что это наблюдатель, после чего двигаешь нужное кол-во блоков по направлению поршняну у поршня есть лимит что он может сдвинуть 12 блоков, но не больше и я хочу чтобы если по соседству с поршнем есть наблюдатель, то поршень может сдвинуть на 12 блоков больше.
Спасибо!При выдвижении поршня получаешь сторону, в которую он выдвигается (BlockFace), из него получаешь противоположную сторону - getOppositeFace(), по нему получаешь блок, стоящий позади поршня. Проверяешь, что это наблюдатель, после чего двигаешь нужное кол-во блоков по направлению поршня
Извините, но у меня программа жалуется что getRelative нельзя использовать внутри события BlockEvent, что делать?Block#getRelative(BlockFace face) позволяет получить соседний блок, проверяешь на то что он наблюдатель. намчет выдвижения поршня не понял, объясни подробнее
скинь скрин/текст ошибкиИзвините, но у меня программа жалуется что getRelative нельзя использовать внутри события BlockEvent, что делать?
import org.bukkit.Material;скинь скрин/текст ошибки
Так этот метод класса Block, а не BlockEvent.import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockEvent;
public class porshen implements Listener {
@EventHandler
public void handleBlockEvent(BlockEvent e) {
if (e.getBlock().getType() == Material.PISTON) {
int radius = 1;
for (int x = -(radius); x <= radius; x++) {
for (int y = -(radius); y <= radius; y++) {
for (int z = -(radius); z <= radius; z++) {
if (e.getRelative(x, y, z).getType() == Material.OBSERVER && (x != 0 || y != 0 || z != 0)) {
{
}
}
}
}
}
}
}
}
это код который я написал
а это ошибка
Cannot resolve method 'getRelative' in 'BlockEvent'
ааааааааааааа, спасибоТак этот метод класса Block, а не BlockEvent.
public void handleBlockEvent(BlockEvent e, Block b) {Так этот метод класса Block, а не BlockEvent.
Проверить код на практике гораздо проще, чем проверить его визуально. Тестируй, проверяй.public void handleBlockEvent(BlockEvent e, Block b) {
if (e.getBlock().getType() == Material.PISTON) {
int radius = 1;
for (int x = -(radius); x <= radius; x++) {
for (int y = -(radius); y <= radius; y++) {
for (int z = -(radius); z <= radius; z++) {
if (b.getRelative(x, y, z).getType() == Material.OBSERVER && (x != 0 || y != 0 || z != 0)) {
{
}
}
}
}
}
}
}
}
теперь ведь всё правильно, да?