package net.minecraft.command.type.metadata;
import net.minecraft.command.parser.Parser;
public abstract class MetaEntry<T, D> implements MetaProvider<D>
{
public final MetaID<T> id;
public MetaEntry(final MetaID<T> id)
{
this.id = id;
}
@Override
public boolean canProvide(final MetaID<?> metaID)
{
return this.id == metaID;
}
public abstract T get(final Parser parser, final D parserData);
// Checked...
@Override
@SuppressWarnings("unchecked")
public <U> U getData(final MetaID<U> id, final Parser parser, final D parserData)
{
return this.id == id ? (U) this.get(parser, parserData) : null;
}
public static class PrimitiveHint extends MetaEntry<PrimitiveHint, Void>
{
public PrimitiveHint(final MetaID<PrimitiveHint> id)
{
super(id);
}
@Override
public PrimitiveHint get(final Parser parser, final Void parserData)
{
return this;
}
}
}