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

REMOVE FBD

This commit is contained in:
Daniel Mills
2020-10-28 01:28:52 -04:00
parent f1856afa77
commit 6ff583a916
44 changed files with 491 additions and 425 deletions

View File

@@ -54,18 +54,18 @@ public class StructureObject implements Serializable
if(i.blockData == null)
{
FastBlockData f = map(i.id, i.data);
bdx = f == null ? null : f.getBlockData();
BlockData f = map(i.id, i.data);
bdx = f == null ? null : f;
}
else
{
bdx = B.get(i.blockData).getBlockData();
bdx = B.get(i.blockData);
}
if(bdx != null)
{
iob.getBlocks().put(new BlockVector(i.x, -i.y, i.z), FastBlockData.of(bdx));
iob.getBlocks().put(new BlockVector(i.x, -i.y, i.z), bdx);
}
}
@@ -73,7 +73,7 @@ public class StructureObject implements Serializable
}
@SuppressWarnings("deprecation")
private static final FastBlockData map(int id, int dat)
private static final BlockData map(int id, int dat)
{
for(Material i : EnumSet.allOf(Material.class))
{
@@ -84,7 +84,7 @@ public class StructureObject implements Serializable
if(i.getId() == id)
{
return FastBlockData.of(Bukkit.getUnsafe().fromLegacy(i, (byte) dat));
return Bukkit.getUnsafe().fromLegacy(i, (byte) dat);
}
}

View File

@@ -424,11 +424,6 @@ public class Iris extends MortarPlugin
public static void verbose(String string)
{
if(true)
{
System.out.println(string);
}
try
{
if(IrisSettings.get().verbose)

View File

@@ -42,31 +42,31 @@ public class CommandIrisWhatBlock extends MortarCommand
sender.sendMessage("Material: " + C.GREEN + bd.getMaterial().name());
sender.sendMessage("Full: " + C.WHITE + bd.getAsString(true));
if (B.isStorage(FastBlockData.of(bd))) {
if (B.isStorage(bd)) {
sender.sendMessage(C.YELLOW + "* Storage Block (Loot Capable)");
}
if (B.isLit(FastBlockData.of(bd))) {
if (B.isLit(bd)) {
sender.sendMessage(C.YELLOW + "* Lit Block (Light Capable)");
}
if (B.isFoliage(FastBlockData.of(bd))) {
if (B.isFoliage(bd)) {
sender.sendMessage(C.YELLOW + "* Foliage Block");
}
if (B.isDecorant(FastBlockData.of(bd))) {
if (B.isDecorant(bd)) {
sender.sendMessage(C.YELLOW + "* Decorant Block");
}
if (B.isFluid(FastBlockData.of(bd))) {
if (B.isFluid(bd)) {
sender.sendMessage(C.YELLOW + "* Fluid Block");
}
if (B.isFoliagePlantable(FastBlockData.of(bd))) {
if (B.isFoliagePlantable(bd)) {
sender.sendMessage(C.YELLOW + "* Plantable Foliage Block");
}
if (B.isSolid(FastBlockData.of(bd))) {
if (B.isSolid(bd)) {
sender.sendMessage(C.YELLOW + "* Solid Block");
}
}

View File

@@ -367,12 +367,12 @@ public abstract class ContextualTerrainProvider implements TerrainProvider, List
if(j == i || j + i == 16)
{
chunk.setBlock(i, h, j, B.getBlockData("RED_TERRACOTTA").getType());
chunk.setBlock(i, h, j, B.getBlockData("RED_TERRACOTTA").getMaterial());
}
else
{
chunk.setBlock(i, h, j, B.getBlockData("BLACK_TERRACOTTA").getType());
chunk.setBlock(i, h, j, B.getBlockData("BLACK_TERRACOTTA").getMaterial());
}
}
}

View File

@@ -4,6 +4,7 @@ import java.io.File;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
import org.bukkit.entity.Player;
import com.volmit.iris.Iris;
@@ -26,10 +27,10 @@ public abstract class DimensionalTerrainProvider extends ContextualTerrainProvid
{
private String dimensionName;
private IrisDimension forceDimension;
protected static final FastBlockData AIR = FastBlockData.of(Material.AIR);
protected static final FastBlockData CAVE_AIR = B.get("CAVE_AIR");
protected static final FastBlockData BEDROCK = FastBlockData.of(Material.BEDROCK);
protected static final FastBlockData WATER = FastBlockData.of(Material.WATER);
protected static final BlockData AIR = Material.AIR.createBlockData();
protected static final BlockData CAVE_AIR = B.get("CAVE_AIR");
protected static final BlockData BEDROCK = Material.BEDROCK.createBlockData();
protected static final BlockData WATER = Material.WATER.createBlockData();
public DimensionalTerrainProvider(TerrainTarget t, String dimensionName)
{

View File

@@ -11,6 +11,7 @@ import java.util.function.Function;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.block.data.BlockData;
import org.bukkit.entity.Player;
import org.bukkit.event.block.BlockDropItemEvent;
import org.bukkit.event.entity.EntitySpawnEvent;
@@ -348,7 +349,7 @@ public class IrisTerrainProvider extends PostBlockTerrainProvider implements Iri
return;
}
FastBlockData data = FastBlockData.of(e.getBlockState().getBlockData());
BlockData data = e.getBlockState().getBlockData();
KList<ItemStack> drops = new KList<>();
boolean skipParents = false;

View File

@@ -5,6 +5,7 @@ import java.util.List;
import org.bukkit.Chunk;
import org.bukkit.World;
import org.bukkit.block.data.BlockData;
import org.bukkit.entity.Player;
import org.bukkit.generator.BlockPopulator;
@@ -128,15 +129,15 @@ public abstract class ParallaxTerrainProvider extends TopographicTerrainProvider
}
@Override
public void set(int x, int y, int z, FastBlockData d)
public void set(int x, int y, int z, BlockData d)
{
getParallaxSliver(x, z).set(y, d);
}
@Override
public FastBlockData get(int x, int y, int z)
public BlockData get(int x, int y, int z)
{
FastBlockData b = sampleSliver(x, z).getBlock()[y];
BlockData b = sampleSliver(x, z).getBlock()[y];
return b == null ? AIR : b;
}

View File

@@ -1,5 +1,6 @@
package com.volmit.iris.gen;
import org.bukkit.block.data.BlockData;
import org.bukkit.generator.ChunkGenerator.ChunkData;
import com.volmit.iris.Iris;
@@ -84,7 +85,7 @@ public abstract class PostBlockTerrainProvider extends ParallaxTerrainProvider i
}
@Override
public FastBlockData getPostBlock(int x, int y, int z, int currentPostX, int currentPostZ, ChunkData currentData)
public BlockData getPostBlock(int x, int y, int z, int currentPostX, int currentPostZ, ChunkData currentData)
{
if(y > 255 || y < 0)
{
@@ -94,7 +95,7 @@ public abstract class PostBlockTerrainProvider extends ParallaxTerrainProvider i
if(x >> 4 == currentPostX && z >> 4 == currentPostZ)
{
getPostLock().lock();
FastBlockData d = FastBlockData.of(currentData.getBlockData(x & 15, y, z & 15));
BlockData d = currentData.getBlockData(x & 15, y, z & 15);
getPostLock().unlock();
return d;
}
@@ -103,22 +104,12 @@ public abstract class PostBlockTerrainProvider extends ParallaxTerrainProvider i
}
@Override
public void setPostBlock(int x, int y, int z, FastBlockData d, int currentPostX, int currentPostZ, ChunkData currentData)
public void setPostBlock(int x, int y, int z, BlockData d, int currentPostX, int currentPostZ, ChunkData currentData)
{
if(x >> 4 == currentPostX && z >> 4 == currentPostZ)
{
getPostLock().lock();
if(d.hasBlockData())
{
currentData.setBlock(x & 15, y, z & 15, d.getBlockData());
}
else
{
currentData.setBlock(x & 15, y, z & 15, d.getType());
}
currentData.setBlock(x & 15, y, z & 15, d);
getPostLock().unlock();
}

View File

@@ -40,6 +40,7 @@ import com.volmit.iris.util.RNG;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.bukkit.block.data.BlockData;
@Data
@EqualsAndHashCode(callSuper = false)
@@ -128,7 +129,7 @@ public abstract class TopographicTerrainProvider extends ParallelTerrainProvider
}
RNG crand = getMasterRandom().nextParallelRNG(rx).nextParallelRNG(rz);
FastBlockData block;
BlockData block;
int fluidHeight = getDimension().getFluidHeight();
double ox = getModifiedX(rx, rz);
double oz = getModifiedZ(rx, rz);
@@ -149,10 +150,10 @@ public abstract class TopographicTerrainProvider extends ParallelTerrainProvider
throw new RuntimeException("Null Biome!");
}
KList<FastBlockData> layers = biome.generateLayers(rx, rz, getMasterRandom(), height, height - getFluidHeight(), getData());
KList<FastBlockData> cavernLayers = null;
KList<FastBlockData> seaLayers = biome.isAquatic() || biome.isShore() ? biome.generateSeaLayers(rx, rz, getMasterRandom(), fluidHeight - height, getData()) : new KList<>();
FastBlockData biomeFluid = biome.getFluidType().isEmpty() ? null : B.get(biome.getFluidType());
KList<BlockData> layers = biome.generateLayers(rx, rz, getMasterRandom(), height, height - getFluidHeight(), getData());
KList<BlockData> cavernLayers = null;
KList<BlockData> seaLayers = biome.isAquatic() || biome.isShore() ? biome.generateSeaLayers(rx, rz, getMasterRandom(), fluidHeight - height, getData()) : new KList<>();
BlockData biomeFluid = biome.getFluidType().isEmpty() ? null : B.get(biome.getFluidType());
boolean caverning = false;
KList<Integer> cavernHeights = new KList<>();
@@ -314,9 +315,9 @@ public abstract class TopographicTerrainProvider extends ParallelTerrainProvider
}
}
KList<FastBlockData> floor = caveBiome.generateLayers(wx, wz, rockRandom, i.getFloor() - 2, i.getFloor() - 2, getData());
KList<FastBlockData> ceiling = caveBiome.generateLayers(wx + 256, wz + 256, rockRandom, (carvable ? getCarvedWaterHeight(rx, rz) : height) - i.getCeiling() - 2, (carvable ? getCarvedWaterHeight(rx, rz) : height) - i.getCeiling() - 2, getData());
FastBlockData blockc = null;
KList<BlockData> floor = caveBiome.generateLayers(wx, wz, rockRandom, i.getFloor() - 2, i.getFloor() - 2, getData());
KList<BlockData> ceiling = caveBiome.generateLayers(wx + 256, wz + 256, rockRandom, (carvable ? getCarvedWaterHeight(rx, rz) : height) - i.getCeiling() - 2, (carvable ? getCarvedWaterHeight(rx, rz) : height) - i.getCeiling() - 2, getData());
BlockData blockc = null;
for(int j = 0; j < floor.size(); j++)
{
if(j == 0)
@@ -368,7 +369,7 @@ public abstract class TopographicTerrainProvider extends ParallelTerrainProvider
return map;
}
private void decorateLand(RNG rng, IrisBiome biome, AtomicSliver sliver, int k, int rx, int rz, FastBlockData block)
private void decorateLand(RNG rng, IrisBiome biome, AtomicSliver sliver, int k, int rx, int rz, BlockData block)
{
if(!getDimension().isDecorate())
{
@@ -384,7 +385,7 @@ public abstract class TopographicTerrainProvider extends ParallelTerrainProvider
continue;
}
FastBlockData d = i.getBlockData(biome, rng.nextParallelRNG(38888 + biome.getRarity() + biome.getName().length() + j++), rx, rz, getData());
BlockData d = i.getBlockData(biome, rng.nextParallelRNG(38888 + biome.getRarity() + biome.getName().length() + j++), rx, rz, getData());
if(d != null)
{
@@ -409,12 +410,12 @@ public abstract class TopographicTerrainProvider extends ParallelTerrainProvider
}
}
if(d.getBlockData() instanceof Bisected && k < 254)
if(d instanceof Bisected && k < 254)
{
FastBlockData bb = d.clone();
Bisected t = ((Bisected) d.getBlockData());
BlockData bb = d.clone();
Bisected t = ((Bisected) d);
t.setHalf(Half.TOP);
Bisected b = ((Bisected) bb.getBlockData());
Bisected b = ((Bisected) bb);
b.setHalf(Half.BOTTOM);
sliver.set(k + 1, bb);
sliver.set(k + 2, d);
@@ -423,7 +424,7 @@ public abstract class TopographicTerrainProvider extends ParallelTerrainProvider
else
{
int stack = i.getHeight(rng.nextParallelRNG((int) (39456 + (10000 * i.getChance()) + i.getStackMax() + i.getStackMin() + i.getZoom())), rx, rz, getData());
FastBlockData top = null;
BlockData top = null;
if(stack > 1 && i.getTopPalette().hasElements())
{
@@ -439,7 +440,7 @@ public abstract class TopographicTerrainProvider extends ParallelTerrainProvider
{
for(int l = 0; l < stack; l++)
{
FastBlockData dd = i.getBlockData100(biome, rng.nextParallelRNG(38888 + l + biome.getRarity() + biome.getName().length() + j++), rx + l, rz - l, getData());
BlockData dd = i.getBlockData100(biome, rng.nextParallelRNG(38888 + l + biome.getRarity() + biome.getName().length() + j++), rx + l, rz - l, getData());
d = dd != null ? dd : d;
sliver.set(k + l + 1, l == stack - 1 && top != null ? top : d);
}
@@ -451,7 +452,7 @@ public abstract class TopographicTerrainProvider extends ParallelTerrainProvider
}
}
private void decorateCave(RNG rng, IrisBiome biome, AtomicSliver sliver, int k, int rx, int rz, FastBlockData block)
private void decorateCave(RNG rng, IrisBiome biome, AtomicSliver sliver, int k, int rx, int rz, BlockData block)
{
if(!getDimension().isDecorate())
{
@@ -462,7 +463,7 @@ public abstract class TopographicTerrainProvider extends ParallelTerrainProvider
for(IrisDecorator i : biome.getDecorators())
{
FastBlockData d = i.getBlockData(biome, rng.nextParallelRNG(2333877 + biome.getRarity() + biome.getName().length() + +j++), rx, rz, getData());
BlockData d = i.getBlockData(biome, rng.nextParallelRNG(2333877 + biome.getRarity() + biome.getName().length() + +j++), rx, rz, getData());
if(d != null)
{
@@ -479,12 +480,12 @@ public abstract class TopographicTerrainProvider extends ParallelTerrainProvider
}
}
if(d.getBlockData() instanceof Bisected && k < 254)
if(d instanceof Bisected && k < 254)
{
FastBlockData bb = d.clone();
Bisected t = ((Bisected) d.getBlockData());
BlockData bb = d.clone();
Bisected t = ((Bisected) d);
t.setHalf(Half.TOP);
Bisected b = ((Bisected) bb.getBlockData());
Bisected b = ((Bisected) bb);
b.setHalf(Half.BOTTOM);
sliver.set(k + 1, bb);
sliver.set(k + 2, d);
@@ -534,7 +535,7 @@ public abstract class TopographicTerrainProvider extends ParallelTerrainProvider
continue;
}
FastBlockData d = i.getBlockData(biome, getMasterRandom().nextParallelRNG(2555 + biome.getRarity() + biome.getName().length() + j++), rx, rz, getData());
BlockData d = i.getBlockData(biome, getMasterRandom().nextParallelRNG(2555 + biome.getRarity() + biome.getName().length() + j++), rx, rz, getData());
if(d != null)
{

View File

@@ -6,6 +6,7 @@ import java.io.IOException;
import org.bukkit.Material;
import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
import org.bukkit.generator.ChunkGenerator.BiomeGrid;
import org.bukkit.generator.ChunkGenerator.ChunkData;
@@ -21,7 +22,7 @@ import lombok.Data;
@Data
public class AtomicSliver
{
public static final FastBlockData AIR = B.getBlockData("AIR");
public static final BlockData AIR = B.getBlockData("AIR");
public static boolean forgetful = false;
private transient Biome[] biome;
private transient Biome onlyBiome;
@@ -31,7 +32,7 @@ public class AtomicSliver
private transient final byte x;
private transient final byte z;
private transient boolean modified = false;
private FastBlockData[] block;
private BlockData[] block;
private KList<Byte> blockUpdates;
private int highestBlock = 0;
@@ -41,7 +42,7 @@ public class AtomicSliver
this.x = (byte) x;
this.z = (byte) z;
blockUpdates = new KList<>(4);
this.block = new FastBlockData[256];
this.block = new BlockData[256];
this.biome = new Biome[256];
}
@@ -80,7 +81,7 @@ public class AtomicSliver
blockUpdates.remove(Byte.valueOf((byte) (y + Byte.MIN_VALUE)));
}
public FastBlockData get(int h)
public BlockData get(int h)
{
if(forgetful)
{
@@ -97,7 +98,7 @@ public class AtomicSliver
h = 0;
}
FastBlockData b = block[h];
BlockData b = block[h];
last = M.ms();
if(b == null)
@@ -108,13 +109,13 @@ public class AtomicSliver
return b;
}
public FastBlockData getOrNull(int h)
public BlockData getOrNull(int h)
{
if(forgetful || oob(h))
{
return null;
}
FastBlockData b = block[h];
BlockData b = block[h];
last = M.ms();
if(b.getMaterial().equals(Material.AIR))
@@ -125,7 +126,7 @@ public class AtomicSliver
return b;
}
public void set(int h, FastBlockData d)
public void set(int h, BlockData d)
{
if(forgetful || oob(h))
{
@@ -139,7 +140,7 @@ public class AtomicSliver
lock.unlock();
}
public void setSilently(int h, FastBlockData d)
public void setSilently(int h, BlockData d)
{
if(forgetful)
{
@@ -233,7 +234,7 @@ public class AtomicSliver
else
{
d.setBlock(x, i, z, block[i].getBlockData());
d.setBlock(x, i, z, block[i]);
}
}
lock.unlock();
@@ -272,14 +273,14 @@ public class AtomicSliver
public void read(DataInputStream din) throws IOException
{
lock.lock();
this.block = new FastBlockData[256];
this.block = new BlockData[256];
getUpdatables().clear();
// Block Palette
int p = din.readByte() - Byte.MIN_VALUE;
int h = din.readByte() - Byte.MIN_VALUE;
int u = din.readByte() - Byte.MIN_VALUE;
KList<FastBlockData> palette = new KList<FastBlockData>();
KList<BlockData> palette = new KList<BlockData>();
highestBlock = h;
for(int i = 0; i < p; i++)
@@ -316,8 +317,8 @@ public class AtomicSliver
for(int i = 0; i <= highestBlock; i++)
{
FastBlockData dat = block[i];
String d = (dat == null ? AIR : dat).getBlockData().getAsString(true);
BlockData dat = block[i];
String d = (dat == null ? AIR : dat).getAsString(true);
if(!palette.contains(d))
{
@@ -337,8 +338,8 @@ public class AtomicSliver
// Blocks
for(int i = 0; i <= highestBlock; i++)
{
FastBlockData dat = block[i];
String d = (dat == null ? AIR : dat).getBlockData().getAsString(true);
BlockData dat = block[i];
String d = (dat == null ? AIR : dat).getAsString(true);
dos.writeByte(palette.indexOf(d) + Byte.MIN_VALUE);
}
@@ -362,7 +363,7 @@ public class AtomicSliver
{
if(block[i] == null || block[i].equals(AIR))
{
FastBlockData b = atomicSliver.block[i];
BlockData b = atomicSliver.block[i];
if(b == null || b.equals(AIR))
{
continue;
@@ -384,7 +385,7 @@ public class AtomicSliver
for(int i = 0; i < block.length; i++)
{
FastBlockData b = block[i];
BlockData b = block[i];
if(b != null)
{
if(b.getMaterial().equals(Material.AIR))
@@ -392,15 +393,7 @@ public class AtomicSliver
continue;
}
if(b.hasBlockData())
{
currentData.setBlock(x, i, z, b.getBlockData());
}
else
{
currentData.setBlock(x, i, z, b.getType());
}
currentData.setBlock(x, i, z, b);
}
}

View File

@@ -2,6 +2,7 @@ package com.volmit.iris.gen.layer;
import java.util.function.Function;
import com.volmit.iris.util.*;
import org.bukkit.Material;
import com.volmit.iris.gen.TopographicTerrainProvider;
@@ -11,17 +12,13 @@ import com.volmit.iris.noise.FastNoiseDouble.CellularDistanceFunction;
import com.volmit.iris.noise.FastNoiseDouble.CellularReturnType;
import com.volmit.iris.noise.FastNoiseDouble.NoiseType;
import com.volmit.iris.object.IrisCaveLayer;
import com.volmit.iris.util.B;
import com.volmit.iris.util.CaveResult;
import com.volmit.iris.util.GenLayer;
import com.volmit.iris.util.KList;
import com.volmit.iris.util.RNG;
import org.bukkit.block.data.BlockData;
public class GenLayerCave extends GenLayer
{
public static boolean bad = false;
public static final FastBlockData CAVE_AIR = B.getBlockData("CAVE_AIR");
public static final FastBlockData AIR = B.getBlockData("AIR");
public static final BlockData CAVE_AIR = B.getBlockData("CAVE_AIR");
public static final BlockData AIR = B.getBlockData("AIR");
private static final KList<CaveResult> EMPTY = new KList<>();
private final FastNoiseDouble gg;
@@ -55,7 +52,7 @@ public class GenLayerCave extends GenLayer
public void generateCave(KList<CaveResult> result, double wxx, double wzz, int x, int z, AtomicSliver data, IrisCaveLayer layer, int seed)
{
double scale = layer.getCaveZoom();
Function<Integer, FastBlockData> fluid = (height) ->
Function<Integer, BlockData> fluid = (height) ->
{
if(!layer.getFluid().hasFluid(iris.getData()))
{
@@ -160,15 +157,15 @@ public class GenLayerCave extends GenLayer
}
}
public boolean dig(int x, int y, int z, AtomicSliver data, Function<Integer, FastBlockData> caveFluid)
public boolean dig(int x, int y, int z, AtomicSliver data, Function<Integer, BlockData> caveFluid)
{
Material a = data.getTypeSafe(y);
Material c = data.getTypeSafe(y + 1);
Material d = data.getTypeSafe(y + 2);
Material e = data.getTypeSafe(y + 3);
Material f = data.getTypeSafe(y - 1);
FastBlockData b = caveFluid.apply(y);
FastBlockData b2 = caveFluid.apply(y + 1);
BlockData b = caveFluid.apply(y);
BlockData b2 = caveFluid.apply(y + 1);
if(can(a) && canAir(c, b) && canAir(f, b) && canWater(d) && canWater(e))
{
@@ -180,9 +177,9 @@ public class GenLayerCave extends GenLayer
return false;
}
public boolean canAir(Material m, FastBlockData caveFluid)
public boolean canAir(Material m, BlockData caveFluid)
{
return (B.isSolid(m) || (B.isDecorant(FastBlockData.of(m))) || m.equals(Material.AIR) || m.equals(caveFluid.getMaterial()) || m.equals(B.mat("CAVE_AIR").getMaterial())) && !m.equals(Material.BEDROCK);
return (B.isSolid(m) || (B.isDecorant(m.createBlockData())) || m.equals(Material.AIR) || m.equals(caveFluid.getMaterial()) || m.equals(B.mat("CAVE_AIR").getMaterial())) && !m.equals(Material.BEDROCK);
}
public boolean canWater(Material m)

View File

@@ -18,13 +18,14 @@ import com.volmit.iris.util.RNG;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.bukkit.block.data.BlockData;
@Data
@EqualsAndHashCode(callSuper = false)
public class GenLayerRavine extends GenLayer
{
private static final FastBlockData CAVE_AIR = B.get("CAVE_AIR");
private static final FastBlockData LAVA = B.get("LAVA");
private static final BlockData CAVE_AIR = B.get("CAVE_AIR");
private static final BlockData LAVA = B.get("LAVA");
private CNG cng;
public GenLayerRavine(TopographicTerrainProvider iris, RNG rng)
@@ -39,9 +40,9 @@ public class GenLayerRavine extends GenLayer
return 0;
}
private void set(TerrainChunk pos, int x, int y, int z, FastBlockData b, HeightMap h, AtomicSliverMap map)
private void set(TerrainChunk pos, int x, int y, int z, BlockData b, HeightMap h, AtomicSliverMap map)
{
pos.setBlock(x, y, z, b.getBlockData());
pos.setBlock(x, y, z, b);
map.getSliver(x, z).set(y, b);
if(h.getHeight(x, z) > y)
@@ -50,12 +51,12 @@ public class GenLayerRavine extends GenLayer
}
}
private FastBlockData get(TerrainChunk pos, int x, int y, int z)
private BlockData get(TerrainChunk pos, int x, int y, int z)
{
return FastBlockData.of(pos.getBlockData(x, y, z));
return pos.getBlockData(x, y, z);
}
private FastBlockData getSurfaceBlock(BiomeMap map, int n6, int i, RNG rmg)
private BlockData getSurfaceBlock(BiomeMap map, int n6, int i, RNG rmg)
{
return map.getBiome(n6, i).getSurfaceBlock(n6, i, rmg, iris.getData());
}
@@ -163,7 +164,7 @@ public class GenLayerRavine extends GenLayer
continue;
}
FastBlockData bb = get(terrain, i, j, n6);
BlockData bb = get(terrain, i, j, n6);
if(B.isWater(bb))
{
@@ -200,7 +201,7 @@ public class GenLayerRavine extends GenLayer
continue;
}
FastBlockData blockData = get(terrain, n6, j, i);
BlockData blockData = get(terrain, n6, j, i);
if(isSurface(blockData))
{
@@ -242,7 +243,7 @@ public class GenLayerRavine extends GenLayer
return bb;
}
private boolean isDirt(FastBlockData d)
private boolean isDirt(BlockData d)
{
//@builder
Material m = d.getMaterial();
@@ -252,7 +253,7 @@ public class GenLayerRavine extends GenLayer
//@done
}
private boolean isSurface(FastBlockData d)
private boolean isSurface(BlockData d)
{
//@builder
Material m = d.getMaterial();

View File

@@ -13,10 +13,11 @@ import com.volmit.iris.object.IrisObject;
import com.volmit.iris.util.B;
import com.volmit.iris.util.GenLayer;
import com.volmit.iris.util.RNG;
import org.bukkit.block.data.BlockData;
public class GenLayerText extends GenLayer
{
public static final FastBlockData AIR = B.getBlockData("AIR");
public static final BlockData AIR = B.getBlockData("AIR");
private final AtomicCache<IrisObject> debug = new AtomicCache<>();
@@ -30,7 +31,7 @@ public class GenLayerText extends GenLayer
return debug.aquire(() -> createTextObject("Test", "Impact", 24, B.get("STONE")));
}
public IrisObject createTextObject(String text, String font, int size, FastBlockData b)
public IrisObject createTextObject(String text, String font, int size, BlockData b)
{
Font f = new Font(font, Font.PLAIN, size);
int w = ((Graphics2D) new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB).getGraphics()).getFontMetrics(f).stringWidth(text);

View File

@@ -7,6 +7,7 @@ import org.bukkit.Chunk;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.data.BlockData;
import org.bukkit.generator.BlockPopulator;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
@@ -129,7 +130,7 @@ public class GenLayerUpdate extends BlockPopulator
public void update(Chunk c, int x, int y, int z, int rx, int rz, RNG rng)
{
Block b = c.getBlock(x, y, z);
FastBlockData d = FastBlockData.of(b.getBlockData());
BlockData d = b.getBlockData();
if(B.isLit(d))
{
@@ -211,7 +212,7 @@ public class GenLayerUpdate extends BlockPopulator
scramble(inv, rng);
}
public void updateStorage(Block b, FastBlockData data, int rx, int rz, RNG rng)
public void updateStorage(Block b, BlockData data, int rx, int rz, RNG rng)
{
InventorySlotType slot = null;
@@ -285,9 +286,9 @@ public class GenLayerUpdate extends BlockPopulator
inventory.setContents(nitems);
}
public void updateLight(Block b, FastBlockData data)
public void updateLight(Block b, BlockData data)
{
b.setType(Material.AIR, false);
b.setBlockData(data.getBlockData(), false);
b.setBlockData(data, false);
}
}

View File

@@ -10,6 +10,7 @@ import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
import org.bukkit.generator.BlockPopulator;
import org.bukkit.generator.ChunkGenerator;
@@ -92,7 +93,7 @@ public class ProvisionBukkit extends ChunkGenerator implements Provisioned
{
for(int k = 0; k < 16; k++)
{
FastBlockData b = FastBlockData.of(snapshot.getBlockData(i, (h * 16) + j, k));
BlockData b = snapshot.getBlockData(i, (h * 16) + j, k);
if(!Iris.edit.get(cachedWorld, i + cx, (h * 16) + j, k + cz).equals(b))
{

View File

@@ -102,11 +102,9 @@ public class IrisComplex implements DataProvider
.cache2D(64);
chunkRngStream = rngStream.blockToChunkCoords();
rockStream = dimension.getRockPalette().getLayerGenerator(rng.nextRNG(), data).stream()
.select(dimension.getRockPalette().getBlockData(data))
.convert((v) -> v.getBlockData());
.select(dimension.getRockPalette().getBlockData(data));
fluidStream = dimension.getFluidPalette().getLayerGenerator(rng.nextRNG(), data).stream()
.select(dimension.getFluidPalette().getBlockData(data))
.convert((v) -> v.getBlockData());
.select(dimension.getFluidPalette().getBlockData(data));
regionStream = dimension.getRegionStyle().create(rng.nextRNG()).stream()
.zoom(dimension.getRegionZoom())
.selectRarity(dimension.getRegions())
@@ -197,7 +195,7 @@ public class IrisComplex implements DataProvider
if(atDepth + th >= depth)
{
return i.get(rng, x, y, z, data).getBlockData();
return i.get(rng, x, y, z, data);
}
atDepth += th;
@@ -217,7 +215,7 @@ public class IrisComplex implements DataProvider
continue;
}
FastBlockData block = i.getBlockData(b, rngc, x, z, data);
BlockData block = i.getBlockData(b, rngc, x, z, data);
if(block != null)
{

View File

@@ -83,18 +83,18 @@ public class IrisTerrainGenerator
for(int i = 0; i < stack; i++)
{
h.set(ax, i + floor, az, deco.getBlockData100(b, rng, rx - i, rz + i, data).getBlockData());
h.set(ax, i + floor, az, deco.getBlockData100(b, rng, rx - i, rz + i, data));
}
if(deco.getTopPalette().isNotEmpty())
{
h.set(ax, stack + floor - 1, az, deco.getBlockDataForTop(b, rng, rx - stack, rz + stack, data).getBlockData());
h.set(ax, stack + floor - 1, az, deco.getBlockDataForTop(b, rng, rx - stack, rz + stack, data));
}
}
else
{
h.set(ax, floor, az, deco.getBlockData100(b, rng, rx, rz, data).getBlockData());
h.set(ax, floor, az, deco.getBlockData100(b, rng, rx, rz, data));
}
}
@@ -110,18 +110,18 @@ public class IrisTerrainGenerator
for(int i = 0; i < stack; i++)
{
h.set(ax, -i + ceiling, az, cdeco.getBlockData100(b, rng, rx - i, rz + i, data).getBlockData());
h.set(ax, -i + ceiling, az, cdeco.getBlockData100(b, rng, rx - i, rz + i, data));
}
if(cdeco.getTopPalette().isNotEmpty())
{
h.set(ax, -stack + ceiling - 1, az, cdeco.getBlockDataForTop(b, rng, rx - stack, rz + stack, data).getBlockData());
h.set(ax, -stack + ceiling - 1, az, cdeco.getBlockDataForTop(b, rng, rx - stack, rz + stack, data));
}
}
else
{
h.set(ax, ceiling, az, cdeco.getBlockData100(b, rng, rx, rz, data).getBlockData());
h.set(ax, ceiling, az, cdeco.getBlockData100(b, rng, rx, rz, data));
}
}
}

View File

@@ -17,6 +17,6 @@ public class BlockDataHunkIOAdapter extends PaletteHunkIOAdapter<BlockData> {
@Override
public BlockData read(DataInputStream din) throws IOException {
return B.get(din.readUTF()).getBlockData();
return B.get(din.readUTF());
}
}

View File

@@ -36,12 +36,12 @@ public class ChunkHunkView implements Hunk<BlockData>
@Override
public void setRaw(int x, int y, int z, BlockData t)
{
Iris.edit.set(chunk.getWorld(), x + (chunk.getX() * 16), y, z + (chunk.getZ() * 16), FastBlockData.of(t));
Iris.edit.set(chunk.getWorld(), x + (chunk.getX() * 16), y, z + (chunk.getZ() * 16), t);
}
@Override
public BlockData getRaw(int x, int y, int z)
{
return Iris.edit.get(chunk.getWorld(), x + (chunk.getX() * 16), y, z + (chunk.getZ() * 16)).getBlockData();
return Iris.edit.get(chunk.getWorld(), x + (chunk.getX() * 16), y, z + (chunk.getZ() * 16));
}
}

View File

@@ -1,6 +1,5 @@
package com.volmit.iris.gen.v2.scaffold.parallax;
import com.sun.tools.javac.code.Attribute;
import com.volmit.iris.gen.v2.scaffold.hunk.io.HunkIOAdapter;
import com.volmit.iris.gen.v2.scaffold.hunk.io.PaletteHunkIOAdapter;
import com.volmit.iris.util.CompoundTag;

View File

@@ -3,6 +3,7 @@ package com.volmit.iris.manager;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.world.WorldUnloadEvent;
@@ -28,14 +29,14 @@ public class EditManager implements Listener
Bukkit.getScheduler().scheduleSyncRepeatingTask(Iris.instance, this::update, 0, 0);
}
public FastBlockData get(World world, int x, int y, int z)
public BlockData get(World world, int x, int y, int z)
{
return FastBlockData.of(open(world).get(x, y, z));
return open(world).get(x, y, z);
}
public void set(World world, int x, int y, int z, FastBlockData d)
public void set(World world, int x, int y, int z, BlockData d)
{
open(world).set(x, y, z, d.getBlockData());
open(world).set(x, y, z, d);
}
public void setBiome(World world, int x, int y, int z, Biome d)

View File

@@ -210,7 +210,7 @@ public class WandManager implements Listener
}
BlockVector bv = b.getLocation().subtract(c.getLowerNE().toVector()).toVector().toBlockVector();
s.setUnsigned(bv.getBlockX(), bv.getBlockY(), bv.getBlockZ(), FastBlockData.of(b.getBlockData()));
s.setUnsigned(bv.getBlockX(), bv.getBlockY(), bv.getBlockZ(), b.getBlockData());
}
return s;

View File

@@ -30,6 +30,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.bukkit.block.data.BlockData;
@Accessors(chain = true)
@NoArgsConstructor
@@ -349,14 +350,14 @@ public class IrisBiome extends IrisRegistrant implements IRare
return childrenCell.aquire(() -> getChildStyle().create(random.nextParallelRNG(sig * 2137)).bake().scale(scale).bake());
}
public KList<FastBlockData> generateLayers(double wx, double wz, RNG random, int maxDepth, int height, IrisDataManager rdata)
public KList<BlockData> generateLayers(double wx, double wz, RNG random, int maxDepth, int height, IrisDataManager rdata)
{
if(isLockLayers())
{
return generateLockedLayers(wx, wz, random, maxDepth, height, rdata);
}
KList<FastBlockData> data = new KList<>();
KList<BlockData> data = new KList<>();
if(maxDepth <= 0)
{
@@ -400,10 +401,10 @@ public class IrisBiome extends IrisRegistrant implements IRare
return data;
}
public KList<FastBlockData> generateLockedLayers(double wx, double wz, RNG random, int maxDepthf, int height, IrisDataManager rdata)
public KList<BlockData> generateLockedLayers(double wx, double wz, RNG random, int maxDepthf, int height, IrisDataManager rdata)
{
KList<FastBlockData> data = new KList<>();
KList<FastBlockData> real = new KList<>();
KList<BlockData> data = new KList<>();
KList<BlockData> real = new KList<>();
int maxDepth = Math.min(maxDepthf, getLockLayersMax());
if(maxDepth <= 0)
{
@@ -470,9 +471,9 @@ public class IrisBiome extends IrisRegistrant implements IRare
return this;
}
public KList<FastBlockData> generateSeaLayers(double wx, double wz, RNG random, int maxDepth, IrisDataManager rdata)
public KList<BlockData> generateSeaLayers(double wx, double wz, RNG random, int maxDepth, IrisDataManager rdata)
{
KList<FastBlockData> data = new KList<>();
KList<BlockData> data = new KList<>();
for(int i = 0; i < seaLayers.size(); i++)
{
@@ -660,7 +661,7 @@ public class IrisBiome extends IrisRegistrant implements IRare
return getBiomeGenerator(rng).fit(biomeScatter, x, y, z);
}
public FastBlockData getSurfaceBlock(int x, int z, RNG rng, IrisDataManager idm)
public BlockData getSurfaceBlock(int x, int z, RNG rng, IrisDataManager idm)
{
if(getLayers().isEmpty())
{

View File

@@ -17,6 +17,7 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.bukkit.block.data.BlockData;
@Accessors(chain = true)
@NoArgsConstructor
@@ -54,7 +55,7 @@ public class IrisBiomePaletteLayer
@Desc("The palette of blocks to be used in this layer")
private KList<IrisBlockData> palette = new KList<IrisBlockData>().qadd(new IrisBlockData("GRASS_BLOCK"));
private final transient AtomicCache<KList<FastBlockData>> blockData = new AtomicCache<>();
private final transient AtomicCache<KList<BlockData>> blockData = new AtomicCache<>();
private final transient AtomicCache<CNG> layerGenerator = new AtomicCache<>();
private final transient AtomicCache<CNG> heightGenerator = new AtomicCache<>();
@@ -63,7 +64,7 @@ public class IrisBiomePaletteLayer
return heightGenerator.aquire(() -> CNG.signature(rng.nextParallelRNG(minHeight * maxHeight + getBlockData(data).size())));
}
public FastBlockData get(RNG rng, double x, double y, double z, IrisDataManager data)
public BlockData get(RNG rng, double x, double y, double z, IrisDataManager data)
{
if(getBlockData(data).isEmpty())
{
@@ -94,14 +95,14 @@ public class IrisBiomePaletteLayer
return palette;
}
public KList<FastBlockData> getBlockData(IrisDataManager data)
public KList<BlockData> getBlockData(IrisDataManager data)
{
return blockData.aquire(() ->
{
KList<FastBlockData> blockData = new KList<>();
KList<BlockData> blockData = new KList<>();
for(IrisBlockData ix : palette)
{
FastBlockData bx = ix.getBlockData(data);
BlockData bx = ix.getBlockData(data);
if(bx != null)
{
for(int i = 0; i < ix.getWeight(); i++)

View File

@@ -18,6 +18,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.bukkit.block.data.BlockData;
@Accessors(chain = true)
@NoArgsConstructor
@@ -55,7 +56,7 @@ public class IrisBlockData extends IrisRegistrant
@Desc("Optional properties for this block data such as 'waterlogged': true")
private KMap<String, Object> data = new KMap<>();
private final transient AtomicCache<FastBlockData> blockdata = new AtomicCache<>();
private final transient AtomicCache<BlockData> blockdata = new AtomicCache<>();
private final transient AtomicCache<String> realProperties = new AtomicCache<>();
public IrisBlockData(String b)
@@ -85,11 +86,11 @@ public class IrisBlockData extends IrisRegistrant
return computeProperties(getData());
}
public FastBlockData getBlockData(IrisDataManager data)
public BlockData getBlockData(IrisDataManager data)
{
return blockdata.aquire(() ->
{
FastBlockData b = null;
BlockData b = null;
IrisBlockData customData = data.getBlockLoader().load(getBlock(), false);
@@ -101,7 +102,7 @@ public class IrisBlockData extends IrisRegistrant
{
b = b.clone();
String st = b.getBlockData().getAsString(true);
String st = b.getAsString(true);
if(st.contains("["))
{
@@ -122,7 +123,7 @@ public class IrisBlockData extends IrisRegistrant
Iris.warn("Debug block data " + sx + " (CUSTOM)");
}
FastBlockData bx = B.get(sx);
BlockData bx = B.get(sx);
if(bx != null)
{

View File

@@ -1,5 +1,6 @@
package com.volmit.iris.object;
import org.bukkit.block.data.BlockData;
import org.bukkit.inventory.ItemStack;
import com.volmit.iris.gen.atomics.AtomicCache;
@@ -45,17 +46,17 @@ public class IrisBlockDrops
@Desc("Removes the default vanilla block drops and only drops the given items & any parent loot tables specified for this block type.")
private boolean replaceVanillaDrops = false;
private final transient AtomicCache<KList<FastBlockData>> data = new AtomicCache<>();
private final transient AtomicCache<KList<BlockData>> data = new AtomicCache<>();
public boolean shouldDropFor(FastBlockData data, IrisDataManager rdata)
public boolean shouldDropFor(BlockData data, IrisDataManager rdata)
{
KList<FastBlockData> list = this.data.aquire(() ->
KList<BlockData> list = this.data.aquire(() ->
{
KList<FastBlockData> b = new KList<>();
KList<BlockData> b = new KList<>();
for(IrisBlockData i : getBlocks())
{
FastBlockData dd = i.getBlockData(rdata);
BlockData dd = i.getBlockData(rdata);
if(dd != null)
{
@@ -66,7 +67,7 @@ public class IrisBlockDrops
return b.removeDuplicates();
});
for(FastBlockData i : list)
for(BlockData i : list)
{
if(exactBlocks ? i.equals(data) : i.getMaterial().equals(data.getMaterial()))
{

View File

@@ -13,6 +13,7 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.bukkit.block.data.BlockData;
@Accessors(chain = true)
@NoArgsConstructor
@@ -37,18 +38,18 @@ public class IrisCaveFluid
@Desc("The fluid type that should spawn here")
private IrisBlockData fluidType = new IrisBlockData("CAVE_AIR");
private final transient AtomicCache<FastBlockData> fluidData = new AtomicCache<>();
private final transient AtomicCache<BlockData> fluidData = new AtomicCache<>();
public boolean hasFluid(IrisDataManager rdata)
{
return !B.isAir(getFluid(rdata));
}
public FastBlockData getFluid(IrisDataManager rdata)
public BlockData getFluid(IrisDataManager rdata)
{
return fluidData.aquire(() ->
{
FastBlockData b = getFluidType().getBlockData(rdata);
BlockData b = getFluidType().getBlockData(rdata);
if(b != null)
{

View File

@@ -13,13 +13,14 @@ import com.volmit.iris.util.KList;
import com.volmit.iris.util.KMap;
import lombok.Data;
import org.bukkit.block.data.BlockData;
@Data
public class IrisCompat
{
private KList<IrisCompatabilityBlockFilter> blockFilters = new KList<>();
private KList<IrisCompatabilityItemFilter> itemFilters = new KList<>();
private transient KMap<String, FastBlockData> blockResolves = new KMap<>();
private transient KMap<String, BlockData> blockResolves = new KMap<>();
private transient KMap<String, Material> itemResolves = new KMap<>();
public IrisCompat()
@@ -28,7 +29,7 @@ public class IrisCompat
itemFilters = getDefaultItemCompatabilityFilters();
}
public FastBlockData getBlock(String n)
public BlockData getBlock(String n)
{
return blockResolves.compute(n, (k, v) ->
{
@@ -40,7 +41,7 @@ public class IrisCompat
String buf = k;
int err = 16;
FastBlockData tx = B.parseBlockDataOrNull(buf);
BlockData tx = B.parseBlockDataOrNull(buf);
if(tx != null)
{
@@ -58,7 +59,7 @@ public class IrisCompat
{
if(i.getWhen().equalsIgnoreCase(buf))
{
FastBlockData b = i.getReplace();
BlockData b = i.getReplace();
if(b != null)
{
@@ -99,7 +100,7 @@ public class IrisCompat
{
if(nomore < 0)
{
return B.parseBlockDataOrNull("STONE").getType();
return B.parseBlockDataOrNull("STONE").getMaterial();
}
nomore--;
@@ -128,11 +129,11 @@ public class IrisCompat
}
buf = k;
FastBlockData tx = B.parseBlockDataOrNull(buf);
BlockData tx = B.parseBlockDataOrNull(buf);
if(tx != null)
{
return tx.getType();
return tx.getMaterial();
}
nomore = 64;
@@ -140,25 +141,25 @@ public class IrisCompat
{
if(nomore < 0)
{
return B.parseBlockDataOrNull("STONE").getType();
return B.parseBlockDataOrNull("STONE").getMaterial();
}
nomore--;
if(err-- <= 0)
{
return B.parseBlockDataOrNull("STONE").getType();
return B.parseBlockDataOrNull("STONE").getMaterial();
}
for(IrisCompatabilityBlockFilter i : blockFilters)
{
if(i.getWhen().equalsIgnoreCase(buf))
{
FastBlockData b = i.getReplace();
BlockData b = i.getReplace();
if(b != null)
{
return b.getType();
return b.getMaterial();
}
buf = i.getSupplement();
@@ -166,7 +167,7 @@ public class IrisCompat
}
}
return B.parseBlockDataOrNull("STONE").getType();
return B.parseBlockDataOrNull("STONE").getMaterial();
}
});
}

View File

@@ -11,6 +11,7 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.bukkit.block.data.BlockData;
@Accessors(chain = true)
@NoArgsConstructor
@@ -33,24 +34,24 @@ public class IrisCompatabilityBlockFilter
@Desc("If exact is true, it compares block data for example minecraft:some_log[axis=x]")
private boolean exact = false;
private final transient AtomicCache<FastBlockData> findData = new AtomicCache<>(true);
private final transient AtomicCache<FastBlockData> replaceData = new AtomicCache<>(true);
private final transient AtomicCache<BlockData> findData = new AtomicCache<>(true);
private final transient AtomicCache<BlockData> replaceData = new AtomicCache<>(true);
public IrisCompatabilityBlockFilter(String when, String supplement)
{
this(when, supplement, false);
}
public FastBlockData getFind()
public BlockData getFind()
{
return findData.aquire(() -> B.getBlockData(when));
}
public FastBlockData getReplace()
public BlockData getReplace()
{
return replaceData.aquire(() ->
{
FastBlockData b = B.parseBlockDataOrNull(supplement);
BlockData b = B.parseBlockDataOrNull(supplement);
if(b == null)
{

View File

@@ -18,6 +18,7 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.bukkit.block.data.BlockData;
@Accessors(chain = true)
@NoArgsConstructor
@@ -94,8 +95,8 @@ public class IrisDecorator
private final transient AtomicCache<CNG> layerGenerator = new AtomicCache<>();
private final transient AtomicCache<CNG> varianceGenerator = new AtomicCache<>();
private final transient AtomicCache<CNG> heightGenerator = new AtomicCache<>();
private final transient AtomicCache<KList<FastBlockData>> blockData = new AtomicCache<>();
private final transient AtomicCache<KList<FastBlockData>> blockDataTops = new AtomicCache<>();
private final transient AtomicCache<KList<BlockData>> blockData = new AtomicCache<>();
private final transient AtomicCache<KList<BlockData>> blockDataTops = new AtomicCache<>();
public int getHeight(RNG rng, double x, double z, IrisDataManager data)
{
@@ -131,7 +132,7 @@ public class IrisDecorator
return palette;
}
public FastBlockData getBlockData(IrisBiome b, RNG rng, double x, double z, IrisDataManager data)
public BlockData getBlockData(IrisBiome b, RNG rng, double x, double z, IrisDataManager data)
{
if(getBlockData(data).isEmpty())
{
@@ -155,7 +156,7 @@ public class IrisDecorator
return null;
}
public FastBlockData getBlockData100(IrisBiome b, RNG rng, double x, double z, IrisDataManager data)
public BlockData getBlockData100(IrisBiome b, RNG rng, double x, double z, IrisDataManager data)
{
if(getBlockData(data).isEmpty())
{
@@ -174,7 +175,7 @@ public class IrisDecorator
return getVarianceGenerator(rng, data).fit(getBlockData(data), xx, zz);
}
public FastBlockData getBlockDataForTop(IrisBiome b, RNG rng, double x, double z, IrisDataManager data)
public BlockData getBlockDataForTop(IrisBiome b, RNG rng, double x, double z, IrisDataManager data)
{
if(getBlockDataTops(data).isEmpty())
{
@@ -197,14 +198,14 @@ public class IrisDecorator
return null;
}
public KList<FastBlockData> getBlockData(IrisDataManager data)
public KList<BlockData> getBlockData(IrisDataManager data)
{
return blockData.aquire(() ->
{
KList<FastBlockData> blockData = new KList<>();
KList<BlockData> blockData = new KList<>();
for(IrisBlockData i : palette)
{
FastBlockData bx = i.getBlockData(data);
BlockData bx = i.getBlockData(data);
if(bx != null)
{
blockData.add(bx);
@@ -215,14 +216,14 @@ public class IrisDecorator
});
}
public KList<FastBlockData> getBlockDataTops(IrisDataManager data)
public KList<BlockData> getBlockDataTops(IrisDataManager data)
{
return blockDataTops.aquire(() ->
{
KList<FastBlockData> blockDataTops = new KList<>();
KList<BlockData> blockDataTops = new KList<>();
for(IrisBlockData i : topPalette)
{
FastBlockData bx = i.getBlockData(data);
BlockData bx = i.getBlockData(data);
if(bx != null)
{
blockDataTops.add(bx);

View File

@@ -86,7 +86,7 @@ public class IrisDepositGenerator
private int varience = 3;
private final transient AtomicCache<KList<IrisObject>> objects = new AtomicCache<>();
private final transient AtomicCache<KList<FastBlockData>> blockData = new AtomicCache<>();
private final transient AtomicCache<KList<BlockData>> blockData = new AtomicCache<>();
public IrisObject getClump(RNG rng, IrisDataManager rdata)
{
@@ -136,20 +136,20 @@ public class IrisDepositGenerator
return o;
}
private FastBlockData nextBlock(RNG rngv, IrisDataManager rdata)
private BlockData nextBlock(RNG rngv, IrisDataManager rdata)
{
return getBlockData(rdata).get(rngv.i(0, getBlockData(rdata).size() - 1));
}
public KList<FastBlockData> getBlockData(IrisDataManager rdata)
public KList<BlockData> getBlockData(IrisDataManager rdata)
{
return blockData.aquire(() ->
{
KList<FastBlockData> blockData = new KList<>();
KList<BlockData> blockData = new KList<>();
for(IrisBlockData ix : palette)
{
FastBlockData bx = ix.getBlockData(rdata);
BlockData bx = ix.getBlockData(rdata);
if(bx != null)
{
@@ -220,8 +220,8 @@ public class IrisDepositGenerator
if(!allow)
{
FastBlockData b = FastBlockData.of(data.getBlockData(nx, ny, nz));
for(FastBlockData f : g.getDimension().getRockPalette().getBlockData(g.getData()))
BlockData b = data.getBlockData(nx, ny, nz);
for(BlockData f : g.getDimension().getRockPalette().getBlockData(g.getData()))
{
if(f.getMaterial().equals(b.getMaterial()))
{
@@ -243,7 +243,7 @@ public class IrisDepositGenerator
if(allow)
{
data.setBlock(nx, ny, nz, clump.getBlocks().get(j).getBlockData());
data.setBlock(nx, ny, nz, clump.getBlocks().get(j));
}
}
}

View File

@@ -505,7 +505,7 @@ public class IrisDimension extends IrisRegistrant
});
}
public FastBlockData resolveBlock(String bd)
public BlockData resolveBlock(String bd)
{
return Iris.compat.getBlock(bd);
}

View File

@@ -15,6 +15,7 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.bukkit.block.data.BlockData;
@Accessors(chain = true)
@NoArgsConstructor
@@ -38,11 +39,11 @@ public class IrisMaterialPalette
@Desc("The palette of blocks to be used in this layer")
private KList<IrisBlockData> palette = new KList<IrisBlockData>().qadd(new IrisBlockData("STONE"));
private final transient AtomicCache<KList<FastBlockData>> blockData = new AtomicCache<>();
private final transient AtomicCache<KList<BlockData>> blockData = new AtomicCache<>();
private final transient AtomicCache<CNG> layerGenerator = new AtomicCache<>();
private final transient AtomicCache<CNG> heightGenerator = new AtomicCache<>();
public FastBlockData get(RNG rng, double x, double y, double z, IrisDataManager rdata)
public BlockData get(RNG rng, double x, double y, double z, IrisDataManager rdata)
{
if(getBlockData(rdata).isEmpty())
{
@@ -86,14 +87,14 @@ public class IrisMaterialPalette
return this;
}
public KList<FastBlockData> getBlockData(IrisDataManager rdata)
public KList<BlockData> getBlockData(IrisDataManager rdata)
{
return blockData.aquire(() ->
{
KList<FastBlockData> blockData = new KList<>();
KList<BlockData> blockData = new KList<>();
for(IrisBlockData ix : palette)
{
FastBlockData bx = ix.getBlockData(rdata);
BlockData bx = ix.getBlockData(rdata);
if(bx != null)
{
for(int i = 0; i < ix.getWeight(); i++)

View File

@@ -12,6 +12,7 @@ import java.util.function.Consumer;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
import org.bukkit.block.data.Waterlogged;
import org.bukkit.block.data.type.Leaves;
import org.bukkit.util.BlockVector;
@@ -36,12 +37,12 @@ import lombok.experimental.Accessors;
@EqualsAndHashCode(callSuper = false)
public class IrisObject extends IrisRegistrant
{
private static final FastBlockData AIR = B.getBlockData("CAVE_AIR");
private static final FastBlockData VAIR = B.getBlockData("VOID_AIR");
private static final FastBlockData VAIR_DEBUG = B.getBlockData("COBWEB");
private static final FastBlockData[] SNOW_LAYERS = new FastBlockData[] {B.getBlockData("minecraft:snow[layers=1]"), B.getBlockData("minecraft:snow[layers=2]"), B.getBlockData("minecraft:snow[layers=3]"), B.getBlockData("minecraft:snow[layers=4]"), B.getBlockData("minecraft:snow[layers=5]"), B.getBlockData("minecraft:snow[layers=6]"), B.getBlockData("minecraft:snow[layers=7]"), B.getBlockData("minecraft:snow[layers=8]")};
private static final BlockData AIR = B.getBlockData("CAVE_AIR");
private static final BlockData VAIR = B.getBlockData("VOID_AIR");
private static final BlockData VAIR_DEBUG = B.getBlockData("COBWEB");
private static final BlockData[] SNOW_LAYERS = new BlockData[] {B.getBlockData("minecraft:snow[layers=1]"), B.getBlockData("minecraft:snow[layers=2]"), B.getBlockData("minecraft:snow[layers=3]"), B.getBlockData("minecraft:snow[layers=4]"), B.getBlockData("minecraft:snow[layers=5]"), B.getBlockData("minecraft:snow[layers=6]"), B.getBlockData("minecraft:snow[layers=7]"), B.getBlockData("minecraft:snow[layers=8]")};
public static boolean shitty = false;
private KMap<BlockVector, FastBlockData> blocks;
private KMap<BlockVector, BlockData> blocks;
private int w;
private int d;
private int h;
@@ -276,7 +277,7 @@ public class IrisObject extends IrisRegistrant
dos.writeShort(i.getBlockX());
dos.writeShort(i.getBlockY());
dos.writeShort(i.getBlockZ());
dos.writeUTF(blocks.get(i).getBlockData().getAsString(true));
dos.writeUTF(blocks.get(i).getAsString(true));
}
}
@@ -286,7 +287,7 @@ public class IrisObject extends IrisRegistrant
{
return;
}
KMap<BlockVector, FastBlockData> d = blocks.copy();
KMap<BlockVector, BlockData> d = blocks.copy();
blocks.clear();
for(BlockVector i : d.k())
@@ -295,7 +296,7 @@ public class IrisObject extends IrisRegistrant
}
}
public void setUnsigned(int x, int y, int z, FastBlockData block)
public void setUnsigned(int x, int y, int z, BlockData block)
{
if(shitty)
{
@@ -507,21 +508,21 @@ public class IrisObject extends IrisRegistrant
BlockVector i = g.clone();
i = config.getRotation().rotate(i.clone(), spinx, spiny, spinz).clone();
i = config.getTranslate().translate(i.clone(), config.getRotation(), spinx, spiny, spinz).clone();
FastBlockData data = blocks.get(g).clone();
BlockData data = blocks.get(g).clone();
if(stilting && i.getBlockY() < lowest && !B.isAir(data))
{
lowest = i.getBlockY();
}
if(placer.isPreventingDecay() && (data.getBlockData()) instanceof Leaves && !((Leaves) (data.getBlockData())).isPersistent())
if(placer.isPreventingDecay() && (data) instanceof Leaves && !((Leaves) (data)).isPersistent())
{
((Leaves) data.getBlockData()).setPersistent(true);
((Leaves) data).setPersistent(true);
}
for(IrisObjectReplace j : config.getEdit())
{
for(FastBlockData k : j.getFind(rdata))
for(BlockData k : j.getFind(rdata))
{
if(j.isExact() ? k.matches(data) : k.getMaterial().equals(data.getMaterial()))
{
@@ -595,7 +596,7 @@ public class IrisObject extends IrisRegistrant
continue;
}
FastBlockData d = blocks.get(i);
BlockData d = blocks.get(i);
if(d == null || B.isAir(d))
{
@@ -653,7 +654,7 @@ public class IrisObject extends IrisRegistrant
return;
}
KMap<BlockVector, FastBlockData> v = blocks.copy();
KMap<BlockVector, BlockData> v = blocks.copy();
blocks.clear();
for(BlockVector i : v.keySet())
@@ -671,7 +672,7 @@ public class IrisObject extends IrisRegistrant
for(BlockVector i : blocks.keySet())
{
at.clone().add(0, getCenter().getY(), 0).add(i).getBlock().setBlockData(blocks.get(i).getBlockData(), false);
at.clone().add(0, getCenter().getY(), 0).add(i).getBlock().setBlockData(blocks.get(i), false);
}
}
}

View File

@@ -14,6 +14,7 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.bukkit.block.data.BlockData;
@Accessors(chain = true)
@NoArgsConstructor
@@ -38,18 +39,18 @@ public class IrisObjectReplace
private boolean exact = false;
private final transient AtomicCache<CNG> replaceGen = new AtomicCache<>();
private final transient AtomicCache<KList<FastBlockData>> findData = new AtomicCache<>();
private final transient AtomicCache<KList<FastBlockData>> replaceData = new AtomicCache<>();
private final transient AtomicCache<KList<BlockData>> findData = new AtomicCache<>();
private final transient AtomicCache<KList<BlockData>> replaceData = new AtomicCache<>();
public KList<FastBlockData> getFind(IrisDataManager rdata)
public KList<BlockData> getFind(IrisDataManager rdata)
{
return findData.aquire(() ->
{
KList<FastBlockData> b = new KList<>();
KList<BlockData> b = new KList<>();
for(IrisBlockData i : find)
{
FastBlockData bx = i.getBlockData(rdata);
BlockData bx = i.getBlockData(rdata);
if(bx != null)
{
@@ -61,7 +62,7 @@ public class IrisObjectReplace
});
}
public FastBlockData getReplace(RNG seed, double x, double y, double z, IrisDataManager rdata)
public BlockData getReplace(RNG seed, double x, double y, double z, IrisDataManager rdata)
{
return getReplace().get(seed, x, y, z, rdata);
}

View File

@@ -111,16 +111,16 @@ public class IrisObjectRotation
return BlockFace.SOUTH;
}
public FastBlockData rotate(FastBlockData dd, int spinxx, int spinyy, int spinzz)
public BlockData rotate(BlockData dd, int spinxx, int spinyy, int spinzz)
{
BlockData d = dd.getBlockData();
BlockData d = dd;
int spinx = (int) (90D * (Math.ceil(Math.abs((spinxx % 360D) / 90D))));
int spiny = (int) (90D * (Math.ceil(Math.abs((spinyy % 360D) / 90D))));
int spinz = (int) (90D * (Math.ceil(Math.abs((spinzz % 360D) / 90D))));
if(!canRotate())
{
return FastBlockData.of(d);
return d;
}
if(d instanceof Directional)
@@ -180,7 +180,7 @@ public class IrisObjectRotation
}
}
return FastBlockData.of(d);
return d;
}
public BlockVector rotate(BlockVector b, int spinx, int spiny, int spinz)

View File

@@ -10,6 +10,7 @@ import org.bukkit.Particle;
import org.bukkit.Sound;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.data.BlockData;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@@ -69,9 +70,9 @@ public class StructureTemplate implements Listener, IObjectPlacer
private Location center;
private ChronoLatch u = new ChronoLatch(50);
private World world;
private static final FastBlockData STONE = B.get("STONE");
private static final FastBlockData RED = B.get("RED_STAINED_GLASS");
private static final FastBlockData GREEN = B.get("LIME_STAINED_GLASS");
private static final BlockData STONE = B.get("STONE");
private static final BlockData RED = B.get("RED_STAINED_GLASS");
private static final BlockData GREEN = B.get("LIME_STAINED_GLASS");
private int task;
private ChronoLatch dirtyLatch;
private ChronoLatch gLatch;
@@ -445,7 +446,7 @@ public class StructureTemplate implements Listener, IObjectPlacer
Location loc = new Location(world, b.getX(), b.getY(), b.getZ());
BlockVector v = loc.clone().subtract(min).subtract(o.getCenter()).toVector().toBlockVector();
v = r.getPlacement().getRotation().rotate(v, 0, 0, 0);
FastBlockData next = r.getPlacement().getRotation().rotate(FastBlockData.of(b.getBlockData()), 0, 0, 0);
BlockData next = r.getPlacement().getRotation().rotate(b.getBlockData(), 0, 0, 0);
o.getBlocks().put(v, next);
}
@@ -788,7 +789,7 @@ public class StructureTemplate implements Listener, IObjectPlacer
}
@Override
public void set(int x, int y, int z, FastBlockData d)
public void set(int x, int y, int z, BlockData d)
{
if(get(x, y, z).equals(d))
{
@@ -799,9 +800,9 @@ public class StructureTemplate implements Listener, IObjectPlacer
}
@Override
public FastBlockData get(int x, int y, int z)
public BlockData get(int x, int y, int z)
{
return FastBlockData.of(world.getBlockAt(x, y, z).getBlockData());
return world.getBlockAt(x, y, z).getBlockData();
}
@Override

View File

@@ -2,6 +2,7 @@ package com.volmit.iris.util;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
import org.bukkit.block.data.type.Leaves;
import com.volmit.iris.Iris;
@@ -9,33 +10,33 @@ import com.volmit.iris.object.IrisDimension;
public class B
{
private static final FastBlockData AIR = FastBlockData.of(Material.AIR);
private static final KMap<String, FastBlockData> bdc = new KMap<>();
private static final BlockData AIR = Material.AIR.createBlockData();
private static final KMap<String, BlockData> bdc = new KMap<>();
private static final KList<String> nulls = new KList<>();
private static final KList<String> canPlaceOn = new KList<>();
private static final KList<FastBlockData> decorant = new KList<>();
private static final KList<BlockData> decorant = new KList<>();
private static final IrisDimension defaultCompat = new IrisDimension();
private static final KMap<Material, Boolean> solid = new KMap<>();
private static final KMap<String, FastBlockData> types = new KMap<>();
private static final KMap<String, FastBlockData> typesb = new KMap<>();
private static final KMap<String, BlockData> types = new KMap<>();
private static final KMap<String, Material> typesb = new KMap<>();
private static IrisLock lock = new IrisLock("Typelock");
public static FastBlockData get(String bd)
public static BlockData get(String bd)
{
return getBlockData(bd);
}
public static boolean isWater(FastBlockData b)
public static boolean isWater(BlockData b)
{
return b.getMaterial().equals(Material.WATER);
}
public static FastBlockData getAir()
public static BlockData getAir()
{
return AIR;
}
public static KMap<String, FastBlockData> getBdc()
public static KMap<String, BlockData> getBdc()
{
return bdc;
}
@@ -50,7 +51,7 @@ public class B
return canPlaceOn;
}
public static KList<FastBlockData> getDecorant()
public static KList<BlockData> getDecorant()
{
return decorant;
}
@@ -65,12 +66,12 @@ public class B
return solid;
}
public static KMap<String, FastBlockData> getTypes()
public static KMap<String, BlockData> getTypes()
{
return types;
}
public static KMap<String, FastBlockData> getTypesb()
public static KMap<String, Material> getTypesb()
{
return typesb;
}
@@ -93,7 +94,7 @@ public class B
try
{
return FastBlockData.of(Material.valueOf(k));
return Material.valueOf(k);
}
catch(Throwable e)
@@ -101,8 +102,8 @@ public class B
}
return FastBlockData.of(defaultCompat.resolveItem(bdx));
}).getType();
return defaultCompat.resolveItem(bdx);
});
}
public static Material getMaterialOrNull(String bdx)
@@ -120,7 +121,7 @@ public class B
}
}
public static boolean isSolid(FastBlockData mat)
public static boolean isSolid(BlockData mat)
{
return isSolid(mat.getMaterial());
}
@@ -130,14 +131,14 @@ public class B
return mat.isSolid();
}
public static FastBlockData mat(String bd)
public static BlockData mat(String bd)
{
return getBlockData(bd);
}
public static FastBlockData getBlockData(String bd)
public static BlockData getBlockData(String bd)
{
return getBlockData(bd, defaultCompat).optimize();
return getBlockData(bd, defaultCompat);
}
public static String[] getBlockTypes()
@@ -180,18 +181,18 @@ public class B
return bt.toArray(new String[bt.size()]);
}
public static FastBlockData getBlockData(String bdxf, IrisDimension resolver)
public static BlockData getBlockData(String bdxf, IrisDimension resolver)
{
try
{
String bd = bdxf.trim();
FastBlockData fff = bdc.get(bd);
BlockData fff = bdc.get(bd);
if(fff != null)
{
return fff.clone();
}
FastBlockData bdx = parseBlockData(bd);
BlockData bdx = parseBlockData(bd);
if(bdx == null)
{
@@ -202,7 +203,7 @@ public class B
{
Iris.warn("Unknown Block Data '" + bd + "'");
nulls.add(bd);
return bdx;
return AIR;
}
if(resolver.isPreventLeafDecay() && bdx instanceof Leaves)
@@ -223,11 +224,11 @@ public class B
return AIR;
}
public static FastBlockData parseBlockDataOrNull(String ix)
public static BlockData parseBlockDataOrNull(String ix)
{
try
{
FastBlockData bx = FastBlockData.of(Bukkit.createBlockData(ix));
BlockData bx = Bukkit.createBlockData(ix);
if(bx != null)
{
@@ -246,7 +247,7 @@ public class B
try
{
return FastBlockData.of(Material.valueOf(i));
return Material.valueOf(i).createBlockData();
}
catch(Throwable e)
@@ -257,11 +258,11 @@ public class B
return null;
}
public static FastBlockData parseBlockData(String ix)
public static BlockData parseBlockData(String ix)
{
try
{
FastBlockData bx = FastBlockData.of(Bukkit.createBlockData(ix));
BlockData bx = Bukkit.createBlockData(ix);
if(bx != null)
{
@@ -280,7 +281,7 @@ public class B
try
{
return FastBlockData.of(Material.valueOf(i));
return Material.valueOf(i).createBlockData();
}
catch(Throwable e)
@@ -291,137 +292,137 @@ public class B
return AIR;
}
public static boolean isStorage(FastBlockData mat)
public static boolean isStorage(BlockData mat)
{
// @builder
return mat.matEquals(B.mat("CHEST"))
|| mat.matEquals(B.mat("TRAPPED_CHEST"))
|| mat.matEquals(B.mat("SHULKER_BOX"))
|| mat.matEquals(B.mat("WHITE_SHULKER_BOX"))
|| mat.matEquals(B.mat("ORANGE_SHULKER_BOX"))
|| mat.matEquals(B.mat("MAGENTA_SHULKER_BOX"))
|| mat.matEquals(B.mat("LIGHT_BLUE_SHULKER_BOX"))
|| mat.matEquals(B.mat("YELLOW_SHULKER_BOX"))
|| mat.matEquals(B.mat("LIME_SHULKER_BOX"))
|| mat.matEquals(B.mat("PINK_SHULKER_BOX"))
|| mat.matEquals(B.mat("GRAY_SHULKER_BOX"))
|| mat.matEquals(B.mat("LIGHT_GRAY_SHULKER_BOX"))
|| mat.matEquals(B.mat("CYAN_SHULKER_BOX"))
|| mat.matEquals(B.mat("PURPLE_SHULKER_BOX"))
|| mat.matEquals(B.mat("BLUE_SHULKER_BOX"))
|| mat.matEquals(B.mat("BROWN_SHULKER_BOX"))
|| mat.matEquals(B.mat("GREEN_SHULKER_BOX"))
|| mat.matEquals(B.mat("RED_SHULKER_BOX"))
|| mat.matEquals(B.mat("BLACK_SHULKER_BOX"))
|| mat.matEquals(B.mat("BARREL"))
|| mat.matEquals(B.mat("DISPENSER"))
|| mat.matEquals(B.mat("DROPPER"))
|| mat.matEquals(B.mat("HOPPER"))
|| mat.matEquals(B.mat("FURNACE"))
|| mat.matEquals(B.mat("BLAST_FURNACE"))
|| mat.matEquals(B.mat("SMOKER"));
return mat.getMaterial().equals(B.mat("CHEST").getMaterial())
|| mat.getMaterial().equals(B.mat("TRAPPED_CHEST").getMaterial())
|| mat.getMaterial().equals(B.mat("SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("WHITE_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("ORANGE_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("MAGENTA_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("LIGHT_BLUE_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("YELLOW_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("LIME_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("PINK_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("GRAY_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("LIGHT_GRAY_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("CYAN_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("PURPLE_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("BLUE_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("BROWN_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("GREEN_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("RED_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("BLACK_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("BARREL").getMaterial())
|| mat.getMaterial().equals(B.mat("DISPENSER").getMaterial())
|| mat.getMaterial().equals(B.mat("DROPPER").getMaterial())
|| mat.getMaterial().equals(B.mat("HOPPER").getMaterial())
|| mat.getMaterial().equals(B.mat("FURNACE").getMaterial())
|| mat.getMaterial().equals(B.mat("BLAST_FURNACE").getMaterial())
|| mat.getMaterial().equals(B.mat("SMOKER").getMaterial());
//@done
}
public static boolean isStorageChest(FastBlockData mat)
public static boolean isStorageChest(BlockData mat)
{
// @builder
return mat.matEquals(B.mat("CHEST"))
|| mat.matEquals(B.mat("TRAPPED_CHEST"))
|| mat.matEquals(B.mat("SHULKER_BOX"))
|| mat.matEquals(B.mat("WHITE_SHULKER_BOX"))
|| mat.matEquals(B.mat("ORANGE_SHULKER_BOX"))
|| mat.matEquals(B.mat("MAGENTA_SHULKER_BOX"))
|| mat.matEquals(B.mat("LIGHT_BLUE_SHULKER_BOX"))
|| mat.matEquals(B.mat("YELLOW_SHULKER_BOX"))
|| mat.matEquals(B.mat("LIME_SHULKER_BOX"))
|| mat.matEquals(B.mat("PINK_SHULKER_BOX"))
|| mat.matEquals(B.mat("GRAY_SHULKER_BOX"))
|| mat.matEquals(B.mat("LIGHT_GRAY_SHULKER_BOX"))
|| mat.matEquals(B.mat("CYAN_SHULKER_BOX"))
|| mat.matEquals(B.mat("PURPLE_SHULKER_BOX"))
|| mat.matEquals(B.mat("BLUE_SHULKER_BOX"))
|| mat.matEquals(B.mat("BROWN_SHULKER_BOX"))
|| mat.matEquals(B.mat("GREEN_SHULKER_BOX"))
|| mat.matEquals(B.mat("RED_SHULKER_BOX"))
|| mat.matEquals(B.mat("BLACK_SHULKER_BOX"))
|| mat.matEquals(B.mat("BARREL"))
|| mat.matEquals(B.mat("DISPENSER"))
|| mat.matEquals(B.mat("DROPPER"))
|| mat.matEquals(B.mat("HOPPER"));
return mat.getMaterial().equals(B.mat("CHEST").getMaterial())
|| mat.getMaterial().equals(B.mat("TRAPPED_CHEST").getMaterial())
|| mat.getMaterial().equals(B.mat("SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("WHITE_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("ORANGE_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("MAGENTA_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("LIGHT_BLUE_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("YELLOW_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("LIME_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("PINK_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("GRAY_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("LIGHT_GRAY_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("CYAN_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("PURPLE_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("BLUE_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("BROWN_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("GREEN_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("RED_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("BLACK_SHULKER_BOX").getMaterial())
|| mat.getMaterial().equals(B.mat("BARREL").getMaterial())
|| mat.getMaterial().equals(B.mat("DISPENSER").getMaterial())
|| mat.getMaterial().equals(B.mat("DROPPER").getMaterial())
|| mat.getMaterial().equals(B.mat("HOPPER").getMaterial());
//@done
}
public static boolean isLit(FastBlockData mat)
public static boolean isLit(BlockData mat)
{
// @builder
return mat.matEquals(B.mat("GLOWSTONE"))
|| mat.matEquals(B.mat("END_ROD"))
|| mat.matEquals(B.mat("SOUL_SAND"))
|| mat.matEquals(B.mat("TORCH"))
|| mat.getType().equals(Material.REDSTONE_TORCH)
|| mat.matEquals(B.mat("SOUL_TORCH"))
|| mat.getType().equals(Material.REDSTONE_WALL_TORCH)
|| mat.getType().equals(Material.WALL_TORCH)
|| mat.matEquals(B.mat("SOUL_WALL_TORCH"))
|| mat.matEquals(B.mat("LANTERN"))
|| mat.getType().equals(Material.JACK_O_LANTERN)
|| mat.getType().equals(Material.REDSTONE_LAMP)
|| mat.getType().equals(Material.MAGMA_BLOCK)
|| mat.matEquals(B.mat("SHROOMLIGHT"))
|| mat.matEquals(B.mat("SEA_LANTERN"))
|| mat.matEquals(B.mat("SOUL_LANTERN"))
|| mat.getType().equals(Material.FIRE)
|| mat.matEquals(B.mat("SOUL_FIRE"))
|| mat.matEquals(B.mat("SEA_PICKLE"))
|| mat.getType().equals(Material.BREWING_STAND)
|| mat.getType().equals(Material.REDSTONE_ORE);
return mat.getMaterial().equals(B.mat("GLOWSTONE").getMaterial())
|| mat.getMaterial().equals(B.mat("END_ROD").getMaterial())
|| mat.getMaterial().equals(B.mat("SOUL_SAND").getMaterial())
|| mat.getMaterial().equals(B.mat("TORCH").getMaterial())
|| mat.getMaterial().equals(Material.REDSTONE_TORCH)
|| mat.getMaterial().equals(B.mat("SOUL_TORCH").getMaterial())
|| mat.getMaterial().equals(Material.REDSTONE_WALL_TORCH)
|| mat.getMaterial().equals(Material.WALL_TORCH)
|| mat.getMaterial().equals(B.mat("SOUL_WALL_TORCH").getMaterial())
|| mat.getMaterial().equals(B.mat("LANTERN").getMaterial())
|| mat.getMaterial().equals(Material.JACK_O_LANTERN)
|| mat.getMaterial().equals(Material.REDSTONE_LAMP)
|| mat.getMaterial().equals(Material.MAGMA_BLOCK)
|| mat.getMaterial().equals(B.mat("SHROOMLIGHT").getMaterial())
|| mat.getMaterial().equals(B.mat("SEA_LANTERN").getMaterial())
|| mat.getMaterial().equals(B.mat("SOUL_LANTERN").getMaterial())
|| mat.getMaterial().equals(Material.FIRE)
|| mat.getMaterial().equals(B.mat("SOUL_FIRE").getMaterial())
|| mat.getMaterial().equals(B.mat("SEA_PICKLE").getMaterial())
|| mat.getMaterial().equals(Material.BREWING_STAND)
|| mat.getMaterial().equals(Material.REDSTONE_ORE);
//@done
}
public static boolean isUpdatable(FastBlockData mat)
public static boolean isUpdatable(BlockData mat)
{
return isLit(mat) || isStorage(mat);
}
public static boolean isFoliage(FastBlockData d)
public static boolean isFoliage(BlockData d)
{
if(isFluid(d) || isAir(d) || isSolid(d))
{
return false;
}
FastBlockData mat = d;
BlockData mat = d;
// @builder
return mat.getType().equals(Material.POPPY)
|| mat.getType().equals(Material.DANDELION)
|| mat.matEquals(B.mat("CORNFLOWER"))
|| mat.matEquals(B.mat("SWEET_BERRY_BUSH"))
|| mat.matEquals(B.mat("CRIMSON_ROOTS"))
|| mat.matEquals(B.mat("WARPED_ROOTS"))
|| mat.matEquals(B.mat("NETHER_SPROUTS"))
|| mat.matEquals(B.mat("ALLIUM"))
|| mat.matEquals(B.mat("AZURE_BLUET"))
|| mat.matEquals(B.mat("BLUE_ORCHID"))
|| mat.matEquals(B.mat("POPPY"))
|| mat.matEquals(B.mat("DANDELION"))
|| mat.matEquals(B.mat("OXEYE_DAISY"))
|| mat.matEquals(B.mat("LILY_OF_THE_VALLEY"))
|| mat.matEquals(B.mat("WITHER_ROSE"))
|| mat.getType().equals(Material.DARK_OAK_SAPLING)
|| mat.getType().equals(Material.ACACIA_SAPLING)
|| mat.getType().equals(Material.JUNGLE_SAPLING)
|| mat.getType().equals(Material.BIRCH_SAPLING)
|| mat.getType().equals(Material.SPRUCE_SAPLING)
|| mat.getType().equals(Material.OAK_SAPLING)
|| mat.getType().equals(Material.ORANGE_TULIP)
|| mat.getType().equals(Material.PINK_TULIP)
|| mat.getType().equals(Material.RED_TULIP)
|| mat.getType().equals(Material.WHITE_TULIP)
|| mat.getType().equals(Material.FERN)
|| mat.getType().equals(Material.LARGE_FERN)
|| mat.getType().equals(Material.GRASS)
|| mat.getType().equals(Material.TALL_GRASS);
return mat.getMaterial().equals(Material.POPPY)
|| mat.getMaterial().equals(Material.DANDELION)
|| mat.getMaterial().equals(B.mat("CORNFLOWER").getMaterial())
|| mat.getMaterial().equals(B.mat("SWEET_BERRY_BUSH").getMaterial())
|| mat.getMaterial().equals(B.mat("CRIMSON_ROOTS").getMaterial())
|| mat.getMaterial().equals(B.mat("WARPED_ROOTS").getMaterial())
|| mat.getMaterial().equals(B.mat("NETHER_SPROUTS").getMaterial())
|| mat.getMaterial().equals(B.mat("ALLIUM").getMaterial())
|| mat.getMaterial().equals(B.mat("AZURE_BLUET").getMaterial())
|| mat.getMaterial().equals(B.mat("BLUE_ORCHID").getMaterial())
|| mat.getMaterial().equals(B.mat("POPPY").getMaterial())
|| mat.getMaterial().equals(B.mat("DANDELION").getMaterial())
|| mat.getMaterial().equals(B.mat("OXEYE_DAISY").getMaterial())
|| mat.getMaterial().equals(B.mat("LILY_OF_THE_VALLEY").getMaterial())
|| mat.getMaterial().equals(B.mat("WITHER_ROSE").getMaterial())
|| mat.getMaterial().equals(Material.DARK_OAK_SAPLING)
|| mat.getMaterial().equals(Material.ACACIA_SAPLING)
|| mat.getMaterial().equals(Material.JUNGLE_SAPLING)
|| mat.getMaterial().equals(Material.BIRCH_SAPLING)
|| mat.getMaterial().equals(Material.SPRUCE_SAPLING)
|| mat.getMaterial().equals(Material.OAK_SAPLING)
|| mat.getMaterial().equals(Material.ORANGE_TULIP)
|| mat.getMaterial().equals(Material.PINK_TULIP)
|| mat.getMaterial().equals(Material.RED_TULIP)
|| mat.getMaterial().equals(Material.WHITE_TULIP)
|| mat.getMaterial().equals(Material.FERN)
|| mat.getMaterial().equals(Material.LARGE_FERN)
|| mat.getMaterial().equals(Material.GRASS)
|| mat.getMaterial().equals(Material.TALL_GRASS);
//@done
}
@@ -472,7 +473,11 @@ public class B
}
}
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(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())
{
@@ -486,15 +491,66 @@ public class B
return true;
}
public static boolean isDecorant(FastBlockData m)
public static boolean isDecorant(BlockData m)
{
if(decorant.contains(m))
{
return true;
}
// @NoArgsConstructor
boolean str = m.getType().equals(Material.GRASS) || m.getType().equals(Material.TALL_GRASS) || m.equals(B.mat("CORNFLOWER")) || m.getType().equals(Material.SUNFLOWER) || m.getType().equals(Material.CHORUS_FLOWER) || m.getType().equals(Material.POPPY) || m.getType().equals(Material.DANDELION) || m.getType().equals(Material.OXEYE_DAISY) || m.getType().equals(Material.ORANGE_TULIP) || m.getType().equals(Material.PINK_TULIP) || m.getType().equals(Material.RED_TULIP) || m.getType().equals(Material.WHITE_TULIP) || m.getType().equals(Material.LILAC) || m.getType().equals(Material.DEAD_BUSH) || m.equals(B.mat("SWEET_BERRY_BUSH")) || m.getType().equals(Material.ROSE_BUSH) || m.equals(B.mat("WITHER_ROSE")) || m.getType().equals(Material.ALLIUM) || m.getType().equals(Material.BLUE_ORCHID) || m.equals(B.mat("LILY_OF_THE_VALLEY")) || m.equals(B.mat("CRIMSON_FUNGUS")) || m.equals(B.mat("WARPED_FUNGUS")) || m.getType().equals(Material.RED_MUSHROOM) || m.getType().equals(Material.BROWN_MUSHROOM) || m.equals(B.mat("CRIMSON_ROOTS")) || m.equals(B.mat("AZURE_BLUET")) || m.equals(B.mat("WEEPING_VINES")) || m.equals(B.mat("WEEPING_VINES_PLANT")) || m.equals(B.mat("WARPED_ROOTS")) || m.equals(B.mat("NETHER_SPROUTS")) || m.equals(B.mat("TWISTING_VINES")) || m.equals(B.mat("TWISTING_VINES_PLANT")) || m.getType().equals(Material.SUGAR_CANE) || m.getType().equals(Material.WHEAT) || m.getType().equals(Material.POTATOES) || m.getType().equals(Material.CARROTS) || m.getType().equals(Material.BEETROOTS) || m.getType().equals(Material.NETHER_WART) || m.equals(B.mat("SEA_PICKLE")) || m.equals(B.mat("SEAGRASS")) || m.equals(B.mat("ACACIA_BUTTON")) || m.equals(B.mat("BIRCH_BUTTON")) || m.equals(B.mat("CRIMSON_BUTTON")) || m.equals(B.mat("DARK_OAK_BUTTON")) || m.equals(B.mat("JUNGLE_BUTTON")) || m.equals(B.mat("OAK_BUTTON")) || m.equals(B.mat("POLISHED_BLACKSTONE_BUTTON")) || m.equals(B.mat("SPRUCE_BUTTON")) || m.equals(B.mat("STONE_BUTTON")) || m.equals(B.mat("WARPED_BUTTON")) || m.getType().equals(Material.TORCH) || m.equals(B.mat("SOUL_TORCH"));
// @builder
boolean str = m.getMaterial().equals(Material.GRASS)
|| m.getMaterial().equals(Material.TALL_GRASS)
|| m.equals(B.mat("CORNFLOWER"))
|| m.getMaterial().equals(Material.SUNFLOWER)
|| m.getMaterial().equals(Material.CHORUS_FLOWER)
|| m.getMaterial().equals(Material.POPPY)
|| m.getMaterial().equals(Material.DANDELION)
|| m.getMaterial().equals(Material.OXEYE_DAISY)
|| m.getMaterial().equals(Material.ORANGE_TULIP)
|| m.getMaterial().equals(Material.PINK_TULIP)
|| m.getMaterial().equals(Material.RED_TULIP)
|| m.getMaterial().equals(Material.WHITE_TULIP)
|| m.getMaterial().equals(Material.LILAC)
|| m.getMaterial().equals(Material.DEAD_BUSH)
|| m.equals(B.mat("SWEET_BERRY_BUSH"))
|| m.getMaterial().equals(Material.ROSE_BUSH)
|| m.equals(B.mat("WITHER_ROSE"))
|| m.getMaterial().equals(Material.ALLIUM)
|| m.getMaterial().equals(Material.BLUE_ORCHID)
|| m.equals(B.mat("LILY_OF_THE_VALLEY"))
|| m.equals(B.mat("CRIMSON_FUNGUS"))
|| m.equals(B.mat("WARPED_FUNGUS"))
|| m.getMaterial().equals(Material.RED_MUSHROOM)
|| m.getMaterial().equals(Material.BROWN_MUSHROOM)
|| m.equals(B.mat("CRIMSON_ROOTS"))
|| m.equals(B.mat("AZURE_BLUET"))
|| m.equals(B.mat("WEEPING_VINES"))
|| m.equals(B.mat("WEEPING_VINES_PLANT"))
|| m.equals(B.mat("WARPED_ROOTS"))
|| m.equals(B.mat("NETHER_SPROUTS"))
|| m.equals(B.mat("TWISTING_VINES"))
|| m.equals(B.mat("TWISTING_VINES_PLANT"))
|| m.getMaterial().equals(Material.SUGAR_CANE)
|| m.getMaterial().equals(Material.WHEAT)
|| m.getMaterial().equals(Material.POTATOES)
|| m.getMaterial().equals(Material.CARROTS)
|| m.getMaterial().equals(Material.BEETROOTS)
|| m.getMaterial().equals(Material.NETHER_WART)
|| m.equals(B.mat("SEA_PICKLE"))
|| m.equals(B.mat("SEAGRASS"))
|| m.equals(B.mat("ACACIA_BUTTON"))
|| m.equals(B.mat("BIRCH_BUTTON"))
|| m.equals(B.mat("CRIMSON_BUTTON"))
|| m.equals(B.mat("DARK_OAK_BUTTON"))
|| m.equals(B.mat("JUNGLE_BUTTON"))
|| m.equals(B.mat("OAK_BUTTON"))
|| m.equals(B.mat("POLISHED_BLACKSTONE_BUTTON"))
|| m.equals(B.mat("SPRUCE_BUTTON"))
|| m.equals(B.mat("STONE_BUTTON"))
|| m.equals(B.mat("WARPED_BUTTON"))
|| m.getMaterial().equals(Material.TORCH)
|| m.equals(B.mat("SOUL_TORCH"));
//@done
if(str)
@@ -506,13 +562,13 @@ public class B
return false;
}
public static KList<FastBlockData> getBlockData(KList<String> find)
public static KList<BlockData> getBlockData(KList<String> find)
{
KList<FastBlockData> b = new KList<>();
KList<BlockData> b = new KList<>();
for(String i : find)
{
FastBlockData bd = getBlockData(i);
BlockData bd = getBlockData(i);
if(bd != null)
{
@@ -523,22 +579,22 @@ public class B
return b;
}
public static boolean isFoliagePlantable(FastBlockData d)
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(FastBlockData d)
public static boolean isFluid(BlockData d)
{
return d.getMaterial().equals(Material.WATER) || d.getMaterial().equals(Material.LAVA);
}
public static boolean isAirOrFluid(FastBlockData d)
public static boolean isAirOrFluid(BlockData d)
{
return isAir(d) || isFluid(d);
}
public static boolean isAir(FastBlockData d)
public static boolean isAir(BlockData d)
{
if(d == null)
{

View File

@@ -1,14 +1,16 @@
package com.volmit.iris.util;
import org.bukkit.block.data.BlockData;
public interface IObjectPlacer
{
public int getHighest(int x, int z);
public int getHighest(int x, int z, boolean ignoreFluid);
public void set(int x, int y, int z, FastBlockData d);
public void set(int x, int y, int z, BlockData d);
public FastBlockData get(int x, int y, int z);
public BlockData get(int x, int y, int z);
public boolean isPreventingDecay();

View File

@@ -1,12 +1,13 @@
package com.volmit.iris.util;
import org.bukkit.block.data.BlockData;
import org.bukkit.generator.ChunkGenerator.ChunkData;
public interface IPostBlockAccess
{
public FastBlockData getPostBlock(int x, int y, int z, int currentPostX, int currentPostZ, ChunkData currentData);
public BlockData getPostBlock(int x, int y, int z, int currentPostX, int currentPostZ, ChunkData currentData);
public void setPostBlock(int x, int y, int z, FastBlockData d, int currentPostX, int currentPostZ, ChunkData currentData);
public void setPostBlock(int x, int y, int z, BlockData d, int currentPostX, int currentPostZ, ChunkData currentData);
public int highestTerrainOrFluidBlock(int x, int z);

View File

@@ -1,6 +1,7 @@
package com.volmit.iris.util;
import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
import org.bukkit.block.data.Levelled;
import org.bukkit.block.data.Waterlogged;
import org.bukkit.block.data.type.Slab;
@@ -32,13 +33,13 @@ public abstract class IrisPostBlockFilter implements IPostBlockAccess
public abstract void onPost(int x, int z, int currentPostX, int currentPostZ, ChunkData currentData, KList<Runnable> q);
@Override
public FastBlockData getPostBlock(int x, int y, int z, int currentPostX, int currentPostZ, ChunkData currentData)
public BlockData getPostBlock(int x, int y, int z, int currentPostX, int currentPostZ, ChunkData currentData)
{
return gen.getPostBlock(x, y, z, currentPostX, currentPostZ, currentData);
}
@Override
public void setPostBlock(int x, int y, int z, FastBlockData d, int currentPostX, int currentPostZ, ChunkData currentData)
public void setPostBlock(int x, int y, int z, BlockData d, int currentPostX, int currentPostZ, ChunkData currentData)
{
gen.setPostBlock(x, y, z, d, currentPostX, currentPostZ, currentData);
}
@@ -62,62 +63,62 @@ public abstract class IrisPostBlockFilter implements IPostBlockAccess
public boolean isAir(int x, int y, int z, int currentPostX, int currentPostZ, ChunkData currentData)
{
FastBlockData d = getPostBlock(x, y, z, currentPostX, currentPostZ, currentData);
BlockData d = getPostBlock(x, y, z, currentPostX, currentPostZ, currentData);
return d.getMaterial().equals(Material.AIR) || d.getMaterial().equals(Material.CAVE_AIR);
}
public boolean hasGravity(int x, int y, int z, int currentPostX, int currentPostZ, ChunkData currentData)
{
FastBlockData d = getPostBlock(x, y, z, currentPostX, currentPostZ, currentData);
BlockData d = getPostBlock(x, y, z, currentPostX, currentPostZ, currentData);
return d.getMaterial().equals(Material.SAND) || d.getMaterial().equals(Material.RED_SAND) || d.getMaterial().equals(Material.BLACK_CONCRETE_POWDER) || d.getMaterial().equals(Material.BLUE_CONCRETE_POWDER) || d.getMaterial().equals(Material.BROWN_CONCRETE_POWDER) || d.getMaterial().equals(Material.CYAN_CONCRETE_POWDER) || d.getMaterial().equals(Material.GRAY_CONCRETE_POWDER) || d.getMaterial().equals(Material.GREEN_CONCRETE_POWDER) || d.getMaterial().equals(Material.LIGHT_BLUE_CONCRETE_POWDER) || d.getMaterial().equals(Material.LIGHT_GRAY_CONCRETE_POWDER) || d.getMaterial().equals(Material.LIME_CONCRETE_POWDER) || d.getMaterial().equals(Material.MAGENTA_CONCRETE_POWDER) || d.getMaterial().equals(Material.ORANGE_CONCRETE_POWDER) || d.getMaterial().equals(Material.PINK_CONCRETE_POWDER) || d.getMaterial().equals(Material.PURPLE_CONCRETE_POWDER) || d.getMaterial().equals(Material.RED_CONCRETE_POWDER) || d.getMaterial().equals(Material.WHITE_CONCRETE_POWDER) || d.getMaterial().equals(Material.YELLOW_CONCRETE_POWDER);
}
public boolean isSolid(int x, int y, int z, int currentPostX, int currentPostZ, ChunkData currentData)
{
FastBlockData d = getPostBlock(x, y, z, currentPostX, currentPostZ, currentData);
BlockData d = getPostBlock(x, y, z, currentPostX, currentPostZ, currentData);
return d.getMaterial().isSolid();
}
public boolean isSolidNonSlab(int x, int y, int z, int currentPostX, int currentPostZ, ChunkData currentData)
{
FastBlockData d = getPostBlock(x, y, z, currentPostX, currentPostZ, currentData);
return d.getMaterial().isSolid() && !(d.getBlockData() instanceof Slab);
BlockData d = getPostBlock(x, y, z, currentPostX, currentPostZ, currentData);
return d.getMaterial().isSolid() && !(d instanceof Slab);
}
public boolean isAirOrWater(int x, int y, int z, int currentPostX, int currentPostZ, ChunkData currentData)
{
FastBlockData d = getPostBlock(x, y, z, currentPostX, currentPostZ, currentData);
BlockData d = getPostBlock(x, y, z, currentPostX, currentPostZ, currentData);
return d.getMaterial().equals(Material.WATER) || d.getMaterial().equals(Material.AIR) || d.getMaterial().equals(Material.CAVE_AIR);
}
public boolean isSlab(int x, int y, int z, int currentPostX, int currentPostZ, ChunkData currentData)
{
FastBlockData d = getPostBlock(x, y, z, currentPostX, currentPostZ, currentData);
return d.getBlockData() instanceof Slab;
BlockData d = getPostBlock(x, y, z, currentPostX, currentPostZ, currentData);
return d instanceof Slab;
}
public boolean isSnowLayer(int x, int y, int z, int currentPostX, int currentPostZ, ChunkData currentData)
{
FastBlockData d = getPostBlock(x, y, z, currentPostX, currentPostZ, currentData);
BlockData d = getPostBlock(x, y, z, currentPostX, currentPostZ, currentData);
return d.getMaterial().equals(Material.SNOW);
}
public boolean isWater(int x, int y, int z, int currentPostX, int currentPostZ, ChunkData currentData)
{
FastBlockData d = getPostBlock(x, y, z, currentPostX, currentPostZ, currentData);
BlockData d = getPostBlock(x, y, z, currentPostX, currentPostZ, currentData);
return d.getMaterial().equals(Material.WATER);
}
public boolean isWaterOrWaterlogged(int x, int y, int z, int currentPostX, int currentPostZ, ChunkData currentData)
{
FastBlockData d = getPostBlock(x, y, z, currentPostX, currentPostZ, currentData);
return d.getMaterial().equals(Material.WATER) || (d.getBlockData() instanceof Waterlogged && ((Waterlogged) d.getBlockData()).isWaterlogged());
BlockData d = getPostBlock(x, y, z, currentPostX, currentPostZ, currentData);
return d.getMaterial().equals(Material.WATER) || (d instanceof Waterlogged && ((Waterlogged) d).isWaterlogged());
}
public boolean isLiquid(int x, int y, int z, int currentPostX, int currentPostZ, ChunkData currentData)
{
FastBlockData d = getPostBlock(x, y, z, currentPostX, currentPostZ, currentData);
return d.getBlockData() instanceof Levelled;
BlockData d = getPostBlock(x, y, z, currentPostX, currentPostZ, currentData);
return d instanceof Levelled;
}
@Override

View File

@@ -20,7 +20,7 @@ public class ParallaxSection implements Writable
public ParallaxSection()
{
updates = new KSet<Short>();
this.block = new DataPalette<BlockData>(B.get("AIR").getBlockData())
this.block = new DataPalette<BlockData>(B.get("AIR"))
{
@Override
public void writeType(BlockData t, DataOutputStream o) throws IOException
@@ -31,7 +31,7 @@ public class ParallaxSection implements Writable
@Override
public BlockData readType(DataInputStream i) throws IOException
{
return B.get(i.readUTF()).getBlockData();
return B.get(i.readUTF());
}
};
}
@@ -55,7 +55,7 @@ public class ParallaxSection implements Writable
{
block.set(x, y, z, d);
if(B.isUpdatable(FastBlockData.of(d)))
if(B.isUpdatable(d))
{
update(x, y, z);
}

View File

@@ -30,7 +30,7 @@ public class SKConversion
{
for(int k = clipboard.getMinimumPoint().getBlockZ(); k <= clipboard.getMaximumPoint().getBlockZ(); k++)
{
o.setUnsigned(i - clipboard.getMinimumPoint().getBlockX(), j - clipboard.getMinimumPoint().getBlockY(), k - clipboard.getMinimumPoint().getBlockZ(), FastBlockData.of(BukkitAdapter.adapt(clipboard.getFullBlock(BlockVector3.at(i, j, k)))));
o.setUnsigned(i - clipboard.getMinimumPoint().getBlockX(), j - clipboard.getMinimumPoint().getBlockY(), k - clipboard.getMinimumPoint().getBlockZ(), BukkitAdapter.adapt(clipboard.getFullBlock(BlockVector3.at(i, j, k))));
}
}
}