diff --git a/nmsutils-core/src/main/java/de/cubeside/nmsutils/BiomeUtils.java b/nmsutils-core/src/main/java/de/cubeside/nmsutils/BiomeUtils.java index 135eb2e..cb27f39 100644 --- a/nmsutils-core/src/main/java/de/cubeside/nmsutils/BiomeUtils.java +++ b/nmsutils-core/src/main/java/de/cubeside/nmsutils/BiomeUtils.java @@ -7,7 +7,7 @@ import org.bukkit.NamespacedKey; public interface BiomeUtils { - CustomBiome registerCustomBiome(NamespacedKey id, float downfall, float temperature, Precipitation precipitation, int fogColor, int waterColor, int waterFogColor, int skyColor, Integer foliageColor, Integer grassColor); + CustomBiome registerCustomBiome(NamespacedKey id, float downfall, float temperature, Precipitation precipitation, Integer fogColor, Integer waterColor, Integer waterFogColor, Integer skyColor, Integer foliageColor, Integer grassColor); CustomBiome getCustomBiome(NamespacedKey id); diff --git a/nmsutils-core/src/main/java/de/cubeside/nmsutils/biome/CustomBiome.java b/nmsutils-core/src/main/java/de/cubeside/nmsutils/biome/CustomBiome.java index 1046be0..d69d40b 100644 --- a/nmsutils-core/src/main/java/de/cubeside/nmsutils/biome/CustomBiome.java +++ b/nmsutils-core/src/main/java/de/cubeside/nmsutils/biome/CustomBiome.java @@ -1,5 +1,12 @@ package de.cubeside.nmsutils.biome; +import org.bukkit.Location; +import org.bukkit.NamespacedKey; + public interface CustomBiome { + NamespacedKey getId(); + + boolean setBiome(Location location); + } diff --git a/nmsutils-v1_19_R2/src/main/java/de/cubeside/nmsutils/v1_19_R2/BiomeUtilsImpl.java b/nmsutils-v1_19_R2/src/main/java/de/cubeside/nmsutils/v1_19_R2/BiomeUtilsImpl.java index 1ce0582..b0173a8 100644 --- a/nmsutils-v1_19_R2/src/main/java/de/cubeside/nmsutils/v1_19_R2/BiomeUtilsImpl.java +++ b/nmsutils-v1_19_R2/src/main/java/de/cubeside/nmsutils/v1_19_R2/BiomeUtilsImpl.java @@ -57,7 +57,7 @@ public NMSUtils getNMSUtils() { } @Override - public CustomBiome registerCustomBiome(NamespacedKey id, float downfall, float temperature, de.cubeside.nmsutils.biome.Precipitation precipitation, int fogColor, int waterColor, int waterFogColor, int skyColor, Integer foliageColor, Integer grassColor) { + public CustomBiome registerCustomBiome(NamespacedKey id, float downfall, float temperature, de.cubeside.nmsutils.biome.Precipitation precipitation, Integer fogColor, Integer waterColor, Integer waterFogColor, Integer skyColor, Integer foliageColor, Integer grassColor) { nmsUtils.getPlugin().getLogger().warning("Injecting biome " + id + "!"); Server server = nmsUtils.getPlugin().getServer(); CraftServer craftserver = (CraftServer) server; @@ -74,23 +74,6 @@ public CustomBiome registerCustomBiome(NamespacedKey id, float downfall, float t } catch (IllegalArgumentException | IllegalAccessException e) { throw new RuntimeException(e); } - // Field unregisteredIntrusiveHoldersField = null; - // boolean nextIsUnregisteredIntrusiveHoldersField = false; - // for (Field f : MappedRegistry.class.getDeclaredFields()) { - // if (f.getType() == boolean.class) { - // nextIsUnregisteredIntrusiveHoldersField = true; - // f.setAccessible(true); - // } else if (nextIsUnregisteredIntrusiveHoldersField) { - // nextIsUnregisteredIntrusiveHoldersField = false; - // unregisteredIntrusiveHoldersField = f; - // unregisteredIntrusiveHoldersField.setAccessible(true); - // } - // } - // try { - // unregisteredIntrusiveHoldersField.set(registrywritable, new IdentityHashMap<>()); - // } catch (IllegalArgumentException | IllegalAccessException e) { - // throw new RuntimeException(e); - // } Biome forestbiome = registrywritable.get(oldKey); @@ -108,7 +91,10 @@ public CustomBiome registerCustomBiome(NamespacedKey id, float downfall, float t builder.generationSettings(forestbiome.getGenerationSettings()); builder.temperatureAdjustment(TemperatureModifier.NONE); Builder effects = new BiomeSpecialEffects.Builder(); - effects.waterColor(waterColor).waterFogColor(waterFogColor).fogColor(fogColor).skyColor(skyColor); + effects.waterColor(waterColor == null ? forestbiome.getWaterColor() : waterColor); + effects.waterFogColor(waterFogColor == null ? forestbiome.getWaterFogColor() : waterFogColor); + effects.fogColor(fogColor == null ? forestbiome.getFogColor() : fogColor); + effects.skyColor(skyColor == null ? forestbiome.getSkyColor() : skyColor); if (foliageColor != null) { effects.foliageColorOverride(foliageColor); } @@ -125,7 +111,6 @@ public CustomBiome registerCustomBiome(NamespacedKey id, float downfall, float t try { FIELD_MAPPED_REGISTRY_UNREGISTERED_INTRUSIVE_HOLDERS.set(registrywritable, null); - // unregisteredIntrusiveHoldersField.set(registrywritable, null); } catch (IllegalArgumentException | IllegalAccessException e) { throw new RuntimeException(e); } diff --git a/nmsutils-v1_19_R2/src/main/java/de/cubeside/nmsutils/v1_19_R2/CustomBiomeImpl.java b/nmsutils-v1_19_R2/src/main/java/de/cubeside/nmsutils/v1_19_R2/CustomBiomeImpl.java index 35541f7..cfae9dc 100644 --- a/nmsutils-v1_19_R2/src/main/java/de/cubeside/nmsutils/v1_19_R2/CustomBiomeImpl.java +++ b/nmsutils-v1_19_R2/src/main/java/de/cubeside/nmsutils/v1_19_R2/CustomBiomeImpl.java @@ -20,10 +20,12 @@ public CustomBiomeImpl(NamespacedKey bukkitKey, ResourceKey key, Biome bi this.biomeHolder = biomeHolder; } - public NamespacedKey getBukkitKey() { + @Override + public NamespacedKey getId() { return bukkitKey; } + @Override public boolean setBiome(Location location) { location.getWorld().getChunkAt(location); Level level = ((CraftWorld) location.getWorld()).getHandle();