package net.minecraft.util; import java.util.Objects; import java.util.function.Function; public interface BoundedFloatFunction { BoundedFloatFunction IDENTITY = new BoundedFloatFunction() { public float apply(final Float value) { return value; } @Override public float minValue() { return Float.NEGATIVE_INFINITY; } @Override public float maxValue() { return Float.POSITIVE_INFINITY; } }; float apply(final C c); float minValue(); float maxValue(); static BoundedFloatFunction constant(final float value) { return new BoundedFloatFunction() { @Override public float apply(final C c) { return value; } @Override public float minValue() { return value; } @Override public float maxValue() { return value; } }; } default BoundedFloatFunction comap(final Function function) { final BoundedFloatFunction outer = this; return new BoundedFloatFunction() { { Objects.requireNonNull(BoundedFloatFunction.this); } @Override public float apply(final C2 c2) { return outer.apply((C)function.apply(c2)); } @Override public float minValue() { return outer.minValue(); } @Override public float maxValue() { return outer.maxValue(); } }; } }