MarinCod
Пользователь
- Сообщения
- 81
Код:
// Ставит схематик
public static boolean placeSchematic(String name, BlockVector3 bv3, int direction, boolean ignoreAir) {
File schem = new File(Main.getInstance().getDataFolder() + "/schematics/" + name);
ClipboardFormat format = ClipboardFormats.findByFile(schem);
Clipboard clipboard;
try {
ClipboardReader reader = format.getReader(new FileInputStream(schem));
clipboard = reader.read();
log.info(ChatColor.AQUA + "Я успешно загрузил файл с именем " + name);
} catch (IOException e) {
log.info(ChatColor.RED + "Ошибка при загрузке файла с именем - " + name);
return false;
}
EditSession session = WorldEdit.getInstance().getEditSessionFactory().getEditSession(BukkitAdapter.adapt(world), -1);
ClipboardHolder holder = new ClipboardHolder(clipboard);
AffineTransform transform = new AffineTransform();
switch (direction) {
case 1:
transform = transform.rotateY(180);
transform = transform.rotateX(0);
transform = transform.rotateZ(0);
break;
case 2:
// Именно direction 2 это идеальное состояние для схематика
transform = transform.rotateY(0);
transform = transform.rotateX(0);
transform = transform.rotateZ(0);
break;
case 3:
transform = transform.rotateY(90);
transform = transform.rotateX(0);
transform = transform.rotateZ(0);
break;
case 4:
transform = transform.rotateY(270);
transform = transform.rotateX(0);
transform = transform.rotateZ(0);
break;
}
holder.setTransform(holder.getTransform().combine(transform));
Operation operation = holder.createPaste(session).to(bv3).ignoreAirBlocks(ignoreAir).build();
try {
Operations.complete(operation);
session.close();
} catch (WorldEditException e) {
return false;
}
return true;
}
Написал такой метод для того, чтобы ставить схематики. Проблема в том, что при таком способе можно легко сломать бедрок. Мне нужно, чтобы такой постановкой схематика нельзя было этого сделать. Возможно ли такое?