From 7593a2d2d800bd1ea97afc6658ac7233c9a31196 Mon Sep 17 00:00:00 2001 From: adman Date: Sat, 11 Jul 2026 22:00:35 +0200 Subject: [PATCH] Add multi_noise_biome_source_parameter_list generator for 1.21.5-1.21.11 --- ...BiomeSourceParameterListDataGenerator.java | 92 +++++++++++++++++++ ...BiomeSourceParameterListDataGenerator.java | 92 +++++++++++++++++++ ...BiomeSourceParameterListDataGenerator.java | 92 +++++++++++++++++++ ...BiomeSourceParameterListDataGenerator.java | 92 +++++++++++++++++++ ...BiomeSourceParameterListDataGenerator.java | 92 +++++++++++++++++++ ...BiomeSourceParameterListDataGenerator.java | 92 +++++++++++++++++++ ...BiomeSourceParameterListDataGenerator.java | 92 +++++++++++++++++++ 7 files changed, 644 insertions(+) create mode 100644 mc/1.21.10/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java create mode 100644 mc/1.21.11/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java create mode 100644 mc/1.21.5/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java create mode 100644 mc/1.21.6/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java create mode 100644 mc/1.21.7/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java create mode 100644 mc/1.21.8/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java create mode 100644 mc/1.21.9/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java diff --git a/mc/1.21.10/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java b/mc/1.21.10/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java new file mode 100644 index 0000000..1573c63 --- /dev/null +++ b/mc/1.21.10/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java @@ -0,0 +1,92 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.mojang.datafixers.util.Pair; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.Climate; +import net.minecraft.world.level.biome.MultiNoiseBiomeSourceParameterList; + +import java.lang.reflect.Method; +import java.util.Map; + +public class MultiNoiseBiomeSourceParameterListDataGenerator implements IDataGenerator { + @Override + public String getDataName() { + return "multi_noise_biome_source_parameter_list"; + } + + @Override + public boolean isEnabled() { + // Only available in 1.18+ + try { + Class.forName("net.minecraft.world.level.biome.MultiNoiseBiomeSourceParameterList"); + return true; + } catch (ClassNotFoundException e) { + return false; + } + } + + @Override + public JsonObject generateDataJson() { + JsonObject root = new JsonObject(); + + Map>> presets = + MultiNoiseBiomeSourceParameterList.knownPresets(); + + for (Map.Entry>> entry : presets.entrySet()) { + String presetName = entry.getKey().id().toString(); + JsonArray entries = new JsonArray(); + + for (Pair> pair : entry.getValue().values()) { + Climate.ParameterPoint params = pair.getFirst(); + ResourceKey biomeKey = pair.getSecond(); + + JsonObject item = new JsonObject(); + item.addProperty("biome", resourceKeyLocation(biomeKey).toString()); + item.add("parameters", serializeParameterPoint(params)); + entries.add(item); + } + + root.add(presetName, entries); + } + + return root; + } + + private static JsonObject serializeParameterPoint(Climate.ParameterPoint params) { + JsonObject obj = new JsonObject(); + obj.add("temperature", serializeParameter(params.temperature())); + obj.add("humidity", serializeParameter(params.humidity())); + obj.add("continentalness", serializeParameter(params.continentalness())); + obj.add("erosion", serializeParameter(params.erosion())); + obj.add("depth", serializeParameter(params.depth())); + obj.add("weirdness", serializeParameter(params.weirdness())); + obj.addProperty("offset", params.offset() / 10000.0f); + return obj; + } + + private static JsonArray serializeParameter(Climate.Parameter parameter) { + JsonArray arr = new JsonArray(); + arr.add(parameter.min()); + arr.add(parameter.max()); + return arr; + } + + private static Object resourceKeyLocation(ResourceKey key) { + try { + Method location = key.getClass().getMethod("location"); + return location.invoke(key); + } catch (NoSuchMethodException e) { + try { + Method identifier = key.getClass().getMethod("identifier"); + return identifier.invoke(key); + } catch (ReflectiveOperationException ex) { + throw new RuntimeException(ex); + } + } catch (ReflectiveOperationException e) { + throw new RuntimeException(e); + } + } +} diff --git a/mc/1.21.11/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java b/mc/1.21.11/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java new file mode 100644 index 0000000..1573c63 --- /dev/null +++ b/mc/1.21.11/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java @@ -0,0 +1,92 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.mojang.datafixers.util.Pair; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.Climate; +import net.minecraft.world.level.biome.MultiNoiseBiomeSourceParameterList; + +import java.lang.reflect.Method; +import java.util.Map; + +public class MultiNoiseBiomeSourceParameterListDataGenerator implements IDataGenerator { + @Override + public String getDataName() { + return "multi_noise_biome_source_parameter_list"; + } + + @Override + public boolean isEnabled() { + // Only available in 1.18+ + try { + Class.forName("net.minecraft.world.level.biome.MultiNoiseBiomeSourceParameterList"); + return true; + } catch (ClassNotFoundException e) { + return false; + } + } + + @Override + public JsonObject generateDataJson() { + JsonObject root = new JsonObject(); + + Map>> presets = + MultiNoiseBiomeSourceParameterList.knownPresets(); + + for (Map.Entry>> entry : presets.entrySet()) { + String presetName = entry.getKey().id().toString(); + JsonArray entries = new JsonArray(); + + for (Pair> pair : entry.getValue().values()) { + Climate.ParameterPoint params = pair.getFirst(); + ResourceKey biomeKey = pair.getSecond(); + + JsonObject item = new JsonObject(); + item.addProperty("biome", resourceKeyLocation(biomeKey).toString()); + item.add("parameters", serializeParameterPoint(params)); + entries.add(item); + } + + root.add(presetName, entries); + } + + return root; + } + + private static JsonObject serializeParameterPoint(Climate.ParameterPoint params) { + JsonObject obj = new JsonObject(); + obj.add("temperature", serializeParameter(params.temperature())); + obj.add("humidity", serializeParameter(params.humidity())); + obj.add("continentalness", serializeParameter(params.continentalness())); + obj.add("erosion", serializeParameter(params.erosion())); + obj.add("depth", serializeParameter(params.depth())); + obj.add("weirdness", serializeParameter(params.weirdness())); + obj.addProperty("offset", params.offset() / 10000.0f); + return obj; + } + + private static JsonArray serializeParameter(Climate.Parameter parameter) { + JsonArray arr = new JsonArray(); + arr.add(parameter.min()); + arr.add(parameter.max()); + return arr; + } + + private static Object resourceKeyLocation(ResourceKey key) { + try { + Method location = key.getClass().getMethod("location"); + return location.invoke(key); + } catch (NoSuchMethodException e) { + try { + Method identifier = key.getClass().getMethod("identifier"); + return identifier.invoke(key); + } catch (ReflectiveOperationException ex) { + throw new RuntimeException(ex); + } + } catch (ReflectiveOperationException e) { + throw new RuntimeException(e); + } + } +} diff --git a/mc/1.21.5/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java b/mc/1.21.5/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java new file mode 100644 index 0000000..1573c63 --- /dev/null +++ b/mc/1.21.5/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java @@ -0,0 +1,92 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.mojang.datafixers.util.Pair; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.Climate; +import net.minecraft.world.level.biome.MultiNoiseBiomeSourceParameterList; + +import java.lang.reflect.Method; +import java.util.Map; + +public class MultiNoiseBiomeSourceParameterListDataGenerator implements IDataGenerator { + @Override + public String getDataName() { + return "multi_noise_biome_source_parameter_list"; + } + + @Override + public boolean isEnabled() { + // Only available in 1.18+ + try { + Class.forName("net.minecraft.world.level.biome.MultiNoiseBiomeSourceParameterList"); + return true; + } catch (ClassNotFoundException e) { + return false; + } + } + + @Override + public JsonObject generateDataJson() { + JsonObject root = new JsonObject(); + + Map>> presets = + MultiNoiseBiomeSourceParameterList.knownPresets(); + + for (Map.Entry>> entry : presets.entrySet()) { + String presetName = entry.getKey().id().toString(); + JsonArray entries = new JsonArray(); + + for (Pair> pair : entry.getValue().values()) { + Climate.ParameterPoint params = pair.getFirst(); + ResourceKey biomeKey = pair.getSecond(); + + JsonObject item = new JsonObject(); + item.addProperty("biome", resourceKeyLocation(biomeKey).toString()); + item.add("parameters", serializeParameterPoint(params)); + entries.add(item); + } + + root.add(presetName, entries); + } + + return root; + } + + private static JsonObject serializeParameterPoint(Climate.ParameterPoint params) { + JsonObject obj = new JsonObject(); + obj.add("temperature", serializeParameter(params.temperature())); + obj.add("humidity", serializeParameter(params.humidity())); + obj.add("continentalness", serializeParameter(params.continentalness())); + obj.add("erosion", serializeParameter(params.erosion())); + obj.add("depth", serializeParameter(params.depth())); + obj.add("weirdness", serializeParameter(params.weirdness())); + obj.addProperty("offset", params.offset() / 10000.0f); + return obj; + } + + private static JsonArray serializeParameter(Climate.Parameter parameter) { + JsonArray arr = new JsonArray(); + arr.add(parameter.min()); + arr.add(parameter.max()); + return arr; + } + + private static Object resourceKeyLocation(ResourceKey key) { + try { + Method location = key.getClass().getMethod("location"); + return location.invoke(key); + } catch (NoSuchMethodException e) { + try { + Method identifier = key.getClass().getMethod("identifier"); + return identifier.invoke(key); + } catch (ReflectiveOperationException ex) { + throw new RuntimeException(ex); + } + } catch (ReflectiveOperationException e) { + throw new RuntimeException(e); + } + } +} diff --git a/mc/1.21.6/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java b/mc/1.21.6/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java new file mode 100644 index 0000000..1573c63 --- /dev/null +++ b/mc/1.21.6/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java @@ -0,0 +1,92 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.mojang.datafixers.util.Pair; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.Climate; +import net.minecraft.world.level.biome.MultiNoiseBiomeSourceParameterList; + +import java.lang.reflect.Method; +import java.util.Map; + +public class MultiNoiseBiomeSourceParameterListDataGenerator implements IDataGenerator { + @Override + public String getDataName() { + return "multi_noise_biome_source_parameter_list"; + } + + @Override + public boolean isEnabled() { + // Only available in 1.18+ + try { + Class.forName("net.minecraft.world.level.biome.MultiNoiseBiomeSourceParameterList"); + return true; + } catch (ClassNotFoundException e) { + return false; + } + } + + @Override + public JsonObject generateDataJson() { + JsonObject root = new JsonObject(); + + Map>> presets = + MultiNoiseBiomeSourceParameterList.knownPresets(); + + for (Map.Entry>> entry : presets.entrySet()) { + String presetName = entry.getKey().id().toString(); + JsonArray entries = new JsonArray(); + + for (Pair> pair : entry.getValue().values()) { + Climate.ParameterPoint params = pair.getFirst(); + ResourceKey biomeKey = pair.getSecond(); + + JsonObject item = new JsonObject(); + item.addProperty("biome", resourceKeyLocation(biomeKey).toString()); + item.add("parameters", serializeParameterPoint(params)); + entries.add(item); + } + + root.add(presetName, entries); + } + + return root; + } + + private static JsonObject serializeParameterPoint(Climate.ParameterPoint params) { + JsonObject obj = new JsonObject(); + obj.add("temperature", serializeParameter(params.temperature())); + obj.add("humidity", serializeParameter(params.humidity())); + obj.add("continentalness", serializeParameter(params.continentalness())); + obj.add("erosion", serializeParameter(params.erosion())); + obj.add("depth", serializeParameter(params.depth())); + obj.add("weirdness", serializeParameter(params.weirdness())); + obj.addProperty("offset", params.offset() / 10000.0f); + return obj; + } + + private static JsonArray serializeParameter(Climate.Parameter parameter) { + JsonArray arr = new JsonArray(); + arr.add(parameter.min()); + arr.add(parameter.max()); + return arr; + } + + private static Object resourceKeyLocation(ResourceKey key) { + try { + Method location = key.getClass().getMethod("location"); + return location.invoke(key); + } catch (NoSuchMethodException e) { + try { + Method identifier = key.getClass().getMethod("identifier"); + return identifier.invoke(key); + } catch (ReflectiveOperationException ex) { + throw new RuntimeException(ex); + } + } catch (ReflectiveOperationException e) { + throw new RuntimeException(e); + } + } +} diff --git a/mc/1.21.7/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java b/mc/1.21.7/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java new file mode 100644 index 0000000..1573c63 --- /dev/null +++ b/mc/1.21.7/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java @@ -0,0 +1,92 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.mojang.datafixers.util.Pair; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.Climate; +import net.minecraft.world.level.biome.MultiNoiseBiomeSourceParameterList; + +import java.lang.reflect.Method; +import java.util.Map; + +public class MultiNoiseBiomeSourceParameterListDataGenerator implements IDataGenerator { + @Override + public String getDataName() { + return "multi_noise_biome_source_parameter_list"; + } + + @Override + public boolean isEnabled() { + // Only available in 1.18+ + try { + Class.forName("net.minecraft.world.level.biome.MultiNoiseBiomeSourceParameterList"); + return true; + } catch (ClassNotFoundException e) { + return false; + } + } + + @Override + public JsonObject generateDataJson() { + JsonObject root = new JsonObject(); + + Map>> presets = + MultiNoiseBiomeSourceParameterList.knownPresets(); + + for (Map.Entry>> entry : presets.entrySet()) { + String presetName = entry.getKey().id().toString(); + JsonArray entries = new JsonArray(); + + for (Pair> pair : entry.getValue().values()) { + Climate.ParameterPoint params = pair.getFirst(); + ResourceKey biomeKey = pair.getSecond(); + + JsonObject item = new JsonObject(); + item.addProperty("biome", resourceKeyLocation(biomeKey).toString()); + item.add("parameters", serializeParameterPoint(params)); + entries.add(item); + } + + root.add(presetName, entries); + } + + return root; + } + + private static JsonObject serializeParameterPoint(Climate.ParameterPoint params) { + JsonObject obj = new JsonObject(); + obj.add("temperature", serializeParameter(params.temperature())); + obj.add("humidity", serializeParameter(params.humidity())); + obj.add("continentalness", serializeParameter(params.continentalness())); + obj.add("erosion", serializeParameter(params.erosion())); + obj.add("depth", serializeParameter(params.depth())); + obj.add("weirdness", serializeParameter(params.weirdness())); + obj.addProperty("offset", params.offset() / 10000.0f); + return obj; + } + + private static JsonArray serializeParameter(Climate.Parameter parameter) { + JsonArray arr = new JsonArray(); + arr.add(parameter.min()); + arr.add(parameter.max()); + return arr; + } + + private static Object resourceKeyLocation(ResourceKey key) { + try { + Method location = key.getClass().getMethod("location"); + return location.invoke(key); + } catch (NoSuchMethodException e) { + try { + Method identifier = key.getClass().getMethod("identifier"); + return identifier.invoke(key); + } catch (ReflectiveOperationException ex) { + throw new RuntimeException(ex); + } + } catch (ReflectiveOperationException e) { + throw new RuntimeException(e); + } + } +} diff --git a/mc/1.21.8/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java b/mc/1.21.8/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java new file mode 100644 index 0000000..1573c63 --- /dev/null +++ b/mc/1.21.8/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java @@ -0,0 +1,92 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.mojang.datafixers.util.Pair; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.Climate; +import net.minecraft.world.level.biome.MultiNoiseBiomeSourceParameterList; + +import java.lang.reflect.Method; +import java.util.Map; + +public class MultiNoiseBiomeSourceParameterListDataGenerator implements IDataGenerator { + @Override + public String getDataName() { + return "multi_noise_biome_source_parameter_list"; + } + + @Override + public boolean isEnabled() { + // Only available in 1.18+ + try { + Class.forName("net.minecraft.world.level.biome.MultiNoiseBiomeSourceParameterList"); + return true; + } catch (ClassNotFoundException e) { + return false; + } + } + + @Override + public JsonObject generateDataJson() { + JsonObject root = new JsonObject(); + + Map>> presets = + MultiNoiseBiomeSourceParameterList.knownPresets(); + + for (Map.Entry>> entry : presets.entrySet()) { + String presetName = entry.getKey().id().toString(); + JsonArray entries = new JsonArray(); + + for (Pair> pair : entry.getValue().values()) { + Climate.ParameterPoint params = pair.getFirst(); + ResourceKey biomeKey = pair.getSecond(); + + JsonObject item = new JsonObject(); + item.addProperty("biome", resourceKeyLocation(biomeKey).toString()); + item.add("parameters", serializeParameterPoint(params)); + entries.add(item); + } + + root.add(presetName, entries); + } + + return root; + } + + private static JsonObject serializeParameterPoint(Climate.ParameterPoint params) { + JsonObject obj = new JsonObject(); + obj.add("temperature", serializeParameter(params.temperature())); + obj.add("humidity", serializeParameter(params.humidity())); + obj.add("continentalness", serializeParameter(params.continentalness())); + obj.add("erosion", serializeParameter(params.erosion())); + obj.add("depth", serializeParameter(params.depth())); + obj.add("weirdness", serializeParameter(params.weirdness())); + obj.addProperty("offset", params.offset() / 10000.0f); + return obj; + } + + private static JsonArray serializeParameter(Climate.Parameter parameter) { + JsonArray arr = new JsonArray(); + arr.add(parameter.min()); + arr.add(parameter.max()); + return arr; + } + + private static Object resourceKeyLocation(ResourceKey key) { + try { + Method location = key.getClass().getMethod("location"); + return location.invoke(key); + } catch (NoSuchMethodException e) { + try { + Method identifier = key.getClass().getMethod("identifier"); + return identifier.invoke(key); + } catch (ReflectiveOperationException ex) { + throw new RuntimeException(ex); + } + } catch (ReflectiveOperationException e) { + throw new RuntimeException(e); + } + } +} diff --git a/mc/1.21.9/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java b/mc/1.21.9/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java new file mode 100644 index 0000000..1573c63 --- /dev/null +++ b/mc/1.21.9/src/main/java/dev/u9g/minecraftdatagenerator/generators/MultiNoiseBiomeSourceParameterListDataGenerator.java @@ -0,0 +1,92 @@ +package dev.u9g.minecraftdatagenerator.generators; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.mojang.datafixers.util.Pair; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.Climate; +import net.minecraft.world.level.biome.MultiNoiseBiomeSourceParameterList; + +import java.lang.reflect.Method; +import java.util.Map; + +public class MultiNoiseBiomeSourceParameterListDataGenerator implements IDataGenerator { + @Override + public String getDataName() { + return "multi_noise_biome_source_parameter_list"; + } + + @Override + public boolean isEnabled() { + // Only available in 1.18+ + try { + Class.forName("net.minecraft.world.level.biome.MultiNoiseBiomeSourceParameterList"); + return true; + } catch (ClassNotFoundException e) { + return false; + } + } + + @Override + public JsonObject generateDataJson() { + JsonObject root = new JsonObject(); + + Map>> presets = + MultiNoiseBiomeSourceParameterList.knownPresets(); + + for (Map.Entry>> entry : presets.entrySet()) { + String presetName = entry.getKey().id().toString(); + JsonArray entries = new JsonArray(); + + for (Pair> pair : entry.getValue().values()) { + Climate.ParameterPoint params = pair.getFirst(); + ResourceKey biomeKey = pair.getSecond(); + + JsonObject item = new JsonObject(); + item.addProperty("biome", resourceKeyLocation(biomeKey).toString()); + item.add("parameters", serializeParameterPoint(params)); + entries.add(item); + } + + root.add(presetName, entries); + } + + return root; + } + + private static JsonObject serializeParameterPoint(Climate.ParameterPoint params) { + JsonObject obj = new JsonObject(); + obj.add("temperature", serializeParameter(params.temperature())); + obj.add("humidity", serializeParameter(params.humidity())); + obj.add("continentalness", serializeParameter(params.continentalness())); + obj.add("erosion", serializeParameter(params.erosion())); + obj.add("depth", serializeParameter(params.depth())); + obj.add("weirdness", serializeParameter(params.weirdness())); + obj.addProperty("offset", params.offset() / 10000.0f); + return obj; + } + + private static JsonArray serializeParameter(Climate.Parameter parameter) { + JsonArray arr = new JsonArray(); + arr.add(parameter.min()); + arr.add(parameter.max()); + return arr; + } + + private static Object resourceKeyLocation(ResourceKey key) { + try { + Method location = key.getClass().getMethod("location"); + return location.invoke(key); + } catch (NoSuchMethodException e) { + try { + Method identifier = key.getClass().getMethod("identifier"); + return identifier.invoke(key); + } catch (ReflectiveOperationException ex) { + throw new RuntimeException(ex); + } + } catch (ReflectiveOperationException e) { + throw new RuntimeException(e); + } + } +}