Block type fixes

This commit is contained in:
Daniel Mills 2020-08-01 07:20:54 -04:00
parent 3b76bb64a9
commit 71c90c6d31
5 changed files with 30 additions and 18 deletions

View File

@ -283,6 +283,11 @@ public abstract class TerrainChunkGenerator extends ParallelChunkGenerator
protected boolean canPlace(Material mat, Material onto)
{
if(onto.equals(Material.GRASS_BLOCK) && mat.equals(Material.DEAD_BUSH))
{
return false;
}
if(onto.equals(Material.GRASS_PATH))
{
if(!mat.isSolid())
@ -291,7 +296,7 @@ public abstract class TerrainChunkGenerator extends ParallelChunkGenerator
}
}
if(onto.equals(Material.STONE) || onto.equals(Material.GRAVEL) || onto.equals(Material.ANDESITE) || onto.equals(Material.GRANITE) || onto.equals(Material.DIORITE) || onto.equals(Material.BLACKSTONE) || onto.equals(Material.BASALT))
if(onto.equals(Material.STONE) || onto.equals(Material.GRAVEL) || onto.equals(Material.GRAVEL) || onto.equals(Material.ANDESITE) || onto.equals(Material.GRANITE) || onto.equals(Material.DIORITE) || onto.equals(Material.BLACKSTONE) || onto.equals(Material.BASALT))
{
if(mat.equals(Material.POPPY) || mat.equals(Material.DANDELION) || mat.equals(Material.CORNFLOWER) || mat.equals(Material.ORANGE_TULIP) || mat.equals(Material.PINK_TULIP) || mat.equals(Material.RED_TULIP) || mat.equals(Material.WHITE_TULIP) || mat.equals(Material.FERN) || mat.equals(Material.LARGE_FERN) || mat.equals(Material.GRASS) || mat.equals(Material.TALL_GRASS))
{

View File

@ -2,6 +2,7 @@ package com.volmit.iris.object;
import java.util.concurrent.locks.ReentrantLock;
import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
import org.bukkit.generator.ChunkGenerator.ChunkData;
import org.bukkit.util.BlockVector;
@ -175,7 +176,7 @@ public class IrisDepositGenerator
int x = rng.i(af, bf);
int z = rng.i(af, bf);
int height = (int) (Math.round(g.getTerrainHeight(x, z))) - 5;
int height = (int) (Math.round(g.getTerrainWaterHeight(x, z))) - 5;
if(height <= 0)
{
@ -210,7 +211,7 @@ public class IrisDepositGenerator
BlockData b = data.getBlockData(nx, ny, nz);
if(!b.getMaterial().isSolid())
if(b.getMaterial().equals(Material.ICE) || b.getMaterial().equals(Material.SAND) || b.getMaterial().equals(Material.RED_SAND) || !b.getMaterial().isSolid())
{
continue;
}

View File

@ -71,7 +71,7 @@ public class AtomicSliver
lock.lock();
block.put(h, d);
modified = true;
if(d.getMaterial().equals(Material.AIR) || d.getMaterial().equals(Material.CAVE_AIR))
{
lock.unlock();
@ -176,7 +176,15 @@ public class AtomicSliver
for(int i = 0; i <= h; i++)
{
block.put(i, BlockDataTools.getBlockData(din.readUTF()));
BlockData v = BlockDataTools.getBlockData(din.readUTF());
if(v == null)
{
block.put(i, AIR);
continue;
}
block.put(i, v);
}
modified = false;
lock.unlock();

View File

@ -64,7 +64,15 @@ public class AtomicSliverMap
for(int i = 0; i < 256; i++)
{
slivers[i].read(din);
try
{
slivers[i].read(din);
}
catch(Throwable e)
{
}
}
}
@ -93,7 +101,7 @@ public class AtomicSliverMap
i.inject(currentData);
}
}
public boolean isModified()
{
for(AtomicSliver i : slivers)
@ -103,7 +111,7 @@ public class AtomicSliverMap
return true;
}
}
return false;
}
}

View File

@ -25,15 +25,6 @@ public class BlockDataTools
if(bdx == null)
{
Iris.warn("Unknown Block Data '" + bd + "'");
try
{
throw new RuntimeException("Unknown Block Data");
}
catch(Throwable e)
{
e.printStackTrace();
}
nulls.add(bd);
return bdx;
}
@ -46,7 +37,6 @@ public class BlockDataTools
catch(Throwable e)
{
Iris.warn("Unknown Block Data '" + bd + "'");
e.printStackTrace();
}
return null;