mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-20 11:14:35 +00:00
Performance
This commit is contained in:
parent
b6f3e3a62f
commit
91e1b614f3
@ -9,8 +9,8 @@ import com.volmit.iris.manager.link.MultiverseCoreLink;
|
|||||||
import com.volmit.iris.manager.link.MythicMobsLink;
|
import com.volmit.iris.manager.link.MythicMobsLink;
|
||||||
import com.volmit.iris.nms.INMS;
|
import com.volmit.iris.nms.INMS;
|
||||||
import com.volmit.iris.object.IrisCompat;
|
import com.volmit.iris.object.IrisCompat;
|
||||||
import com.volmit.iris.scaffold.IrisWorldCreator;
|
|
||||||
import com.volmit.iris.scaffold.IrisWorlds;
|
import com.volmit.iris.scaffold.IrisWorlds;
|
||||||
|
import com.volmit.iris.scaffold.engine.EngineCompositeGenerator;
|
||||||
import com.volmit.iris.util.*;
|
import com.volmit.iris.util.*;
|
||||||
import io.papermc.lib.PaperLib;
|
import io.papermc.lib.PaperLib;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@ -289,27 +289,20 @@ public class Iris extends VolmitPlugin
|
|||||||
s.sendMessage(C.GREEN + "[" + C.DARK_GRAY + "Iris" + C.GREEN + "]" + C.GRAY + ": " + msg);
|
s.sendMessage(C.GREEN + "[" + C.DARK_GRAY + "Iris" + C.GREEN + "]" + C.GRAY + ": " + msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ChunkGenerator getDefaultWorldGenerator(String worldName, String id)
|
public ChunkGenerator getDefaultWorldGenerator(String worldName, String id)
|
||||||
{
|
{
|
||||||
//TODO: Support ID
|
String dimension = IrisSettings.get().getGenerator().getDefaultWorldType();
|
||||||
try
|
|
||||||
|
if(id != null && !id.isEmpty())
|
||||||
{
|
{
|
||||||
return INMS.get().createWorld(new IrisWorldCreator()
|
dimension = id;
|
||||||
.productionMode()
|
Iris.info("Generator ID: " + id + " requested by bukkit/plugin. Assuming IrisDimension: " + id);
|
||||||
.name(worldName)
|
|
||||||
.create()).getGenerator();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
catch(Throwable e)
|
return new EngineCompositeGenerator(dimension, true);
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return new IrisWorldCreator()
|
|
||||||
.productionMode()
|
|
||||||
.name(worldName)
|
|
||||||
.create().generator();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void msg(String string)
|
public static void msg(String string)
|
||||||
|
@ -99,22 +99,19 @@ public class IrisEngine extends BlockPopulator implements Engine
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void generate(int x, int z, Hunk<BlockData> vblocks, Hunk<BlockData> postblocks, Hunk<Biome> vbiomes) {
|
public void generate(int x, int z, Hunk<BlockData> vblocks, Hunk<Biome> vbiomes) {
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
boolean structures = postblocks != null;
|
|
||||||
PrecisionStopwatch p = PrecisionStopwatch.start();
|
PrecisionStopwatch p = PrecisionStopwatch.start();
|
||||||
Hunk<BlockData> blocks = vblocks.synchronize().listen((xx,y,zz,t) -> catchBlockUpdates(x+xx,y+getMinHeight(),z+zz, t));
|
Hunk<BlockData> blocks = vblocks.synchronize().listen((xx,y,zz,t) -> catchBlockUpdates(x+xx,y+getMinHeight(),z+zz, t));
|
||||||
Hunk<BlockData> pblocks = structures ? postblocks.synchronize().listen((xx,y,zz,t) -> catchBlockUpdates(x+xx,y+getMinHeight(),z+zz, t)) : null;
|
|
||||||
Hunk<BlockData> fringe = structures ? Hunk.fringe(blocks, pblocks) : null;
|
|
||||||
getFramework().getEngineParallax().generateParallaxArea(x>>4, z>>4);
|
getFramework().getEngineParallax().generateParallaxArea(x>>4, z>>4);
|
||||||
getFramework().getBiomeActuator().actuate(x, z, vbiomes);
|
getFramework().getBiomeActuator().actuate(x, z, vbiomes);
|
||||||
getFramework().getTerrainActuator().actuate(x, z, blocks);
|
getFramework().getTerrainActuator().actuate(x, z, blocks);
|
||||||
getFramework().getCaveModifier().modify(x, z, blocks);
|
getFramework().getCaveModifier().modify(x, z, blocks);
|
||||||
getFramework().getRavineModifier().modify(x, z, blocks);
|
getFramework().getRavineModifier().modify(x, z, blocks);
|
||||||
getFramework().getPostModifier().modify(x, z, blocks);
|
getFramework().getPostModifier().modify(x, z, blocks);
|
||||||
getFramework().getDecorantActuator().actuate(x, z, structures ? fringe : blocks);
|
getFramework().getDecorantActuator().actuate(x, z, blocks);
|
||||||
getFramework().getEngineParallax().insertParallax(x, z, structures ? fringe : blocks);
|
getFramework().getEngineParallax().insertParallax(x, z, blocks);
|
||||||
getFramework().getDepositModifier().modify(x, z, blocks);
|
getFramework().getDepositModifier().modify(x, z, blocks);
|
||||||
getMetrics().getTotal().put(p.getMilliseconds());
|
getMetrics().getTotal().put(p.getMilliseconds());
|
||||||
}
|
}
|
||||||
|
@ -212,7 +212,7 @@ public class IrisEngineCompound implements EngineCompound {
|
|||||||
PrecisionStopwatch p = PrecisionStopwatch.start();
|
PrecisionStopwatch p = PrecisionStopwatch.start();
|
||||||
if(engines.length == 1 && !getEngine(0).getTarget().isInverted())
|
if(engines.length == 1 && !getEngine(0).getTarget().isInverted())
|
||||||
{
|
{
|
||||||
engines[0].generate(x, z, blocks, postblocks, biomes);
|
engines[0].generate(x, z, blocks, biomes);
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
@ -229,28 +229,16 @@ public class IrisEngineCompound implements EngineCompound {
|
|||||||
int doffset = offset;
|
int doffset = offset;
|
||||||
int height = engine.getTarget().getHeight();
|
int height = engine.getTarget().getHeight();
|
||||||
Hunk<BlockData> cblock = Hunk.newArrayHunk(16, height, 16);
|
Hunk<BlockData> cblock = Hunk.newArrayHunk(16, height, 16);
|
||||||
Hunk<BlockData> cpblock = structures ? Hunk.newArrayHunk(16, height, 16) : null;
|
|
||||||
Hunk<Biome> cbiome = Hunk.newArrayHunk(16, height, 16);
|
Hunk<Biome> cbiome = Hunk.newArrayHunk(16, height, 16);
|
||||||
|
|
||||||
if(engine.getTarget().isInverted())
|
if(engine.getTarget().isInverted())
|
||||||
{
|
{
|
||||||
cblock = cblock.invertY();
|
cblock = cblock.invertY();
|
||||||
cbiome = cbiome.invertY();
|
cbiome = cbiome.invertY();
|
||||||
|
|
||||||
if(structures)
|
|
||||||
{
|
|
||||||
cpblock = cpblock.invertY();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
engine.generate(x, z, cblock, cpblock, cbiome);
|
engine.generate(x, z, cblock, cbiome);
|
||||||
blocks.insert(0, doffset, 0, cblock);
|
blocks.insert(0, doffset, 0, cblock);
|
||||||
|
|
||||||
if(structures)
|
|
||||||
{
|
|
||||||
postblocks.insert(0, doffset, 0, cpblock);
|
|
||||||
}
|
|
||||||
|
|
||||||
biomes.insert(0, doffset, 0, cbiome);
|
biomes.insert(0, doffset, 0, cbiome);
|
||||||
offset += height;
|
offset += height;
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,6 @@ package com.volmit.iris.manager;
|
|||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.IrisSettings;
|
import com.volmit.iris.IrisSettings;
|
||||||
import com.volmit.iris.nms.INMS;
|
|
||||||
import com.volmit.iris.object.*;
|
import com.volmit.iris.object.*;
|
||||||
import com.volmit.iris.scaffold.IrisWorldCreator;
|
import com.volmit.iris.scaffold.IrisWorldCreator;
|
||||||
import com.volmit.iris.scaffold.engine.IrisAccess;
|
import com.volmit.iris.scaffold.engine.IrisAccess;
|
||||||
@ -171,7 +170,7 @@ public class IrisProject
|
|||||||
});
|
});
|
||||||
|
|
||||||
//@builder
|
//@builder
|
||||||
World world = INMS.get().createWorld(c, false);
|
World world = c.createWorld();
|
||||||
Iris.linkMultiverseCore.removeFromConfig(world);
|
Iris.linkMultiverseCore.removeFromConfig(world);
|
||||||
|
|
||||||
done.set(true);
|
done.set(true);
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package com.volmit.iris.manager.command;
|
package com.volmit.iris.manager.command;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
|
import com.volmit.iris.IrisSettings;
|
||||||
import com.volmit.iris.manager.IrisDataManager;
|
import com.volmit.iris.manager.IrisDataManager;
|
||||||
import com.volmit.iris.manager.link.MultiverseCoreLink;
|
import com.volmit.iris.manager.link.MultiverseCoreLink;
|
||||||
import com.volmit.iris.nms.INMS;
|
|
||||||
import com.volmit.iris.object.IrisDimension;
|
import com.volmit.iris.object.IrisDimension;
|
||||||
import com.volmit.iris.pregen.Pregenerator;
|
import com.volmit.iris.pregen.Pregenerator;
|
||||||
import com.volmit.iris.scaffold.IrisWorldCreator;
|
import com.volmit.iris.scaffold.IrisWorldCreator;
|
||||||
@ -40,7 +40,7 @@ public class CommandIrisCreate extends MortarCommand
|
|||||||
}
|
}
|
||||||
|
|
||||||
String worldName = args[0];
|
String worldName = args[0];
|
||||||
String type = "overworld";
|
String type = IrisSettings.get().getGenerator().getDefaultWorldType();
|
||||||
long seed = 1337;
|
long seed = 1337;
|
||||||
int pregen = 0;
|
int pregen = 0;
|
||||||
boolean multiverse = Iris.linkMultiverseCore.supported();
|
boolean multiverse = Iris.linkMultiverseCore.supported();
|
||||||
@ -59,6 +59,13 @@ public class CommandIrisCreate extends MortarCommand
|
|||||||
if(multiverse)
|
if(multiverse)
|
||||||
{
|
{
|
||||||
dim = IrisDataManager.loadAnyDimension(type);
|
dim = IrisDataManager.loadAnyDimension(type);
|
||||||
|
|
||||||
|
if(dim == null)
|
||||||
|
{
|
||||||
|
sender.sendMessage("Cant find dimension type: " + type);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if(dim.getEnvironment() == null)
|
if(dim.getEnvironment() == null)
|
||||||
{
|
{
|
||||||
dim.setEnvironment(World.Environment.NORMAL);
|
dim.setEnvironment(World.Environment.NORMAL);
|
||||||
@ -71,7 +78,7 @@ public class CommandIrisCreate extends MortarCommand
|
|||||||
|
|
||||||
String command = "mv create " + worldName + " " + Iris.linkMultiverseCore.envName(dim.getEnvironment());
|
String command = "mv create " + worldName + " " + Iris.linkMultiverseCore.envName(dim.getEnvironment());
|
||||||
command += " -s " + seed;
|
command += " -s " + seed;
|
||||||
command += " -g Iris";
|
command += " -g Iris:" + dim.getLoadKey();
|
||||||
sender.sendMessage("Delegating " + command);
|
sender.sendMessage("Delegating " + command);
|
||||||
Bukkit.dispatchCommand(sender, command);
|
Bukkit.dispatchCommand(sender, command);
|
||||||
world= Bukkit.getWorld(worldName);
|
world= Bukkit.getWorld(worldName);
|
||||||
@ -121,7 +128,7 @@ public class CommandIrisCreate extends MortarCommand
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
world = INMS.get().createWorld(wc, false);
|
world = wc.createWorld();
|
||||||
|
|
||||||
done.set(true);
|
done.set(true);
|
||||||
}
|
}
|
||||||
|
@ -1,38 +1,15 @@
|
|||||||
package com.volmit.iris.nms;
|
package com.volmit.iris.nms;
|
||||||
|
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.WorldCreator;
|
|
||||||
import org.bukkit.block.Biome;
|
import org.bukkit.block.Biome;
|
||||||
|
|
||||||
public interface INMSBinding
|
public interface INMSBinding
|
||||||
{
|
{
|
||||||
public INMSCreator getCreator();
|
|
||||||
|
|
||||||
public Object getBiomeBase(World world, Biome biome);
|
public Object getBiomeBase(World world, Biome biome);
|
||||||
|
|
||||||
public Object getBiomeBase(Object registry, Biome biome);
|
public Object getBiomeBase(Object registry, Biome biome);
|
||||||
|
|
||||||
public boolean isBukkit();
|
public boolean isBukkit();
|
||||||
|
|
||||||
default World createWorld(WorldCreator creator)
|
|
||||||
{
|
|
||||||
return getCreator().createWorld(creator);
|
|
||||||
}
|
|
||||||
|
|
||||||
default World createWorld(WorldCreator creator, boolean loadSpawn)
|
|
||||||
{
|
|
||||||
if(!isBukkit())
|
|
||||||
{
|
|
||||||
if(creator.environment().equals(World.Environment.NORMAL))
|
|
||||||
{
|
|
||||||
return getCreator().createWorld(creator, loadSpawn);
|
|
||||||
}
|
|
||||||
|
|
||||||
return creator.createWorld();
|
|
||||||
}
|
|
||||||
|
|
||||||
return getCreator().createWorld(creator, loadSpawn);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
int getBiomeId(Biome biome);
|
int getBiomeId(Biome biome);
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
package com.volmit.iris.nms.v16_2;
|
package com.volmit.iris.nms.v16_2;
|
||||||
|
|
||||||
import com.volmit.iris.nms.INMSBinding;
|
import com.volmit.iris.nms.INMSBinding;
|
||||||
import com.volmit.iris.nms.INMSCreator;
|
|
||||||
import com.volmit.iris.scaffold.cache.AtomicCache;
|
|
||||||
import com.volmit.iris.util.KMap;
|
import com.volmit.iris.util.KMap;
|
||||||
import net.minecraft.server.v1_16_R2.BiomeBase;
|
import net.minecraft.server.v1_16_R2.BiomeBase;
|
||||||
import net.minecraft.server.v1_16_R2.IRegistry;
|
import net.minecraft.server.v1_16_R2.IRegistry;
|
||||||
@ -15,13 +13,6 @@ import org.bukkit.craftbukkit.v1_16_R2.block.CraftBlock;
|
|||||||
public class NMSBinding16_2 implements INMSBinding
|
public class NMSBinding16_2 implements INMSBinding
|
||||||
{
|
{
|
||||||
private final KMap<Biome, Object> baseBiomeCache = new KMap<>();
|
private final KMap<Biome, Object> baseBiomeCache = new KMap<>();
|
||||||
private final AtomicCache<INMSCreator> creator = new AtomicCache<>();
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public INMSCreator getCreator()
|
|
||||||
{
|
|
||||||
return creator.aquire(NMSCreator16_2::new);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object getBiomeBase(World world, Biome biome)
|
public Object getBiomeBase(World world, Biome biome)
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
package com.volmit.iris.nms.v16_3;
|
package com.volmit.iris.nms.v16_3;
|
||||||
|
|
||||||
import com.volmit.iris.nms.INMSBinding;
|
import com.volmit.iris.nms.INMSBinding;
|
||||||
import com.volmit.iris.nms.INMSCreator;
|
|
||||||
import com.volmit.iris.scaffold.cache.AtomicCache;
|
|
||||||
import com.volmit.iris.util.KMap;
|
import com.volmit.iris.util.KMap;
|
||||||
import net.minecraft.server.v1_16_R3.BiomeBase;
|
import net.minecraft.server.v1_16_R3.BiomeBase;
|
||||||
import net.minecraft.server.v1_16_R3.IRegistry;
|
import net.minecraft.server.v1_16_R3.IRegistry;
|
||||||
@ -14,13 +12,6 @@ import org.bukkit.craftbukkit.v1_16_R3.CraftWorld;
|
|||||||
public class NMSBinding16_3 implements INMSBinding
|
public class NMSBinding16_3 implements INMSBinding
|
||||||
{
|
{
|
||||||
private final KMap<Biome, Object> baseBiomeCache = new KMap<>();
|
private final KMap<Biome, Object> baseBiomeCache = new KMap<>();
|
||||||
private final AtomicCache<INMSCreator> creator = new AtomicCache<>();
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public INMSCreator getCreator()
|
|
||||||
{
|
|
||||||
return creator.aquire(NMSCreator16_3::new);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object getBiomeBase(World world, Biome biome)
|
public Object getBiomeBase(World world, Biome biome)
|
||||||
|
@ -1,21 +1,11 @@
|
|||||||
package com.volmit.iris.nms.v1X;
|
package com.volmit.iris.nms.v1X;
|
||||||
|
|
||||||
import com.volmit.iris.nms.INMSBinding;
|
import com.volmit.iris.nms.INMSBinding;
|
||||||
import com.volmit.iris.nms.INMSCreator;
|
|
||||||
import com.volmit.iris.scaffold.cache.AtomicCache;
|
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.block.Biome;
|
import org.bukkit.block.Biome;
|
||||||
|
|
||||||
public class NMSBinding1X implements INMSBinding
|
public class NMSBinding1X implements INMSBinding
|
||||||
{
|
{
|
||||||
private final AtomicCache<INMSCreator> creator = new AtomicCache<>();
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public INMSCreator getCreator()
|
|
||||||
{
|
|
||||||
return creator.aquire(NMSCreator1X::new);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object getBiomeBase(World world, Biome biome)
|
public Object getBiomeBase(World world, Biome biome)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
|
@ -20,6 +20,11 @@ public class IrisWorlds
|
|||||||
|
|
||||||
public static boolean isIrisWorld(World world)
|
public static boolean isIrisWorld(World world)
|
||||||
{
|
{
|
||||||
|
if(world == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if(provisioned.containsKey(world.getUID().toString()))
|
if(provisioned.containsKey(world.getUID().toString()))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
@ -50,7 +50,7 @@ public interface Engine extends DataProvider, Fallible, GeneratorAccess, LootPro
|
|||||||
|
|
||||||
public double modifyZ(double z);
|
public double modifyZ(double z);
|
||||||
|
|
||||||
public void generate(int x, int z, Hunk<BlockData> blocks, Hunk<BlockData> postblocks, Hunk<Biome> biomes);
|
public void generate(int x, int z, Hunk<BlockData> blocks, Hunk<Biome> biomes);
|
||||||
|
|
||||||
public EngineMetrics getMetrics();
|
public EngineMetrics getMetrics();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user