package net.minecraft.command.type.management.relations;
import net.minecraft.command.CommandException;
import net.minecraft.command.type.management.Convertable;
import net.minecraft.command.type.management.Converter;
public class RelSuper extends Relation
{
public RelSuper()
{
super("Super");
}
public final <T, U, E extends CommandException> void registerPair(final Convertable<T, ?, ? extends E> base, final Convertable<U, ?, E> rel, final Converter<U, T, ? extends E> converter)
{
base.addAttribute(new Att<>(rel, converter));
}
public class Att<T, U, E extends CommandException> extends Attribute
{
public final Convertable<T, ?, E> rel;
public final Converter<T, U, ? extends E> relConverter;
private Att(final Convertable<T, ?, E> rel, final Converter<T, U, ? extends E> relConverter)
{
this.rel = rel;
this.relConverter = relConverter;
}
public final <FT> void apply(final Convertable<FT, ?, ? extends E> target, final Converter<U, FT, ? extends E> converter, final int dist)
{
this.rel.addConverter(target, Converter.chain(this.relConverter, converter), dist + 1);
}
}
}