- Баллы
- 76
Обшарил немного интернет, из того, что нашёл, сварил кашу качеством равным нулю. Нужно каждый раз, как игрок ставит блок двери, эта дверь сохранялась в ArrayList. При введении опред. команды, эти двери должны восстанавливаться. (Тип открытые двери закрыть, кстати, может быть можно просто каким-то методом их закрывать на координатах, и всё?) Короче, пытался их сохранять по-разному, вот то, на чём сейчас остановился...
В консоли ошибка, которая ругается на эту строчку: Door door = (Door)block;
Как пытаюсь ставить эту дверь:
Хотя проблема всё-таки в сохранении...
Код:
public static ArrayList<Door> doors = new ArrayList<Door>();
@EventHandler
public void onSetblock(BlockPlaceEvent e){
Block block = e.getBlock();
Player p = e.getPlayer();
if(block.getType().equals(Material.WOODEN_DOOR)){
p.sendMessage("Дверь.");
Door door = (Door)block;
doors.add(door);
p.sendMessage(""+doors);
}
}
Как пытаюсь ставить эту дверь:
Код:
for(int i=0; i<doors.size();i++){
Door d = doors.get(i);
Block b = (Block) d;
BlockState state = b.getWorld().getBlockAt(b.getX(), b.getY(), b.getZ()).getState();
b.getWorld().getBlockAt(b.getX(), b.getY(), b.getZ()).setType(b.getType());
((Door) b).setFacingDirection(d.getFacing());
state.update();
}