package net.minecraft.command.type.base; import net.minecraft.command.SyntaxErrorException; import net.minecraft.command.collections.MetaColl; import net.minecraft.command.parser.Parser; import net.minecraft.command.type.IExParse; import net.minecraft.command.type.metadata.Metadata; public abstract class ExCustomParse<R, D> extends Metadata<D> implements IExParse<R, D> { public ExCustomParse() { super(MetaColl.typeSPA); } @Override public final R parse(final Parser parser, final D parserData) throws SyntaxErrorException { final boolean toPop = parser.pushMetadata(this, parserData); final R ret = this.iParse(parser, parserData); if (toPop) parser.popMetadata(this); return ret; } public abstract R iParse(Parser parser, D parserData) throws SyntaxErrorException; @Override public final R parseSnapshot(final Parser parser, final D parserData) throws SyntaxErrorException { return parser.parseSnapshot(this, parserData); } }