mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-06-18 06:41:08 +00:00
1.14+ support
This commit is contained in:
@@ -157,6 +157,12 @@
|
|||||||
<version>1.16.1-R0.1-SNAPSHOT</version>
|
<version>1.16.1-R0.1-SNAPSHOT</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.bukkit.craftbukkit</groupId>
|
||||||
|
<artifactId>cb-1.16.2</artifactId>
|
||||||
|
<version>1.16.2</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
<!-- Utilities -->
|
<!-- Utilities -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.projectlombok</groupId>
|
<groupId>org.projectlombok</groupId>
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
@Echo off
|
||||||
|
echo Apply Script: COPY
|
||||||
|
echo F|xcopy /y /s /f /q "%1" "%2"
|
||||||
|
echo F|xcopy /y /s /f /q "lint/in.jar" "release/latest/Origin-%3.jar"
|
||||||
|
echo Starting the Washing Machine
|
||||||
|
cd lint
|
||||||
|
|
||||||
|
echo ZKM Rinse Cycle
|
||||||
|
java -Xmx4g -Xms1m -jar ZKM.jar script.zkm
|
||||||
|
echo F|xcopy /y /f /q "out/in.jar" "in.jar"
|
||||||
|
|
||||||
|
echo Powerwash Cycle
|
||||||
|
java -Xmx4g -Xms1m -jar obfuscator.jar --jarIn in.jar --jarOut out.jar --config obf.json
|
||||||
|
echo F|xcopy /y /f /q "out.jar" "in.jar"
|
||||||
|
|
||||||
|
echo Rinse Cycle
|
||||||
|
java -Xmx4g -Xms1m -jar proguard.jar @proguard.conf
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
echo F|xcopy /y /s /f /q "lint/out.jar" "release/latest/Iris-%3.jar"
|
||||||
|
cd release
|
||||||
|
echo F|xcopy /y /s /f /q /E "latest" "%3/"
|
||||||
@@ -5,14 +5,6 @@ echo F|xcopy /y /s /f /q "lint/in.jar" "release/latest/Origin-%3.jar"
|
|||||||
echo Starting the Washing Machine
|
echo Starting the Washing Machine
|
||||||
cd lint
|
cd lint
|
||||||
|
|
||||||
echo ZKM Rinse Cycle
|
|
||||||
java -Xmx4g -Xms1m -jar ZKM.jar script.zkm
|
|
||||||
echo F|xcopy /y /f /q "out/in.jar" "in.jar"
|
|
||||||
|
|
||||||
echo Powerwash Cycle
|
|
||||||
java -Xmx4g -Xms1m -jar obfuscator.jar --jarIn in.jar --jarOut out.jar --config obf.json
|
|
||||||
echo F|xcopy /y /f /q "out.jar" "in.jar"
|
|
||||||
|
|
||||||
echo Rinse Cycle
|
echo Rinse Cycle
|
||||||
java -Xmx4g -Xms1m -jar proguard.jar @proguard.conf
|
java -Xmx4g -Xms1m -jar proguard.jar @proguard.conf
|
||||||
|
|
||||||
|
|||||||
@@ -47,6 +47,9 @@ public class Iris extends MortarPlugin
|
|||||||
public static IrisBoardManager board;
|
public static IrisBoardManager board;
|
||||||
public static MultiverseCoreLink linkMultiverseCore;
|
public static MultiverseCoreLink linkMultiverseCore;
|
||||||
private static IrisLock lock = new IrisLock("Iris");
|
private static IrisLock lock = new IrisLock("Iris");
|
||||||
|
public static boolean customModels = doesSupportCustomModels();
|
||||||
|
public static boolean awareEntities = doesSupportAwareness();
|
||||||
|
public static boolean biome3d = doesSupport3DBiomes();
|
||||||
public static boolean lowMemoryMode = false;
|
public static boolean lowMemoryMode = false;
|
||||||
|
|
||||||
@Permission
|
@Permission
|
||||||
@@ -61,6 +64,27 @@ public class Iris extends MortarPlugin
|
|||||||
lowMemoryMode = Runtime.getRuntime().maxMemory() < 4 * 1000 * 1000 * 1000;
|
lowMemoryMode = Runtime.getRuntime().maxMemory() < 4 * 1000 * 1000 * 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean doesSupport3DBiomes()
|
||||||
|
{
|
||||||
|
int v = Integer.valueOf(Bukkit.getBukkitVersion().split("\\Q-\\E")[0].split("\\Q.\\E")[1]);
|
||||||
|
|
||||||
|
return v >= 15;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean doesSupportCustomModels()
|
||||||
|
{
|
||||||
|
int v = Integer.valueOf(Bukkit.getBukkitVersion().split("\\Q-\\E")[0].split("\\Q.\\E")[1]);
|
||||||
|
|
||||||
|
return v >= 14;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean doesSupportAwareness()
|
||||||
|
{
|
||||||
|
int v = Integer.valueOf(Bukkit.getBukkitVersion().split("\\Q-\\E")[0].split("\\Q.\\E")[1]);
|
||||||
|
|
||||||
|
return v >= 15;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void start()
|
public void start()
|
||||||
{
|
{
|
||||||
@@ -108,7 +132,7 @@ public class Iris extends MortarPlugin
|
|||||||
{
|
{
|
||||||
if(i.getGenerator() instanceof IrisChunkGenerator)
|
if(i.getGenerator() instanceof IrisChunkGenerator)
|
||||||
{
|
{
|
||||||
((IrisChunkGenerator) i).close();
|
((IrisChunkGenerator) i.getGenerator()).close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(GroupedExecutor i : executors)
|
for(GroupedExecutor i : executors)
|
||||||
@@ -304,7 +328,8 @@ public class Iris extends MortarPlugin
|
|||||||
padd + C.GRAY + " "+C.DARK_GRAY+"@@@"+C.GRAY+"@@@@@@@@@@@@@@"
|
padd + C.GRAY + " "+C.DARK_GRAY+"@@@"+C.GRAY+"@@@@@@@@@@@@@@"
|
||||||
};
|
};
|
||||||
//@done
|
//@done
|
||||||
|
Iris.info(Bukkit.getVersion());
|
||||||
|
Iris.info(Bukkit.getBukkitVersion() + " bk");
|
||||||
for(int i = 0; i < info.length; i++)
|
for(int i = 0; i < info.length; i++)
|
||||||
{
|
{
|
||||||
splash[i] += info[i];
|
splash[i] += info[i];
|
||||||
@@ -314,7 +339,22 @@ public class Iris extends MortarPlugin
|
|||||||
|
|
||||||
if(lowMemoryMode)
|
if(lowMemoryMode)
|
||||||
{
|
{
|
||||||
Iris.warn("Low Memory mode Activated! For better performance, allocate 4gb or more to this server.");
|
Iris.verbose("* Low Memory mode Activated! For better performance, allocate 4gb or more to this server.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!biome3d)
|
||||||
|
{
|
||||||
|
Iris.verbose("* This version of minecraft does not support 3D biomes (1.15 and up). Iris will generate as normal, but biome colors will not vary underground & in the sky.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!customModels)
|
||||||
|
{
|
||||||
|
Iris.verbose("* This version of minecraft does not support custom model data in loot items (1.14 and up). Iris will generate as normal, but loot will not have custom models.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!doesSupportAwareness())
|
||||||
|
{
|
||||||
|
Iris.verbose("* This version of minecraft does not support entity awareness.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -359,7 +359,14 @@ public class ProjectManager
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
World world = Bukkit.createWorld(new WorldCreator("iris/" + UUID.randomUUID()).seed(1337).generator(gx).generateStructures(false).type(WorldType.NORMAL).environment(d.getEnvironment()));
|
//@builder
|
||||||
|
World world = Bukkit.createWorld(new WorldCreator("iris/" + UUID.randomUUID())
|
||||||
|
.seed(1337)
|
||||||
|
.generator(gx)
|
||||||
|
.generateStructures(d.isVanillaStructures())
|
||||||
|
.type(WorldType.NORMAL)
|
||||||
|
.environment(d.getEnvironment()));
|
||||||
|
//@done
|
||||||
Iris.linkMultiverseCore.removeFromConfig(world);
|
Iris.linkMultiverseCore.removeFromConfig(world);
|
||||||
|
|
||||||
done.set(true);
|
done.set(true);
|
||||||
@@ -409,6 +416,7 @@ public class ProjectManager
|
|||||||
Iris.info("Packaging Dimension " + dimension.getName() + " " + (obfuscate ? "(Obfuscated)" : ""));
|
Iris.info("Packaging Dimension " + dimension.getName() + " " + (obfuscate ? "(Obfuscated)" : ""));
|
||||||
KSet<IrisRegion> regions = new KSet<>();
|
KSet<IrisRegion> regions = new KSet<>();
|
||||||
KSet<IrisBiome> biomes = new KSet<>();
|
KSet<IrisBiome> biomes = new KSet<>();
|
||||||
|
KSet<IrisEntity> entities = new KSet<>();
|
||||||
KSet<IrisStructure> structures = new KSet<>();
|
KSet<IrisStructure> structures = new KSet<>();
|
||||||
KSet<IrisGenerator> generators = new KSet<>();
|
KSet<IrisGenerator> generators = new KSet<>();
|
||||||
KSet<IrisLootTable> loot = new KSet<>();
|
KSet<IrisLootTable> loot = new KSet<>();
|
||||||
@@ -422,6 +430,11 @@ public class ProjectManager
|
|||||||
biomes.forEach((r) -> r.getLoot().getTables().forEach((i) -> loot.add(Iris.globaldata.getLootLoader().load(i))));
|
biomes.forEach((r) -> r.getLoot().getTables().forEach((i) -> loot.add(Iris.globaldata.getLootLoader().load(i))));
|
||||||
structures.forEach((r) -> r.getLoot().getTables().forEach((i) -> loot.add(Iris.globaldata.getLootLoader().load(i))));
|
structures.forEach((r) -> r.getLoot().getTables().forEach((i) -> loot.add(Iris.globaldata.getLootLoader().load(i))));
|
||||||
structures.forEach((b) -> b.getTiles().forEach((r) -> r.getLoot().getTables().forEach((i) -> loot.add(Iris.globaldata.getLootLoader().load(i)))));
|
structures.forEach((b) -> b.getTiles().forEach((r) -> r.getLoot().getTables().forEach((i) -> loot.add(Iris.globaldata.getLootLoader().load(i)))));
|
||||||
|
structures.forEach((r) -> r.getEntitySpawns().forEach((sp) -> entities.add(Iris.globaldata.getEntityLoader().load(sp.getEntity()))));
|
||||||
|
structures.forEach((s) -> s.getTiles().forEach((r) -> r.getEntitySpawns().forEach((sp) -> entities.add(Iris.globaldata.getEntityLoader().load(sp.getEntity())))));
|
||||||
|
biomes.forEach((r) -> r.getEntitySpawns().forEach((sp) -> entities.add(Iris.globaldata.getEntityLoader().load(sp.getEntity()))));
|
||||||
|
regions.forEach((r) -> r.getEntitySpawns().forEach((sp) -> entities.add(Iris.globaldata.getEntityLoader().load(sp.getEntity()))));
|
||||||
|
dimension.getEntitySpawns().forEach((sp) -> entities.add(Iris.globaldata.getEntityLoader().load(sp.getEntity())));
|
||||||
|
|
||||||
KMap<String, String> renameObjects = new KMap<>();
|
KMap<String, String> renameObjects = new KMap<>();
|
||||||
String a = "";
|
String a = "";
|
||||||
@@ -621,6 +634,13 @@ public class ProjectManager
|
|||||||
b.append(IO.hash(a));
|
b.append(IO.hash(a));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for(IrisEntity i : entities)
|
||||||
|
{
|
||||||
|
a = new JSONObject(new Gson().toJson(i)).toString(minify ? 0 : 4);
|
||||||
|
IO.writeAll(new File(folder, "entities/" + i.getLoadKey() + ".json"), a);
|
||||||
|
b.append(IO.hash(a));
|
||||||
|
}
|
||||||
|
|
||||||
for(IrisLootTable i : loot)
|
for(IrisLootTable i : loot)
|
||||||
{
|
{
|
||||||
a = new JSONObject(new Gson().toJson(i)).toString(minify ? 0 : 4);
|
a = new JSONObject(new Gson().toJson(i)).toString(minify ? 0 : 4);
|
||||||
|
|||||||
@@ -333,6 +333,11 @@ public abstract class ContextualChunkGenerator extends ChunkGenerator implements
|
|||||||
|
|
||||||
public void close()
|
public void close()
|
||||||
{
|
{
|
||||||
|
if(!isDev())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
getNoLoot().clear();
|
getNoLoot().clear();
|
||||||
getNoLoot().trimToSize();
|
getNoLoot().trimToSize();
|
||||||
HandlerList.unregisterAll(this);
|
HandlerList.unregisterAll(this);
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ public abstract class DimensionChunkGenerator extends ContextualChunkGenerator
|
|||||||
|
|
||||||
if(!folder.exists())
|
if(!folder.exists())
|
||||||
{
|
{
|
||||||
Iris.error("Missing World iris/dimensions folder!");
|
Iris.error("Missing World iris/dimensions folder! (" + folder.getAbsolutePath() + ")");
|
||||||
setDimensionName("error-missing-dimension");
|
setDimensionName("error-missing-dimension");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import com.volmit.iris.util.HeightMap;
|
|||||||
import com.volmit.iris.util.IObjectPlacer;
|
import com.volmit.iris.util.IObjectPlacer;
|
||||||
import com.volmit.iris.util.IrisLock;
|
import com.volmit.iris.util.IrisLock;
|
||||||
import com.volmit.iris.util.IrisStructureResult;
|
import com.volmit.iris.util.IrisStructureResult;
|
||||||
|
import com.volmit.iris.util.J;
|
||||||
import com.volmit.iris.util.KList;
|
import com.volmit.iris.util.KList;
|
||||||
import com.volmit.iris.util.KMap;
|
import com.volmit.iris.util.KMap;
|
||||||
import com.volmit.iris.util.PrecisionStopwatch;
|
import com.volmit.iris.util.PrecisionStopwatch;
|
||||||
@@ -62,6 +63,7 @@ public abstract class ParallaxChunkGenerator extends TerrainChunkGenerator imple
|
|||||||
setParallaxMap(new AtomicWorldData(world));
|
setParallaxMap(new AtomicWorldData(world));
|
||||||
setGlText(new GenLayerText(this, rng.nextParallelRNG(32485)));
|
setGlText(new GenLayerText(this, rng.nextParallelRNG(32485)));
|
||||||
setGlUpdate(null);
|
setGlUpdate(null);
|
||||||
|
J.a(() -> getDimension().getParallaxSize(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void onClose()
|
protected void onClose()
|
||||||
|
|||||||
@@ -138,6 +138,7 @@ public abstract class TerrainChunkGenerator extends ParallelChunkGenerator
|
|||||||
IrisRegion region = sampleRegion(rx, rz);
|
IrisRegion region = sampleRegion(rx, rz);
|
||||||
IrisBiome biome = sampleTrueBiome(rx, rz, noise);
|
IrisBiome biome = sampleTrueBiome(rx, rz, noise);
|
||||||
IrisBiome landBiome = null;
|
IrisBiome landBiome = null;
|
||||||
|
Biome onlyBiome = Iris.biome3d ? null : biome.getGroundBiome(getMasterRandom(), rz, getDimension().getFluidHeight(), rx);
|
||||||
|
|
||||||
if(biome == null)
|
if(biome == null)
|
||||||
{
|
{
|
||||||
@@ -204,17 +205,27 @@ public abstract class TerrainChunkGenerator extends ParallelChunkGenerator
|
|||||||
if(!biomeAssigned && biomeMap != null)
|
if(!biomeAssigned && biomeMap != null)
|
||||||
{
|
{
|
||||||
biomeAssigned = true;
|
biomeAssigned = true;
|
||||||
sliver.set(k, biome.getGroundBiome(getMasterRandom(), rz, k, rx));
|
|
||||||
biomeMap.setBiome(x, z, biome);
|
|
||||||
|
|
||||||
for(int kv = max; kv < biomeMax; kv++)
|
if(Iris.biome3d)
|
||||||
{
|
{
|
||||||
Biome skyBiome = biome.getSkyBiome(getMasterRandom(), rz, kv, rx);
|
sliver.set(k, biome.getGroundBiome(getMasterRandom(), rz, k, rx));
|
||||||
sliver.set(kv, skyBiome);
|
|
||||||
|
for(int kv = max; kv < biomeMax; kv++)
|
||||||
|
{
|
||||||
|
Biome skyBiome = biome.getSkyBiome(getMasterRandom(), rz, kv, rx);
|
||||||
|
sliver.set(kv, skyBiome);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sliver.set(getFluidHeight(), onlyBiome);
|
||||||
|
}
|
||||||
|
|
||||||
|
biomeMap.setBiome(x, z, biome);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(k <= Math.max(height, fluidHeight))
|
if(Iris.biome3d && k <= Math.max(height, fluidHeight))
|
||||||
{
|
{
|
||||||
sliver.set(k, biome.getGroundBiome(getMasterRandom(), rz, k, rx));
|
sliver.set(k, biome.getGroundBiome(getMasterRandom(), rz, k, rx));
|
||||||
}
|
}
|
||||||
@@ -278,10 +289,13 @@ public abstract class TerrainChunkGenerator extends ParallelChunkGenerator
|
|||||||
{
|
{
|
||||||
for(CaveResult i : caveResults)
|
for(CaveResult i : caveResults)
|
||||||
{
|
{
|
||||||
for(int j = i.getFloor(); j <= i.getCeiling(); j++)
|
if(Iris.biome3d)
|
||||||
{
|
{
|
||||||
sliver.set(j, caveBiome);
|
for(int j = i.getFloor(); j <= i.getCeiling(); j++)
|
||||||
sliver.set(j, caveBiome.getGroundBiome(getMasterRandom(), rz, j, rx));
|
{
|
||||||
|
sliver.set(j, caveBiome);
|
||||||
|
sliver.set(j, caveBiome.getGroundBiome(getMasterRandom(), rz, j, rx));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
KList<BlockData> floor = caveBiome.generateLayers(wx, wz, rockRandom, i.getFloor() - 2, i.getFloor() - 2);
|
KList<BlockData> floor = caveBiome.generateLayers(wx, wz, rockRandom, i.getFloor() - 2, i.getFloor() - 2);
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ public class AtomicSliver
|
|||||||
public static boolean forgetful = false;
|
public static boolean forgetful = false;
|
||||||
private transient KMap<Integer, IrisBiome> truebiome;
|
private transient KMap<Integer, IrisBiome> truebiome;
|
||||||
private transient KMap<Integer, Biome> biome;
|
private transient KMap<Integer, Biome> biome;
|
||||||
|
private transient Biome onlyBiome;
|
||||||
private transient IrisLock lock = new IrisLock("Sliver");
|
private transient IrisLock lock = new IrisLock("Sliver");
|
||||||
private transient int highestBiome = 0;
|
private transient int highestBiome = 0;
|
||||||
private transient long last = M.ms();
|
private transient long last = M.ms();
|
||||||
@@ -41,6 +42,7 @@ public class AtomicSliver
|
|||||||
|
|
||||||
public AtomicSliver(int x, int z)
|
public AtomicSliver(int x, int z)
|
||||||
{
|
{
|
||||||
|
onlyBiome = null;
|
||||||
this.x = x;
|
this.x = x;
|
||||||
this.z = z;
|
this.z = z;
|
||||||
blockUpdates = new KSet<>();
|
blockUpdates = new KSet<>();
|
||||||
@@ -164,9 +166,9 @@ public class AtomicSliver
|
|||||||
|
|
||||||
public Biome getBiome(int h)
|
public Biome getBiome(int h)
|
||||||
{
|
{
|
||||||
if(forgetful)
|
if(!Iris.biome3d)
|
||||||
{
|
{
|
||||||
return Biome.THE_VOID;
|
return onlyBiome != null ? onlyBiome : Biome.THE_VOID;
|
||||||
}
|
}
|
||||||
|
|
||||||
last = M.ms();
|
last = M.ms();
|
||||||
@@ -182,7 +184,17 @@ public class AtomicSliver
|
|||||||
public void set(int h, Biome d)
|
public void set(int h, Biome d)
|
||||||
{
|
{
|
||||||
lock.lock();
|
lock.lock();
|
||||||
biome.put(h, d);
|
|
||||||
|
if(Iris.biome3d)
|
||||||
|
{
|
||||||
|
biome.put(h, d);
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
onlyBiome = d;
|
||||||
|
}
|
||||||
|
|
||||||
modified = true;
|
modified = true;
|
||||||
highestBiome = h > highestBiome ? h : highestBiome;
|
highestBiome = h > highestBiome ? h : highestBiome;
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
@@ -220,13 +232,18 @@ public class AtomicSliver
|
|||||||
lock.unlock();
|
lock.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
public void write(BiomeGrid d)
|
public void write(BiomeGrid d)
|
||||||
{
|
{
|
||||||
if(forgetful)
|
lock.lock();
|
||||||
|
|
||||||
|
if(!Iris.biome3d)
|
||||||
{
|
{
|
||||||
|
d.setBiome(x, z, onlyBiome);
|
||||||
|
lock.unlock();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
lock.lock();
|
|
||||||
for(int i = 0; i <= highestBiome; i++)
|
for(int i = 0; i <= highestBiome; i++)
|
||||||
{
|
{
|
||||||
if(biome.get(i) != null)
|
if(biome.get(i) != null)
|
||||||
@@ -234,15 +251,12 @@ public class AtomicSliver
|
|||||||
d.setBiome(x, i, z, biome.get(i));
|
d.setBiome(x, i, z, biome.get(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void write(HeightMap height)
|
public void write(HeightMap height)
|
||||||
{
|
{
|
||||||
if(forgetful)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
lock.lock();
|
lock.lock();
|
||||||
height.setHeight(x, z, highestBlock);
|
height.setHeight(x, z, highestBlock);
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
@@ -250,10 +264,6 @@ public class AtomicSliver
|
|||||||
|
|
||||||
public void read(DataInputStream din) throws IOException
|
public void read(DataInputStream din) throws IOException
|
||||||
{
|
{
|
||||||
if(forgetful)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
lock.lock();
|
lock.lock();
|
||||||
this.block = new KMap<Integer, BlockData>();
|
this.block = new KMap<Integer, BlockData>();
|
||||||
|
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ public class GenLayerUpdate extends BlockPopulator
|
|||||||
}
|
}
|
||||||
p.end();
|
p.end();
|
||||||
gen.getMetrics().getUpdate().put(p.getMilliseconds());
|
gen.getMetrics().getUpdate().put(p.getMilliseconds());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void update(Chunk c, int x, int y, int z, int rx, int rz, RNG rng)
|
public void update(Chunk c, int x, int y, int z, int rx, int rz, RNG rng)
|
||||||
|
|||||||
@@ -637,8 +637,6 @@ public class IrisDimension extends IrisRegistrant
|
|||||||
IrisLock t = new IrisLock("t");
|
IrisLock t = new IrisLock("t");
|
||||||
Iris.verbose("Checking sizes for " + Form.f(objects.size()) + " referenced objects.");
|
Iris.verbose("Checking sizes for " + Form.f(objects.size()) + " referenced objects.");
|
||||||
|
|
||||||
int tc = g.getThreads();
|
|
||||||
g.changeThreadCount(64);
|
|
||||||
for(String i : objects)
|
for(String i : objects)
|
||||||
{
|
{
|
||||||
g.getAccelerant().queue("tx-psize", () ->
|
g.getAccelerant().queue("tx-psize", () ->
|
||||||
@@ -661,7 +659,6 @@ public class IrisDimension extends IrisRegistrant
|
|||||||
}
|
}
|
||||||
|
|
||||||
g.getAccelerant().waitFor("tx-psize");
|
g.getAccelerant().waitFor("tx-psize");
|
||||||
g.changeThreadCount(tc);
|
|
||||||
int x = Math.max(xg.get(), Math.max(yg.get(), zg.get()));
|
int x = Math.max(xg.get(), Math.max(yg.get(), zg.get()));
|
||||||
int z = x;
|
int z = x;
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import java.lang.reflect.Field;
|
|||||||
import org.bukkit.enchantments.Enchantment;
|
import org.bukkit.enchantments.Enchantment;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
import com.volmit.iris.Iris;
|
|
||||||
import com.volmit.iris.util.Desc;
|
import com.volmit.iris.util.Desc;
|
||||||
import com.volmit.iris.util.DontObfuscate;
|
import com.volmit.iris.util.DontObfuscate;
|
||||||
import com.volmit.iris.util.MaxNumber;
|
import com.volmit.iris.util.MaxNumber;
|
||||||
@@ -47,9 +46,17 @@ public class IrisEnchantment
|
|||||||
|
|
||||||
public void apply(RNG rng, ItemMeta meta)
|
public void apply(RNG rng, ItemMeta meta)
|
||||||
{
|
{
|
||||||
if(rng.nextDouble() < chance)
|
try
|
||||||
{
|
{
|
||||||
meta.addEnchant(getEnchant(), getLevel(rng), true);
|
if(rng.nextDouble() < chance)
|
||||||
|
{
|
||||||
|
meta.addEnchant(getEnchant(), getLevel(rng), true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
catch(Throwable e)
|
||||||
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,8 +78,6 @@ public class IrisEnchantment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Iris.warn("Can't find enchantment type: " + getEnchantment());
|
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -244,7 +244,7 @@ public class IrisEntity extends IrisRegistrant
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(e instanceof Mob)
|
if(Iris.awareEntities && e instanceof Mob)
|
||||||
{
|
{
|
||||||
Mob m = (Mob) e;
|
Mob m = (Mob) e;
|
||||||
m.setAware(isAware());
|
m.setAware(isAware());
|
||||||
|
|||||||
@@ -40,8 +40,8 @@ public class IrisEntitySpawn
|
|||||||
@Desc("The 1 in RARITY chance for this entity to spawn")
|
@Desc("The 1 in RARITY chance for this entity to spawn")
|
||||||
private int rarity = 1;
|
private int rarity = 1;
|
||||||
|
|
||||||
private AtomicCache<RNG> rng = new AtomicCache<>();
|
private transient AtomicCache<RNG> rng = new AtomicCache<>();
|
||||||
private AtomicCache<IrisEntity> ent = new AtomicCache<>();
|
private transient AtomicCache<IrisEntity> ent = new AtomicCache<>();
|
||||||
|
|
||||||
public Entity on(IrisChunkGenerator g, Location at, EntityType t, EntitySpawnEvent ee)
|
public Entity on(IrisChunkGenerator g, Location at, EntityType t, EntitySpawnEvent ee)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ public class IrisLoot
|
|||||||
private double maxDurability = 1;
|
private double maxDurability = 1;
|
||||||
|
|
||||||
@DontObfuscate
|
@DontObfuscate
|
||||||
@Desc("Define a custom model identifier")
|
@Desc("Define a custom model identifier 1.14+ only")
|
||||||
private Integer customModel = null;
|
private Integer customModel = null;
|
||||||
|
|
||||||
@DontObfuscate
|
@DontObfuscate
|
||||||
@@ -123,98 +123,8 @@ public class IrisLoot
|
|||||||
|
|
||||||
public ItemStack get(boolean debug, RNG rng)
|
public ItemStack get(boolean debug, RNG rng)
|
||||||
{
|
{
|
||||||
ItemStack is = new ItemStack(getType(), Math.max(1, rng.i(getMinAmount(), getMaxAmount())));
|
try
|
||||||
ItemMeta m = is.getItemMeta();
|
|
||||||
|
|
||||||
if(getType().getMaxDurability() > 0 && m instanceof Damageable)
|
|
||||||
{
|
{
|
||||||
Damageable d = (Damageable) m;
|
|
||||||
int max = getType().getMaxDurability();
|
|
||||||
d.setDamage((int) Math.round(Math.max(0, Math.min(max, (1D - rng.d(getMinDurability(), getMaxDurability())) * max))));
|
|
||||||
}
|
|
||||||
|
|
||||||
for(IrisEnchantment i : getEnchantments())
|
|
||||||
{
|
|
||||||
i.apply(rng, m);
|
|
||||||
}
|
|
||||||
|
|
||||||
for(IrisAttributeModifier i : getAttributes())
|
|
||||||
{
|
|
||||||
i.apply(rng, m);
|
|
||||||
}
|
|
||||||
|
|
||||||
m.setCustomModelData(getCustomModel());
|
|
||||||
m.setLocalizedName(C.translateAlternateColorCodes('&', displayName));
|
|
||||||
m.setDisplayName(C.translateAlternateColorCodes('&', displayName));
|
|
||||||
m.setUnbreakable(isUnbreakable());
|
|
||||||
|
|
||||||
for(ItemFlag i : getItemFlags())
|
|
||||||
{
|
|
||||||
m.addItemFlags(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
KList<String> lore = new KList<>();
|
|
||||||
|
|
||||||
getLore().forEach((i) ->
|
|
||||||
{
|
|
||||||
String mf = C.translateAlternateColorCodes('&', i);
|
|
||||||
|
|
||||||
if(mf.length() > 24)
|
|
||||||
{
|
|
||||||
for(String g : Form.wrapWords(mf, 24).split("\\Q\n\\E"))
|
|
||||||
{
|
|
||||||
lore.add(g.trim());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
else
|
|
||||||
{
|
|
||||||
lore.add(mf);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if(debug)
|
|
||||||
{
|
|
||||||
if(lore.isNotEmpty())
|
|
||||||
{
|
|
||||||
lore.add(C.GRAY + "--------------------");
|
|
||||||
}
|
|
||||||
|
|
||||||
lore.add(C.GRAY + "1 in " + (getRarity()) + " Chance (" + Form.pc(1D / (getRarity()), 5) + ")");
|
|
||||||
}
|
|
||||||
|
|
||||||
m.setLore(lore);
|
|
||||||
|
|
||||||
if(getLeatherColor() != null && m instanceof LeatherArmorMeta)
|
|
||||||
{
|
|
||||||
Color c = Color.decode(getLeatherColor());
|
|
||||||
((LeatherArmorMeta) m).setColor(org.bukkit.Color.fromRGB(c.getRed(), c.getGreen(), c.getBlue()));
|
|
||||||
}
|
|
||||||
|
|
||||||
if(getDyeColor() != null && m instanceof Colorable)
|
|
||||||
{
|
|
||||||
((Colorable) m).setColor(getDyeColor());
|
|
||||||
}
|
|
||||||
|
|
||||||
is.setItemMeta(m);
|
|
||||||
return is;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ItemStack get(boolean debug, IrisLootTable table, RNG rng, int x, int y, int z)
|
|
||||||
{
|
|
||||||
if(debug)
|
|
||||||
{
|
|
||||||
chance.reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
if(chance.aquire(() -> NoiseStyle.STATIC.create(rng)).fit(1, rarity * table.getRarity(), x, y, z) == 1)
|
|
||||||
{
|
|
||||||
if(getType() == null)
|
|
||||||
{
|
|
||||||
Iris.warn("Cant find item type " + type);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
ItemStack is = new ItemStack(getType(), Math.max(1, rng.i(getMinAmount(), getMaxAmount())));
|
ItemStack is = new ItemStack(getType(), Math.max(1, rng.i(getMinAmount(), getMaxAmount())));
|
||||||
ItemMeta m = is.getItemMeta();
|
ItemMeta m = is.getItemMeta();
|
||||||
|
|
||||||
@@ -235,7 +145,11 @@ public class IrisLoot
|
|||||||
i.apply(rng, m);
|
i.apply(rng, m);
|
||||||
}
|
}
|
||||||
|
|
||||||
m.setCustomModelData(getCustomModel());
|
if(Iris.customModels)
|
||||||
|
{
|
||||||
|
m.setCustomModelData(getCustomModel());
|
||||||
|
}
|
||||||
|
|
||||||
m.setLocalizedName(C.translateAlternateColorCodes('&', displayName));
|
m.setLocalizedName(C.translateAlternateColorCodes('&', displayName));
|
||||||
m.setDisplayName(C.translateAlternateColorCodes('&', displayName));
|
m.setDisplayName(C.translateAlternateColorCodes('&', displayName));
|
||||||
m.setUnbreakable(isUnbreakable());
|
m.setUnbreakable(isUnbreakable());
|
||||||
@@ -272,15 +186,127 @@ public class IrisLoot
|
|||||||
lore.add(C.GRAY + "--------------------");
|
lore.add(C.GRAY + "--------------------");
|
||||||
}
|
}
|
||||||
|
|
||||||
lore.add(C.GRAY + "From: " + table.getName() + " (" + Form.pc(1D / table.getRarity(), 5) + ")");
|
lore.add(C.GRAY + "1 in " + (getRarity()) + " Chance (" + Form.pc(1D / (getRarity()), 5) + ")");
|
||||||
lore.add(C.GRAY + "1 in " + (table.getRarity() * getRarity()) + " Chance (" + Form.pc(1D / (table.getRarity() * getRarity()), 5) + ")");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m.setLore(lore);
|
m.setLore(lore);
|
||||||
|
|
||||||
|
if(getLeatherColor() != null && m instanceof LeatherArmorMeta)
|
||||||
|
{
|
||||||
|
Color c = Color.decode(getLeatherColor());
|
||||||
|
((LeatherArmorMeta) m).setColor(org.bukkit.Color.fromRGB(c.getRed(), c.getGreen(), c.getBlue()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(getDyeColor() != null && m instanceof Colorable)
|
||||||
|
{
|
||||||
|
((Colorable) m).setColor(getDyeColor());
|
||||||
|
}
|
||||||
|
|
||||||
is.setItemMeta(m);
|
is.setItemMeta(m);
|
||||||
return is;
|
return is;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
catch(Throwable e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ItemStack(Material.AIR);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ItemStack get(boolean debug, IrisLootTable table, RNG rng, int x, int y, int z)
|
||||||
|
{
|
||||||
|
if(debug)
|
||||||
|
{
|
||||||
|
chance.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(chance.aquire(() -> NoiseStyle.STATIC.create(rng)).fit(1, rarity * table.getRarity(), x, y, z) == 1)
|
||||||
|
{
|
||||||
|
if(getType() == null)
|
||||||
|
{
|
||||||
|
Iris.warn("Cant find item type " + type);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ItemStack is = new ItemStack(getType(), Math.max(1, rng.i(getMinAmount(), getMaxAmount())));
|
||||||
|
ItemMeta m = is.getItemMeta();
|
||||||
|
|
||||||
|
if(getType().getMaxDurability() > 0 && m instanceof Damageable)
|
||||||
|
{
|
||||||
|
Damageable d = (Damageable) m;
|
||||||
|
int max = getType().getMaxDurability();
|
||||||
|
d.setDamage((int) Math.round(Math.max(0, Math.min(max, (1D - rng.d(getMinDurability(), getMaxDurability())) * max))));
|
||||||
|
}
|
||||||
|
|
||||||
|
for(IrisEnchantment i : getEnchantments())
|
||||||
|
{
|
||||||
|
i.apply(rng, m);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(IrisAttributeModifier i : getAttributes())
|
||||||
|
{
|
||||||
|
i.apply(rng, m);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Iris.customModels)
|
||||||
|
{
|
||||||
|
m.setCustomModelData(getCustomModel());
|
||||||
|
}
|
||||||
|
|
||||||
|
m.setLocalizedName(C.translateAlternateColorCodes('&', displayName));
|
||||||
|
m.setDisplayName(C.translateAlternateColorCodes('&', displayName));
|
||||||
|
m.setUnbreakable(isUnbreakable());
|
||||||
|
|
||||||
|
for(ItemFlag i : getItemFlags())
|
||||||
|
{
|
||||||
|
m.addItemFlags(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
KList<String> lore = new KList<>();
|
||||||
|
|
||||||
|
getLore().forEach((i) ->
|
||||||
|
{
|
||||||
|
String mf = C.translateAlternateColorCodes('&', i);
|
||||||
|
|
||||||
|
if(mf.length() > 24)
|
||||||
|
{
|
||||||
|
for(String g : Form.wrapWords(mf, 24).split("\\Q\n\\E"))
|
||||||
|
{
|
||||||
|
lore.add(g.trim());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lore.add(mf);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if(debug)
|
||||||
|
{
|
||||||
|
if(lore.isNotEmpty())
|
||||||
|
{
|
||||||
|
lore.add(C.GRAY + "--------------------");
|
||||||
|
}
|
||||||
|
|
||||||
|
lore.add(C.GRAY + "From: " + table.getName() + " (" + Form.pc(1D / table.getRarity(), 5) + ")");
|
||||||
|
lore.add(C.GRAY + "1 in " + (table.getRarity() * getRarity()) + " Chance (" + Form.pc(1D / (table.getRarity() * getRarity()), 5) + ")");
|
||||||
|
}
|
||||||
|
|
||||||
|
m.setLore(lore);
|
||||||
|
is.setItemMeta(m);
|
||||||
|
return is;
|
||||||
|
}
|
||||||
|
|
||||||
|
catch(Throwable e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,75 +0,0 @@
|
|||||||
package com.volmit.iris.util;
|
|
||||||
|
|
||||||
import org.bukkit.block.Biome;
|
|
||||||
import org.bukkit.generator.ChunkGenerator.BiomeGrid;
|
|
||||||
|
|
||||||
public class BiomeStorage
|
|
||||||
{
|
|
||||||
private static final int e;
|
|
||||||
private static final int f;
|
|
||||||
public static final int a;
|
|
||||||
public static final int b;
|
|
||||||
public static final int c;
|
|
||||||
private final Biome[] g;
|
|
||||||
|
|
||||||
static
|
|
||||||
{
|
|
||||||
e = (int) Math.round(Math.log(16.0) / Math.log(2.0)) - 2;
|
|
||||||
f = (int) Math.round(Math.log(256.0) / Math.log(2.0)) - 2;
|
|
||||||
a = 1 << BiomeStorage.e + BiomeStorage.e + BiomeStorage.f;
|
|
||||||
b = (1 << BiomeStorage.e) - 1;
|
|
||||||
c = (1 << BiomeStorage.f) - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BiomeStorage(final Biome[] aBiome)
|
|
||||||
{
|
|
||||||
this.g = aBiome;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BiomeStorage()
|
|
||||||
{
|
|
||||||
this(new Biome[BiomeStorage.a]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public BiomeStorage b()
|
|
||||||
{
|
|
||||||
return new BiomeStorage(this.g.clone());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void inject(BiomeGrid grid)
|
|
||||||
{
|
|
||||||
for(int i = 0; i < 256; i++)
|
|
||||||
{
|
|
||||||
for(int j = 0; j < 16; j++)
|
|
||||||
{
|
|
||||||
for(int k = 0; k < 16; k++)
|
|
||||||
{
|
|
||||||
Biome b = getBiome(j, i, k);
|
|
||||||
|
|
||||||
if(b == null || b.equals(Biome.THE_VOID))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
grid.setBiome(j, i, k, b);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Biome getBiome(final int i, final int j, final int k)
|
|
||||||
{
|
|
||||||
final int l = i & BiomeStorage.b;
|
|
||||||
final int i2 = MathHelper.clamp(j, 0, BiomeStorage.c);
|
|
||||||
final int j2 = k & BiomeStorage.b;
|
|
||||||
return this.g[i2 << BiomeStorage.e + BiomeStorage.e | j2 << BiomeStorage.e | l];
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBiome(final int i, final int j, final int k, final Biome biome)
|
|
||||||
{
|
|
||||||
final int l = i & BiomeStorage.b;
|
|
||||||
final int i2 = MathHelper.clamp(j, 0, BiomeStorage.c);
|
|
||||||
final int j2 = k & BiomeStorage.b;
|
|
||||||
this.g[i2 << BiomeStorage.e + BiomeStorage.e | j2 << BiomeStorage.e | l] = biome;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -3,6 +3,8 @@ package com.volmit.iris.util;
|
|||||||
import org.bukkit.block.Biome;
|
import org.bukkit.block.Biome;
|
||||||
import org.bukkit.generator.ChunkGenerator.BiomeGrid;
|
import org.bukkit.generator.ChunkGenerator.BiomeGrid;
|
||||||
|
|
||||||
|
import com.volmit.iris.Iris;
|
||||||
|
|
||||||
public class InvertedBiomeGrid implements BiomeGrid
|
public class InvertedBiomeGrid implements BiomeGrid
|
||||||
{
|
{
|
||||||
private BiomeGrid grid;
|
private BiomeGrid grid;
|
||||||
@@ -22,6 +24,11 @@ public class InvertedBiomeGrid implements BiomeGrid
|
|||||||
@Override
|
@Override
|
||||||
public Biome getBiome(int arg0, int arg1, int arg2)
|
public Biome getBiome(int arg0, int arg1, int arg2)
|
||||||
{
|
{
|
||||||
|
if(!Iris.biome3d)
|
||||||
|
{
|
||||||
|
return getBiome(arg0, arg2);
|
||||||
|
}
|
||||||
|
|
||||||
return grid.getBiome(arg0, 255 - arg1, arg2);
|
return grid.getBiome(arg0, 255 - arg1, arg2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -35,6 +42,12 @@ public class InvertedBiomeGrid implements BiomeGrid
|
|||||||
@Override
|
@Override
|
||||||
public void setBiome(int arg0, int arg1, int arg2, Biome arg3)
|
public void setBiome(int arg0, int arg1, int arg2, Biome arg3)
|
||||||
{
|
{
|
||||||
|
if(!Iris.biome3d)
|
||||||
|
{
|
||||||
|
setBiome(arg0, arg2, arg3);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
grid.setBiome(arg0, 255 - arg1, arg2, arg3);
|
grid.setBiome(arg0, 255 - arg1, arg2, arg3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,58 +0,0 @@
|
|||||||
package com.volmit.iris.util;
|
|
||||||
|
|
||||||
import org.bukkit.block.Biome;
|
|
||||||
|
|
||||||
public class PhasicBiomeStorage
|
|
||||||
{
|
|
||||||
private static final int e = (int) Math.round(Math.log(16.0D) / Math.log(2.0D)) - 2;
|
|
||||||
private static final int f = (int) Math.round(Math.log(256.0D) / Math.log(2.0D)) - 2;
|
|
||||||
public static final int a;
|
|
||||||
public static final int b;
|
|
||||||
public static final int c;
|
|
||||||
private final Biome[] g;
|
|
||||||
|
|
||||||
static
|
|
||||||
{
|
|
||||||
a = 1 << e + e + f;
|
|
||||||
b = (1 << e) - 1;
|
|
||||||
c = (1 << f) - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public PhasicBiomeStorage(Biome[] abiomebase)
|
|
||||||
{
|
|
||||||
this.g = abiomebase;
|
|
||||||
}
|
|
||||||
|
|
||||||
public PhasicBiomeStorage()
|
|
||||||
{
|
|
||||||
this(new Biome[a]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int clamp(int var0, int var1, int var2)
|
|
||||||
{
|
|
||||||
if(var0 < var1)
|
|
||||||
{
|
|
||||||
return var1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return var0 > var2 ? var2 : var0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Biome getBiome(int i, int j, int k)
|
|
||||||
{
|
|
||||||
int l = i & b;
|
|
||||||
int i1 = clamp(j, 0, c);
|
|
||||||
int j1 = k & b;
|
|
||||||
return this.g[i1 << e + e | j1 << e | l];
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBiome(int i, int j, int k, Biome biome)
|
|
||||||
{
|
|
||||||
int l = i & b;
|
|
||||||
int i1 = clamp(j, 0, c);
|
|
||||||
int j1 = k & b;
|
|
||||||
this.g[i1 << e + e | j1 << e | l] = biome;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,137 +0,0 @@
|
|||||||
package com.volmit.iris.util;
|
|
||||||
|
|
||||||
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;
|
|
||||||
import org.bukkit.material.MaterialData;
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public class PreemptiveChunk implements BiomeGrid, ChunkData
|
|
||||||
{
|
|
||||||
private ChunkData c;
|
|
||||||
private BiomeStorage b;
|
|
||||||
|
|
||||||
public PreemptiveChunk(ChunkData c)
|
|
||||||
{
|
|
||||||
this.c = c;
|
|
||||||
this.b = new BiomeStorage();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void inject(ChunkData ic, BiomeGrid ib)
|
|
||||||
{
|
|
||||||
for(int i = 0; i < 16; i++)
|
|
||||||
{
|
|
||||||
for(int j = 0; j < 256; j++)
|
|
||||||
{
|
|
||||||
for(int k = 0; k < 16; k++)
|
|
||||||
{
|
|
||||||
if(!getType(i, j, k).equals(Material.AIR))
|
|
||||||
{
|
|
||||||
ic.setBlock(i, j, k, getBlockData(i, j, k));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
b.inject(ib);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Biome getBiome(int arg0, int arg1)
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException("Not Supported. Use x y z");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Biome getBiome(int x, int y, int z)
|
|
||||||
{
|
|
||||||
return b.getBiome(x, y, z);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setBiome(int x, int z, Biome arg2)
|
|
||||||
{
|
|
||||||
for(int i = 0; i < 256; i++)
|
|
||||||
{
|
|
||||||
b.setBiome(x, i, z, arg2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setBiome(int arg0, int arg1, int arg2, Biome arg3)
|
|
||||||
{
|
|
||||||
b.setBiome(arg0, arg1, arg2, arg3);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public BlockData getBlockData(int arg0, int arg1, int arg2)
|
|
||||||
{
|
|
||||||
return c.getBlockData(arg0, arg1, arg2);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
@Override
|
|
||||||
public byte getData(int arg0, int arg1, int arg2)
|
|
||||||
{
|
|
||||||
return c.getData(arg0, arg1, arg2);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getMaxHeight()
|
|
||||||
{
|
|
||||||
return c.getMaxHeight();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Material getType(int arg0, int arg1, int arg2)
|
|
||||||
{
|
|
||||||
return c.getType(arg0, arg1, arg2);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
@Override
|
|
||||||
public MaterialData getTypeAndData(int arg0, int arg1, int arg2)
|
|
||||||
{
|
|
||||||
return c.getTypeAndData(arg0, arg1, arg2);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setBlock(int arg0, int arg1, int arg2, Material arg3)
|
|
||||||
{
|
|
||||||
c.setBlock(arg0, arg1, arg2, arg3);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
@Override
|
|
||||||
public void setBlock(int arg0, int arg1, int arg2, MaterialData arg3)
|
|
||||||
{
|
|
||||||
c.setBlock(arg0, arg1, arg2, arg3);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setBlock(int arg0, int arg1, int arg2, BlockData arg3)
|
|
||||||
{
|
|
||||||
c.setBlock(arg0, arg1, arg2, arg3);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setRegion(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, Material arg6)
|
|
||||||
{
|
|
||||||
c.setRegion(arg0, arg1, arg2, arg3, arg4, arg5, arg6);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
@Override
|
|
||||||
public void setRegion(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, MaterialData arg6)
|
|
||||||
{
|
|
||||||
c.setRegion(arg0, arg1, arg2, arg3, arg4, arg5, arg6);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setRegion(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, BlockData arg6)
|
|
||||||
{
|
|
||||||
c.setRegion(arg0, arg1, arg2, arg3, arg4, arg5, arg6);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -157,7 +157,16 @@ public class PregenJob implements Listener
|
|||||||
if(chunkSpiraler.hasNext())
|
if(chunkSpiraler.hasNext())
|
||||||
{
|
{
|
||||||
chunkSpiraler.next();
|
chunkSpiraler.next();
|
||||||
consumer.accept(new ChunkPosition(chunkX, chunkZ), Color.YELLOW);
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
consumer.accept(new ChunkPosition(chunkX, chunkZ), Color.YELLOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
catch(Throwable e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
if(isChunkWithin(chunkX, chunkZ))
|
if(isChunkWithin(chunkX, chunkZ))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -8,5 +8,5 @@ description: More than a Dimenson!
|
|||||||
commands:
|
commands:
|
||||||
iris:
|
iris:
|
||||||
aliases: [ir, irs]
|
aliases: [ir, irs]
|
||||||
api-version: 1.16
|
api-version: 1.14
|
||||||
hotload-dependencies: false
|
hotload-dependencies: false
|
||||||
Reference in New Issue
Block a user