35 lines
1.8 KiB
Java
35 lines
1.8 KiB
Java
import java.lang.reflect.Method;
|
|
import net.minecraft.world.level.biome.Climate;
|
|
|
|
// Prints fixed Climate.ParameterPoint fitness vectors from the official jar.
|
|
public final class VanillaClimateVectors {
|
|
public static void main(String[] args) throws Exception {
|
|
Method fitness = Climate.ParameterPoint.class.getDeclaredMethod("fitness", Climate.TargetPoint.class);
|
|
fitness.setAccessible(true);
|
|
vector(fitness, "inside", ranges(0, 10, 0), point(5, 0));
|
|
vector(fitness, "below", ranges(0, 10, 0), point(-3, 0));
|
|
vector(fitness, "above", ranges(0, 10, 0), point(14, 0));
|
|
vector(fitness, "offset", ranges(0, 10, 7), point(5, 0));
|
|
|
|
Climate.Parameter zero = new Climate.Parameter(0, 0);
|
|
Climate.Parameter depth = new Climate.Parameter(20, 20);
|
|
Climate.Parameter weird = new Climate.Parameter(30, 30);
|
|
Climate.ParameterPoint axes = new Climate.ParameterPoint(zero, zero, zero, zero, depth, weird, 0);
|
|
Climate.TargetPoint target = new Climate.TargetPoint(0, 0, 0, 0, 23, 35);
|
|
vector(fitness, "depth-weirdness-order", axes, target);
|
|
}
|
|
|
|
private static Climate.ParameterPoint ranges(long min, long max, long offset) {
|
|
Climate.Parameter range = new Climate.Parameter(min, max);
|
|
Climate.Parameter zero = new Climate.Parameter(0, 0);
|
|
return new Climate.ParameterPoint(range, zero, zero, zero, zero, zero, offset);
|
|
}
|
|
|
|
private static Climate.TargetPoint point(long temperature, long depth) {
|
|
return new Climate.TargetPoint(temperature, 0, 0, 0, depth, 0);
|
|
}
|
|
|
|
private static void vector(Method fitness, String name, Climate.ParameterPoint p, Climate.TargetPoint target) throws Exception {
|
|
System.out.println(name + "=" + fitness.invoke(p, target));
|
|
}
|
|
}
|