Search in sources :

Example 1 with Asset

use of org.spongepowered.api.asset.Asset in project LanternServer by LanternPowered.

the class GeneratorTypeRegistryModule method postInit.

/**
 * Post initialize the {@link GeneratorType}s. All the default world generators
 * here be selected by scanning for 'default-world-gen.json' files.
 */
@CustomCatalogRegistration
@DelayedRegistration(RegistrationPhase.POST_INIT)
public void postInit() {
    final Multimap<String, DefaultEntry> entries = HashMultimap.create();
    final Gson gson = new Gson();
    // Scan every plugin
    for (PluginContainer pluginContainer : Sponge.getPluginManager().getPlugins()) {
        final Optional<Asset> optAsset = pluginContainer.getAsset("default-world-gen.json");
        if (optAsset.isPresent()) {
            try {
                final InputStream is = optAsset.get().getUrl().openStream();
                try (BufferedReader reader = new BufferedReader(new InputStreamReader(is))) {
                    final JsonObject json = gson.fromJson(reader, JsonObject.class);
                    for (Map.Entry<String, JsonElement> entry : json.entrySet()) {
                        entries.put(entry.getKey(), new DefaultEntry(pluginContainer, entry.getValue().getAsString()));
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    for (Map.Entry<String, Collection<DefaultEntry>> entry : entries.asMap().entrySet()) {
        final String id = entry.getKey();
        if (!getById(id).map(type -> type instanceof DelegateGeneratorType).orElse(false)) {
            Lantern.getLogger().warn("The plugin(s) ({}) attempted to map an unknown id: {}", Arrays.toString(entry.getValue().stream().map(e -> e.pluginContainer.getId()).toArray()), id);
            continue;
        }
        final List<DefaultEntry> possibleEntries = new ArrayList<>();
        for (DefaultEntry entry1 : entry.getValue()) {
            final Optional<GeneratorType> generatorType = getById(entry1.type);
            if (generatorType.isPresent()) {
                possibleEntries.add(entry1);
            } else {
                Lantern.getLogger().warn("The plugin {} attempted to map a missing generator type {} for {}", entry1.pluginContainer.getId(), entry1.type, id);
            }
        }
        if (!possibleEntries.isEmpty()) {
            final DefaultEntry defaultEntry = possibleEntries.get(0);
            if (possibleEntries.size() > 1) {
                Lantern.getLogger().warn("Multiple plugins are mapping {}: {}", id, Arrays.toString(entry.getValue().stream().map(e -> "\n" + e.pluginContainer.getId() + ": " + e.type).toArray()));
                Lantern.getLogger().warn("The first one will be used.");
            }
            ((DelegateGeneratorType) getById(id).get()).setGeneratorType(getById(defaultEntry.type).get());
            Lantern.getLogger().warn("Successfully registered a generator type mapping: {} from {} for {}", defaultEntry.type, defaultEntry.pluginContainer.getId(), id);
        }
    }
}
Also used : JsonObject(com.google.gson.JsonObject) Arrays(java.util.Arrays) FlatTheEndGeneratorType(org.lanternpowered.server.world.gen.flat.FlatTheEndGeneratorType) Multimap(com.google.common.collect.Multimap) ArrayList(java.util.ArrayList) JsonElement(com.google.gson.JsonElement) HashMultimap(com.google.common.collect.HashMultimap) FlatOverworldGeneratorType(org.lanternpowered.server.world.gen.flat.FlatOverworldGeneratorType) CustomCatalogRegistration(org.spongepowered.api.registry.util.CustomCatalogRegistration) TheVoidGeneratorType(org.lanternpowered.server.world.gen.thevoid.TheVoidGeneratorType) Gson(com.google.gson.Gson) Map(java.util.Map) BlockRegistryModule(org.lanternpowered.server.game.registry.type.block.BlockRegistryModule) RegistrationDependency(org.spongepowered.api.registry.util.RegistrationDependency) PluginContainer(org.spongepowered.api.plugin.PluginContainer) FlatNetherGeneratorType(org.lanternpowered.server.world.gen.flat.FlatNetherGeneratorType) GeneratorTypes(org.spongepowered.api.world.GeneratorTypes) DebugGeneratorType(org.lanternpowered.server.world.gen.debug.DebugGeneratorType) GeneratorType(org.spongepowered.api.world.GeneratorType) Collection(java.util.Collection) RegistrationPhase(org.spongepowered.api.registry.RegistrationPhase) Sponge(org.spongepowered.api.Sponge) IOException(java.io.IOException) InputStreamReader(java.io.InputStreamReader) DelegateGeneratorType(org.lanternpowered.server.world.gen.DelegateGeneratorType) List(java.util.List) DelayedRegistration(org.spongepowered.api.registry.util.DelayedRegistration) Lantern(org.lanternpowered.server.game.Lantern) BlockStateRegistryModule(org.lanternpowered.server.game.registry.type.block.BlockStateRegistryModule) Optional(java.util.Optional) BufferedReader(java.io.BufferedReader) AdditionalPluginCatalogRegistryModule(org.lanternpowered.server.game.registry.AdditionalPluginCatalogRegistryModule) Asset(org.spongepowered.api.asset.Asset) InputStream(java.io.InputStream) PluginContainer(org.spongepowered.api.plugin.PluginContainer) InputStreamReader(java.io.InputStreamReader) InputStream(java.io.InputStream) ArrayList(java.util.ArrayList) Gson(com.google.gson.Gson) JsonObject(com.google.gson.JsonObject) IOException(java.io.IOException) FlatTheEndGeneratorType(org.lanternpowered.server.world.gen.flat.FlatTheEndGeneratorType) FlatOverworldGeneratorType(org.lanternpowered.server.world.gen.flat.FlatOverworldGeneratorType) TheVoidGeneratorType(org.lanternpowered.server.world.gen.thevoid.TheVoidGeneratorType) FlatNetherGeneratorType(org.lanternpowered.server.world.gen.flat.FlatNetherGeneratorType) DebugGeneratorType(org.lanternpowered.server.world.gen.debug.DebugGeneratorType) GeneratorType(org.spongepowered.api.world.GeneratorType) DelegateGeneratorType(org.lanternpowered.server.world.gen.DelegateGeneratorType) JsonElement(com.google.gson.JsonElement) BufferedReader(java.io.BufferedReader) Asset(org.spongepowered.api.asset.Asset) Collection(java.util.Collection) Map(java.util.Map) DelegateGeneratorType(org.lanternpowered.server.world.gen.DelegateGeneratorType) CustomCatalogRegistration(org.spongepowered.api.registry.util.CustomCatalogRegistration) DelayedRegistration(org.spongepowered.api.registry.util.DelayedRegistration)

Example 2 with Asset

use of org.spongepowered.api.asset.Asset in project LanternServer by LanternPowered.

the class LanternScriptGameRegistry method compile.

@Override
public Script<Object> compile(Object plugin, String asset) {
    final AssetRepository assetRepository = Lantern.getAssetRepository();
    final Asset theAsset = assetRepository.get(plugin, asset).orElseThrow(() -> new IllegalArgumentException("There is no asset with the specified id: " + asset + " for the specified plugin:" + plugin));
    return this.compile(theAsset);
}
Also used : AssetRepository(org.lanternpowered.server.asset.AssetRepository) Asset(org.spongepowered.api.asset.Asset)

Example 3 with Asset

use of org.spongepowered.api.asset.Asset in project TotalEconomy by Erigitic.

the class MessageManager method setupConfig.

/**
 * Setup the messages_[lang].conf file
 */
private void setupConfig(Locale locale) {
    File messagesFile = new File(totalEconomy.getConfigDir(), "messages_" + locale.getLanguage() + ".conf");
    ConfigurationLoader<CommentedConfigurationNode> loader = HoconConfigurationLoader.builder().setFile(messagesFile).build();
    try {
        if (!messagesFile.exists()) {
            Asset defaultMessagesAsset = totalEconomy.getPluginContainer().getAsset("messages_en.conf").get();
            Optional<Asset> optMessagesAsset = totalEconomy.getPluginContainer().getAsset("messages_" + locale.getLanguage() + ".conf");
            optMessagesAsset.orElse(defaultMessagesAsset).copyToFile(messagesFile.toPath());
        }
        messagesConfig = loader.load();
    } catch (IOException e) {
        logger.warn("[TE] Error loading/creating the messages configuration file!");
    }
}
Also used : CommentedConfigurationNode(ninja.leaping.configurate.commented.CommentedConfigurationNode) Asset(org.spongepowered.api.asset.Asset) IOException(java.io.IOException) File(java.io.File)

Example 4 with Asset

use of org.spongepowered.api.asset.Asset in project core by CubeEngine.

the class I18n method enable.

public void enable() {
    LanguageLoader languageLoader = service.getLanguageLoader();
    Asset langs = getAssetManager().getAsset(plugin, "languages/languages.yml").get();
    try {
        List<URL> urls = new ArrayList<>();
        for (String lang : langs.readLines()) {
            Optional<Asset> langAsset = getAssetManager().getAsset(plugin, "languages/" + lang + ".yml");
            if (langAsset.isPresent()) {
                urls.add(langAsset.get().getUrl());
            } else {
                log.warn("Could not find language definition for: " + lang);
            }
        }
        if (urls.size() != 0) {
            log.info("Loading {} language definitions", urls.size());
        }
        ((I18nLanguageLoader) languageLoader).loadLanguages(urls);
    } catch (IOException e) {
        throw new IllegalStateException(e);
    }
}
Also used : LanguageLoader(org.cubeengine.i18n.language.LanguageLoader) ArrayList(java.util.ArrayList) Asset(org.spongepowered.api.asset.Asset) IOException(java.io.IOException) URL(java.net.URL)

Example 5 with Asset

use of org.spongepowered.api.asset.Asset in project core by CubeEngine.

the class I18n method registerPlugin.

public void registerPlugin(PluginContainer plugin) {
    String name = plugin.getName();
    for (Language language : getLanguages()) {
        String lang = language.getLocale().getLanguage();
        String full = lang + "_ " + language.getLocale().getCountry();
        Optional<Asset> asset = getAssetManager().getAsset(plugin, "translations/" + lang + "_" + name + ".po");
        asset.map(Asset::getUrl).ifPresent(poFiles::add);
        asset = getAssetManager().getAsset(plugin, "translations/" + full + "_" + name + ".po");
        asset.map(Asset::getUrl).ifPresent(poFiles::add);
    }
}
Also used : SourceLanguage(org.cubeengine.i18n.language.SourceLanguage) Language(org.cubeengine.i18n.language.Language) Asset(org.spongepowered.api.asset.Asset)

Aggregations

Asset (org.spongepowered.api.asset.Asset)9 IOException (java.io.IOException)4 AssetRepository (org.lanternpowered.server.asset.AssetRepository)4 Gson (com.google.gson.Gson)2 HashMultimap (com.google.common.collect.HashMultimap)1 Lists (com.google.common.collect.Lists)1 Maps (com.google.common.collect.Maps)1 Multimap (com.google.common.collect.Multimap)1 Sets (com.google.common.collect.Sets)1 JsonElement (com.google.gson.JsonElement)1 JsonObject (com.google.gson.JsonObject)1 TypeToken (com.google.gson.reflect.TypeToken)1 ConfigException (com.typesafe.config.ConfigException)1 DESCRIPTION (io.github.nucleuspowered.nucleus.PluginInfo.DESCRIPTION)1 ID (io.github.nucleuspowered.nucleus.PluginInfo.ID)1 NAME (io.github.nucleuspowered.nucleus.PluginInfo.NAME)1 VERSION (io.github.nucleuspowered.nucleus.PluginInfo.VERSION)1 NucleusAPITokens (io.github.nucleuspowered.nucleus.api.NucleusAPITokens)1 NucleusMessageTokenService (io.github.nucleuspowered.nucleus.api.service.NucleusMessageTokenService)1 NucleusModuleService (io.github.nucleuspowered.nucleus.api.service.NucleusModuleService)1