1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Кидает NPE, при телепортации в свой мир.

Тема в разделе "Разработка плагинов для новичков", создана пользователем Lisenochek, 13 авг 2017.

Статус темы:
Закрыта.
  1. Автор темы
    Lisenochek

    Lisenochek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Всем привет. Пытаюсь сгенерировать мир без сторонних плагинов (MultiWorld и все в таком духе).
    У меня это почти получилось. Мир прогружен, висит в памяти, но зайти туда я не могу - он бросает мне 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);
        }
     
Статус темы:
Закрыта.

Поделиться этой страницей