package tc.oc.pgm.physics;
import java.util.Optional;
import org.jdom2.Element;
import tc.oc.pgm.utils.XMLUtils;
import tc.oc.pgm.xml.InvalidXMLException;
import tc.oc.pgm.xml.parser.ElementParser;
public class KnockbackParser implements ElementParser<Optional<KnockbackSettings>> {
@Override
public Optional<KnockbackSettings> parseElement(Element element) throws InvalidXMLException {
KnockbackSettings settings = KnockbackSettings.DEFAULT;
boolean changed = false;
for(Element el : XMLUtils.getChildren(element, "knockback", "knockback-1")) { // HACK: versioning
changed = true;
settings = new KnockbackSettings(
XMLUtils.parseNumber(el.getAttribute("pitch"), Double.class, settings.pitch),
XMLUtils.parseNumber(el.getAttribute("walk-power"), Double.class, settings.walkPower),
XMLUtils.parseNumber(el.getAttribute("sprint-power"), Double.class, settings.sprintPower),
XMLUtils.parseNumber(el.getAttribute("sprint-threshold"), Double.class, settings.sprintThreshold),
XMLUtils.parseNumber(el.getAttribute("recoil-ground"), Double.class, settings.recoilGround),
XMLUtils.parseNumber(el.getAttribute("recoil-air"), Double.class, settings.recoilAir)
);
}
return changed ? Optional.of(settings)
: Optional.empty();
}
}