ProjectAres/PGM/src/main/java/tc/oc/pgm/kits/ItemParser.java

37 lines
1.1 KiB
Java

package tc.oc.pgm.kits;
import javax.inject.Inject;
import org.bukkit.Material;
import org.bukkit.inventory.meta.ItemMeta;
import org.jdom2.Element;
import tc.oc.pgm.features.FeatureDefinitionContext;
import tc.oc.pgm.map.MapModule;
import tc.oc.pgm.projectile.ProjectileDefinition;
import tc.oc.pgm.projectile.Projectiles;
import tc.oc.pgm.xml.InvalidXMLException;
import tc.oc.pgm.xml.Node;
import tc.oc.pgm.xml.parser.Parser;
import static tc.oc.commons.core.exception.LambdaExceptionUtils.rethrowConsumer;
public class ItemParser extends GlobalItemParser implements MapModule {
private final FeatureDefinitionContext fdc;
@Inject private ItemParser(Parser<Material> materialParser, FeatureDefinitionContext fdc) {
super(materialParser);
this.fdc = fdc;
}
@Override
public void parseCustomNBT(Element el, ItemMeta meta) throws InvalidXMLException {
super.parseCustomNBT(el, meta);
Node.tryAttr(el, "projectile").ifPresent(rethrowConsumer(node -> {
fdc.reference(node, ProjectileDefinition.class);
Projectiles.setProjectileId(meta, node.getValue());
}));
}
}