mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-20 03:04:08 +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.nms.INMS;
|
||||
import com.volmit.iris.object.IrisCompat;
|
||||
import com.volmit.iris.scaffold.IrisWorldCreator;
|
||||
import com.volmit.iris.scaffold.IrisWorlds;
|
||||
import com.volmit.iris.scaffold.engine.EngineCompositeGenerator;
|
||||
import com.volmit.iris.util.*;
|
||||
import io.papermc.lib.PaperLib;
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public ChunkGenerator getDefaultWorldGenerator(String worldName, String id)
|
||||
{
|
||||
//TODO: Support ID
|
||||
try
|
||||
String dimension = IrisSettings.get().getGenerator().getDefaultWorldType();
|
||||
|
||||
if(id != null && !id.isEmpty())
|
||||
{
|
||||
return INMS.get().createWorld(new IrisWorldCreator()
|
||||
.productionMode()
|
||||
.name(worldName)
|
||||
.create()).getGenerator();
|
||||
dimension = id;
|
||||
Iris.info("Generator ID: " + id + " requested by bukkit/plugin. Assuming IrisDimension: " + id);
|
||||
}
|
||||
|
||||
catch(Throwable e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
return new IrisWorldCreator()
|
||||
.productionMode()
|
||||
.name(worldName)
|
||||
.create().generator();
|
||||
return new EngineCompositeGenerator(dimension, true);
|
||||
}
|
||||
|
||||
public static void msg(String string)
|
||||
|
@ -99,22 +99,19 @@ public class IrisEngine extends BlockPopulator implements Engine
|
||||
}
|
||||
|
||||
@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
|
||||
{
|
||||
boolean structures = postblocks != null;
|
||||
PrecisionStopwatch p = PrecisionStopwatch.start();
|
||||
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().getBiomeActuator().actuate(x, z, vbiomes);
|
||||
getFramework().getTerrainActuator().actuate(x, z, blocks);
|
||||
getFramework().getCaveModifier().modify(x, z, blocks);
|
||||
getFramework().getRavineModifier().modify(x, z, blocks);
|
||||
getFramework().getPostModifier().modify(x, z, blocks);
|
||||
getFramework().getDecorantActuator().actuate(x, z, structures ? fringe : blocks);
|
||||
getFramework().getEngineParallax().insertParallax(x, z, structures ? fringe : blocks);
|
||||
getFramework().getDecorantActuator().actuate(x, z, blocks);
|
||||
getFramework().getEngineParallax().insertParallax(x, z, blocks);
|
||||
getFramework().getDepositModifier().modify(x, z, blocks);
|
||||
getMetrics().getTotal().put(p.getMilliseconds());
|
||||
}
|
||||
|
@ -212,7 +212,7 @@ public class IrisEngineCompound implements EngineCompound {
|
||||
PrecisionStopwatch p = PrecisionStopwatch.start();
|
||||
if(engines.length == 1 && !getEngine(0).getTarget().isInverted())
|
||||
{
|
||||
engines[0].generate(x, z, blocks, postblocks, biomes);
|
||||
engines[0].generate(x, z, blocks, biomes);
|
||||
}
|
||||
|
||||
else
|
||||
@ -229,28 +229,16 @@ public class IrisEngineCompound implements EngineCompound {
|
||||
int doffset = offset;
|
||||
int height = engine.getTarget().getHeight();
|
||||
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);
|
||||
|
||||
if(engine.getTarget().isInverted())
|
||||
{
|
||||
cblock = cblock.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);
|
||||
|
||||
if(structures)
|
||||
{
|
||||
postblocks.insert(0, doffset, 0, cpblock);
|
||||
}
|
||||
|
||||
biomes.insert(0, doffset, 0, cbiome);
|
||||
offset += height;
|
||||
}
|
||||
|
@ -3,7 +3,6 @@ package com.volmit.iris.manager;
|
||||
import com.google.gson.Gson;
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.IrisSettings;
|
||||
import com.volmit.iris.nms.INMS;
|
||||
import com.volmit.iris.object.*;
|
||||
import com.volmit.iris.scaffold.IrisWorldCreator;
|
||||
import com.volmit.iris.scaffold.engine.IrisAccess;
|
||||
@ -171,7 +170,7 @@ public class IrisProject
|
||||
});
|
||||
|
||||
//@builder
|
||||
World world = INMS.get().createWorld(c, false);
|
||||
World world = c.createWorld();
|
||||
Iris.linkMultiverseCore.removeFromConfig(world);
|
||||
|
||||
done.set(true);
|
||||
|
@ -1,9 +1,9 @@
|
||||
package com.volmit.iris.manager.command;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.IrisSettings;
|
||||
import com.volmit.iris.manager.IrisDataManager;
|
||||
import com.volmit.iris.manager.link.MultiverseCoreLink;
|
||||
import com.volmit.iris.nms.INMS;
|
||||
import com.volmit.iris.object.IrisDimension;
|
||||
import com.volmit.iris.pregen.Pregenerator;
|
||||
import com.volmit.iris.scaffold.IrisWorldCreator;
|
||||
@ -40,7 +40,7 @@ public class CommandIrisCreate extends MortarCommand
|
||||
}
|
||||
|
||||
String worldName = args[0];
|
||||
String type = "overworld";
|
||||
String type = IrisSettings.get().getGenerator().getDefaultWorldType();
|
||||
long seed = 1337;
|
||||
int pregen = 0;
|
||||
boolean multiverse = Iris.linkMultiverseCore.supported();
|
||||
@ -59,6 +59,13 @@ public class CommandIrisCreate extends MortarCommand
|
||||
if(multiverse)
|
||||
{
|
||||
dim = IrisDataManager.loadAnyDimension(type);
|
||||
|
||||
if(dim == null)
|
||||
{
|
||||
sender.sendMessage("Cant find dimension type: " + type);
|
||||
return true;
|
||||
}
|
||||
|
||||
if(dim.getEnvironment() == null)
|
||||
{
|
||||
dim.setEnvironment(World.Environment.NORMAL);
|
||||
@ -71,7 +78,7 @@ public class CommandIrisCreate extends MortarCommand
|
||||
|
||||
String command = "mv create " + worldName + " " + Iris.linkMultiverseCore.envName(dim.getEnvironment());
|
||||
command += " -s " + seed;
|
||||
command += " -g Iris";
|
||||
command += " -g Iris:" + dim.getLoadKey();
|
||||
sender.sendMessage("Delegating " + command);
|
||||
Bukkit.dispatchCommand(sender, command);
|
||||
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);
|
||||
}
|
||||
|
@ -1,38 +1,15 @@
|
||||
package com.volmit.iris.nms;
|
||||
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.WorldCreator;
|
||||
import org.bukkit.block.Biome;
|
||||
|
||||
public interface INMSBinding
|
||||
{
|
||||
public INMSCreator getCreator();
|
||||
|
||||
public Object getBiomeBase(World world, Biome biome);
|
||||
|
||||
public Object getBiomeBase(Object registry, Biome biome);
|
||||
|
||||
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);
|
||||
}
|
||||
|
@ -1,8 +1,6 @@
|
||||
package com.volmit.iris.nms.v16_2;
|
||||
|
||||
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 net.minecraft.server.v1_16_R2.BiomeBase;
|
||||
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
|
||||
{
|
||||
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
|
||||
public Object getBiomeBase(World world, Biome biome)
|
||||
|
@ -1,8 +1,6 @@
|
||||
package com.volmit.iris.nms.v16_3;
|
||||
|
||||
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 net.minecraft.server.v1_16_R3.BiomeBase;
|
||||
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
|
||||
{
|
||||
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
|
||||
public Object getBiomeBase(World world, Biome biome)
|
||||
|
@ -1,21 +1,11 @@
|
||||
package com.volmit.iris.nms.v1X;
|
||||
|
||||
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.block.Biome;
|
||||
|
||||
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)
|
||||
{
|
||||
return null;
|
||||
|
@ -20,6 +20,11 @@ public class IrisWorlds
|
||||
|
||||
public static boolean isIrisWorld(World world)
|
||||
{
|
||||
if(world == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if(provisioned.containsKey(world.getUID().toString()))
|
||||
{
|
||||
return true;
|
||||
|
@ -50,7 +50,7 @@ public interface Engine extends DataProvider, Fallible, GeneratorAccess, LootPro
|
||||
|
||||
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();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user