Помогите как сделать чтобы вокруг поршня проверялось, есть ли впритык к нему наблюдатель или нет?

БулатРС

Ньюби
Баллы
1
Как сделать чтобы вокруг поршня проверялось, есть ли впритык к нему наблюдатель или нет, а если есть то поршень может выдвинуть на 12 блоков больше?
Я совсем новичок и ничего не понимаю, так что если можно растолкуйте и как можно проще, пожалуйста.
 
Block#getRelative(BlockFace face) позволяет получить соседний блок, проверяешь на то что он наблюдатель. намчет выдвижения поршня не понял, объясни подробнее
 
Block#getRelative(BlockFace face) позволяет получить соседний блок, проверяешь на то что он наблюдатель. намчет выдвижения поршня не понял, объясни подробнее
ну у поршня есть лимит что он может сдвинуть 12 блоков, но не больше и я хочу чтобы если по соседству с поршнем есть наблюдатель, то поршень может сдвинуть на 12 блоков больше.
 
ну у поршня есть лимит что он может сдвинуть 12 блоков, но не больше и я хочу чтобы если по соседству с поршнем есть наблюдатель, то поршень может сдвинуть на 12 блоков больше.
При выдвижении поршня получаешь сторону, в которую он выдвигается (BlockFace), из него получаешь противоположную сторону - getOppositeFace(), по нему получаешь блок, стоящий позади поршня. Проверяешь, что это наблюдатель, после чего двигаешь нужное кол-во блоков по направлению поршня
 
При выдвижении поршня получаешь сторону, в которую он выдвигается (BlockFace), из него получаешь противоположную сторону - getOppositeFace(), по нему получаешь блок, стоящий позади поршня. Проверяешь, что это наблюдатель, после чего двигаешь нужное кол-во блоков по направлению поршня
Спасибо!
 
Block#getRelative(BlockFace face) позволяет получить соседний блок, проверяешь на то что он наблюдатель. намчет выдвижения поршня не понял, объясни подробнее
Извините, но у меня программа жалуется что getRelative нельзя использовать внутри события 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'
 
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.
 
Так этот метод класса 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)) {
{

}
}
}
}
}
}
}
}
теперь ведь всё правильно, да?
 
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)) {
{

}
}
}
}
}
}
}
}
теперь ведь всё правильно, да?
Проверить код на практике гораздо проще, чем проверить его визуально. Тестируй, проверяй.
Если есть вопросы или сложности - задавай вопросы
 
Назад
Верх