ItemParticleOptionParser.java
package it.fulminazzo.yagl.particles;
import it.fulminazzo.yagl.items.AbstractItem;
import it.fulminazzo.fulmicollection.interfaces.functions.BiFunctionException;
import it.fulminazzo.fulmicollection.interfaces.functions.TriConsumer;
import it.fulminazzo.fulmicollection.utils.ReflectionUtils;
import it.fulminazzo.yamlparser.configuration.IConfiguration;
import it.fulminazzo.yamlparser.parsers.YAMLParser;
/**
* A parser to serialize {@link ItemParticleOption}.
* Should take priority over {@link ParticleOptionParser}.
* It requires the <i>item:serializer</i> module to be added.
*/
@SuppressWarnings({"deprecation", "unchecked"})
public class ItemParticleOptionParser extends YAMLParser<ItemParticleOption<?>> {
public ItemParticleOptionParser() {
super((Class<ItemParticleOption<?>>) (Class<?>) ItemParticleOption.class);
}
@Override
protected BiFunctionException<IConfiguration, String, ItemParticleOption<?>> getLoader() {
return (c, s) -> {
AbstractItem item = c.get(s, ReflectionUtils.getClass("it.fulminazzo.yagl.items.Item"));
if (item == null) return null;
return new ItemParticleOption<>(item);
};
}
@Override
protected TriConsumer<IConfiguration, String, ItemParticleOption<?>> getDumper() {
return (c, s, o) -> c.set(s, o == null ? null : o.getOption());
}
}