diff --git a/src/main/java/com/volmit/iris/generator/TerrainChunkGenerator.java b/src/main/java/com/volmit/iris/generator/TerrainChunkGenerator.java index 0a0c5142a..edb09dc3d 100644 --- a/src/main/java/com/volmit/iris/generator/TerrainChunkGenerator.java +++ b/src/main/java/com/volmit/iris/generator/TerrainChunkGenerator.java @@ -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)) { diff --git a/src/main/java/com/volmit/iris/object/IrisDepositGenerator.java b/src/main/java/com/volmit/iris/object/IrisDepositGenerator.java index d2b950f5e..b7399ad02 100644 --- a/src/main/java/com/volmit/iris/object/IrisDepositGenerator.java +++ b/src/main/java/com/volmit/iris/object/IrisDepositGenerator.java @@ -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; } diff --git a/src/main/java/com/volmit/iris/object/atomics/AtomicSliver.java b/src/main/java/com/volmit/iris/object/atomics/AtomicSliver.java index 691d3e23c..5fe786cfb 100644 --- a/src/main/java/com/volmit/iris/object/atomics/AtomicSliver.java +++ b/src/main/java/com/volmit/iris/object/atomics/AtomicSliver.java @@ -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(); diff --git a/src/main/java/com/volmit/iris/object/atomics/AtomicSliverMap.java b/src/main/java/com/volmit/iris/object/atomics/AtomicSliverMap.java index b36c08e86..4adbf69f0 100644 --- a/src/main/java/com/volmit/iris/object/atomics/AtomicSliverMap.java +++ b/src/main/java/com/volmit/iris/object/atomics/AtomicSliverMap.java @@ -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; } } diff --git a/src/main/java/com/volmit/iris/util/BlockDataTools.java b/src/main/java/com/volmit/iris/util/BlockDataTools.java index 38af4076d..ecf54081e 100644 --- a/src/main/java/com/volmit/iris/util/BlockDataTools.java +++ b/src/main/java/com/volmit/iris/util/BlockDataTools.java @@ -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;