9
0
mirror of https://github.com/VolmitSoftware/Iris.git synced 2025-12-22 16:49:14 +00:00
This commit is contained in:
cyberpwn
2021-08-28 21:50:50 -04:00
parent faf5bcb32b
commit dd0b4f27d4
49 changed files with 271 additions and 444 deletions

View File

@@ -23,8 +23,8 @@ import com.volmit.iris.core.link.IrisPapiExpansion;
import com.volmit.iris.core.link.MultiverseCoreLink; import com.volmit.iris.core.link.MultiverseCoreLink;
import com.volmit.iris.core.link.MythicMobsLink; import com.volmit.iris.core.link.MythicMobsLink;
import com.volmit.iris.core.link.OraxenLink; import com.volmit.iris.core.link.OraxenLink;
import com.volmit.iris.core.nms.INMS;
import com.volmit.iris.core.loader.IrisData; import com.volmit.iris.core.loader.IrisData;
import com.volmit.iris.core.nms.INMS;
import com.volmit.iris.core.service.StudioSVC; import com.volmit.iris.core.service.StudioSVC;
import com.volmit.iris.engine.object.biome.IrisBiome; import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.biome.IrisBiomeCustom; import com.volmit.iris.engine.object.biome.IrisBiomeCustom;
@@ -47,7 +47,10 @@ import com.volmit.iris.util.io.JarScanner;
import com.volmit.iris.util.math.M; import com.volmit.iris.util.math.M;
import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.parallel.MultiBurst; import com.volmit.iris.util.parallel.MultiBurst;
import com.volmit.iris.util.plugin.*; import com.volmit.iris.util.plugin.IrisService;
import com.volmit.iris.util.plugin.Metrics;
import com.volmit.iris.util.plugin.VolmitPlugin;
import com.volmit.iris.util.plugin.VolmitSender;
import com.volmit.iris.util.reflect.ShadeFix; import com.volmit.iris.util.reflect.ShadeFix;
import com.volmit.iris.util.scheduling.J; import com.volmit.iris.util.scheduling.J;
import com.volmit.iris.util.scheduling.Queue; import com.volmit.iris.util.scheduling.Queue;
@@ -129,17 +132,17 @@ public class Iris extends VolmitPlugin implements Listener {
J.a(this::verifyDataPacksPost, 20); J.a(this::verifyDataPacksPost, 20);
splash(); splash();
if(IrisSettings.get().getGeneral().isAutoStartDefaultStudio()) if (IrisSettings.get().getGeneral().isAutoStartDefaultStudio()) {
{
Iris.info("Starting up auto Studio!"); Iris.info("Starting up auto Studio!");
try { try {
Player r = new KList<>(getServer().getOnlinePlayers()).getRandom(); Player r = new KList<>(getServer().getOnlinePlayers()).getRandom();
Iris.service(StudioSVC.class).open(r != null ? new VolmitSender(r) : sender, 1337, IrisSettings.get().getGenerator().getDefaultWorldType(), (w) -> { Iris.service(StudioSVC.class).open(r != null ? new VolmitSender(r) : sender, 1337, IrisSettings.get().getGenerator().getDefaultWorldType(), (w) -> {
J.s(() -> {for(Player i : getServer().getOnlinePlayers()) J.s(() -> {
{ for (Player i : getServer().getOnlinePlayers()) {
i.setGameMode(GameMode.SPECTATOR); i.setGameMode(GameMode.SPECTATOR);
i.teleport(new Location(w, 0, 200, 0)); i.teleport(new Location(w, 0, 200, 0));
}}); }
});
}); });
} catch (IrisException e) { } catch (IrisException e) {
e.printStackTrace(); e.printStackTrace();

View File

@@ -42,7 +42,7 @@ public class CommandObject implements DecreeExecutor {
@Decree(description = "Check the composition of an object") @Decree(description = "Check the composition of an object")
public void analyze( public void analyze(
@Param(description = "The object to analyze", customHandler = ObjectHandler.class) @Param(description = "The object to analyze", customHandler = ObjectHandler.class)
String object String object
) { ) {
IrisObject o = IrisData.loadAnyObject(object); IrisObject o = IrisData.loadAnyObject(object);
sender().sendMessage("Object Size: " + o.getW() + " * " + o.getH() + " * " + o.getD() + ""); sender().sendMessage("Object Size: " + o.getW() + " * " + o.getH() + " * " + o.getD() + "");
@@ -194,20 +194,20 @@ public class CommandObject implements DecreeExecutor {
@Decree(description = "Paste an object", sync = true) @Decree(description = "Paste an object", sync = true)
public void paste( public void paste(
@Param(description = "The object to paste", customHandler = ObjectHandler.class) @Param(description = "The object to paste", customHandler = ObjectHandler.class)
String object, String object,
@Param(description = "Whether or not to edit the object (need to hold wand)", defaultValue = "false") @Param(description = "Whether or not to edit the object (need to hold wand)", defaultValue = "false")
boolean edit, boolean edit,
@Param(description = "The amount of degrees to rotate by", defaultValue = "0") @Param(description = "The amount of degrees to rotate by", defaultValue = "0")
int rotate, int rotate,
@Param(description = "The factor by which to scale the object placement", defaultValue = "1") @Param(description = "The factor by which to scale the object placement", defaultValue = "1")
double scale double scale
// , // ,
// @Param(description = "The scale interpolator to use", defaultValue = "none") // @Param(description = "The scale interpolator to use", defaultValue = "none")
// IrisObjectPlacementScaleInterpolator interpolator // IrisObjectPlacementScaleInterpolator interpolator
){ ) {
IrisObject o = IrisData.loadAnyObject(object); IrisObject o = IrisData.loadAnyObject(object);
double maxScale = Double.max(10 - o.getBlocks().size() / 10000d, 1); double maxScale = Double.max(10 - o.getBlocks().size() / 10000d, 1);
if (scale > maxScale){ if (scale > maxScale) {
sender().sendMessage(C.YELLOW + "Indicated scale exceeds maximum. Downscaled to maximum: " + maxScale); sender().sendMessage(C.YELLOW + "Indicated scale exceeds maximum. Downscaled to maximum: " + maxScale);
scale = maxScale; scale = maxScale;
} }
@@ -321,12 +321,12 @@ public class CommandObject implements DecreeExecutor {
@Decree(description = "Save an object") @Decree(description = "Save an object")
public void save( public void save(
@Param(description = "The dimension to store the object in", contextual = true) @Param(description = "The dimension to store the object in", contextual = true)
IrisDimension dimension, IrisDimension dimension,
@Param(description = "The file to store it in, can use / for subfolders") @Param(description = "The file to store it in, can use / for subfolders")
String name, String name,
@Param(description = "Overwrite existing object files", defaultValue = "false", aliases = "force") @Param(description = "Overwrite existing object files", defaultValue = "false", aliases = "force")
boolean overwrite boolean overwrite
){ ) {
IrisObject o = WandSVC.createSchematic(player().getInventory().getItemInMainHand()); IrisObject o = WandSVC.createSchematic(player().getInventory().getItemInMainHand());
if (o == null) { if (o == null) {
@@ -342,7 +342,7 @@ public class CommandObject implements DecreeExecutor {
} }
try { try {
o.write(file); o.write(file);
} catch (IOException e){ } catch (IOException e) {
sender().sendMessage(C.RED + "Failed to save object because of an IOException: " + e.getMessage()); sender().sendMessage(C.RED + "Failed to save object because of an IOException: " + e.getMessage());
Iris.reportError(e); Iris.reportError(e);
} }
@@ -355,7 +355,7 @@ public class CommandObject implements DecreeExecutor {
public void shift( public void shift(
@Param(description = "The amount to shift by", defaultValue = "1") @Param(description = "The amount to shift by", defaultValue = "1")
int amount int amount
){ ) {
if (!WandSVC.isHoldingWand(player())) { if (!WandSVC.isHoldingWand(player())) {
sender().sendMessage("Hold your wand."); sender().sendMessage("Hold your wand.");
return; return;
@@ -379,7 +379,7 @@ public class CommandObject implements DecreeExecutor {
public void undo( public void undo(
@Param(description = "The amount of pastes to undo", defaultValue = "1") @Param(description = "The amount of pastes to undo", defaultValue = "1")
int amount int amount
){ ) {
ObjectSVC service = Iris.service(ObjectSVC.class); ObjectSVC service = Iris.service(ObjectSVC.class);
int actualReverts = Math.min(service.getUndos().size(), amount); int actualReverts = Math.min(service.getUndos().size(), amount);
service.revertChanges(actualReverts); service.revertChanges(actualReverts);
@@ -394,8 +394,8 @@ public class CommandObject implements DecreeExecutor {
} }
@Decree(name = "x&y", description = "Autoselect up, down & out", sync = true) @Decree(name = "x&y", description = "Autoselect up, down & out", sync = true)
public void xay(){ public void xay() {
if (!WandSVC.isHoldingWand(player())){ if (!WandSVC.isHoldingWand(player())) {
sender().sendMessage(C.YELLOW + "Hold your wand!"); sender().sendMessage(C.YELLOW + "Hold your wand!");
return; return;
} }

View File

@@ -23,8 +23,8 @@ import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings; import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.gui.NoiseExplorerGUI; import com.volmit.iris.core.gui.NoiseExplorerGUI;
import com.volmit.iris.core.gui.VisionGUI; import com.volmit.iris.core.gui.VisionGUI;
import com.volmit.iris.core.project.IrisProject;
import com.volmit.iris.core.loader.IrisData; import com.volmit.iris.core.loader.IrisData;
import com.volmit.iris.core.project.IrisProject;
import com.volmit.iris.core.service.ConversionSVC; import com.volmit.iris.core.service.ConversionSVC;
import com.volmit.iris.core.service.StudioSVC; import com.volmit.iris.core.service.StudioSVC;
import com.volmit.iris.core.tools.IrisToolbelt; import com.volmit.iris.core.tools.IrisToolbelt;
@@ -309,7 +309,7 @@ public class CommandStudio implements DecreeExecutor {
@Decree(description = "Charges all spawners in the area", aliases = "zzt", origin = DecreeOrigin.PLAYER) @Decree(description = "Charges all spawners in the area", aliases = "zzt", origin = DecreeOrigin.PLAYER)
public void charge() { public void charge() {
if (!IrisToolbelt.isIrisWorld(world())){ if (!IrisToolbelt.isIrisWorld(world())) {
sender().sendMessage(C.RED + "You must be in an Iris world to charge spawners!"); sender().sendMessage(C.RED + "You must be in an Iris world to charge spawners!");
return; return;
} }
@@ -377,13 +377,13 @@ public class CommandStudio implements DecreeExecutor {
if (regionPosition == null && region != null) { if (regionPosition == null && region != null) {
sender().sendMessage(C.RED + "Could not find the region you specified."); sender().sendMessage(C.RED + "Could not find the region you specified.");
} else if (regionPosition != null){ } else if (regionPosition != null) {
sender().sendMessage(C.GREEN + "Found the region at: " + regionPosition.toString()); sender().sendMessage(C.GREEN + "Found the region at: " + regionPosition);
} }
if (biomePosition == null && biome != null) { if (biomePosition == null && biome != null) {
sender().sendMessage(C.RED + "Could not find the biome you specified."); sender().sendMessage(C.RED + "Could not find the biome you specified.");
} else if (biomePosition != null){ } else if (biomePosition != null) {
sender().sendMessage(C.GREEN + "Found the biome at: " + biomePosition.toString()); sender().sendMessage(C.GREEN + "Found the biome at: " + biomePosition);
} }
final IrisPosition finalL = regionPosition == null ? biomePosition : regionPosition; final IrisPosition finalL = regionPosition == null ? biomePosition : regionPosition;
@@ -705,7 +705,7 @@ public class CommandStudio implements DecreeExecutor {
@Decree(aliases = {"find-features", "nf"}, description = "Get the noise feature data in your chunk") @Decree(aliases = {"find-features", "nf"}, description = "Get the noise feature data in your chunk")
public void features() { public void features() {
if (!IrisToolbelt.isIrisWorld(player().getWorld())){ if (!IrisToolbelt.isIrisWorld(player().getWorld())) {
sender().sendMessage(C.RED + "Iris worlds only"); sender().sendMessage(C.RED + "Iris worlds only");
return; return;
} }
@@ -719,7 +719,7 @@ public class CommandStudio implements DecreeExecutor {
@Decree(aliases = "find-objects", description = "Get information about nearby structures") @Decree(aliases = "find-objects", description = "Get information about nearby structures")
public void objects() { public void objects() {
if (!IrisToolbelt.isIrisWorld(player().getWorld())){ if (!IrisToolbelt.isIrisWorld(player().getWorld())) {
sender().sendMessage(C.RED + "You must be in an Iris world"); sender().sendMessage(C.RED + "You must be in an Iris world");
return; return;
} }

View File

@@ -12,7 +12,9 @@ import com.volmit.iris.util.decree.DecreeOrigin;
import com.volmit.iris.util.decree.annotations.Decree; import com.volmit.iris.util.decree.annotations.Decree;
import com.volmit.iris.util.format.C; import com.volmit.iris.util.format.C;
import com.volmit.iris.util.json.JSONObject; import com.volmit.iris.util.json.JSONObject;
import org.bukkit.*; import org.bukkit.Chunk;
import org.bukkit.FluidCollisionMode;
import org.bukkit.Material;
import org.bukkit.block.Biome; import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;

View File

@@ -30,7 +30,6 @@ import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.io.IO; import com.volmit.iris.util.io.IO;
import com.volmit.iris.util.json.JSONArray; import com.volmit.iris.util.json.JSONArray;
import com.volmit.iris.util.json.JSONObject; import com.volmit.iris.util.json.JSONObject;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.plugin.VolmitSender; import com.volmit.iris.util.plugin.VolmitSender;
import com.volmit.iris.util.scheduling.PrecisionStopwatch; import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import lombok.Data; import lombok.Data;
@@ -54,6 +53,7 @@ public class IrisPack {
/** /**
* Create an iris pack backed by a data folder * Create an iris pack backed by a data folder
* the data folder is assumed to be in the Iris/packs/NAME folder * the data folder is assumed to be in the Iris/packs/NAME folder
*
* @param name the name * @param name the name
*/ */
public IrisPack(String name) { public IrisPack(String name) {
@@ -62,18 +62,17 @@ public class IrisPack {
/** /**
* Create an iris pack backed by a data folder * Create an iris pack backed by a data folder
*
* @param folder the folder of the pack. Must be a directory * @param folder the folder of the pack. Must be a directory
*/ */
public IrisPack(File folder) { public IrisPack(File folder) {
this.folder = folder; this.folder = folder;
if(!folder.exists()) if (!folder.exists()) {
{
throw new RuntimeException("Cannot open Pack " + folder.getPath() + " (directory doesnt exist)"); throw new RuntimeException("Cannot open Pack " + folder.getPath() + " (directory doesnt exist)");
} }
if(!folder.isDirectory()) if (!folder.isDirectory()) {
{
throw new RuntimeException("Cannot open Pack " + folder.getPath() + " (not a directory)"); throw new RuntimeException("Cannot open Pack " + folder.getPath() + " (not a directory)");
} }
@@ -91,15 +90,15 @@ public class IrisPack {
/** /**
* Create a new pack from the input url * Create a new pack from the input url
*
* @param sender the sender * @param sender the sender
* @param url the url, or name, or really anything see IrisPackRepository.from(String) * @param url the url, or name, or really anything see IrisPackRepository.from(String)
* @return the iris pack * @return the iris pack
* @throws IrisException fails * @throws IrisException fails
*/ */
public static Future<IrisPack> from(VolmitSender sender, String url) throws IrisException { public static Future<IrisPack> from(VolmitSender sender, String url) throws IrisException {
IrisPackRepository repo = IrisPackRepository.from(url); IrisPackRepository repo = IrisPackRepository.from(url);
if(repo == null) if (repo == null) {
{
throw new IrisException("Null Repo"); throw new IrisException("Null Repo");
} }
@@ -112,15 +111,16 @@ public class IrisPack {
/** /**
* Get the name of this pack * Get the name of this pack
*
* @return the pack name * @return the pack name
*/ */
public String getName() public String getName() {
{
return folder.getName(); return folder.getName();
} }
/** /**
* Get the file path of the workspace file * Get the file path of the workspace file
*
* @return the workspace file path * @return the workspace file path
*/ */
public File getWorkspaceFile() { public File getWorkspaceFile() {
@@ -129,6 +129,7 @@ public class IrisPack {
/** /**
* Update the workspace file * Update the workspace file
*
* @return true if it was updated * @return true if it was updated
*/ */
public boolean updateWorkspace() { public boolean updateWorkspace() {
@@ -160,33 +161,32 @@ public class IrisPack {
/** /**
* Install this pack into a world * Install this pack into a world
*
* @param world the world to install into (world/iris/pack) * @param world the world to install into (world/iris/pack)
* @return the installed pack * @return the installed pack
*/ */
public IrisPack install(World world) throws IrisException public IrisPack install(World world) throws IrisException {
{
return install(new File(world.getWorldFolder(), "iris/pack")); return install(new File(world.getWorldFolder(), "iris/pack"));
} }
/** /**
* Install this pack into a world * Install this pack into a world
*
* @param world the world to install into (world/iris/pack) * @param world the world to install into (world/iris/pack)
* @return the installed pack * @return the installed pack
*/ */
public IrisPack install(IrisWorld world) throws IrisException public IrisPack install(IrisWorld world) throws IrisException {
{
return install(new File(world.worldFolder(), "iris/pack")); return install(new File(world.worldFolder(), "iris/pack"));
} }
/** /**
* Install this pack into a world * Install this pack into a world
*
* @param folder the folder to install this pack into * @param folder the folder to install this pack into
* @return the installed pack * @return the installed pack
*/ */
public IrisPack install(File folder) throws IrisException public IrisPack install(File folder) throws IrisException {
{ if (folder.exists()) {
if(folder.exists())
{
throw new IrisException("Cannot install new pack because the folder " + folder.getName() + " already exists!"); throw new IrisException("Cannot install new pack because the folder " + folder.getName() + " already exists!");
} }
@@ -204,15 +204,14 @@ public class IrisPack {
/** /**
* Create a new pack using this pack as a template. The new pack will be renamed & have a renamed dimension * Create a new pack using this pack as a template. The new pack will be renamed & have a renamed dimension
* to match it. * to match it.
*
* @param newName the new pack name * @param newName the new pack name
* @return the new IrisPack * @return the new IrisPack
*/ */
public IrisPack install(String newName) throws IrisException public IrisPack install(String newName) throws IrisException {
{
File newPack = packsPack(newName); File newPack = packsPack(newName);
if(newPack.exists()) if (newPack.exists()) {
{
throw new IrisException("Cannot install new pack because the folder " + newName + " already exists!"); throw new IrisException("Cannot install new pack because the folder " + newName + " already exists!");
} }
@@ -242,24 +241,25 @@ public class IrisPack {
/** /**
* The dimension's assumed loadkey * The dimension's assumed loadkey
*
* @return getName() * @return getName()
*/ */
public String getDimensionKey() public String getDimensionKey() {
{
return getName(); return getName();
} }
/** /**
* Get the main dimension object * Get the main dimension object
*
* @return the dimension (folder name as dim key) * @return the dimension (folder name as dim key)
*/ */
public IrisDimension getDimension() public IrisDimension getDimension() {
{
return getData().getDimensionLoader().load(getDimensionKey()); return getData().getDimensionLoader().load(getDimensionKey());
} }
/** /**
* Find all files in this pack with the given extension * Find all files in this pack with the given extension
*
* @param fileExtension the extension * @param fileExtension the extension
* @return the list of files * @return the list of files
*/ */
@@ -314,8 +314,9 @@ public class IrisPack {
/** /**
* Create a pack from a repo * Create a pack from a repo
*
* @param sender the sender * @param sender the sender
* @param repo the repo * @param repo the repo
* @return the pack * @return the pack
* @throws MalformedURLException shit happens * @throws MalformedURLException shit happens
*/ */
@@ -329,6 +330,7 @@ public class IrisPack {
/** /**
* Create a blank pack with a given name * Create a blank pack with a given name
*
* @param name the name of the pack * @param name the name of the pack
* @return the pack * @return the pack
* @throws IrisException if the pack already exists or another error * @throws IrisException if the pack already exists or another error
@@ -336,8 +338,7 @@ public class IrisPack {
public static IrisPack blank(String name) throws IrisException { public static IrisPack blank(String name) throws IrisException {
File f = packsPack(name); File f = packsPack(name);
if(f.exists()) if (f.exists()) {
{
throw new IrisException("Already exists"); throw new IrisException("Already exists");
} }
@@ -345,7 +346,7 @@ public class IrisPack {
fd.getParentFile().mkdirs(); fd.getParentFile().mkdirs();
try { try {
IO.writeAll(fd, "{\n" + IO.writeAll(fd, "{\n" +
" \"name\": \""+Form.capitalize(name)+"\",\n" + " \"name\": \"" + Form.capitalize(name) + "\",\n" +
" \"version\": 1\n" + " \"version\": 1\n" +
"}\n"); "}\n");
} catch (IOException e) { } catch (IOException e) {
@@ -359,11 +360,11 @@ public class IrisPack {
/** /**
* Get a packs pack folder for a name. Such that overworld would resolve as Iris/packs/overworld * Get a packs pack folder for a name. Such that overworld would resolve as Iris/packs/overworld
*
* @param name the name * @param name the name
* @return the file path * @return the file path
*/ */
public static File packsPack(String name) public static File packsPack(String name) {
{
return Iris.instance.getDataFolderNoCreate(StudioSVC.WORKSPACE_NAME, name); return Iris.instance.getDataFolderNoCreate(StudioSVC.WORKSPACE_NAME, name);
} }

View File

@@ -51,7 +51,6 @@ public class IrisPackRepository {
private String tag = ""; private String tag = "";
/** /**
*
* @param g * @param g
* @return * @return
*/ */
@@ -127,10 +126,7 @@ public class IrisPackRepository {
e.printStackTrace(); e.printStackTrace();
} }
})).execute(sender, whenComplete); })).execute(sender, whenComplete);
} } else {
else
{
sender.sendMessage("Pack already exists!"); sender.sendMessage("Pack already exists!");
} }
} }

View File

@@ -28,7 +28,7 @@ import com.volmit.iris.util.plugin.IrisService;
public class CommandSVC implements IrisService, DecreeSystem { public class CommandSVC implements IrisService, DecreeSystem {
@Override @Override
public void onEnable() { public void onEnable() {
Iris.instance.getCommand("iris").setExecutor(this); Iris.instance.getCommand("iris").setExecutor(this);
} }
@Override @Override

View File

@@ -1,14 +1,15 @@
package com.volmit.iris.core.service; package com.volmit.iris.core.service;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.plugin.IrisService; import com.volmit.iris.util.plugin.IrisService;
import com.volmit.iris.util.scheduling.J; import com.volmit.iris.util.scheduling.J;
import lombok.Getter; import lombok.Getter;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
import org.bukkit.entity.Player;
import java.util.*; import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Iterator;
import java.util.Map;
public class ObjectSVC implements IrisService { public class ObjectSVC implements IrisService {

View File

@@ -22,9 +22,9 @@ import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException; import com.google.gson.JsonSyntaxException;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings; import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.loader.IrisData;
import com.volmit.iris.core.pack.IrisPack; import com.volmit.iris.core.pack.IrisPack;
import com.volmit.iris.core.project.IrisProject; import com.volmit.iris.core.project.IrisProject;
import com.volmit.iris.core.loader.IrisData;
import com.volmit.iris.core.tools.IrisToolbelt; import com.volmit.iris.core.tools.IrisToolbelt;
import com.volmit.iris.engine.data.cache.AtomicCache; import com.volmit.iris.engine.data.cache.AtomicCache;
import com.volmit.iris.engine.object.dimensional.IrisDimension; import com.volmit.iris.engine.object.dimensional.IrisDimension;
@@ -60,8 +60,7 @@ public class StudioSVC implements IrisService {
String pack = IrisSettings.get().getGenerator().getDefaultWorldType(); String pack = IrisSettings.get().getGenerator().getDefaultWorldType();
File f = IrisPack.packsPack(pack); File f = IrisPack.packsPack(pack);
if(!f.exists()) if (!f.exists()) {
{
Iris.info("Downloading Default Pack " + pack); Iris.info("Downloading Default Pack " + pack);
downloadSearch(Iris.getSender(), pack, false); downloadSearch(Iris.getSender(), pack, false);
} }
@@ -323,7 +322,8 @@ public class StudioSVC implements IrisService {
public void open(VolmitSender sender, long seed, String dimm) { public void open(VolmitSender sender, long seed, String dimm) {
try { try {
open(sender, seed, dimm, (w) -> {}); open(sender, seed, dimm, (w) -> {
});
} catch (Exception e) { } catch (Exception e) {
Iris.reportError(e); Iris.reportError(e);
sender.sendMessage("Error when creating studio world:"); sender.sendMessage("Error when creating studio world:");

View File

@@ -21,11 +21,11 @@ package com.volmit.iris.core.tools;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings; import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.gui.PregeneratorJob; import com.volmit.iris.core.gui.PregeneratorJob;
import com.volmit.iris.core.loader.IrisData;
import com.volmit.iris.core.pregenerator.PregenTask; import com.volmit.iris.core.pregenerator.PregenTask;
import com.volmit.iris.core.pregenerator.PregeneratorMethod; import com.volmit.iris.core.pregenerator.PregeneratorMethod;
import com.volmit.iris.core.pregenerator.methods.HeadlessPregenMethod; import com.volmit.iris.core.pregenerator.methods.HeadlessPregenMethod;
import com.volmit.iris.core.pregenerator.methods.HybridPregenMethod; import com.volmit.iris.core.pregenerator.methods.HybridPregenMethod;
import com.volmit.iris.core.loader.IrisData;
import com.volmit.iris.core.service.StudioSVC; import com.volmit.iris.core.service.StudioSVC;
import com.volmit.iris.engine.object.dimensional.IrisDimension; import com.volmit.iris.engine.object.dimensional.IrisDimension;
import com.volmit.iris.engine.platform.HeadlessGenerator; import com.volmit.iris.engine.platform.HeadlessGenerator;

View File

@@ -21,11 +21,9 @@ package com.volmit.iris.engine;
import com.google.common.util.concurrent.AtomicDouble; import com.google.common.util.concurrent.AtomicDouble;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.core.loader.IrisData; import com.volmit.iris.core.loader.IrisData;
import com.volmit.iris.engine.actuator.IrisTerrainNormalActuator;
import com.volmit.iris.engine.framework.Engine; import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.object.biome.InferredType; import com.volmit.iris.engine.object.biome.InferredType;
import com.volmit.iris.engine.object.biome.IrisBiome; import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.common.CaveResult;
import com.volmit.iris.engine.object.decoration.IrisDecorationPart; import com.volmit.iris.engine.object.decoration.IrisDecorationPart;
import com.volmit.iris.engine.object.decoration.IrisDecorator; import com.volmit.iris.engine.object.decoration.IrisDecorator;
import com.volmit.iris.engine.object.feature.IrisFeaturePositional; import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
@@ -44,7 +42,6 @@ import org.bukkit.Material;
import org.bukkit.block.Biome; import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
import java.util.List;
import java.util.UUID; import java.util.UUID;
@Data @Data

View File

@@ -415,7 +415,7 @@ public class IrisEngine implements Engine {
getBiomeActuator().actuate(x, z, vbiomes, multicore); getBiomeActuator().actuate(x, z, vbiomes, multicore);
getDecorantActuator().actuate(x, z, blocks, multicore); getDecorantActuator().actuate(x, z, blocks, multicore);
getDepositModifier().modify(x, z, blocks, multicore); getDepositModifier().modify(x, z, blocks, multicore);
getCaveModifier().modify(x >> 4,z >> 4, blocks, multicore); getCaveModifier().modify(x >> 4, z >> 4, blocks, multicore);
getPostModifier().modify(x, z, blocks, multicore); getPostModifier().modify(x, z, blocks, multicore);
getMantle().insertMatter(x >> 4, z >> 4, BlockData.class, blocks, multicore); getMantle().insertMatter(x >> 4, z >> 4, BlockData.class, blocks, multicore);
} }

View File

@@ -28,7 +28,6 @@ import com.volmit.iris.engine.mantle.components.MantleFeatureComponent;
import com.volmit.iris.engine.mantle.components.MantleJigsawComponent; import com.volmit.iris.engine.mantle.components.MantleJigsawComponent;
import com.volmit.iris.engine.mantle.components.MantleObjectComponent; import com.volmit.iris.engine.mantle.components.MantleObjectComponent;
import com.volmit.iris.engine.object.biome.IrisBiome; import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.carving.IrisCarving;
import com.volmit.iris.engine.object.deposits.IrisDepositGenerator; import com.volmit.iris.engine.object.deposits.IrisDepositGenerator;
import com.volmit.iris.engine.object.feature.IrisFeaturePotential; import com.volmit.iris.engine.object.feature.IrisFeaturePotential;
import com.volmit.iris.engine.object.jigsaw.IrisJigsawStructurePlacement; import com.volmit.iris.engine.object.jigsaw.IrisJigsawStructurePlacement;
@@ -316,13 +315,11 @@ public class IrisEngineMantle implements EngineMantle {
m = Math.max(m, getDimension().getCarving().getMaxRange(getData())); m = Math.max(m, getDimension().getCarving().getMaxRange(getData()));
for(IrisRegion i : getDimension().getAllRegions(getEngine())) for (IrisRegion i : getDimension().getAllRegions(getEngine())) {
{
m = Math.max(m, i.getCarving().getMaxRange(getData())); m = Math.max(m, i.getCarving().getMaxRange(getData()));
} }
for(IrisBiome i : getDimension().getAllBiomes(getEngine())) for (IrisBiome i : getDimension().getAllBiomes(getEngine())) {
{
m = Math.max(m, i.getCarving().getMaxRange(getData())); m = Math.max(m, i.getCarving().getMaxRange(getData()));
} }

View File

@@ -155,12 +155,9 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
for (Player i : getEngine().getWorld().realWorld().getPlayers()) { for (Player i : getEngine().getWorld().realWorld().getPlayers()) {
int r = 2; int r = 2;
Chunk c = i.getLocation().getChunk(); Chunk c = i.getLocation().getChunk();
for(int x = -r; x <= r; x++) for (int x = -r; x <= r; x++) {
{ for (int z = -r; z <= r; z++) {
for(int z = -r; z <= r; z++) if (c.getWorld().isChunkLoaded(c.getX() + x, c.getZ() + z)) {
{
if(c.getWorld().isChunkLoaded(c.getX() + x, c.getZ() + z))
{
getEngine().updateChunk(c.getWorld().getChunkAt(c.getX() + x, c.getZ() + z)); getEngine().updateChunk(c.getWorld().getChunkAt(c.getX() + x, c.getZ() + z));
} }
} }
@@ -381,9 +378,8 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
() -> J.a(() -> spawnIn(e, true), RNG.r.i(5, 200)))); () -> J.a(() -> spawnIn(e, true), RNG.r.i(5, 200))));
energy += 0.3; energy += 0.3;
fixEnergy(); fixEnergy();
if(!getMantle().hasFlag(e.getX(), e.getZ(), MantleFlag.UPDATE)) if (!getMantle().hasFlag(e.getX(), e.getZ(), MantleFlag.UPDATE)) {
{ J.a(() -> getEngine().updateChunk(e), 20);
J.a(() -> getEngine().updateChunk(e),20);
} }
} }

View File

@@ -32,7 +32,6 @@ import lombok.Getter;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
import java.util.function.BiPredicate;
import java.util.function.Predicate; import java.util.function.Predicate;
public class IrisDecorantActuator extends EngineAssignedActuator<BlockData> { public class IrisDecorantActuator extends EngineAssignedActuator<BlockData> {

View File

@@ -70,37 +70,27 @@ public class IrisCeilingDecorator extends IrisEngineDecorator {
decorator.getBlockDataForTop(biome, getRng(), realX, h, realZ, getData()) : decorator.getBlockDataForTop(biome, getRng(), realX, h, realZ, getData()) :
decorator.getBlockData100(biome, getRng(), realX, h, realZ, getData()); decorator.getBlockData100(biome, getRng(), realX, h, realZ, getData());
if(bd instanceof PointedDripstone) if (bd instanceof PointedDripstone) {
{
PointedDripstone.Thickness th = PointedDripstone.Thickness.BASE; PointedDripstone.Thickness th = PointedDripstone.Thickness.BASE;
if(stack == 2) if (stack == 2) {
{
th = PointedDripstone.Thickness.FRUSTUM; th = PointedDripstone.Thickness.FRUSTUM;
if(i == stack-1) if (i == stack - 1) {
{
th = PointedDripstone.Thickness.TIP; th = PointedDripstone.Thickness.TIP;
} }
} } else {
if (i == stack - 1) {
else
{
if(i == stack-1)
{
th = PointedDripstone.Thickness.TIP; th = PointedDripstone.Thickness.TIP;
} } else if (i == stack - 2) {
else if(i == stack-2)
{
th = PointedDripstone.Thickness.FRUSTUM; th = PointedDripstone.Thickness.FRUSTUM;
} }
} }
bd = Material.POINTED_DRIPSTONE.createBlockData(); bd = Material.POINTED_DRIPSTONE.createBlockData();
((PointedDripstone)bd).setThickness(th); ((PointedDripstone) bd).setThickness(th);
((PointedDripstone)bd).setVerticalDirection(BlockFace.DOWN); ((PointedDripstone) bd).setVerticalDirection(BlockFace.DOWN);
} }
data.set(x, h, z, bd); data.set(x, h, z, bd);

View File

@@ -27,7 +27,6 @@ import com.volmit.iris.engine.object.decoration.IrisDecorationPart;
import com.volmit.iris.engine.object.decoration.IrisDecorator; import com.volmit.iris.engine.object.decoration.IrisDecorator;
import com.volmit.iris.util.documentation.BlockCoordinates; import com.volmit.iris.util.documentation.BlockCoordinates;
import com.volmit.iris.util.hunk.Hunk; import com.volmit.iris.util.hunk.Hunk;
import net.minecraft.world.level.block.PointedDripstoneBlock;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.BlockFace; import org.bukkit.block.BlockFace;
import org.bukkit.block.data.Bisected; import org.bukkit.block.data.Bisected;
@@ -112,37 +111,27 @@ public class IrisSurfaceDecorator extends IrisEngineDecorator {
break; break;
} }
if(bd instanceof PointedDripstone) if (bd instanceof PointedDripstone) {
{
PointedDripstone.Thickness th = PointedDripstone.Thickness.BASE; PointedDripstone.Thickness th = PointedDripstone.Thickness.BASE;
if(stack == 2) if (stack == 2) {
{
th = PointedDripstone.Thickness.FRUSTUM; th = PointedDripstone.Thickness.FRUSTUM;
if(i == stack-1) if (i == stack - 1) {
{
th = PointedDripstone.Thickness.TIP; th = PointedDripstone.Thickness.TIP;
} }
} } else {
if (i == stack - 1) {
else
{
if(i == stack-1)
{
th = PointedDripstone.Thickness.TIP; th = PointedDripstone.Thickness.TIP;
} } else if (i == stack - 2) {
else if(i == stack-2)
{
th = PointedDripstone.Thickness.FRUSTUM; th = PointedDripstone.Thickness.FRUSTUM;
} }
} }
bd = Material.POINTED_DRIPSTONE.createBlockData(); bd = Material.POINTED_DRIPSTONE.createBlockData();
((PointedDripstone)bd).setThickness(th); ((PointedDripstone) bd).setThickness(th);
((PointedDripstone)bd).setVerticalDirection(BlockFace.UP); ((PointedDripstone) bd).setVerticalDirection(BlockFace.UP);
} }
data.set(x, height + 1 + i, z, bd); data.set(x, height + 1 + i, z, bd);

View File

@@ -46,7 +46,6 @@ import com.volmit.iris.util.data.B;
import com.volmit.iris.util.data.DataProvider; import com.volmit.iris.util.data.DataProvider;
import com.volmit.iris.util.documentation.BlockCoordinates; import com.volmit.iris.util.documentation.BlockCoordinates;
import com.volmit.iris.util.documentation.ChunkCoordinates; import com.volmit.iris.util.documentation.ChunkCoordinates;
import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.function.Function2; import com.volmit.iris.util.function.Function2;
import com.volmit.iris.util.hunk.Hunk; import com.volmit.iris.util.hunk.Hunk;
import com.volmit.iris.util.mantle.MantleFlag; import com.volmit.iris.util.mantle.MantleFlag;
@@ -55,7 +54,6 @@ import com.volmit.iris.util.math.M;
import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.matter.MatterCavern; import com.volmit.iris.util.matter.MatterCavern;
import com.volmit.iris.util.matter.MatterUpdate; import com.volmit.iris.util.matter.MatterUpdate;
import com.volmit.iris.util.matter.slices.UpdateMatter;
import com.volmit.iris.util.parallel.BurstExecutor; import com.volmit.iris.util.parallel.BurstExecutor;
import com.volmit.iris.util.parallel.MultiBurst; import com.volmit.iris.util.parallel.MultiBurst;
import com.volmit.iris.util.scheduling.ChronoLatch; import com.volmit.iris.util.scheduling.ChronoLatch;
@@ -63,20 +61,20 @@ import com.volmit.iris.util.scheduling.J;
import com.volmit.iris.util.scheduling.PrecisionStopwatch; import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import com.volmit.iris.util.stream.ProceduralStream; import com.volmit.iris.util.stream.ProceduralStream;
import io.papermc.lib.PaperLib; import io.papermc.lib.PaperLib;
import org.bukkit.*; import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Biome; import org.bukkit.block.Biome;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.craftbukkit.v1_17_R1.CraftWorld;
import org.bukkit.craftbukkit.v1_17_R1.block.CraftBlock;
import org.bukkit.generator.ChunkGenerator; import org.bukkit.generator.ChunkGenerator;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import java.awt.*; import java.awt.*;
import java.awt.Color;
import java.util.Arrays; import java.util.Arrays;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
@@ -235,28 +233,25 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
@ChunkCoordinates @ChunkCoordinates
@Override @Override
default void updateChunk(Chunk c) { default void updateChunk(Chunk c) {
if(c.getWorld().isChunkLoaded(c.getX() + 1, c.getZ() + 1) if (c.getWorld().isChunkLoaded(c.getX() + 1, c.getZ() + 1)
&& c.getWorld().isChunkLoaded(c.getX(), c.getZ() + 1) && c.getWorld().isChunkLoaded(c.getX(), c.getZ() + 1)
&& c.getWorld().isChunkLoaded(c.getX() + 1, c.getZ()) && c.getWorld().isChunkLoaded(c.getX() + 1, c.getZ())
&& c.getWorld().isChunkLoaded(c.getX() - 1, c.getZ() - 1) && c.getWorld().isChunkLoaded(c.getX() - 1, c.getZ() - 1)
&& c.getWorld().isChunkLoaded(c.getX(), c.getZ() - 1) && c.getWorld().isChunkLoaded(c.getX(), c.getZ() - 1)
&& c.getWorld().isChunkLoaded(c.getX() - 1, c.getZ()) && c.getWorld().isChunkLoaded(c.getX() - 1, c.getZ())
&& c.getWorld().isChunkLoaded(c.getX() + 1, c.getZ() - 1) && c.getWorld().isChunkLoaded(c.getX() + 1, c.getZ() - 1)
&& c.getWorld().isChunkLoaded(c.getX() - 1, c.getZ() + 1)) && c.getWorld().isChunkLoaded(c.getX() - 1, c.getZ() + 1)) {
{
getMantle().getMantle().raiseFlag(c.getX(), c.getZ(), MantleFlag.UPDATE, () -> J.s(() -> { getMantle().getMantle().raiseFlag(c.getX(), c.getZ(), MantleFlag.UPDATE, () -> J.s(() -> {
PrecisionStopwatch p = PrecisionStopwatch.start(); PrecisionStopwatch p = PrecisionStopwatch.start();
KMap<Long, Integer> updates = new KMap<>(); KMap<Long, Integer> updates = new KMap<>();
RNG r = new RNG(Cache.key(c.getX(), c.getZ())); RNG r = new RNG(Cache.key(c.getX(), c.getZ()));
getMantle().getMantle().iterateChunk(c.getX(), c.getZ(), MatterCavern.class, (x, y, z, v) -> { getMantle().getMantle().iterateChunk(c.getX(), c.getZ(), MatterCavern.class, (x, y, z, v) -> {
if(B.isAir(c.getBlock(x & 15, y, z & 15).getBlockData())) if (B.isAir(c.getBlock(x & 15, y, z & 15).getBlockData())) {
{
return; return;
} }
updates.compute(Cache.key(x & 15, z & 15), (k,vv) -> { updates.compute(Cache.key(x & 15, z & 15), (k, vv) -> {
if(vv != null) if (vv != null) {
{
return Math.max(vv, y); return Math.max(vv, y);
} }
@@ -264,7 +259,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
}); });
}); });
updates.forEach((k,v) -> update(Cache.keyX(k), v, Cache.keyZ(k), c, r)); updates.forEach((k, v) -> update(Cache.keyX(k), v, Cache.keyZ(k), c, r));
getMantle().getMantle().iterateChunk(c.getX(), c.getZ(), MatterUpdate.class, (x, y, z, v) -> { getMantle().getMantle().iterateChunk(c.getX(), c.getZ(), MatterUpdate.class, (x, y, z, v) -> {
if (v != null && v.isUpdate()) { if (v != null && v.isUpdate()) {
int vx = x & 15; int vx = x & 15;
@@ -322,10 +317,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
Iris.reportError(e); Iris.reportError(e);
} }
} }
} } else {
else
{
block.setType(Material.AIR, false); block.setType(Material.AIR, false);
block.setBlockData(data, true); block.setBlockData(data, true);
} }

View File

@@ -84,8 +84,7 @@ public interface EngineMantle extends IObjectPlacer {
return getComplex().getTrueHeightStream().get(x, z); return getComplex().getTrueHeightStream().get(x, z);
} }
default boolean isCarved(int x, int h, int z) default boolean isCarved(int x, int h, int z) {
{
return getMantle().get(x, h, z, MatterCavern.class) != null; return getMantle().get(x, h, z, MatterCavern.class) != null;
} }
@@ -248,8 +247,7 @@ public interface EngineMantle extends IObjectPlacer {
default void dropCavernBlock(int x, int y, int z) { default void dropCavernBlock(int x, int y, int z) {
Matter matter = getMantle().getChunk(x & 15, z & 15).get(y & 15); Matter matter = getMantle().getChunk(x & 15, z & 15).get(y & 15);
if(matter != null) if (matter != null) {
{
matter.slice(MatterCavern.class).set(x & 15, y & 15, z & 15, null); matter.slice(MatterCavern.class).set(x & 15, y & 15, z & 15, null);
} }
} }

View File

@@ -26,22 +26,16 @@ import com.volmit.iris.engine.object.basic.IrisPosition;
import com.volmit.iris.engine.object.common.IObjectPlacer; import com.volmit.iris.engine.object.common.IObjectPlacer;
import com.volmit.iris.engine.object.feature.IrisFeaturePositional; import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
import com.volmit.iris.engine.object.tile.TileData; import com.volmit.iris.engine.object.tile.TileData;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KMap; import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.collection.KSet; import com.volmit.iris.util.collection.KSet;
import com.volmit.iris.util.mantle.Mantle; import com.volmit.iris.util.mantle.Mantle;
import com.volmit.iris.util.mantle.MantleChunk; import com.volmit.iris.util.mantle.MantleChunk;
import com.volmit.iris.util.math.INode;
import com.volmit.iris.util.math.KochanekBartelsInterpolation;
import com.volmit.iris.util.math.M;
import com.volmit.iris.util.math.PathInterpolation;
import com.volmit.iris.util.matter.Matter; import com.volmit.iris.util.matter.Matter;
import lombok.Data; import lombok.Data;
import org.bukkit.block.TileState; import org.bukkit.block.TileState;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;
import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@@ -150,6 +144,7 @@ public class MantleWriter implements IObjectPlacer {
public void setTile(int xx, int yy, int zz, TileData<? extends TileState> tile) { public void setTile(int xx, int yy, int zz, TileData<? extends TileState> tile) {
getEngineMantle().setTile(xx, yy, zz, tile); getEngineMantle().setTile(xx, yy, zz, tile);
} }
/** /**
* Set a sphere into the mantle * Set a sphere into the mantle
* *
@@ -534,8 +529,7 @@ public class MantleWriter implements IObjectPlacer {
return isWithin(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ()); return isWithin(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ());
} }
public boolean isWithin(int x, int y, int z) public boolean isWithin(int x, int y, int z) {
{
int cx = x >> 4; int cx = x >> 4;
int cz = z >> 4; int cz = z >> 4;
@@ -543,11 +537,7 @@ public class MantleWriter implements IObjectPlacer {
return false; return false;
} }
if (cx >= this.x - radius && cx <= this.x + radius return cx >= this.x - radius && cx <= this.x + radius
&& cz >= this.z - radius && cz <= this.z + radius) { && cz >= this.z - radius && cz <= this.z + radius;
return true;
}
return false;
} }
} }

View File

@@ -24,10 +24,7 @@ import com.volmit.iris.engine.mantle.IrisMantleComponent;
import com.volmit.iris.engine.mantle.MantleWriter; import com.volmit.iris.engine.mantle.MantleWriter;
import com.volmit.iris.engine.object.biome.IrisBiome; import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.carving.IrisCarving; import com.volmit.iris.engine.object.carving.IrisCarving;
import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
import com.volmit.iris.engine.object.feature.IrisFeaturePotential;
import com.volmit.iris.engine.object.regional.IrisRegion; import com.volmit.iris.engine.object.regional.IrisRegion;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.documentation.ChunkCoordinates; import com.volmit.iris.util.documentation.ChunkCoordinates;
import com.volmit.iris.util.mantle.MantleFlag; import com.volmit.iris.util.mantle.MantleFlag;
import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.math.RNG;

View File

@@ -64,8 +64,7 @@ public class MantleFeatureComponent extends IrisMantleComponent {
} }
private void placeZone(MantleWriter writer, RNG rng, int cx, int cz, IrisFeaturePotential i) { private void placeZone(MantleWriter writer, RNG rng, int cx, int cz, IrisFeaturePotential i) {
if(i.hasZone(rng, cx, cz)) if (i.hasZone(rng, cx, cz)) {
{
int x = (cx << 4) + rng.nextInt(16); int x = (cx << 4) + rng.nextInt(16);
int z = (cz << 4) + rng.nextInt(16); int z = (cz << 4) + rng.nextInt(16);
writer.setData(x, 0, z, new IrisFeaturePositional(x, z, i.getZone())); writer.setData(x, 0, z, new IrisFeaturePositional(x, z, i.getZone()));

View File

@@ -18,7 +18,6 @@
package com.volmit.iris.engine.modifier; package com.volmit.iris.engine.modifier;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.IrisEngine; import com.volmit.iris.engine.IrisEngine;
import com.volmit.iris.engine.actuator.IrisDecorantActuator; import com.volmit.iris.engine.actuator.IrisDecorantActuator;
import com.volmit.iris.engine.data.cache.Cache; import com.volmit.iris.engine.data.cache.Cache;
@@ -32,14 +31,11 @@ import com.volmit.iris.engine.object.decoration.IrisDecorator;
import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KMap; import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.data.B; import com.volmit.iris.util.data.B;
import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.hunk.Hunk; import com.volmit.iris.util.hunk.Hunk;
import com.volmit.iris.util.mantle.Mantle; import com.volmit.iris.util.mantle.Mantle;
import com.volmit.iris.util.mantle.MantleChunk; import com.volmit.iris.util.mantle.MantleChunk;
import com.volmit.iris.util.math.M;
import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.matter.MatterCavern; import com.volmit.iris.util.matter.MatterCavern;
import com.volmit.iris.util.scheduling.J;
import com.volmit.iris.util.scheduling.PrecisionStopwatch; import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import lombok.Data; import lombok.Data;
import org.bukkit.Material; import org.bukkit.Material;
@@ -66,8 +62,7 @@ public class IrisCarveModifier extends EngineAssignedModifier<BlockData> {
KMap<IrisPosition, MatterCavern> walls = new KMap<>(); KMap<IrisPosition, MatterCavern> walls = new KMap<>();
mc.iterate(MatterCavern.class, (xx, yy, zz, c) -> { mc.iterate(MatterCavern.class, (xx, yy, zz, c) -> {
if(yy > 256 || yy < 0) if (yy > 256 || yy < 0) {
{
return; return;
} }
@@ -75,27 +70,29 @@ public class IrisCarveModifier extends EngineAssignedModifier<BlockData> {
int rz = zz & 15; int rz = zz & 15;
BlockData current = output.get(rx, yy, rz); BlockData current = output.get(rx, yy, rz);
if(B.isFluid(current)) if (B.isFluid(current)) {
{
return; return;
} }
positions.compute(Cache.key(rx, rz), (k,v) -> Objects.requireNonNullElseGet(v, (Supplier<KList<Integer>>) KList::new).qadd(yy)); positions.compute(Cache.key(rx, rz), (k, v) -> Objects.requireNonNullElseGet(v, (Supplier<KList<Integer>>) KList::new).qadd(yy));
if(rz < 15 && mantle.get(xx, yy, zz + 1, MatterCavern.class) == null) if (rz < 15 && mantle.get(xx, yy, zz + 1, MatterCavern.class) == null) {
{walls.put(new IrisPosition(rx, yy, rz + 1), c);} walls.put(new IrisPosition(rx, yy, rz + 1), c);
}
if(rx < 15 && mantle.get(xx + 1, yy, zz, MatterCavern.class) == null) if (rx < 15 && mantle.get(xx + 1, yy, zz, MatterCavern.class) == null) {
{walls.put(new IrisPosition(rx + 1, yy, rz), c);} walls.put(new IrisPosition(rx + 1, yy, rz), c);
}
if(rz > 0 && mantle.get(xx, yy, zz - 1, MatterCavern.class) == null) if (rz > 0 && mantle.get(xx, yy, zz - 1, MatterCavern.class) == null) {
{walls.put(new IrisPosition(rx, yy, rz - 1), c);} walls.put(new IrisPosition(rx, yy, rz - 1), c);
}
if(rx > 0 && mantle.get(xx - 1, yy, zz, MatterCavern.class) == null) if (rx > 0 && mantle.get(xx - 1, yy, zz, MatterCavern.class) == null) {
{walls.put(new IrisPosition(rx - 1, yy, rz), c);} walls.put(new IrisPosition(rx - 1, yy, rz), c);
}
if(current.getMaterial().isAir()) if (current.getMaterial().isAir()) {
{
return; return;
} }
@@ -107,20 +104,18 @@ public class IrisCarveModifier extends EngineAssignedModifier<BlockData> {
? getEngine().getCaveBiome(i.getX() + (x << 4), i.getZ() + (z << 4)) ? getEngine().getCaveBiome(i.getX() + (x << 4), i.getZ() + (z << 4))
: getEngine().getData().getBiomeLoader().load(v.getCustomBiome()); : getEngine().getData().getBiomeLoader().load(v.getCustomBiome());
if(biome != null) if (biome != null) {
{
biome.setInferredType(InferredType.CAVE); biome.setInferredType(InferredType.CAVE);
BlockData d = biome.getWall().get(rng, i.getX() + (x << 4), i.getY(), i.getZ() + (z << 4), getData()); BlockData d = biome.getWall().get(rng, i.getX() + (x << 4), i.getY(), i.getZ() + (z << 4), getData());
if(d != null && B.isSolid(output.get(i.getX(), i.getY(), i.getZ()))) { if (d != null && B.isSolid(output.get(i.getX(), i.getY(), i.getZ()))) {
output.set(i.getX(), i.getY(), i.getZ(), d); output.set(i.getX(), i.getY(), i.getZ(), d);
} }
} }
}); });
positions.forEach((k, v) -> { positions.forEach((k, v) -> {
if(v.isEmpty()) if (v.isEmpty()) {
{
return; return;
} }
@@ -131,19 +126,15 @@ public class IrisCarveModifier extends EngineAssignedModifier<BlockData> {
zone.setFloor(v.get(0)); zone.setFloor(v.get(0));
int buf = v.get(0) - 1; int buf = v.get(0) - 1;
for(Integer i : v) { for (Integer i : v) {
if (i < 0 || i > 255) { if (i < 0 || i > 255) {
continue; continue;
} }
if (i == buf + 1) if (i == buf + 1) {
{
buf = i; buf = i;
zone.ceiling = buf; zone.ceiling = buf;
} } else if (zone.isValid()) {
else if(zone.isValid())
{
processZone(output, mc, zone, rx, rz, rx + (x << 4), rz + (z << 4)); processZone(output, mc, zone, rx, rz, rx + (x << 4), rz + (z << 4));
zone = new CaveZone(); zone = new CaveZone();
zone.setFloor(i); zone.setFloor(i);
@@ -151,8 +142,7 @@ public class IrisCarveModifier extends EngineAssignedModifier<BlockData> {
} }
} }
if(zone.isValid()) if (zone.isValid()) {
{
processZone(output, mc, zone, rx, rz, rx + (x << 4), rz + (z << 4)); processZone(output, mc, zone, rx, rz, rx + (x << 4), rz + (z << 4));
} }
}); });
@@ -167,13 +157,11 @@ public class IrisCarveModifier extends EngineAssignedModifier<BlockData> {
int thickness = zone.airThickness(); int thickness = zone.airThickness();
String customBiome = ""; String customBiome = "";
for(int i = zone.floor; i <= zone.ceiling; i++) for (int i = zone.floor; i <= zone.ceiling; i++) {
{
MatterCavern cavernData = (MatterCavern) mc.getOrCreate(i >> 4).slice(MatterCavern.class) MatterCavern cavernData = (MatterCavern) mc.getOrCreate(i >> 4).slice(MatterCavern.class)
.get(rx, i & 15, rz); .get(rx, i & 15, rz);
if(cavernData != null && !cavernData.getCustomBiome().isEmpty()) if (cavernData != null && !cavernData.getCustomBiome().isEmpty()) {
{
customBiome = cavernData.getCustomBiome(); customBiome = cavernData.getCustomBiome();
break; break;
} }
@@ -183,38 +171,33 @@ public class IrisCarveModifier extends EngineAssignedModifier<BlockData> {
? getEngine().getCaveBiome(xx, zz) ? getEngine().getCaveBiome(xx, zz)
: getEngine().getData().getBiomeLoader().load(customBiome); : getEngine().getData().getBiomeLoader().load(customBiome);
if(biome == null) if (biome == null) {
{
return; return;
} }
biome.setInferredType(InferredType.CAVE); biome.setInferredType(InferredType.CAVE);
IrisDecorantActuator actuator = (IrisDecorantActuator) ((IrisEngine)getEngine()).getDecorantActuator(); IrisDecorantActuator actuator = (IrisDecorantActuator) ((IrisEngine) getEngine()).getDecorantActuator();
for(IrisDecorator i : biome.getDecorators()) { for (IrisDecorator i : biome.getDecorators()) {
if (i.getPartOf().equals(IrisDecorationPart.NONE) && B.isSolid(output.get(rx, zone.getFloor()-1, rz))) { if (i.getPartOf().equals(IrisDecorationPart.NONE) && B.isSolid(output.get(rx, zone.getFloor() - 1, rz))) {
actuator.getSurfaceDecorator().decorate(rx, rz, xx, xx, xx, zz, zz, zz, output, biome, zone.getFloor() - 1, zone.airThickness()); actuator.getSurfaceDecorator().decorate(rx, rz, xx, xx, xx, zz, zz, zz, output, biome, zone.getFloor() - 1, zone.airThickness());
} else if (i.getPartOf().equals(IrisDecorationPart.CEILING) && B.isSolid(output.get(rx, zone.getCeiling()+1, rz))) { } else if (i.getPartOf().equals(IrisDecorationPart.CEILING) && B.isSolid(output.get(rx, zone.getCeiling() + 1, rz))) {
actuator.getCeilingDecorator().decorate(rx, rz, xx, xx, xx, zz, zz, zz, output, biome, zone.getCeiling(), zone.airThickness()); actuator.getCeilingDecorator().decorate(rx, rz, xx, xx, xx, zz, zz, zz, output, biome, zone.getCeiling(), zone.airThickness());
} }
} }
KList<BlockData> blocks = biome.generateLayers(getDimension(), xx, zz, rng, 3, zone.floor, getData(), getComplex()); KList<BlockData> blocks = biome.generateLayers(getDimension(), xx, zz, rng, 3, zone.floor, getData(), getComplex());
for(int i = 0; i < zone.floor-1; i++) for (int i = 0; i < zone.floor - 1; i++) {
{ if (!blocks.hasIndex(i)) {
if(!blocks.hasIndex(i))
{
break; break;
} }
if(!B.isSolid(output.get(rx, zone.floor - i - 1, rz))) if (!B.isSolid(output.get(rx, zone.floor - i - 1, rz))) {
{
continue; continue;
} }
if(B.isOre(output.get(rx, zone.floor - i - 1, rz))) if (B.isOre(output.get(rx, zone.floor - i - 1, rz))) {
{
continue; continue;
} }
@@ -223,45 +206,37 @@ public class IrisCarveModifier extends EngineAssignedModifier<BlockData> {
blocks = biome.generateCeilingLayers(getDimension(), xx, zz, rng, 3, zone.ceiling, getData(), getComplex()); blocks = biome.generateCeilingLayers(getDimension(), xx, zz, rng, 3, zone.ceiling, getData(), getComplex());
for(int i = 0; i < zone.ceiling+1; i++) for (int i = 0; i < zone.ceiling + 1; i++) {
{ if (!blocks.hasIndex(i)) {
if(!blocks.hasIndex(i))
{
break; break;
} }
if(!B.isSolid(output.get(rx, zone.ceiling + i + 1, rz))) if (!B.isSolid(output.get(rx, zone.ceiling + i + 1, rz))) {
{
continue; continue;
} }
if(B.isOre(output.get(rx, zone.ceiling + i + 1, rz))) if (B.isOre(output.get(rx, zone.ceiling + i + 1, rz))) {
{
continue; continue;
} }
output.set(rx, zone.ceiling + i + 1, rz, blocks.get(i)); output.set(rx, zone.ceiling + i + 1, rz, blocks.get(i));
} }
} }
@Data @Data
public static class CaveZone public static class CaveZone {
{
private int ceiling = -1; private int ceiling = -1;
private int floor = -1; private int floor = -1;
public int airThickness() public int airThickness() {
{
return (ceiling - floor) - 1; return (ceiling - floor) - 1;
} }
public boolean isValid() public boolean isValid() {
{
return floor < ceiling && ceiling - floor >= 1 && floor >= 0 && ceiling <= 255 && airThickness() > 0; return floor < ceiling && ceiling - floor >= 1 && floor >= 0 && ceiling <= 255 && airThickness() > 0;
} }
public String toString() public String toString() {
{
return floor + "-" + ceiling; return floor + "-" + ceiling;
} }
} }

View File

@@ -18,11 +18,9 @@
package com.volmit.iris.engine.modifier; package com.volmit.iris.engine.modifier;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.framework.Engine; import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.EngineAssignedModifier; import com.volmit.iris.engine.framework.EngineAssignedModifier;
import com.volmit.iris.engine.object.biome.IrisBiome; import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.common.CaveResult;
import com.volmit.iris.util.data.B; import com.volmit.iris.util.data.B;
import com.volmit.iris.util.hunk.Hunk; import com.volmit.iris.util.hunk.Hunk;
import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.math.RNG;

View File

@@ -82,7 +82,7 @@ public class IrisPosition {
} }
public boolean isLongerThan(IrisPosition s, int maxLength) { public boolean isLongerThan(IrisPosition s, int maxLength) {
return Math.abs(Math.pow(s.x - x,2) + Math.pow(s.y - y,2) + Math.pow(s.z - z,2)) > maxLength * maxLength; return Math.abs(Math.pow(s.x - x, 2) + Math.pow(s.y - y, 2) + Math.pow(s.z - z, 2)) > maxLength * maxLength;
} }
public Vector toVector() { public Vector toVector() {

View File

@@ -59,50 +59,37 @@ public class IrisCarving {
@BlockCoordinates @BlockCoordinates
public void doCarving(MantleWriter writer, RNG rng, Engine engine, int x, int y, int z) { public void doCarving(MantleWriter writer, RNG rng, Engine engine, int x, int y, int z) {
if(caves.isNotEmpty()) if (caves.isNotEmpty()) {
{ for (IrisCavePlacer i : caves) {
for(IrisCavePlacer i : caves)
{
i.generateCave(writer, rng, engine, x, y, z); i.generateCave(writer, rng, engine, x, y, z);
} }
} }
if(ravines.isNotEmpty()) if (ravines.isNotEmpty()) {
{ for (IrisRavinePlacer i : ravines) {
for(IrisRavinePlacer i : ravines)
{
i.generateRavine(writer, rng, engine, x, y, z); i.generateRavine(writer, rng, engine, x, y, z);
} }
} }
if(spheres.isNotEmpty()) if (spheres.isNotEmpty()) {
{ for (IrisSphere i : spheres) {
for(IrisSphere i : spheres) if (rng.nextInt(i.getRarity()) == 0) {
{
if(rng.nextInt(i.getRarity()) == 0)
{
i.generate(rng, engine, writer, x, y, z); i.generate(rng, engine, writer, x, y, z);
} }
} }
} }
if(elipsoids.isNotEmpty()) if (elipsoids.isNotEmpty()) {
{ for (IrisElipsoid i : elipsoids) {
for(IrisElipsoid i : elipsoids) if (rng.nextInt(i.getRarity()) == 0) {
{
if(rng.nextInt(i.getRarity()) == 0)
{
i.generate(rng, engine, writer, x, y, z); i.generate(rng, engine, writer, x, y, z);
} }
} }
} }
if(pyramids.isNotEmpty()) if (pyramids.isNotEmpty()) {
{ for (IrisPyramid i : pyramids) {
for(IrisPyramid i : pyramids) if (rng.nextInt(i.getRarity()) == 0) {
{
if(rng.nextInt(i.getRarity()) == 0)
{
i.generate(rng, engine, writer, x, y, z); i.generate(rng, engine, writer, x, y, z);
} }
} }
@@ -112,23 +99,19 @@ public class IrisCarving {
public int getMaxRange(IrisData data) { public int getMaxRange(IrisData data) {
int max = 0; int max = 0;
for(IrisCavePlacer i : caves) for (IrisCavePlacer i : caves) {
{
max = Math.max(max, i.getSize(data)); max = Math.max(max, i.getSize(data));
} }
if(elipsoids.isNotEmpty()) if (elipsoids.isNotEmpty()) {
{
max = (int) Math.max(elipsoids.stream().mapToDouble(IrisElipsoid::maxSize).max().getAsDouble(), max); max = (int) Math.max(elipsoids.stream().mapToDouble(IrisElipsoid::maxSize).max().getAsDouble(), max);
} }
if(spheres.isNotEmpty()) if (spheres.isNotEmpty()) {
{
max = (int) Math.max(spheres.stream().mapToDouble(IrisSphere::maxSize).max().getAsDouble(), max); max = (int) Math.max(spheres.stream().mapToDouble(IrisSphere::maxSize).max().getAsDouble(), max);
} }
if(pyramids.isNotEmpty()) if (pyramids.isNotEmpty()) {
{
max = (int) Math.max(pyramids.stream().mapToDouble(IrisPyramid::maxSize).max().getAsDouble(), max); max = (int) Math.max(pyramids.stream().mapToDouble(IrisPyramid::maxSize).max().getAsDouble(), max);
} }

View File

@@ -18,7 +18,6 @@
package com.volmit.iris.engine.object.carving; package com.volmit.iris.engine.object.carving;
import com.volmit.iris.Iris;
import com.volmit.iris.core.loader.IrisData; import com.volmit.iris.core.loader.IrisData;
import com.volmit.iris.core.loader.IrisRegistrant; import com.volmit.iris.core.loader.IrisRegistrant;
import com.volmit.iris.engine.data.cache.AtomicCache; import com.volmit.iris.engine.data.cache.AtomicCache;
@@ -26,14 +25,9 @@ import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.mantle.MantleWriter; import com.volmit.iris.engine.mantle.MantleWriter;
import com.volmit.iris.engine.object.annotations.Desc; import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.annotations.RegistryListResource; import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.basic.IrisPosition;
import com.volmit.iris.engine.object.basic.IrisRange; import com.volmit.iris.engine.object.basic.IrisRange;
import com.volmit.iris.engine.object.biome.IrisBiome; import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.block.IrisBlockData;
import com.volmit.iris.engine.object.noise.IrisWorm; import com.volmit.iris.engine.object.noise.IrisWorm;
import com.volmit.iris.engine.object.objects.IrisObjectLimit;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.data.B;
import com.volmit.iris.util.json.JSONObject; import com.volmit.iris.util.json.JSONObject;
import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.matter.MatterCavern; import com.volmit.iris.util.matter.MatterCavern;
@@ -44,9 +38,6 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import org.bukkit.block.data.BlockData;
import java.util.List;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Accessors(chain = true) @Accessors(chain = true)
@@ -83,9 +74,9 @@ public class IrisCave extends IrisRegistrant {
public void generate(MantleWriter writer, RNG rng, Engine engine, int x, int y, int z) { public void generate(MantleWriter writer, RNG rng, Engine engine, int x, int y, int z) {
writer.setLine(getWorm().generate(rng, engine.getData(), writer, verticalRange, x, y, z, writer.setLine(getWorm().generate(rng, engine.getData(), writer, verticalRange, x, y, z,
(at) -> fork.doCarving(writer, rng, engine, at.getX(), at.getY(), at.getZ())), (at) -> fork.doCarving(writer, rng, engine, at.getX(), at.getY(), at.getZ())),
getWorm().getGirth().get(rng, x, z, engine.getData()), true, getWorm().getGirth().get(rng, x, z, engine.getData()), true,
matterNodeCache.aquire(() -> CavernMatter.get(getCustomBiome()))); matterNodeCache.aquire(() -> CavernMatter.get(getCustomBiome())));
} }
@Override @Override

View File

@@ -74,8 +74,7 @@ public class IrisCavePlacer implements IRare {
return; return;
} }
if(rng.nextInt(rarity) != 0) if (rng.nextInt(rarity) != 0) {
{
return; return;
} }
@@ -88,20 +87,15 @@ public class IrisCavePlacer implements IRare {
return; return;
} }
if(y == -1) if (y == -1) {
{ int h = (int) caveStartHeight.get(rng, x, z, data);
int h = (int) caveStartHeight.get(rng,x, z,data); int ma = breakSurface ? h : (int) (engine.getComplex().getHeightStream().get(x, z) - 9);
int ma = breakSurface ? h : (int) (engine.getComplex().getHeightStream().get(x, z) - 9);
y = Math.min(h, ma); y = Math.min(h, ma);
} }
try try {
{
cave.generate(mantle, rng, engine, x + rng.nextInt(15), y, z + rng.nextInt(15)); cave.generate(mantle, rng, engine, x + rng.nextInt(15), y, z + rng.nextInt(15));
} } catch (Throwable e) {
catch(Throwable e)
{
e.printStackTrace(); e.printStackTrace();
fail.set(true); fail.set(true);
} }

View File

@@ -26,7 +26,6 @@ import com.volmit.iris.engine.object.annotations.MinNumber;
import com.volmit.iris.engine.object.annotations.RegistryListResource; import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required; import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.engine.object.biome.IrisBiome; import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.block.IrisBlockData;
import com.volmit.iris.engine.object.common.IRare; import com.volmit.iris.engine.object.common.IRare;
import com.volmit.iris.engine.object.noise.IrisGeneratorStyle; import com.volmit.iris.engine.object.noise.IrisGeneratorStyle;
import com.volmit.iris.engine.object.noise.IrisStyledRange; import com.volmit.iris.engine.object.noise.IrisStyledRange;
@@ -38,8 +37,7 @@ import lombok.Data;
@Desc("Represents an procedural eliptical shape") @Desc("Represents an procedural eliptical shape")
@Data @Data
public class IrisElipsoid implements IRare public class IrisElipsoid implements IRare {
{
@Required @Required
@Desc("Typically a 1 in RARITY on a per fork basis") @Desc("Typically a 1 in RARITY on a per fork basis")
@MinNumber(1) @MinNumber(1)
@@ -60,8 +58,7 @@ public class IrisElipsoid implements IRare
private transient final AtomicCache<MatterCavern> matterNodeCache = new AtomicCache<>(); private transient final AtomicCache<MatterCavern> matterNodeCache = new AtomicCache<>();
@SuppressWarnings("SuspiciousNameCombination") @SuppressWarnings("SuspiciousNameCombination")
public void generate(RNG rng, Engine engine, MantleWriter writer, int x, int y, int z) public void generate(RNG rng, Engine engine, MantleWriter writer, int x, int y, int z) {
{
writer.setElipsoid(x, y, z, writer.setElipsoid(x, y, z,
xRadius.get(rng, z, y, engine.getData()), xRadius.get(rng, z, y, engine.getData()),
yRadius.get(rng, x, z, engine.getData()), yRadius.get(rng, x, z, engine.getData()),

View File

@@ -26,7 +26,6 @@ import com.volmit.iris.engine.object.annotations.MinNumber;
import com.volmit.iris.engine.object.annotations.RegistryListResource; import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required; import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.engine.object.biome.IrisBiome; import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.block.IrisBlockData;
import com.volmit.iris.engine.object.common.IRare; import com.volmit.iris.engine.object.common.IRare;
import com.volmit.iris.engine.object.noise.IrisGeneratorStyle; import com.volmit.iris.engine.object.noise.IrisGeneratorStyle;
import com.volmit.iris.engine.object.noise.IrisStyledRange; import com.volmit.iris.engine.object.noise.IrisStyledRange;
@@ -38,8 +37,7 @@ import lombok.Data;
@Desc("Represents an procedural eliptical shape") @Desc("Represents an procedural eliptical shape")
@Data @Data
public class IrisPyramid implements IRare public class IrisPyramid implements IRare {
{
@Required @Required
@Desc("Typically a 1 in RARITY on a per fork basis") @Desc("Typically a 1 in RARITY on a per fork basis")
@MinNumber(1) @MinNumber(1)
@@ -53,10 +51,10 @@ public class IrisPyramid implements IRare
private IrisStyledRange baseWidth = new IrisStyledRange(1, 5, new IrisGeneratorStyle(NoiseStyle.STATIC)); private IrisStyledRange baseWidth = new IrisStyledRange(1, 5, new IrisGeneratorStyle(NoiseStyle.STATIC));
private transient final AtomicCache<MatterCavern> matterNodeCache = new AtomicCache<>(); private transient final AtomicCache<MatterCavern> matterNodeCache = new AtomicCache<>();
public void generate(RNG rng, Engine engine, MantleWriter writer, int x, int y, int z)
{ public void generate(RNG rng, Engine engine, MantleWriter writer, int x, int y, int z) {
writer.setPyramid(x, y, z, matterNodeCache.aquire(() -> CavernMatter.get(getCustomBiome())), writer.setPyramid(x, y, z, matterNodeCache.aquire(() -> CavernMatter.get(getCustomBiome())),
(int)baseWidth.get(rng, z, y, engine.getData()), true); (int) baseWidth.get(rng, z, y, engine.getData()), true);
} }
public double maxSize() { public double maxSize() {

View File

@@ -18,7 +18,6 @@
package com.volmit.iris.engine.object.carving; package com.volmit.iris.engine.object.carving;
import com.volmit.iris.Iris;
import com.volmit.iris.core.loader.IrisData; import com.volmit.iris.core.loader.IrisData;
import com.volmit.iris.core.loader.IrisRegistrant; import com.volmit.iris.core.loader.IrisRegistrant;
import com.volmit.iris.engine.data.cache.AtomicCache; import com.volmit.iris.engine.data.cache.AtomicCache;
@@ -29,7 +28,6 @@ import com.volmit.iris.engine.object.annotations.MaxNumber;
import com.volmit.iris.engine.object.annotations.MinNumber; import com.volmit.iris.engine.object.annotations.MinNumber;
import com.volmit.iris.engine.object.annotations.RegistryListResource; import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.basic.IrisPosition; import com.volmit.iris.engine.object.basic.IrisPosition;
import com.volmit.iris.engine.object.basic.IrisRange;
import com.volmit.iris.engine.object.biome.IrisBiome; import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.noise.IrisShapedGeneratorStyle; import com.volmit.iris.engine.object.noise.IrisShapedGeneratorStyle;
import com.volmit.iris.engine.object.noise.IrisWorm; import com.volmit.iris.engine.object.noise.IrisWorm;
@@ -89,6 +87,7 @@ public class IrisRavine extends IrisRegistrant {
private double ribThickness = 3; private double ribThickness = 3;
private transient final AtomicCache<MatterCavern> matterNodeCache = new AtomicCache<>(); private transient final AtomicCache<MatterCavern> matterNodeCache = new AtomicCache<>();
@Override @Override
public String getFolderName() { public String getFolderName() {
return "ravines"; return "ravines";
@@ -101,36 +100,32 @@ public class IrisRavine extends IrisRegistrant {
public void generate(MantleWriter writer, RNG rng, Engine engine, int x, int y, int z) { public void generate(MantleWriter writer, RNG rng, Engine engine, int x, int y, int z) {
KList<IrisPosition> pos = getWorm().generate(rng, engine.getData(), writer, null, x, y, z, (at) -> {}); KList<IrisPosition> pos = getWorm().generate(rng, engine.getData(), writer, null, x, y, z, (at) -> {
});
CNG dg = depthStyle.getGenerator().createNoCache(rng, engine.getData()); CNG dg = depthStyle.getGenerator().createNoCache(rng, engine.getData());
CNG bw = baseWidthStyle.getGenerator().createNoCache(rng, engine.getData()); CNG bw = baseWidthStyle.getGenerator().createNoCache(rng, engine.getData());
if(pos.size() < nodeThreshold) if (pos.size() < nodeThreshold) {
{
return; return;
} }
for(IrisPosition p : pos) for (IrisPosition p : pos) {
{
int rsurface = y == -1 ? engine.getComplex().getHeightStream().get(x, z).intValue() : y; int rsurface = y == -1 ? engine.getComplex().getHeightStream().get(x, z).intValue() : y;
int depth = (int) Math.round(dg.fitDouble(depthStyle.getMin(), depthStyle.getMax(), p.getX(), p.getZ())); int depth = (int) Math.round(dg.fitDouble(depthStyle.getMin(), depthStyle.getMax(), p.getX(), p.getZ()));
int width = (int) Math.round(bw.fitDouble(baseWidthStyle.getMin(), baseWidthStyle.getMax(), p.getX(), p.getZ())); int width = (int) Math.round(bw.fitDouble(baseWidthStyle.getMin(), baseWidthStyle.getMax(), p.getX(), p.getZ()));
int surface = (int) Math.round(rsurface - depth * 0.45); int surface = (int) Math.round(rsurface - depth * 0.45);
fork.doCarving(writer, rng, engine, p.getX(), rng.i(surface-depth, surface), p.getZ()); fork.doCarving(writer, rng, engine, p.getX(), rng.i(surface - depth, surface), p.getZ());
for(int i = surface + depth; i >= surface; i--) for (int i = surface + depth; i >= surface; i--) {
{ if (i % ribThickness == 0) {
if(i % ribThickness == 0) {
double v = width + ((((surface + depth) - i) * (angle / 360D))); double v = width + ((((surface + depth) - i) * (angle / 360D)));
if(v <= 0.25) if (v <= 0.25) {
{
break; break;
} }
if(i <= ribThickness+2) if (i <= ribThickness + 2) {
{
break; break;
} }
@@ -138,18 +133,15 @@ public class IrisRavine extends IrisRegistrant {
} }
} }
for(int i = surface - depth; i <= surface; i++) for (int i = surface - depth; i <= surface; i++) {
{ if (i % ribThickness == 0) {
if(i % ribThickness == 0) {
double v = width - ((((surface - depth) - i) * (angle / 360D))); double v = width - ((((surface - depth) - i) * (angle / 360D)));
if(v <= 0.25) if (v <= 0.25) {
{
break; break;
} }
if(i <= ribThickness+2) if (i <= ribThickness + 2) {
{
break; break;
} }

View File

@@ -28,9 +28,6 @@ import com.volmit.iris.engine.object.annotations.MinNumber;
import com.volmit.iris.engine.object.annotations.RegistryListResource; import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required; import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.engine.object.common.IRare; import com.volmit.iris.engine.object.common.IRare;
import com.volmit.iris.engine.object.noise.IrisGeneratorStyle;
import com.volmit.iris.engine.object.noise.IrisStyledRange;
import com.volmit.iris.engine.object.noise.NoiseStyle;
import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.math.RNG;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@@ -68,8 +65,7 @@ public class IrisRavinePlacer implements IRare {
return; return;
} }
if(rng.nextInt(rarity) != 0) if (rng.nextInt(rarity) != 0) {
{
return; return;
} }
@@ -82,15 +78,11 @@ public class IrisRavinePlacer implements IRare {
return; return;
} }
try try {
{
int xx = x + rng.nextInt(15); int xx = x + rng.nextInt(15);
int zz = z + rng.nextInt(15); int zz = z + rng.nextInt(15);
ravine.generate(mantle, rng, engine, xx, y, zz); ravine.generate(mantle, rng, engine, xx, y, zz);
} } catch (Throwable e) {
catch(Throwable e)
{
e.printStackTrace(); e.printStackTrace();
fail.set(true); fail.set(true);
} }

View File

@@ -26,7 +26,6 @@ import com.volmit.iris.engine.object.annotations.MinNumber;
import com.volmit.iris.engine.object.annotations.RegistryListResource; import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required; import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.engine.object.biome.IrisBiome; import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.block.IrisBlockData;
import com.volmit.iris.engine.object.common.IRare; import com.volmit.iris.engine.object.common.IRare;
import com.volmit.iris.engine.object.noise.IrisGeneratorStyle; import com.volmit.iris.engine.object.noise.IrisGeneratorStyle;
import com.volmit.iris.engine.object.noise.IrisStyledRange; import com.volmit.iris.engine.object.noise.IrisStyledRange;
@@ -38,8 +37,7 @@ import lombok.Data;
@Desc("Represents an procedural eliptical shape") @Desc("Represents an procedural eliptical shape")
@Data @Data
public class IrisSphere implements IRare public class IrisSphere implements IRare {
{
@Required @Required
@Desc("Typically a 1 in RARITY on a per fork basis") @Desc("Typically a 1 in RARITY on a per fork basis")
@MinNumber(1) @MinNumber(1)
@@ -53,9 +51,9 @@ public class IrisSphere implements IRare
private IrisStyledRange radius = new IrisStyledRange(1, 5, new IrisGeneratorStyle(NoiseStyle.STATIC)); private IrisStyledRange radius = new IrisStyledRange(1, 5, new IrisGeneratorStyle(NoiseStyle.STATIC));
private transient final AtomicCache<MatterCavern> matterNodeCache = new AtomicCache<>(); private transient final AtomicCache<MatterCavern> matterNodeCache = new AtomicCache<>();
public void generate(RNG rng, Engine engine, MantleWriter writer, int x, int y, int z)
{ public void generate(RNG rng, Engine engine, MantleWriter writer, int x, int y, int z) {
writer.setSphere(x, y, z, radius.get(rng, z, y, engine.getData()),true, matterNodeCache.aquire(() -> CavernMatter.get(getCustomBiome()))); writer.setSphere(x, y, z, radius.get(rng, z, y, engine.getData()), true, matterNodeCache.aquire(() -> CavernMatter.get(getCustomBiome())));
} }
public double maxSize() { public double maxSize() {

View File

@@ -27,7 +27,6 @@ import com.volmit.iris.engine.object.annotations.MinNumber;
import com.volmit.iris.engine.object.annotations.RegistryListResource; import com.volmit.iris.engine.object.annotations.RegistryListResource;
import com.volmit.iris.engine.object.annotations.Required; import com.volmit.iris.engine.object.annotations.Required;
import com.volmit.iris.engine.object.biome.IrisBiome; import com.volmit.iris.engine.object.biome.IrisBiome;
import com.volmit.iris.engine.object.common.CaveResult;
import com.volmit.iris.engine.object.common.IRare; import com.volmit.iris.engine.object.common.IRare;
import com.volmit.iris.engine.object.spawners.IrisSpawner; import com.volmit.iris.engine.object.spawners.IrisSpawner;
import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KList;
@@ -87,7 +86,7 @@ public class IrisEntitySpawn implements IRare {
IrisComplex comp = gen.getComplex(); IrisComplex comp = gen.getComplex();
IrisBiome cave = comp.getCaveBiomeStream().get(x, z); IrisBiome cave = comp.getCaveBiomeStream().get(x, z);
KList<Location> r = new KList<>(); KList<Location> r = new KList<>();
r.add( new Location(c.getWorld(), x, hf + 1, z)); // TODO CAVE HEIGHT r.add(new Location(c.getWorld(), x, hf + 1, z)); // TODO CAVE HEIGHT
yield r.getRandom(rng); yield r.getRandom(rng);
} }

View File

@@ -75,8 +75,7 @@ public class IrisGeneratorStyle {
return this; return this;
} }
public CNG createNoCache(RNG rng, IrisData data) public CNG createNoCache(RNG rng, IrisData data) {
{
if (getExpression() != null) { if (getExpression() != null) {
IrisExpression e = data.getExpressionLoader().load(getExpression()); IrisExpression e = data.getExpressionLoader().load(getExpression());

View File

@@ -18,16 +18,13 @@
package com.volmit.iris.engine.object.noise; package com.volmit.iris.engine.object.noise;
import com.volmit.iris.Iris;
import com.volmit.iris.core.loader.IrisData; import com.volmit.iris.core.loader.IrisData;
import com.volmit.iris.engine.data.cache.AtomicCache;
import com.volmit.iris.engine.mantle.MantleWriter; import com.volmit.iris.engine.mantle.MantleWriter;
import com.volmit.iris.engine.object.annotations.Desc; import com.volmit.iris.engine.object.annotations.Desc;
import com.volmit.iris.engine.object.basic.IrisPosition; import com.volmit.iris.engine.object.basic.IrisPosition;
import com.volmit.iris.engine.object.basic.IrisRange; import com.volmit.iris.engine.object.basic.IrisRange;
import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KSet; import com.volmit.iris.util.collection.KSet;
import com.volmit.iris.util.function.NoiseProvider;
import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.noise.CNG; import com.volmit.iris.util.noise.CNG;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@@ -65,8 +62,7 @@ public class IrisWorm {
private IrisStyledRange girth = new IrisStyledRange().setMin(3).setMax(5) private IrisStyledRange girth = new IrisStyledRange().setMin(3).setMax(5)
.setStyle(new IrisGeneratorStyle(NoiseStyle.PERLIN)); .setStyle(new IrisGeneratorStyle(NoiseStyle.PERLIN));
public KList<IrisPosition> generate(RNG rng, IrisData data, MantleWriter writer, IrisRange verticalRange, int x, int y, int z, Consumer<IrisPosition> fork) public KList<IrisPosition> generate(RNG rng, IrisData data, MantleWriter writer, IrisRange verticalRange, int x, int y, int z, Consumer<IrisPosition> fork) {
{
int itr = maxIterations; int itr = maxIterations;
double jx, jy, jz; double jx, jy, jz;
double cx = x; double cx = x;
@@ -79,14 +75,12 @@ public class IrisWorm {
CNG gy = xStyle.getGenerator().createNoCache(new RNG(rng.lmax()), data); CNG gy = xStyle.getGenerator().createNoCache(new RNG(rng.lmax()), data);
CNG gz = xStyle.getGenerator().createNoCache(new RNG(rng.lmax()), data); CNG gz = xStyle.getGenerator().createNoCache(new RNG(rng.lmax()), data);
while(itr-- > 0) while (itr-- > 0) {
{
IrisPosition current = new IrisPosition(Math.round(cx), Math.round(cy), Math.round(cz)); IrisPosition current = new IrisPosition(Math.round(cx), Math.round(cy), Math.round(cz));
fork.accept(current); fork.accept(current);
pos.add(current); pos.add(current);
if(check != null) if (check != null) {
{
check.add(current); check.add(current);
} }
@@ -98,23 +92,19 @@ public class IrisWorm {
cz += jz; cz += jz;
IrisPosition next = new IrisPosition(Math.round(cx), Math.round(cy), Math.round(cz)); IrisPosition next = new IrisPosition(Math.round(cx), Math.round(cy), Math.round(cz));
if(verticalRange != null && !verticalRange.contains(next.getY())) if (verticalRange != null && !verticalRange.contains(next.getY())) {
{
break; break;
} }
if(!writer.isWithin((int)Math.round(cx), verticalRange != null ? (int)Math.round(cy) : 5, (int)Math.round(cz))) if (!writer.isWithin((int) Math.round(cx), verticalRange != null ? (int) Math.round(cy) : 5, (int) Math.round(cz))) {
{
break; break;
} }
if(next.isLongerThan(start, maxDistance)) if (next.isLongerThan(start, maxDistance)) {
{
break; break;
} }
if(check != null && check.contains(next)) if (check != null && check.contains(next)) {
{
break; break;
} }
} }

View File

@@ -464,8 +464,7 @@ public class IrisObject extends IrisRegistrant {
if (yv < 0) { if (yv < 0) {
if (config.getMode().equals(ObjectPlaceMode.CENTER_HEIGHT)) { if (config.getMode().equals(ObjectPlaceMode.CENTER_HEIGHT)) {
y = (c != null ? c.getSurface() : placer.getHighest(x, z, getLoader(), config.isUnderwater())) + rty; y = (c != null ? c.getSurface() : placer.getHighest(x, z, getLoader(), config.isUnderwater())) + rty;
if(placer.isCarved(x, y, z) || placer.isCarved(x, y-1, z)) if (placer.isCarved(x, y, z) || placer.isCarved(x, y - 1, z)) {
{
bail = true; bail = true;
} }
} else if (config.getMode().equals(ObjectPlaceMode.MAX_HEIGHT) || config.getMode().equals(ObjectPlaceMode.STILT)) { } else if (config.getMode().equals(ObjectPlaceMode.MAX_HEIGHT) || config.getMode().equals(ObjectPlaceMode.STILT)) {
@@ -476,8 +475,7 @@ public class IrisObject extends IrisRegistrant {
for (int j = z - (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j <= z + (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j++) { for (int j = z - (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j <= z + (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j++) {
int h = placer.getHighest(i, j, getLoader(), config.isUnderwater()) + rty; int h = placer.getHighest(i, j, getLoader(), config.isUnderwater()) + rty;
if(placer.isCarved(i, h, j)) if (placer.isCarved(i, h, j)) {
{
bail = true; bail = true;
break; break;
} }
@@ -495,8 +493,7 @@ public class IrisObject extends IrisRegistrant {
for (int j = z - (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j <= z + (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j += (rotatedDimensions.getBlockZ() / 2) + 1) { for (int j = z - (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j <= z + (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j += (rotatedDimensions.getBlockZ() / 2) + 1) {
int h = placer.getHighest(i, j, getLoader(), config.isUnderwater()) + rty; int h = placer.getHighest(i, j, getLoader(), config.isUnderwater()) + rty;
if(placer.isCarved(i, h, j)) if (placer.isCarved(i, h, j)) {
{
bail = true; bail = true;
break; break;
} }
@@ -514,8 +511,7 @@ public class IrisObject extends IrisRegistrant {
for (int i = x - (rotatedDimensions.getBlockX() / 2) + offset.getBlockX(); i <= x + (rotatedDimensions.getBlockX() / 2) + offset.getBlockX(); i++) { for (int i = x - (rotatedDimensions.getBlockX() / 2) + offset.getBlockX(); i <= x + (rotatedDimensions.getBlockX() / 2) + offset.getBlockX(); i++) {
for (int j = z - (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j <= z + (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j++) { for (int j = z - (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j <= z + (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j++) {
int h = placer.getHighest(i, j, getLoader(), config.isUnderwater()) + rty; int h = placer.getHighest(i, j, getLoader(), config.isUnderwater()) + rty;
if(placer.isCarved(i, h, j)) if (placer.isCarved(i, h, j)) {
{
bail = true; bail = true;
break; break;
} }
@@ -532,8 +528,7 @@ public class IrisObject extends IrisRegistrant {
for (int i = x - (rotatedDimensions.getBlockX() / 2) + offset.getBlockX(); i <= x + (rotatedDimensions.getBlockX() / 2) + offset.getBlockX(); i += (rotatedDimensions.getBlockX() / 2) + 1) { for (int i = x - (rotatedDimensions.getBlockX() / 2) + offset.getBlockX(); i <= x + (rotatedDimensions.getBlockX() / 2) + offset.getBlockX(); i += (rotatedDimensions.getBlockX() / 2) + 1) {
for (int j = z - (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j <= z + (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j += (rotatedDimensions.getBlockZ() / 2) + 1) { for (int j = z - (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j <= z + (rotatedDimensions.getBlockZ() / 2) + offset.getBlockZ(); j += (rotatedDimensions.getBlockZ() / 2) + 1) {
int h = placer.getHighest(i, j, getLoader(), config.isUnderwater()) + rty; int h = placer.getHighest(i, j, getLoader(), config.isUnderwater()) + rty;
if(placer.isCarved(i, h, j)) if (placer.isCarved(i, h, j)) {
{
bail = true; bail = true;
break; break;
} }
@@ -544,15 +539,13 @@ public class IrisObject extends IrisRegistrant {
} }
} else if (config.getMode().equals(ObjectPlaceMode.PAINT)) { } else if (config.getMode().equals(ObjectPlaceMode.PAINT)) {
y = placer.getHighest(x, z, getLoader(), config.isUnderwater()) + rty; y = placer.getHighest(x, z, getLoader(), config.isUnderwater()) + rty;
if(placer.isCarved(x, y, z)) if (placer.isCarved(x, y, z)) {
{
bail = true; bail = true;
} }
} }
} else { } else {
y = yv; y = yv;
if(placer.isCarved(x, y, z)) if (placer.isCarved(x, y, z)) {
{
bail = true; bail = true;
} }
} }
@@ -562,8 +555,7 @@ public class IrisObject extends IrisRegistrant {
bail = placer.isCarved(x, y, z); bail = placer.isCarved(x, y, z);
} }
if(bail) if (bail) {
{
return -1; return -1;
} }

View File

@@ -441,7 +441,7 @@ public class B {
return isLit(mat) return isLit(mat)
|| isStorage(mat) || isStorage(mat)
|| (mat instanceof PointedDripstone || (mat instanceof PointedDripstone
&& ((PointedDripstone)mat).getThickness().equals(PointedDripstone.Thickness.TIP)); && ((PointedDripstone) mat).getThickness().equals(PointedDripstone.Thickness.TIP));
} }
public static boolean isFoliage(Material d) { public static boolean isFoliage(Material d) {
@@ -525,6 +525,6 @@ public class B {
} }
public static boolean isWaterLogged(BlockData b) { public static boolean isWaterLogged(BlockData b) {
return (b instanceof Waterlogged) && ((Waterlogged)b).isWaterlogged(); return (b instanceof Waterlogged) && ((Waterlogged) b).isWaterlogged();
} }
} }

View File

@@ -52,13 +52,13 @@ public class DecreeNode {
for (Parameter i : method.getParameters()) { for (Parameter i : method.getParameters()) {
DecreeParameter p = new DecreeParameter(i); DecreeParameter p = new DecreeParameter(i);
if (p.isRequired()){ if (p.isRequired()) {
required.add(p); required.add(p);
} else { } else {
optional.add(p); optional.add(p);
} }
} }
required.addAll(optional); required.addAll(optional);
return required; return required;

View File

@@ -60,8 +60,7 @@ public interface DecreeSystem extends CommandExecutor, TabCompleter {
@Override @Override
default boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { default boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
if(!sender.hasPermission("iris.all")) if (!sender.hasPermission("iris.all")) {
{
sender.sendMessage("You lack the Permission 'iris.all'"); sender.sendMessage("You lack the Permission 'iris.all'");
} }

View File

@@ -25,7 +25,6 @@ import com.volmit.iris.util.decree.DecreeSystem;
import com.volmit.iris.util.decree.exceptions.DecreeParsingException; import com.volmit.iris.util.decree.exceptions.DecreeParsingException;
import com.volmit.iris.util.decree.exceptions.DecreeWhichException; import com.volmit.iris.util.decree.exceptions.DecreeWhichException;
import com.volmit.iris.util.format.Form; import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.plugin.VolmitSender;
import org.bukkit.FluidCollisionMode; import org.bukkit.FluidCollisionMode;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.util.BlockVector; import org.bukkit.util.BlockVector;

View File

@@ -30,7 +30,7 @@ public class WorldHandler implements DecreeParameterHandler<World> {
public KList<World> getPossibilities() { public KList<World> getPossibilities() {
KList<World> options = new KList<>(); KList<World> options = new KList<>();
for (World world : Bukkit.getWorlds()) { for (World world : Bukkit.getWorlds()) {
if (!world.getName().toLowerCase().startsWith("iris/")){ if (!world.getName().toLowerCase().startsWith("iris/")) {
options.add(world); options.add(world);
} }
} }

View File

@@ -18,12 +18,10 @@
package com.volmit.iris.util.mantle; package com.volmit.iris.util.mantle;
import com.google.common.collect.ImmutableList;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.engine.data.cache.Cache; import com.volmit.iris.engine.data.cache.Cache;
import com.volmit.iris.engine.mantle.EngineMantle; import com.volmit.iris.engine.mantle.EngineMantle;
import com.volmit.iris.engine.mantle.MantleWriter; import com.volmit.iris.engine.mantle.MantleWriter;
import com.volmit.iris.engine.object.basic.IrisPosition;
import com.volmit.iris.engine.object.feature.IrisFeaturePositional; import com.volmit.iris.engine.object.feature.IrisFeaturePositional;
import com.volmit.iris.util.collection.KMap; import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.collection.KSet; import com.volmit.iris.util.collection.KSet;
@@ -33,21 +31,16 @@ import com.volmit.iris.util.documentation.RegionCoordinates;
import com.volmit.iris.util.format.C; import com.volmit.iris.util.format.C;
import com.volmit.iris.util.format.Form; import com.volmit.iris.util.format.Form;
import com.volmit.iris.util.function.Consumer4; import com.volmit.iris.util.function.Consumer4;
import com.volmit.iris.util.math.INode;
import com.volmit.iris.util.math.KochanekBartelsInterpolation;
import com.volmit.iris.util.math.M; import com.volmit.iris.util.math.M;
import com.volmit.iris.util.math.PathInterpolation;
import com.volmit.iris.util.matter.Matter; import com.volmit.iris.util.matter.Matter;
import com.volmit.iris.util.matter.MatterCavern;
import com.volmit.iris.util.parallel.BurstExecutor; import com.volmit.iris.util.parallel.BurstExecutor;
import com.volmit.iris.util.parallel.HyperLock; import com.volmit.iris.util.parallel.HyperLock;
import com.volmit.iris.util.parallel.MultiBurst; import com.volmit.iris.util.parallel.MultiBurst;
import org.bukkit.Chunk; import org.bukkit.Chunk;
import org.bukkit.util.Vector;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.*; import java.util.Map;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future; import java.util.concurrent.Future;

View File

@@ -243,11 +243,9 @@ public class MantleChunk {
} }
public void deleteSlices(Class<?> c) { public void deleteSlices(Class<?> c) {
for(int i = 0; i < sections.length(); i++) for (int i = 0; i < sections.length(); i++) {
{
Matter m = sections.get(i); Matter m = sections.get(i);
if(m != null && m.hasSlice(c)) if (m != null && m.hasSlice(c)) {
{
m.deleteSlice(c); m.deleteSlice(c);
} }
} }

View File

@@ -20,8 +20,6 @@ package com.volmit.iris.util.matter.slices;
import com.volmit.iris.util.matter.MatterCavern; import com.volmit.iris.util.matter.MatterCavern;
import com.volmit.iris.util.matter.Sliced; import com.volmit.iris.util.matter.Sliced;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
@@ -32,10 +30,8 @@ public class CavernMatter extends RawMatter<MatterCavern> {
public static final MatterCavern ON = new MatterCavern(true, ""); public static final MatterCavern ON = new MatterCavern(true, "");
public static final MatterCavern OFF = new MatterCavern(false, ""); public static final MatterCavern OFF = new MatterCavern(false, "");
public static MatterCavern get(String customBiome) public static MatterCavern get(String customBiome) {
{ if (customBiome.isEmpty()) {
if(customBiome.isEmpty())
{
return ON; return ON;
} }

View File

@@ -20,8 +20,6 @@ package com.volmit.iris.util.matter.slices;
import com.volmit.iris.util.matter.MatterUpdate; import com.volmit.iris.util.matter.MatterUpdate;
import com.volmit.iris.util.matter.Sliced; import com.volmit.iris.util.matter.Sliced;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;

View File

@@ -388,8 +388,7 @@ public class CNG {
return noise(dim); return noise(dim);
} }
public double noiseSym(double... dim) public double noiseSym(double... dim) {
{
return (noise(dim) * 2) - 1; return (noise(dim) * 2) - 1;
} }

View File

@@ -43,7 +43,6 @@ import org.bukkit.permissions.PermissionAttachmentInfo;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import java.time.Duration; import java.time.Duration;
import java.util.Comparator;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
@@ -439,7 +438,7 @@ public class VolmitSender implements CommandSender {
String usage = "<#bbe03f>✒ <#a8e0a2><font:minecraft:uniform>"; String usage = "<#bbe03f>✒ <#a8e0a2><font:minecraft:uniform>";
String onClick; String onClick;
if (i.isNode()) { if (i.isNode()) {
if (i.getNode().getParameters().isEmpty()){ if (i.getNode().getParameters().isEmpty()) {
usage += "There are no parameters. Click to run."; usage += "There are no parameters. Click to run.";
onClick = "run_command"; onClick = "run_command";
} else { } else {
@@ -461,7 +460,7 @@ public class VolmitSender implements CommandSender {
/// Params /// Params
StringBuilder nodes = new StringBuilder(); StringBuilder nodes = new StringBuilder();
if (i.isNode()){ if (i.isNode()) {
for (DecreeParameter p : i.getNode().getParameters()) { for (DecreeParameter p : i.getNode().getParameters()) {
String nTitle = "<gradient:#d665f0:#a37feb>" + p.getName(); String nTitle = "<gradient:#d665f0:#a37feb>" + p.getName();
@@ -469,19 +468,19 @@ public class VolmitSender implements CommandSender {
String nDescription = "<#3fe05a>✎ <#6ad97d><font:minecraft:uniform>" + p.getDescription(); String nDescription = "<#3fe05a>✎ <#6ad97d><font:minecraft:uniform>" + p.getDescription();
String nUsage; String nUsage;
String context = ""; String context = "";
if (p.isRequired()){ if (p.isRequired()) {
nUsage = "<#db4321>⚠ <#faa796><font:minecraft:uniform>This parameter is required."; nUsage = "<#db4321>⚠ <#faa796><font:minecraft:uniform>This parameter is required.";
} else if (p.hasDefault()) { } else if (p.hasDefault()) {
nUsage = "<#2181db>✔ <#78dcf0><font:minecraft:uniform>Defaults to \""+ p.getParam().defaultValue()+"\" if undefined."; nUsage = "<#2181db>✔ <#78dcf0><font:minecraft:uniform>Defaults to \"" + p.getParam().defaultValue() + "\" if undefined.";
} else { } else {
nUsage = "<#a73abd>✔ <#78dcf0><font:minecraft:uniform>This parameter is optional."; nUsage = "<#a73abd>✔ <#78dcf0><font:minecraft:uniform>This parameter is optional.";
} }
if (p.isContextual()){ if (p.isContextual()) {
context = "<#ff9900>➱ <#ffcc00><font:minecraft:uniform>The value may be derived from environment context" + newline; context = "<#ff9900>➱ <#ffcc00><font:minecraft:uniform>The value may be derived from environment context" + newline;
} }
String type = "<#cc00ff>✢ <#ff33cc><font:minecraft:uniform>This parameter is of type " + p.getType().getSimpleName(); String type = "<#cc00ff>✢ <#ff33cc><font:minecraft:uniform>This parameter is of type " + p.getType().getSimpleName();
String fullTitle; String fullTitle;
if (p.isRequired()){ if (p.isRequired()) {
fullTitle = "<red>[" + nTitle + "<red>] "; fullTitle = "<red>[" + nTitle + "<red>] ";
} else { } else {
fullTitle = "<#4f4f4f>⊰" + nTitle + "<#4f4f4f>⊱"; fullTitle = "<#4f4f4f>⊰" + nTitle + "<#4f4f4f>⊱";
@@ -505,20 +504,20 @@ public class VolmitSender implements CommandSender {
/// Wrapper /// Wrapper
String wrapper = String wrapper =
"<hover:show_text:'" + "<hover:show_text:'" +
hoverTitle + newline + hoverTitle + newline +
description + newline + description + newline +
usage + usage +
suggestion + //Newlines for suggestions are added when they're built, to prevent blanklines. suggestion + //Newlines for suggestions are added when they're built, to prevent blanklines.
suggestions + // ^ suggestions + // ^
"'>" + "'>" +
"<click:" + "<click:" +
onClick + onClick +
":" + ":" +
realText + realText +
"</click>" + "</click>" +
"</hover>" + "</hover>" +
" " + " " +
nodes; nodes;
sendMessageRaw(wrapper); sendMessageRaw(wrapper);
} else { } else {

View File

@@ -50,7 +50,8 @@ public interface Job {
default void execute(VolmitSender sender) { default void execute(VolmitSender sender) {
execute(sender, () -> {}); execute(sender, () -> {
});
} }
default void execute(VolmitSender sender, Runnable whenComplete) { default void execute(VolmitSender sender, Runnable whenComplete) {