9
0
mirror of https://github.com/VolmitSoftware/Iris.git synced 2025-12-29 12:09:07 +00:00

Noise overlay support & Post Foliage Cleaner

This commit is contained in:
Daniel Mills
2020-09-05 01:39:19 -04:00
parent fc55622cc8
commit 44d800de1e
13 changed files with 162 additions and 37 deletions

View File

@@ -52,6 +52,11 @@ public class B
});
}
public static boolean isSolid(BlockData mat)
{
return isSolid(mat.getMaterial());
}
public static boolean isSolid(Material mat)
{
if(!solid.containsKey(mat))
@@ -311,6 +316,47 @@ public class B
return false;
}
public static boolean isFoliage(BlockData d)
{
if(isFluid(d) || isAir(d) || isSolid(d))
{
return false;
}
Material mat = d.getMaterial();
//@builder
return mat.equals(Material.POPPY)
|| mat.equals(Material.DANDELION)
|| mat.equals(B.mat("CORNFLOWER"))
|| mat.equals(B.mat("SWEET_BERRY_BUSH"))
|| mat.equals(B.mat("CRIMSON_ROOTS"))
|| mat.equals(B.mat("WARPED_ROOTS"))
|| mat.equals(B.mat("NETHER_SPROUTS"))
|| mat.equals(B.mat("ALLIUM"))
|| mat.equals(B.mat("AZURE_BLUET"))
|| mat.equals(B.mat("BLUE_ORCHID"))
|| mat.equals(B.mat("POPPY"))
|| mat.equals(B.mat("DANDELION"))
|| mat.equals(B.mat("OXEYE_DAISY"))
|| mat.equals(B.mat("LILY_OF_THE_VALLEY"))
|| mat.equals(B.mat("WITHER_ROSE"))
|| mat.equals(Material.DARK_OAK_SAPLING)
|| mat.equals(Material.ACACIA_SAPLING)
|| mat.equals(Material.JUNGLE_SAPLING)
|| mat.equals(Material.BIRCH_SAPLING)
|| mat.equals(Material.SPRUCE_SAPLING)
|| mat.equals(Material.OAK_SAPLING)
|| 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);
//@done
}
public static boolean canPlaceOnto(Material mat, Material onto)
{
String key = mat.name() + "" + onto.name();
@@ -320,6 +366,17 @@ public class B
return false;
}
if(isFoliage(B.get(mat.name())))
{
if(!isFoliagePlantable(B.get(onto.name())))
{
lock.lock();
canPlaceOn.add(key);
lock.unlock();
return false;
}
}
if(onto.equals(Material.AIR) || onto.equals(B.mat("CAVE_AIR")))
{
lock.lock();
@@ -347,17 +404,6 @@ public class B
}
}
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(B.mat("BLACKSTONE")) || onto.equals(B.mat("BASALT")))
{
if(mat.equals(Material.POPPY) || mat.equals(Material.DANDELION) || mat.equals(B.mat("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))
{
lock.lock();
canPlaceOn.add(key);
lock.unlock();
return false;
}
}
if(onto.equals(Material.ACACIA_LEAVES) || onto.equals(Material.BIRCH_LEAVES) || onto.equals(Material.DARK_OAK_LEAVES) || onto.equals(Material.JUNGLE_LEAVES) || onto.equals(Material.OAK_LEAVES) || onto.equals(Material.SPRUCE_LEAVES))
{
if(!mat.isSolid())
@@ -460,6 +506,16 @@ public class B
return b;
}
public static boolean isFoliagePlantable(BlockData d)
{
return d.getMaterial().equals(Material.GRASS_BLOCK) || d.getMaterial().equals(Material.DIRT) || d.getMaterial().equals(Material.COARSE_DIRT) || d.getMaterial().equals(Material.PODZOL);
}
public static boolean isFluid(BlockData d)
{
return d.getMaterial().equals(Material.WATER) || d.getMaterial().equals(Material.LAVA);
}
public static boolean isAir(BlockData d)
{
return d.getMaterial().equals(Material.AIR) || d.getMaterial().equals(Material.CAVE_AIR) || d.getMaterial().equals(Material.VOID_AIR);

View File

@@ -61,6 +61,11 @@ public abstract class IrisPostBlockFilter implements IPostBlockAccess
return gen.highestTerrainBlock(x, z);
}
public int highestTerrainOrCarvingBlock(int x, int z)
{
return gen.getCarvedHeight(x, z, true);
}
public boolean isAir(int x, int y, int z, int currentPostX, int currentPostZ, ChunkData currentData)
{
BlockData d = getPostBlock(x, y, z, currentPostX, currentPostZ, currentData);