mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-01 23:47:21 +00:00
fix missing getBiomeColor method
This commit is contained in:
parent
2ea54b7f2f
commit
fc890a5ba1
@ -1,5 +1,6 @@
|
|||||||
package com.volmit.iris.core.nms.v1_21_R1;
|
package com.volmit.iris.core.nms.v1_21_R1;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.DataInputStream;
|
import java.io.DataInputStream;
|
||||||
@ -12,10 +13,12 @@ import java.util.List;
|
|||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
|
import com.volmit.iris.core.nms.container.BiomeColor;
|
||||||
import com.volmit.iris.core.nms.datapack.DataVersion;
|
import com.volmit.iris.core.nms.datapack.DataVersion;
|
||||||
import net.minecraft.core.component.DataComponents;
|
import net.minecraft.core.component.DataComponents;
|
||||||
import net.minecraft.server.level.ChunkMap;
|
import net.minecraft.server.level.ChunkMap;
|
||||||
import net.minecraft.world.item.component.CustomData;
|
import net.minecraft.world.item.component.CustomData;
|
||||||
|
import net.minecraft.world.level.LevelReader;
|
||||||
import net.minecraft.world.level.chunk.status.ChunkStatus;
|
import net.minecraft.world.level.chunk.status.ChunkStatus;
|
||||||
import net.minecraft.world.level.chunk.status.WorldGenContext;
|
import net.minecraft.world.level.chunk.status.WorldGenContext;
|
||||||
import org.bukkit.*;
|
import org.bukkit.*;
|
||||||
@ -529,6 +532,30 @@ public class NMSBinding implements INMSBinding {
|
|||||||
return ((CraftWorld) location.getWorld()).spawn(location, type.getEntityClass(), null, reason);
|
return ((CraftWorld) location.getWorld()).spawn(location, type.getEntityClass(), null, reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public java.awt.Color getBiomeColor(Location location, BiomeColor type) {
|
||||||
|
LevelReader reader = ((CraftWorld) location.getWorld()).getHandle();
|
||||||
|
var holder = reader.getBiome(new BlockPos(location.getBlockX(), location.getBlockY(), location.getBlockZ()));
|
||||||
|
var biome = holder.value();
|
||||||
|
if (biome == null) throw new IllegalArgumentException("Invalid biome: " + holder.unwrapKey().orElse(null));
|
||||||
|
|
||||||
|
int rgba = switch (type) {
|
||||||
|
case FOG -> biome.getFogColor();
|
||||||
|
case WATER -> biome.getWaterColor();
|
||||||
|
case WATER_FOG -> biome.getWaterFogColor();
|
||||||
|
case SKY -> biome.getSkyColor();
|
||||||
|
case FOLIAGE -> biome.getFoliageColor();
|
||||||
|
case GRASS -> biome.getGrassColor(location.getBlockX(), location.getBlockZ());
|
||||||
|
};
|
||||||
|
if (rgba == 0) {
|
||||||
|
if (BiomeColor.FOLIAGE == type && biome.getSpecialEffects().getFoliageColorOverride().isEmpty())
|
||||||
|
return null;
|
||||||
|
if (BiomeColor.GRASS == type && biome.getSpecialEffects().getGrassColorOverride().isEmpty())
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return new Color(rgba, true);
|
||||||
|
}
|
||||||
|
|
||||||
private static Field getField(Class<?> clazz, Class<?> fieldType) throws NoSuchFieldException {
|
private static Field getField(Class<?> clazz, Class<?> fieldType) throws NoSuchFieldException {
|
||||||
try {
|
try {
|
||||||
for (Field f : clazz.getDeclaredFields()) {
|
for (Field f : clazz.getDeclaredFields()) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user