- Баллы
- 76
- Имя в Minecraft
- Lisenochek
Всем привет. Пытаюсь сгенерировать мир без сторонних плагинов (MultiWorld и все в таком духе).
У меня это почти получилось. Мир прогружен, висит в памяти, но зайти туда я не могу - он бросает мне NPE, мол мир не найден. Помогите мне разобраться с этой проблемой.
У меня это почти получилось. Мир прогружен, висит в памяти, но зайти туда я не могу - он бросает мне NPE, мол мир не найден. Помогите мне разобраться с этой проблемой.
Код:
public static void asd() {
WorldCreator creator = new WorldCreator("Realistic");
creator.generateStructures(false);
World world = Bukkit.createWorld(creator);
Bukkit.getWorlds().add(world);
File directory = world.getWorldFolder();
BukkitRunnable runnable = new BukkitRunnable() {
@Override
public void run() {
if (Bukkit.getWorld("Realistic") != null) {
Bukkit.unloadWorld(world, true);
Bukkit.getWorlds().remove(world);
Logger.warning("Мир отгружен.");
return;
}
try {
File level = new File(directory, "level.dat");
NbtCompound compound = NbtFactory.fromFile(level.getAbsolutePath());
NbtCompound dataCompount = compound.getCompound("Data");
if (dataCompount.getString("generatorName").equals("customized")) {
Bukkit.getWorlds().add(world);
cancel();
return;
}
dataCompount.put("generatorName", "customized");
dataCompount.put("generatorOptions", "{\"coordinateScale\":1.0,\"heightScale\":254.47887,\"lowerLimitScale\":512.0,\"upperLimitScale\":1127.5352,\"depthNoiseScaleX\":2000.0,\"depthNoiseScaleZ\":2000.0,\"depthNoiseScaleExponent\":7.611831,\"mainNoiseScaleX\":80.0,\"mainNoiseScaleY\":705.08453,\"mainNoiseScaleZ\":80.0,\"baseSize\":3.366197,\"stretchY\":24.652958,\"biomeDepthWeight\":1.0,\"biomeDepthOffset\":5.7746477,\"biomeScaleWeight\":1.0,\"biomeScaleOffset\":0.0,\"seaLevel\":1,\"useCaves\":false,\"useDungeons\":false,\"dungeonChance\":1,\"useStrongholds\":false,\"useVillages\":false,\"useMineShafts\":false,\"useTemples\":false,\"useMonuments\":false,\"useRavines\":false,\"useWaterLakes\":true,\"waterLakeChance\":5,\"useLavaLakes\":false,\"lavaLakeChance\":10,\"useLavaOceans\":false,\"fixedBiome\":-1,\"biomeSize\":3,\"riverSize\":5,\"dirtSize\":33,\"dirtCount\":10,\"dirtMinHeight\":0,\"dirtMaxHeight\":256,\"gravelSize\":33,\"gravelCount\":0,\"gravelMinHeight\":0,\"gravelMaxHeight\":256,\"graniteSize\":1,\"graniteCount\":0,\"graniteMinHeight\":0,\"graniteMaxHeight\":80,\"dioriteSize\":33,\"dioriteCount\":0,\"dioriteMinHeight\":0,\"dioriteMaxHeight\":80,\"andesiteSize\":33,\"andesiteCount\":0,\"andesiteMinHeight\":0,\"andesiteMaxHeight\":80,\"coalSize\":17,\"coalCount\":0,\"coalMinHeight\":0,\"coalMaxHeight\":128,\"ironSize\":9,\"ironCount\":0,\"ironMinHeight\":0,\"ironMaxHeight\":64,\"goldSize\":9,\"goldCount\":0,\"goldMinHeight\":0,\"goldMaxHeight\":32,\"redstoneSize\":8,\"redstoneCount\":0,\"redstoneMinHeight\":0,\"redstoneMaxHeight\":16,\"diamondSize\":8,\"diamondCount\":0,\"diamondMinHeight\":0,\"diamondMaxHeight\":16,\"lapisSize\":7,\"lapisCount\":0,\"lapisCenterHeight\":16,\"lapisSpread\":16}");
NbtFactory.toFile(compound, level.getAbsolutePath());
Logger.warning("Мир прогружается...");
File region = new File(directory, "region");
if (region.exists()) {
File[] files = region.listFiles();
if (files == null) return;
for (File f : files) if (!f.isDirectory()) f.delete();
}
Bukkit.getWorlds().add(world);
Logger.warning("Мир прогружен");
cancel();
} catch (IOException e) {
e.printStackTrace();
}
}
};
runnable.runTaskTimer(Main.plugin, 1, 20);
}