Вопрос Как сохранить голограмму: HolographicDisplaysAPI

Destroy

Разработчик
Пользователь
Сообщения
777
Решения
30
Веб-сайт
destroydevs.ru
При перезапуске сервера любая голограмма удаляется.

попробовал так (не работает вообще, даже не добавляет строки)
Java:
public static void saveHologram(Hologram holo, PluginMain main) {
        String uuid = UUID.randomUUID().toString();
        main.getConfig().set("holograms", uuid);
        main.getConfig().set("holograms."+uuid+".location", holo.getLocation());
        for(int i = 0; i < holo.size(); i++) {
            main.getConfig().set("holograms."+uuid+".lines", holo.getLine(i));
        }
    }
и удаление
Java:
public static void removeHologram(Location loc, PluginMain main) {
        Iterator<String> iterator = main.getConfig().getConfigurationSection("holograms").getKeys(false).iterator();
        while(iterator.hasNext()) {
            String id = iterator.next();
            if(main.getConfig().get("holograms."+id+"location") == loc) {
                main.getConfig().set("holograms."+id, null);
            }
        }
    }

Как лучше сделать сохранение голограмм?
 
А ты сохраняешь конфиг? В этом коде не видно такого)
Уже исправил, тупанул. Но все равно проблема осталась. Я не понимаю как можно Location из String получить, чтобы потом эти голограммы при запуске сервера создавать.
Объединено

Решено.

Для тех у кого будет такая-же проблема оставлю:
Java:
    private static FileConfiguration config;
    private static File file;

    public static void loadYamlFile(Plugin plugin) {
        file = new File(plugin.getDataFolder(), "database.yml");
        if (!file.exists()) {
            plugin.getDataFolder().mkdirs();
            plugin.saveResource("database.yml", true);
        }

        config = YamlConfiguration.loadConfiguration(file);
    }

    public static void loadHologram(String name, Главный_Класс main) throws WorldNotFoundException, InvalidFormatException {
        List<String> lines = config.getStringList(name+".lines");
        String locationString = config.getString(name+".location");
        if (locationString != null && lines.size() != 0) {
            Location loc = LocationSerializer.locationFromString(locationString);
            Hologram holo = HologramsAPI.createHologram(main, loc);
            for (String line : lines) {
                holo.appendTextLine(line);
            }
        }
    }

    public static void saveHologram(Hologram holo, String name) {
        List<String> linesList = new ArrayList<>();
        ConfigurationSection cfg = getOrCreateSection(name);
        cfg.set("location", LocationSerializer.locationToString(holo.getLocation()));
        for(int i = 0; i < holo.size(); i++) {
            linesList.add(holo.getLine(i).toString().replace("CraftTextLine ", "").replace("[text=", "").replace("]", ""));
        }
        cfg.set("lines", linesList);
        try{
            config.save(file);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static Set<String> getHolograms() {
        return config.getKeys(false);
    }

    private static ConfigurationSection getOrCreateSection(String name) {
        return config.isConfigurationSection(name) ? config.getConfigurationSection(name) : config.createSection(name);
    }

    public static void deleteHologram(String name) {
        config.set(name, null);
        try{
            config.save(file);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
Последнее редактирование:
Назад
Сверху Снизу