Instant changes

This commit is contained in:
Daniel Mills 2020-09-09 00:29:22 -04:00
parent 1d11585fcd
commit 8ffe6fa8fb
36 changed files with 298 additions and 65 deletions

11
pom.xml
View File

@ -152,6 +152,10 @@
<id>CodeMC</id> <id>CodeMC</id>
<url>https://repo.codemc.org/repository/maven-public</url> <url>https://repo.codemc.org/repository/maven-public</url>
</repository> </repository>
<repository>
<id>WorldEdit</id>
<url>https://maven.enginehub.org/repo/</url>
</repository>
</repositories> </repositories>
<dependencies> <dependencies>
<!-- Spigot API --> <!-- Spigot API -->
@ -186,6 +190,13 @@
<version>1.14.4</version> <version>1.14.4</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<!-- Hooks -->
<dependency>
<groupId>com.sk89q.worldedit</groupId>
<artifactId>worldedit-bukkit</artifactId>
<version>7.2.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<!-- Utilities --> <!-- Utilities -->
<dependency> <dependency>
<groupId>org.bstats</groupId> <groupId>org.bstats</groupId>

View File

@ -1,21 +0,0 @@
package com.volmit.iris;
import org.bukkit.generator.ChunkGenerator.BiomeGrid;
import org.bukkit.generator.ChunkGenerator.ChunkData;
import com.volmit.iris.util.ChunkPosition;
import lombok.Data;
@Data
public class GeneratedChunk
{
private ChunkPosition pos;
private ChunkData data;
private BiomeGrid grid;
public GeneratedChunk(ChunkPosition pos)
{
this.pos = pos;
}
}

View File

@ -23,6 +23,13 @@ import com.volmit.iris.gen.provisions.ProvisionBukkit;
import com.volmit.iris.gen.scaffold.IrisGenConfiguration; import com.volmit.iris.gen.scaffold.IrisGenConfiguration;
import com.volmit.iris.gen.scaffold.TerrainTarget; import com.volmit.iris.gen.scaffold.TerrainTarget;
import com.volmit.iris.link.MultiverseCoreLink; import com.volmit.iris.link.MultiverseCoreLink;
import com.volmit.iris.manager.EditManager;
import com.volmit.iris.manager.IrisBoardManager;
import com.volmit.iris.manager.IrisDataManager;
import com.volmit.iris.manager.IrisHotloadManager;
import com.volmit.iris.manager.ProjectManager;
import com.volmit.iris.manager.StructureManager;
import com.volmit.iris.manager.WandManager;
import com.volmit.iris.util.C; import com.volmit.iris.util.C;
import com.volmit.iris.util.Form; import com.volmit.iris.util.Form;
import com.volmit.iris.util.GroupedExecutor; import com.volmit.iris.util.GroupedExecutor;
@ -44,6 +51,7 @@ public class Iris extends MortarPlugin
public static IrisHotloadManager hotloader; public static IrisHotloadManager hotloader;
public static WandManager wand; public static WandManager wand;
public static StructureManager struct; public static StructureManager struct;
public static EditManager edit;
public static IrisBoardManager board; public static IrisBoardManager board;
public static String nmsTag = findNMSTag(); public static String nmsTag = findNMSTag();
public static MultiverseCoreLink linkMultiverseCore; public static MultiverseCoreLink linkMultiverseCore;
@ -141,6 +149,7 @@ public class Iris extends MortarPlugin
proj = new ProjectManager(); proj = new ProjectManager();
board = new IrisBoardManager(); board = new IrisBoardManager();
linkMultiverseCore = new MultiverseCoreLink(); linkMultiverseCore = new MultiverseCoreLink();
edit = new EditManager();
J.a(() -> IO.delete(getTemp())); J.a(() -> IO.delete(getTemp()));
J.a(() -> bstats()); J.a(() -> bstats());
J.s(this::splash, 20); J.s(this::splash, 20);

View File

@ -11,13 +11,13 @@ import org.zeroturnaround.zip.ZipUtil;
import org.zeroturnaround.zip.commons.FileUtils; import org.zeroturnaround.zip.commons.FileUtils;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.IrisDataManager;
import com.volmit.iris.IrisSettings; import com.volmit.iris.IrisSettings;
import com.volmit.iris.gen.IrisTerrainProvider; import com.volmit.iris.gen.IrisTerrainProvider;
import com.volmit.iris.gen.nms.NMSCreator; import com.volmit.iris.gen.nms.NMSCreator;
import com.volmit.iris.gen.provisions.ProvisionBukkit; import com.volmit.iris.gen.provisions.ProvisionBukkit;
import com.volmit.iris.gen.scaffold.IrisGenConfiguration; import com.volmit.iris.gen.scaffold.IrisGenConfiguration;
import com.volmit.iris.gen.scaffold.TerrainTarget; import com.volmit.iris.gen.scaffold.TerrainTarget;
import com.volmit.iris.manager.IrisDataManager;
import com.volmit.iris.object.IrisDimension; import com.volmit.iris.object.IrisDimension;
import com.volmit.iris.util.Form; import com.volmit.iris.util.Form;
import com.volmit.iris.util.IO; import com.volmit.iris.util.IO;

View File

@ -4,9 +4,9 @@ import org.bukkit.World;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.IrisMetrics;
import com.volmit.iris.gen.IrisTerrainProvider; import com.volmit.iris.gen.IrisTerrainProvider;
import com.volmit.iris.gen.provisions.ProvisionBukkit; import com.volmit.iris.gen.provisions.ProvisionBukkit;
import com.volmit.iris.gen.scaffold.IrisMetrics;
import com.volmit.iris.util.C; import com.volmit.iris.util.C;
import com.volmit.iris.util.Form; import com.volmit.iris.util.Form;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;

View File

@ -6,7 +6,7 @@ import org.bukkit.entity.Player;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings; import com.volmit.iris.IrisSettings;
import com.volmit.iris.WandManager; import com.volmit.iris.manager.WandManager;
import com.volmit.iris.util.Cuboid; import com.volmit.iris.util.Cuboid;
import com.volmit.iris.util.Direction; import com.volmit.iris.util.Direction;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;

View File

@ -6,7 +6,7 @@ import org.bukkit.entity.Player;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings; import com.volmit.iris.IrisSettings;
import com.volmit.iris.WandManager; import com.volmit.iris.manager.WandManager;
import com.volmit.iris.util.Cuboid; import com.volmit.iris.util.Cuboid;
import com.volmit.iris.util.Direction; import com.volmit.iris.util.Direction;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;

View File

@ -9,7 +9,7 @@ import org.bukkit.inventory.ItemStack;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings; import com.volmit.iris.IrisSettings;
import com.volmit.iris.WandManager; import com.volmit.iris.manager.WandManager;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender; import com.volmit.iris.util.MortarSender;

View File

@ -9,7 +9,7 @@ import org.bukkit.inventory.ItemStack;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings; import com.volmit.iris.IrisSettings;
import com.volmit.iris.WandManager; import com.volmit.iris.manager.WandManager;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender; import com.volmit.iris.util.MortarSender;

View File

@ -11,7 +11,7 @@ import org.bukkit.inventory.ItemStack;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings; import com.volmit.iris.IrisSettings;
import com.volmit.iris.WandManager; import com.volmit.iris.manager.WandManager;
import com.volmit.iris.object.IrisObject; import com.volmit.iris.object.IrisObject;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender; import com.volmit.iris.util.MortarSender;

View File

@ -8,7 +8,7 @@ import org.bukkit.inventory.ItemStack;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings; import com.volmit.iris.IrisSettings;
import com.volmit.iris.WandManager; import com.volmit.iris.manager.WandManager;
import com.volmit.iris.object.IrisObject; import com.volmit.iris.object.IrisObject;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender; import com.volmit.iris.util.MortarSender;

View File

@ -6,7 +6,7 @@ import org.bukkit.entity.Player;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings; import com.volmit.iris.IrisSettings;
import com.volmit.iris.WandManager; import com.volmit.iris.manager.WandManager;
import com.volmit.iris.util.Cuboid; import com.volmit.iris.util.Cuboid;
import com.volmit.iris.util.Direction; import com.volmit.iris.util.Direction;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;

View File

@ -4,7 +4,7 @@ import org.bukkit.Sound;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings; import com.volmit.iris.IrisSettings;
import com.volmit.iris.WandManager; import com.volmit.iris.manager.WandManager;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender; import com.volmit.iris.util.MortarSender;

View File

@ -8,7 +8,7 @@ import org.bukkit.util.Vector;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings; import com.volmit.iris.IrisSettings;
import com.volmit.iris.WandManager; import com.volmit.iris.manager.WandManager;
import com.volmit.iris.util.Cuboid; import com.volmit.iris.util.Cuboid;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender; import com.volmit.iris.util.MortarSender;

View File

@ -8,7 +8,7 @@ import org.bukkit.util.Vector;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings; import com.volmit.iris.IrisSettings;
import com.volmit.iris.WandManager; import com.volmit.iris.manager.WandManager;
import com.volmit.iris.util.Cuboid; import com.volmit.iris.util.Cuboid;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender; import com.volmit.iris.util.MortarSender;

View File

@ -4,9 +4,9 @@ import org.bukkit.entity.Player;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings; import com.volmit.iris.IrisSettings;
import com.volmit.iris.structure.StructureTemplate;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender; import com.volmit.iris.util.MortarSender;
import com.volmit.iris.util.StructureTemplate;
public class CommandIrisStructureClose extends MortarCommand public class CommandIrisStructureClose extends MortarCommand
{ {

View File

@ -4,9 +4,9 @@ import org.bukkit.entity.Player;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings; import com.volmit.iris.IrisSettings;
import com.volmit.iris.structure.StructureTemplate;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender; import com.volmit.iris.util.MortarSender;
import com.volmit.iris.util.StructureTemplate;
public class CommandIrisStructureCreate extends MortarCommand public class CommandIrisStructureCreate extends MortarCommand
{ {

View File

@ -4,9 +4,9 @@ import org.bukkit.entity.Player;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings; import com.volmit.iris.IrisSettings;
import com.volmit.iris.structure.StructureTemplate;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender; import com.volmit.iris.util.MortarSender;
import com.volmit.iris.util.StructureTemplate;
public class CommandIrisStructureExpand extends MortarCommand public class CommandIrisStructureExpand extends MortarCommand
{ {

View File

@ -4,9 +4,9 @@ import org.bukkit.entity.Player;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings; import com.volmit.iris.IrisSettings;
import com.volmit.iris.structure.StructureTemplate;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender; import com.volmit.iris.util.MortarSender;
import com.volmit.iris.util.StructureTemplate;
public class CommandIrisStructureMore extends MortarCommand public class CommandIrisStructureMore extends MortarCommand
{ {

View File

@ -5,9 +5,9 @@ import org.bukkit.entity.Player;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings; import com.volmit.iris.IrisSettings;
import com.volmit.iris.object.IrisStructure; import com.volmit.iris.object.IrisStructure;
import com.volmit.iris.structure.StructureTemplate;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender; import com.volmit.iris.util.MortarSender;
import com.volmit.iris.util.StructureTemplate;
public class CommandIrisStructureOpen extends MortarCommand public class CommandIrisStructureOpen extends MortarCommand
{ {

View File

@ -4,9 +4,9 @@ import org.bukkit.entity.Player;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings; import com.volmit.iris.IrisSettings;
import com.volmit.iris.structure.StructureTemplate;
import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender; import com.volmit.iris.util.MortarSender;
import com.volmit.iris.util.StructureTemplate;
public class CommandIrisStructureSave extends MortarCommand public class CommandIrisStructureSave extends MortarCommand
{ {

View File

@ -0,0 +1,17 @@
package com.volmit.iris.edit;
import java.io.Closeable;
import org.bukkit.block.data.BlockData;
public interface BlockEditor extends Closeable
{
public long last();
public void set(int x, int y, int z, BlockData d);
public BlockData get(int x, int y, int z);
@Override
public void close();
}

View File

@ -0,0 +1,40 @@
package com.volmit.iris.edit;
import org.bukkit.World;
import org.bukkit.block.data.BlockData;
import com.volmit.iris.util.M;
public class BukkitBlockEditor implements BlockEditor
{
private final World world;
public BukkitBlockEditor(World world)
{
this.world = world;
}
@Override
public void set(int x, int y, int z, BlockData d)
{
world.getBlockAt(x, y, z).setBlockData(d, false);
}
@Override
public BlockData get(int x, int y, int z)
{
return world.getBlockAt(x, y, z).getBlockData();
}
@Override
public void close()
{
}
@Override
public long last()
{
return M.ms();
}
}

View File

@ -0,0 +1,51 @@
package com.volmit.iris.edit;
import org.bukkit.World;
import org.bukkit.block.data.BlockData;
import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldedit.math.BlockVector3;
import com.volmit.iris.util.M;
public class WEBlockEditor implements BlockEditor
{
private final World world;
private final EditSession es;
private long last;
public WEBlockEditor(World world)
{
last = M.ms();
this.world = world;
es = WorldEdit.getInstance().newEditSessionBuilder().world(BukkitAdapter.adapt(world)).build();
}
@Override
public void set(int x, int y, int z, BlockData d)
{
last = M.ms();
es.rawSetBlock(BlockVector3.at(x, y, z), BukkitAdapter.adapt(d));
world.getBlockAt(x, y, z).setBlockData(d, false);
}
@Override
public BlockData get(int x, int y, int z)
{
return world.getBlockAt(x, y, z).getBlockData();
}
@Override
public void close()
{
es.close();
return;
}
@Override
public long last()
{
return last;
}
}

View File

@ -22,14 +22,14 @@ import org.bukkit.event.world.ChunkUnloadEvent;
import org.bukkit.event.world.WorldUnloadEvent; import org.bukkit.event.world.WorldUnloadEvent;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.IrisContext;
import com.volmit.iris.IrisDataManager;
import com.volmit.iris.IrisMetrics;
import com.volmit.iris.gen.atomics.AtomicCache; import com.volmit.iris.gen.atomics.AtomicCache;
import com.volmit.iris.gen.atomics.AtomicMulticache; import com.volmit.iris.gen.atomics.AtomicMulticache;
import com.volmit.iris.gen.scaffold.IrisContext;
import com.volmit.iris.gen.scaffold.IrisMetrics;
import com.volmit.iris.gen.scaffold.TerrainChunk; import com.volmit.iris.gen.scaffold.TerrainChunk;
import com.volmit.iris.gen.scaffold.TerrainProvider; import com.volmit.iris.gen.scaffold.TerrainProvider;
import com.volmit.iris.gen.scaffold.TerrainTarget; import com.volmit.iris.gen.scaffold.TerrainTarget;
import com.volmit.iris.manager.IrisDataManager;
import com.volmit.iris.noise.CNG; import com.volmit.iris.noise.CNG;
import com.volmit.iris.object.IrisBiome; import com.volmit.iris.object.IrisBiome;
import com.volmit.iris.object.IrisDimension; import com.volmit.iris.object.IrisDimension;

View File

@ -14,9 +14,9 @@ import org.bukkit.event.entity.EntitySpawnEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.IrisContext;
import com.volmit.iris.IrisSettings; import com.volmit.iris.IrisSettings;
import com.volmit.iris.gen.atomics.AtomicRegionData; import com.volmit.iris.gen.atomics.AtomicRegionData;
import com.volmit.iris.gen.scaffold.IrisContext;
import com.volmit.iris.gen.scaffold.IrisGenConfiguration; import com.volmit.iris.gen.scaffold.IrisGenConfiguration;
import com.volmit.iris.gen.scaffold.TerrainChunk; import com.volmit.iris.gen.scaffold.TerrainChunk;
import com.volmit.iris.gen.scaffold.TerrainTarget; import com.volmit.iris.gen.scaffold.TerrainTarget;

View File

@ -1,6 +1,5 @@
package com.volmit.iris; package com.volmit.iris.gen.scaffold;
import com.volmit.iris.gen.scaffold.TerrainTarget;
import com.volmit.iris.object.IrisBiome; import com.volmit.iris.object.IrisBiome;
import com.volmit.iris.object.IrisDimension; import com.volmit.iris.object.IrisDimension;
import com.volmit.iris.object.IrisRegion; import com.volmit.iris.object.IrisRegion;

View File

@ -1,5 +1,6 @@
package com.volmit.iris; package com.volmit.iris.gen.scaffold;
import com.volmit.iris.Iris;
import com.volmit.iris.util.RollingSequence; import com.volmit.iris.util.RollingSequence;
import lombok.Data; import lombok.Data;

View File

@ -0,0 +1,81 @@
package com.volmit.iris.manager;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.block.data.BlockData;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.world.WorldUnloadEvent;
import com.volmit.iris.Iris;
import com.volmit.iris.edit.BlockEditor;
import com.volmit.iris.edit.BukkitBlockEditor;
import com.volmit.iris.edit.WEBlockEditor;
import com.volmit.iris.util.KMap;
import com.volmit.iris.util.M;
public class EditManager implements Listener
{
private KMap<World, BlockEditor> editors;
public EditManager()
{
this.editors = new KMap<>();
Iris.instance.registerListener(this);
Bukkit.getScheduler().scheduleSyncRepeatingTask(Iris.instance, this::update, 0, 20);
}
public BlockData get(World world, int x, int y, int z)
{
return open(world).get(x, y, z);
}
public void set(World world, int x, int y, int z, BlockData d)
{
open(world).set(x, y, z, d);
}
@EventHandler
public void on(WorldUnloadEvent e)
{
if(editors.containsKey(e.getWorld()))
{
editors.remove(e.getWorld()).close();
}
}
public void update()
{
for(World i : editors.k())
{
if(M.ms() - editors.get(i).last() > 1000)
{
editors.remove(i).close();
}
}
}
public BlockEditor open(World world)
{
if(editors.containsKey(world))
{
return editors.get(world);
}
BlockEditor e = null;
if(Bukkit.getPluginManager().isPluginEnabled("WorldEdit"))
{
e = new WEBlockEditor(world);
}
else
{
e = new BukkitBlockEditor(world);
}
editors.put(world, e);
return e;
}
}

View File

@ -1,4 +1,4 @@
package com.volmit.iris; package com.volmit.iris.manager;
import java.util.List; import java.util.List;
@ -8,6 +8,7 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerChangedWorldEvent; import org.bukkit.event.player.PlayerChangedWorldEvent;
import com.volmit.iris.Iris;
import com.volmit.iris.gen.IrisTerrainProvider; import com.volmit.iris.gen.IrisTerrainProvider;
import com.volmit.iris.gen.provisions.ProvisionBukkit; import com.volmit.iris.gen.provisions.ProvisionBukkit;
import com.volmit.iris.noise.CNG; import com.volmit.iris.noise.CNG;

View File

@ -1,4 +1,4 @@
package com.volmit.iris; package com.volmit.iris.manager;
import java.io.File; import java.io.File;

View File

@ -1,10 +1,13 @@
package com.volmit.iris; package com.volmit.iris.manager;
import java.io.File; import java.io.File;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings;
import com.volmit.iris.gen.scaffold.IrisContext;
import com.volmit.iris.util.ChronoLatch; import com.volmit.iris.util.ChronoLatch;
import com.volmit.iris.util.FolderWatcher; import com.volmit.iris.util.FolderWatcher;
import com.volmit.iris.util.J; import com.volmit.iris.util.J;

View File

@ -1,4 +1,4 @@
package com.volmit.iris; package com.volmit.iris.manager;
import java.awt.Desktop; import java.awt.Desktop;
import java.awt.GraphicsEnvironment; import java.awt.GraphicsEnvironment;
@ -26,6 +26,8 @@ import org.zeroturnaround.zip.commons.FileUtils;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException; import com.google.gson.JsonSyntaxException;
import com.volmit.iris.Iris;
import com.volmit.iris.IrisSettings;
import com.volmit.iris.gen.IrisTerrainProvider; import com.volmit.iris.gen.IrisTerrainProvider;
import com.volmit.iris.gen.nms.NMSCreator; import com.volmit.iris.gen.nms.NMSCreator;
import com.volmit.iris.gen.provisions.ProvisionBukkit; import com.volmit.iris.gen.provisions.ProvisionBukkit;

View File

@ -1,9 +1,9 @@
package com.volmit.iris; package com.volmit.iris.manager;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import com.volmit.iris.structure.StructureTemplate;
import com.volmit.iris.util.KList; import com.volmit.iris.util.KList;
import com.volmit.iris.util.StructureTemplate;
public class StructureManager public class StructureManager
{ {

View File

@ -1,4 +1,4 @@
package com.volmit.iris; package com.volmit.iris.manager;
import java.awt.Color; import java.awt.Color;
import java.util.Iterator; import java.util.Iterator;
@ -22,6 +22,7 @@ import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.util.BlockVector; import org.bukkit.util.BlockVector;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;
import com.volmit.iris.Iris;
import com.volmit.iris.object.IrisObject; import com.volmit.iris.object.IrisObject;
import com.volmit.iris.util.C; import com.volmit.iris.util.C;
import com.volmit.iris.util.Cuboid; import com.volmit.iris.util.Cuboid;

View File

@ -1,4 +1,4 @@
package com.volmit.iris.util; package com.volmit.iris.structure;
import java.io.File; import java.io.File;
import java.util.Iterator; import java.util.Iterator;
@ -38,6 +38,23 @@ import com.volmit.iris.object.IrisStructureTile;
import com.volmit.iris.object.NoiseStyle; import com.volmit.iris.object.NoiseStyle;
import com.volmit.iris.object.StructureTileCondition; import com.volmit.iris.object.StructureTileCondition;
import com.volmit.iris.object.TileResult; import com.volmit.iris.object.TileResult;
import com.volmit.iris.util.B;
import com.volmit.iris.util.C;
import com.volmit.iris.util.ChronoLatch;
import com.volmit.iris.util.Cuboid;
import com.volmit.iris.util.Form;
import com.volmit.iris.util.IO;
import com.volmit.iris.util.IObjectPlacer;
import com.volmit.iris.util.J;
import com.volmit.iris.util.JSONObject;
import com.volmit.iris.util.KMap;
import com.volmit.iris.util.MaterialBlock;
import com.volmit.iris.util.RNG;
import com.volmit.iris.util.UIElement;
import com.volmit.iris.util.UIStaticDecorator;
import com.volmit.iris.util.UIWindow;
import com.volmit.iris.util.Window;
import com.volmit.iris.util.WindowResolution;
import lombok.Data; import lombok.Data;
@ -64,6 +81,7 @@ public class StructureTemplate implements Listener, IObjectPlacer
private KMap<Location, Runnable> updates = new KMap<>(); private KMap<Location, Runnable> updates = new KMap<>();
private File folder; private File folder;
private CNG variants; private CNG variants;
private boolean quiet = true;
private KMap<Location, Integer> forceVariant = new KMap<>(); private KMap<Location, Integer> forceVariant = new KMap<>();
public StructureTemplate(String name, String dimension, Player worker, Location c, int size, int w, int h, boolean use3d) public StructureTemplate(String name, String dimension, Player worker, Location c, int size, int w, int h, boolean use3d)
@ -74,7 +92,7 @@ public class StructureTemplate implements Listener, IObjectPlacer
folder = Iris.instance.getDataFolder("packs", dimension); folder = Iris.instance.getDataFolder("packs", dimension);
gLatch = new ChronoLatch(250); gLatch = new ChronoLatch(250);
focus = center; focus = center;
dirtyLatch = new ChronoLatch(2350); dirtyLatch = new ChronoLatch(250);
task = Bukkit.getScheduler().scheduleSyncRepeatingTask(Iris.instance, this::tick, 0, 0); task = Bukkit.getScheduler().scheduleSyncRepeatingTask(Iris.instance, this::tick, 0, 0);
this.world = c.getWorld(); this.world = c.getWorld();
this.center = c.clone(); this.center = c.clone();
@ -143,6 +161,8 @@ public class StructureTemplate implements Listener, IObjectPlacer
{ {
Iris.info("Loading existing structure"); Iris.info("Loading existing structure");
// TODO load input properties
for(IrisStructureTile i : structure.getTiles().copy()) for(IrisStructureTile i : structure.getTiles().copy())
{ {
String realType = i.getForceObjects().get(1).getLoadKey().replaceAll("\\Q-1\\E", ""); String realType = i.getForceObjects().get(1).getLoadKey().replaceAll("\\Q-1\\E", "");
@ -354,11 +374,15 @@ public class StructureTemplate implements Listener, IObjectPlacer
if(dirtyLatch.couldFlip()) if(dirtyLatch.couldFlip())
{ {
int u = 3; updateAll();
while(updates.size() > 0 && u-- > 0) }
{ }
runClosestTo();
} public void updateAll()
{
while(updates.size() > 0)
{
runClosestTo();
} }
} }
@ -386,6 +410,11 @@ public class StructureTemplate implements Listener, IObjectPlacer
} }
private void mod(Location l) private void mod(Location l)
{
mod(l, true);
}
private void mod(Location l, boolean u)
{ {
if(!isWithinBounds(l)) if(!isWithinBounds(l))
{ {
@ -538,8 +567,11 @@ public class StructureTemplate implements Listener, IObjectPlacer
} }
r.getTile().getForceObjects().get(getVariant(c, r.getTile())).place(bottomCenter.getBlockX(), bottomCenter.getBlockY(), bottomCenter.getBlockZ(), this, r.getPlacement(), rng); r.getTile().getForceObjects().get(getVariant(c, r.getTile())).place(bottomCenter.getBlockX(), bottomCenter.getBlockY(), bottomCenter.getBlockZ(), this, r.getPlacement(), rng);
center.getWorld().playSound(center, Sound.BLOCK_ANCIENT_DEBRIS_BREAK, 1f, 0.35f); if(!quiet)
center.getWorld().spawnParticle(Particle.FLASH, center.getX(), center.getY(), center.getZ(), 1); {
center.getWorld().playSound(center, Sound.ENTITY_SHULKER_BULLET_HIT, 1f, 1.6f);
center.getWorld().spawnParticle(Particle.FLASH, center.getX(), center.getY(), center.getZ(), 1);
}
} }
public boolean isWithinBounds(Location l) public boolean isWithinBounds(Location l)
@ -774,7 +806,7 @@ public class StructureTemplate implements Listener, IObjectPlacer
return; return;
} }
world.getBlockAt(x, y, z).setBlockData(d, false); Iris.edit.set(world, x, y, z, d);
} }
@Override @Override
@ -1068,7 +1100,10 @@ public class StructureTemplate implements Listener, IObjectPlacer
@EventHandler @EventHandler
public void on(BlockBreakEvent e) public void on(BlockBreakEvent e)
{ {
Bukkit.getScheduler().scheduleSyncDelayedTask(Iris.instance, () -> mod(e.getBlock().getLocation()), 5); quiet = false;
mod(e.getBlock().getLocation(), false);
updateAll();
quiet = true;
} }
@EventHandler @EventHandler
@ -1134,7 +1169,10 @@ public class StructureTemplate implements Listener, IObjectPlacer
@EventHandler @EventHandler
public void on(BlockPlaceEvent e) public void on(BlockPlaceEvent e)
{ {
Bukkit.getScheduler().scheduleSyncDelayedTask(Iris.instance, () -> mod(e.getBlock().getLocation()), 5); quiet = false;
mod(e.getBlock().getLocation(), false);
updateAll();
quiet = true;
} }
public void more() public void more()