Search in sources :

Example 16 with ConfigurationNode

use of ninja.leaping.configurate.ConfigurationNode in project Almura by AlmuraDev.

the class SingleTypeContentLoader method entry.

@Nullable
private Entry<C, B> entry(final String namespace, final Path path) {
    @Nullable final ConfigurationNode config = this.config(path);
    if (config != null) {
        final B builder = this.builder();
        final String id = this.configureBuilder(namespace, path, builder);
        return new Entry<>(id, builder, path, config);
    }
    return null;
}
Also used : ConfigurationNode(ninja.leaping.configurate.ConfigurationNode) Nullable(javax.annotation.Nullable) Nullable(javax.annotation.Nullable)

Example 17 with ConfigurationNode

use of ninja.leaping.configurate.ConfigurationNode in project Almura by AlmuraDev.

the class DropParserImpl method parse.

@Override
public List<? extends Drop> parse(final ConfigurationNode config) {
    if (config.isVirtual()) {
        return Collections.emptyList();
    }
    // Assume item if drop is a string
    if (config.getValue() instanceof String) {
        return parseSimpleItem(config).map(Collections::singletonList).orElse(Collections.emptyList());
    }
    final List<? extends ConfigurationNode> children = config.getChildrenList();
    final List<Drop> drops = new ArrayList<>(children.size());
    for (final ConfigurationNode child : children) {
        if (child.getValue() instanceof String) {
            parseSimpleItem(child).ifPresent(drops::add);
        } else if (child.getValue() instanceof Map) {
            final DoubleRange amount = DoubleRanges.deserialize(child.getNode(Config.AMOUNT), DoubleRanges.FIXED_1);
            @Nullable final DoubleRange bonusAmount = DoubleRanges.deserialize(child.getNode(Config.BONUS, Config.BONUS_AMOUNT)).orElse(null);
            @Nullable final DoubleRange bonusChance = DoubleRanges.deserialize(child.getNode(Config.BONUS, Config.BONUS_CHANCE)).orElse(null);
            final ConfigurationNode item = child.getNode(ItemDefinitionConfig.ITEM);
            if (!item.isVirtual()) {
                parseFullItem(item).map(itemDef -> itemDef.asDrop(amount, bonusAmount, bonusChance)).ifPresent(drops::add);
            } else if (!child.getNode(ExperienceDrop.EXPERIENCE).isVirtual()) {
                drops.add(new ExperienceDrop(amount, bonusAmount, bonusChance));
            }
        }
    }
    return drops;
}
Also used : DoubleRange(com.almuradev.toolbox.util.math.DoubleRange) ConfigurationNode(ninja.leaping.configurate.ConfigurationNode) ArrayList(java.util.ArrayList) Map(java.util.Map)

Example 18 with ConfigurationNode

use of ninja.leaping.configurate.ConfigurationNode in project Almura by AlmuraDev.

the class AABBProcessor method processState.

@Override
public void processState(final ConfigurationNode config, final ContentBlock.Builder<ContentBlock, BlockStateDefinition, BlockStateDefinition.Builder<BlockStateDefinition>> builder, final BlockStateDefinition.Builder<BlockStateDefinition> definition) {
    final BlockAABBFactory<?, ?, ?> factory = this.injector.getInstance(builder.genre().boxFactory);
    final ConfigurationNode shape = config.getNode(AABBConfig.SHAPE);
    if (!shape.isVirtual()) {
        definition.box(factory.box(shape));
    }
    final ConfigurationNode collision = config.getNode(AABBConfig.COLLISION);
    if (!collision.isVirtual()) {
        // TODO(kashike): configurate is like a wet sock in this case - NOBODY LIKES IT
        if (collision.getValue() instanceof Number && ((Number) collision.getValue()).intValue() == -1) {
            definition.collisionBox(factory.collision((AxisAlignedBB) null));
        } else {
            definition.collisionBox(factory.collision(collision));
        }
    }
    final ConfigurationNode wireframe = config.getNode(AABBConfig.WIREFRAME);
    if (!wireframe.isVirtual()) {
        definition.wireFrame(factory.wireFrame(wireframe));
    }
}
Also used : AxisAlignedBB(net.minecraft.util.math.AxisAlignedBB) ConfigurationNode(ninja.leaping.configurate.ConfigurationNode)

Aggregations

ConfigurationNode (ninja.leaping.configurate.ConfigurationNode)18 CommentedConfigurationNode (ninja.leaping.configurate.commented.CommentedConfigurationNode)5 IOException (java.io.IOException)4 Text (org.spongepowered.api.text.Text)3 Path (java.nio.file.Path)2 ArrayList (java.util.ArrayList)2 Nullable (javax.annotation.Nullable)2 GsonConfigurationLoader (ninja.leaping.configurate.gson.GsonConfigurationLoader)2 DoubleRange (com.almuradev.toolbox.util.math.DoubleRange)1 TEAccount (com.erigitic.config.TEAccount)1 TECurrency (com.erigitic.config.TECurrency)1 JsonParser (com.google.gson.JsonParser)1 BigDecimal (java.math.BigDecimal)1 NoSuchFileException (java.nio.file.NoSuchFileException)1 Instant (java.time.Instant)1 Map (java.util.Map)1 UUID (java.util.UUID)1 AxisAlignedBB (net.minecraft.util.math.AxisAlignedBB)1 ItemEnchantment (org.spongepowered.api.data.meta.ItemEnchantment)1 Player (org.spongepowered.api.entity.living.player.Player)1