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;
}
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;
}
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));
}
}
Aggregations