package net.minecraft.util; import it.unimi.dsi.fastutil.floats.Float2FloatFunction; import java.util.function.Function; public interface ToFloatFunction { ToFloatFunction IDENTITY = createUnlimited(f -> f); float apply(C object); float minValue(); float maxValue(); static ToFloatFunction createUnlimited(Float2FloatFunction wrapped) { return new ToFloatFunction() { public float apply(Float float_) { return wrapped.apply(float_); } @Override public float minValue() { return Float.NEGATIVE_INFINITY; } @Override public float maxValue() { return Float.POSITIVE_INFINITY; } }; } default ToFloatFunction comap(Function converter) { final ToFloatFunction toFloatFunction = this; return new ToFloatFunction() { @Override public float apply(C2 object) { return toFloatFunction.apply((C)converter.apply(object)); } @Override public float minValue() { return toFloatFunction.minValue(); } @Override public float maxValue() { return toFloatFunction.maxValue(); } }; } }