mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-04-10 01:36:03 +00:00
Performance!
This commit is contained in:
@@ -1,14 +1,16 @@
|
||||
package com.volmit.iris.scaffold.engine;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.manager.IrisDataManager;
|
||||
import com.volmit.iris.object.*;
|
||||
import com.volmit.iris.scaffold.cache.Cache;
|
||||
import com.volmit.iris.scaffold.data.DataProvider;
|
||||
import com.volmit.iris.scaffold.hunk.Hunk;
|
||||
import com.volmit.iris.scaffold.parallax.ParallaxAccess;
|
||||
import com.volmit.iris.util.*;
|
||||
import com.volmit.iris.util.B;
|
||||
import com.volmit.iris.util.KList;
|
||||
import com.volmit.iris.util.RNG;
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.block.Block;
|
||||
@@ -138,14 +140,34 @@ public interface Engine extends DataProvider, Fallible, GeneratorAccess, LootPro
|
||||
Hunk<Boolean> b = getParallax().getUpdatesR(c.getX(), c.getZ());
|
||||
|
||||
b.iterateSync((x,y,z,v) -> {
|
||||
|
||||
if(v != null && v)
|
||||
{
|
||||
int vx = x & 15;
|
||||
int vz = z & 15;
|
||||
update(x,y,z, c, new RNG(Cache.key(c.getX(), c.getZ())));
|
||||
|
||||
if(vx > 0 && vx < 15 && vz > 0 && vz < 15)
|
||||
{
|
||||
updateLighting(x,y,z,c);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public default void updateLighting(int x, int y, int z, Chunk c)
|
||||
{
|
||||
Block block = c.getBlock(x,y,z);
|
||||
BlockData data = block.getBlockData();
|
||||
|
||||
if(B.isLit(data))
|
||||
{
|
||||
block.setType(Material.AIR, false);
|
||||
block.setBlockData(data, true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public default void update(int x, int y, int z, Chunk c, RNG rf)
|
||||
{
|
||||
@@ -179,11 +201,6 @@ public interface Engine extends DataProvider, Fallible, GeneratorAccess, LootPro
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else if(B.isLit(data))
|
||||
{
|
||||
Iris.linkBK.updateBlock(block);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -6,17 +6,18 @@ import com.volmit.iris.generator.legacy.scaffold.TerrainChunk;
|
||||
import com.volmit.iris.manager.IrisDataManager;
|
||||
import com.volmit.iris.object.IrisBiome;
|
||||
import com.volmit.iris.object.IrisDimension;
|
||||
import com.volmit.iris.scaffold.IrisWorlds;
|
||||
import com.volmit.iris.scaffold.cache.Cache;
|
||||
import com.volmit.iris.scaffold.hunk.Hunk;
|
||||
import com.volmit.iris.util.KList;
|
||||
import com.volmit.iris.util.M;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import com.volmit.iris.util.RNG;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.generator.BlockPopulator;
|
||||
import org.bukkit.generator.ChunkGenerator;
|
||||
import org.bukkit.material.MaterialData;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -260,13 +261,132 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
|
||||
}
|
||||
|
||||
@Override
|
||||
public void regenerate(int x, int z) {
|
||||
// TODO: DO IT
|
||||
public void clearRegeneratedLists(int x, int z) {
|
||||
if (true)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for(int i = 0; i < getComposite().getSize(); i++)
|
||||
{
|
||||
getComposite().getEngine(i).getParallax().delete(x, z);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void regenerate(int x, int z) {
|
||||
if (true)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Chunk chunk = getComposite().getWorld().getChunkAt(x, z);
|
||||
generateChunkRawData(getComposite().getWorld(), x, z, new TerrainChunk() {
|
||||
@Override
|
||||
public void setRaw(ChunkData data) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Biome getBiome(int x, int z) {
|
||||
return Biome.THE_VOID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Biome getBiome(int x, int y, int z) {
|
||||
return Biome.THE_VOID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBiome(int x, int z, Biome bio) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBiome(int x, int y, int z, Biome bio) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxHeight() {
|
||||
return 256;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlock(int x, int y, int z, BlockData blockData) {
|
||||
Iris.edit.set(compound.getWorld(), x, y, z, blockData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockData getBlockData(int x, int y, int z) {
|
||||
return Iris.edit.get(compound.getWorld(), x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChunkData getRaw() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void inject(BiomeGrid biome) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlock(int i, int i1, int i2, @NotNull Material material) {
|
||||
setBlock(i, i1, i2, material.createBlockData());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlock(int i, int i1, int i2, @NotNull MaterialData materialData) {
|
||||
setBlock(i, i1, i2, materialData.getItemType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRegion(int i, int i1, int i2, int i3, int i4, int i5, @NotNull Material material) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRegion(int i, int i1, int i2, int i3, int i4, int i5, @NotNull MaterialData materialData) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRegion(int i, int i1, int i2, int i3, int i4, int i5, @NotNull BlockData blockData) {
|
||||
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Material getType(int i, int i1, int i2) {
|
||||
return getBlockData(i, i1, i2).getMaterial();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public MaterialData getTypeAndData(int i, int i1, int i2) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte getData(int i, int i1, int i2) {
|
||||
return 0;
|
||||
}
|
||||
});
|
||||
|
||||
Iris.edit.flushNow();
|
||||
|
||||
for (BlockPopulator i : populators) {
|
||||
i.populate(compound.getWorld(), new RNG(Cache.key(x, z)), chunk);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
getComposite().close();
|
||||
IrisWorlds.evacuate(getComposite().getWorld());
|
||||
Bukkit.unloadWorld(getComposite().getWorld(), !isStudio());
|
||||
}
|
||||
|
||||
|
||||
@@ -206,4 +206,6 @@ public interface IrisAccess extends Hotloadable, DataProvider {
|
||||
triesc.accept(tries.get());
|
||||
return location.get();
|
||||
}
|
||||
|
||||
public void clearRegeneratedLists(int x, int z);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user