4ebur
Активный участник
- Баллы
- 61
- Имя в Minecraft
- __4eburashka__
Версия : 1.20.1
Хочу сделать следующее: когда игрок появляется в пустом мире на блоке травы он ставит определённый блок, вследствие чего появляются блоки от бедрока до 319 высоты вкл. по координатам где игрок поставил сам блок.
У меня уже есть пустой мир и связный с ним обычный мир (откуда берутся сами блоки).
НО вся проблемы начинается как раз когда я приплетаю сюда конфиг, я в него запихиваю лист со всеми координатами поставленных блоков, чтобы игрок допустим, сломав алмазы снова не создал чанк с этими же алмазами в том же месте.
Лог консоли в описании, где выводится "NULL", там я удалял весь конфиг, чтобы проверить. Там где пишет "NON NULL" просто ещё раз ставил блок
для примечания \/
public final ChunkPlugin plugin = this;
код ивента в котором я всё делаю *фото*\/

в письменном виде \/
Хочу сделать следующее: когда игрок появляется в пустом мире на блоке травы он ставит определённый блок, вследствие чего появляются блоки от бедрока до 319 высоты вкл. по координатам где игрок поставил сам блок.
У меня уже есть пустой мир и связный с ним обычный мир (откуда берутся сами блоки).
НО вся проблемы начинается как раз когда я приплетаю сюда конфиг, я в него запихиваю лист со всеми координатами поставленных блоков, чтобы игрок допустим, сломав алмазы снова не создал чанк с этими же алмазами в том же месте.
Лог консоли в описании, где выводится "NULL", там я удалял весь конфиг, чтобы проверить. Там где пишет "NON NULL" просто ещё раз ставил блок
для примечания \/
public final ChunkPlugin plugin = this;
код ивента в котором я всё делаю *фото*\/

в письменном виде \/
@EventHandler
public void onBlockPlace(BlockPlaceEvent event) {
List<String> list; // лист в котором будут все координаты поставленных блоков
Location WMLocation;
if (event.getItemInHand().getItemMeta().equals(MediumCBMeta)) {
WMLocation = event.getBlockPlaced().getLocation();
WMLocation.setWorld(getServer().getWorld("world_main")); //изменяю локацию на другой мир
event.getBlockPlaced().getLocation().getBlock().setType(Material.AIR); // сразу убираю поставленный блок
int num = 0; // создаю счётчик поставленных блоков
plugin.reloadConfig();
if (plugin.getConfig().getStringList("PlacedBlocks").isEmpty()) {
getLogger().info("NULL");
list = new ArrayList<>();
} else {
getLogger().info("NON NULL");
list = plugin.getConfig().getStringList("PlacedBlocks");
}
for (int i = -64; i < 320; i++) { //начинаю проверять все блоки от -64 до 319 высоты
WMLocation.setY(i);
Block block = new Location(getServer().getWorld("world"), WMLocation.getX(), WMLocation.getY(), WMLocation.getZ()).getBlock();
if (block.getType() == Material.AIR) { // чтобы не заменять постройки блоками
if (!list.contains(WMLocation)) { // ВОТ САМА ПРОВЕРКА НА СОДЕРЖАНИЕ ЛИСТА ЭТОЙ ЛОКАЦИИ, в логе он всегда пишет "FILL".
getLogger().info("FILL");
num++;
block.setType(WMLocation.getBlock().getType());
String str = WMLocation.getX() + "/" + WMLocation.getY() + "/" + WMLocation.getZ(); // лист не поддерживает лист локаций, так что выкручиваюсь
list.add(str);
}else{getLogger().info("INDEX" + String.valueOf(list.indexOf(WMLocation)));}
}
}
plugin.getConfig().set("PlacedBlocks", list);
plugin.saveConfig();
if (num == 0) { // если чанк уже был заполнен ранее
event.getPlayer().sendMessage("Whoops, no place to blocks!");
event.setCancelled(true);
}
}
}
public void onBlockPlace(BlockPlaceEvent event) {
List<String> list; // лист в котором будут все координаты поставленных блоков
Location WMLocation;
if (event.getItemInHand().getItemMeta().equals(MediumCBMeta)) {
WMLocation = event.getBlockPlaced().getLocation();
WMLocation.setWorld(getServer().getWorld("world_main")); //изменяю локацию на другой мир
event.getBlockPlaced().getLocation().getBlock().setType(Material.AIR); // сразу убираю поставленный блок
int num = 0; // создаю счётчик поставленных блоков
plugin.reloadConfig();
if (plugin.getConfig().getStringList("PlacedBlocks").isEmpty()) {
getLogger().info("NULL");
list = new ArrayList<>();
} else {
getLogger().info("NON NULL");
list = plugin.getConfig().getStringList("PlacedBlocks");
}
for (int i = -64; i < 320; i++) { //начинаю проверять все блоки от -64 до 319 высоты
WMLocation.setY(i);
Block block = new Location(getServer().getWorld("world"), WMLocation.getX(), WMLocation.getY(), WMLocation.getZ()).getBlock();
if (block.getType() == Material.AIR) { // чтобы не заменять постройки блоками
if (!list.contains(WMLocation)) { // ВОТ САМА ПРОВЕРКА НА СОДЕРЖАНИЕ ЛИСТА ЭТОЙ ЛОКАЦИИ, в логе он всегда пишет "FILL".
getLogger().info("FILL");
num++;
block.setType(WMLocation.getBlock().getType());
String str = WMLocation.getX() + "/" + WMLocation.getY() + "/" + WMLocation.getZ(); // лист не поддерживает лист локаций, так что выкручиваюсь
list.add(str);
}else{getLogger().info("INDEX" + String.valueOf(list.indexOf(WMLocation)));}
}
}
plugin.getConfig().set("PlacedBlocks", list);
plugin.saveConfig();
if (num == 0) { // если чанк уже был заполнен ранее
event.getPlayer().sendMessage("Whoops, no place to blocks!");
event.setCancelled(true);
}
}
}
Вложения:
Последнее редактирование: