Base biome fixes

This commit is contained in:
Daniel Mills
2020-11-23 13:37:13 -05:00
parent 58845ae79f
commit ac04ef34d7
10 changed files with 117 additions and 17 deletions

View File

@@ -9,6 +9,7 @@ public interface INMSBinding
public INMSCreator getCreator();
public Object getBiomeBase(World world, Biome biome);
public Object getBiomeBase(Object registry, Biome biome);
default World createWorld(WorldCreator creator)
{

View File

@@ -3,6 +3,9 @@ package com.volmit.iris.nms.v16_2;
import com.volmit.iris.nms.INMSBinding;
import com.volmit.iris.nms.INMSCreator;
import com.volmit.iris.scaffold.cache.AtomicCache;
import com.volmit.iris.util.KMap;
import net.minecraft.server.v1_16_R2.BiomeBase;
import net.minecraft.server.v1_16_R2.IRegistry;
import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.craftbukkit.v1_16_R2.CraftWorld;
@@ -10,6 +13,7 @@ import org.bukkit.craftbukkit.v1_16_R2.block.CraftBlock;
public class NMSBinding16_2 implements INMSBinding
{
private final KMap<Biome, Object> baseBiomeCache = new KMap<>();
private final AtomicCache<INMSCreator> creator = new AtomicCache<>();
@Override
@@ -21,6 +25,19 @@ public class NMSBinding16_2 implements INMSBinding
@Override
public Object getBiomeBase(World world, Biome biome)
{
return CraftBlock.biomeToBiomeBase(((CraftWorld)world).getHandle().r().b(net.minecraft.server.v1_16_R2.IRegistry.ay), biome);
return getBiomeBase(((CraftWorld)world).getHandle().r().b(net.minecraft.server.v1_16_R2.IRegistry.ay), biome);
}
@Override
public Object getBiomeBase(Object registry, Biome biome) {
Object v = baseBiomeCache.get(biome);
if(v != null)
{
return v;
}
v = CraftBlock.biomeToBiomeBase((IRegistry<BiomeBase>) registry, biome);
baseBiomeCache.put(biome, v);
return v;
}
}

View File

@@ -3,13 +3,16 @@ package com.volmit.iris.nms.v16_3;
import com.volmit.iris.nms.INMSBinding;
import com.volmit.iris.nms.INMSCreator;
import com.volmit.iris.scaffold.cache.AtomicCache;
import com.volmit.iris.util.KMap;
import net.minecraft.server.v1_16_R3.BiomeBase;
import net.minecraft.server.v1_16_R3.IRegistry;
import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.craftbukkit.v1_16_R3.CraftWorld;
import org.bukkit.craftbukkit.v1_16_R3.block.CraftBlock;
public class NMSBinding16_3 implements INMSBinding
{
private final KMap<Biome, Object> baseBiomeCache = new KMap<>();
private final AtomicCache<INMSCreator> creator = new AtomicCache<>();
@Override
@@ -21,6 +24,19 @@ public class NMSBinding16_3 implements INMSBinding
@Override
public Object getBiomeBase(World world, Biome biome)
{
return CraftBlock.biomeToBiomeBase(((CraftWorld)world).getHandle().r().b(net.minecraft.server.v1_16_R3.IRegistry.ay), biome);
return getBiomeBase(((CraftWorld)world).getHandle().r().b(net.minecraft.server.v1_16_R3.IRegistry.ay), biome);
}
@Override
public Object getBiomeBase(Object registry, Biome biome) {
Object v = baseBiomeCache.get(biome);
if(v != null)
{
return v;
}
v = org.bukkit.craftbukkit.v1_16_R3.block.CraftBlock.biomeToBiomeBase((IRegistry<BiomeBase>) registry, biome);
baseBiomeCache.put(biome, v);
return v;
}
}

View File

@@ -20,4 +20,9 @@ public class NMSBinding1X implements INMSBinding
{
return null;
}
@Override
public Object getBiomeBase(Object registry, Biome biome) {
return null;
}
}