RegionIO/tools/VanillaClimateVectors.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));
}
}