From 8ffe6fa8fb061a555bbf922c1cf6f24f6ca696e4 Mon Sep 17 00:00:00 2001 From: Daniel Mills Date: Wed, 9 Sep 2020 00:29:22 -0400 Subject: [PATCH] Instant changes --- pom.xml | 11 +++ .../java/com/volmit/iris/GeneratedChunk.java | 21 ----- src/main/java/com/volmit/iris/Iris.java | 9 +++ .../iris/command/CommandIrisCreate.java | 2 +- .../iris/command/CommandIrisMetrics.java | 2 +- .../command/CommandIrisObjectContract.java | 2 +- .../iris/command/CommandIrisObjectExpand.java | 2 +- .../iris/command/CommandIrisObjectP1.java | 2 +- .../iris/command/CommandIrisObjectP2.java | 2 +- .../iris/command/CommandIrisObjectPaste.java | 2 +- .../iris/command/CommandIrisObjectSave.java | 2 +- .../iris/command/CommandIrisObjectShift.java | 2 +- .../iris/command/CommandIrisObjectWand.java | 2 +- .../iris/command/CommandIrisObjectXAY.java | 2 +- .../iris/command/CommandIrisObjectXPY.java | 2 +- .../command/CommandIrisStructureClose.java | 2 +- .../command/CommandIrisStructureCreate.java | 2 +- .../command/CommandIrisStructureExpand.java | 2 +- .../command/CommandIrisStructureMore.java | 2 +- .../command/CommandIrisStructureOpen.java | 2 +- .../command/CommandIrisStructureSave.java | 2 +- .../com/volmit/iris/edit/BlockEditor.java | 17 ++++ .../volmit/iris/edit/BukkitBlockEditor.java | 40 +++++++++ .../com/volmit/iris/edit/WEBlockEditor.java | 51 ++++++++++++ .../iris/gen/ContextualTerrainProvider.java | 6 +- .../volmit/iris/gen/IrisTerrainProvider.java | 2 +- .../iris/{ => gen/scaffold}/IrisContext.java | 3 +- .../iris/{ => gen/scaffold}/IrisMetrics.java | 3 +- .../com/volmit/iris/manager/EditManager.java | 81 +++++++++++++++++++ .../iris/{ => manager}/IrisBoardManager.java | 3 +- .../iris/{ => manager}/IrisDataManager.java | 2 +- .../{ => manager}/IrisHotloadManager.java | 5 +- .../iris/{ => manager}/ProjectManager.java | 4 +- .../iris/{ => manager}/StructureManager.java | 4 +- .../iris/{ => manager}/WandManager.java | 3 +- .../StructureTemplate.java | 62 +++++++++++--- 36 files changed, 298 insertions(+), 65 deletions(-) delete mode 100644 src/main/java/com/volmit/iris/GeneratedChunk.java create mode 100644 src/main/java/com/volmit/iris/edit/BlockEditor.java create mode 100644 src/main/java/com/volmit/iris/edit/BukkitBlockEditor.java create mode 100644 src/main/java/com/volmit/iris/edit/WEBlockEditor.java rename src/main/java/com/volmit/iris/{ => gen/scaffold}/IrisContext.java (90%) rename src/main/java/com/volmit/iris/{ => gen/scaffold}/IrisMetrics.java (92%) create mode 100644 src/main/java/com/volmit/iris/manager/EditManager.java rename src/main/java/com/volmit/iris/{ => manager}/IrisBoardManager.java (98%) rename src/main/java/com/volmit/iris/{ => manager}/IrisDataManager.java (99%) rename src/main/java/com/volmit/iris/{ => manager}/IrisHotloadManager.java (94%) rename src/main/java/com/volmit/iris/{ => manager}/ProjectManager.java (99%) rename src/main/java/com/volmit/iris/{ => manager}/StructureManager.java (89%) rename src/main/java/com/volmit/iris/{ => manager}/WandManager.java (99%) rename src/main/java/com/volmit/iris/{util => structure}/StructureTemplate.java (95%) diff --git a/pom.xml b/pom.xml index b0ba102eb..2c40092d6 100644 --- a/pom.xml +++ b/pom.xml @@ -152,6 +152,10 @@ CodeMC https://repo.codemc.org/repository/maven-public + + WorldEdit + https://maven.enginehub.org/repo/ + @@ -186,6 +190,13 @@ 1.14.4 provided + + + com.sk89q.worldedit + worldedit-bukkit + 7.2.0-SNAPSHOT + provided + org.bstats diff --git a/src/main/java/com/volmit/iris/GeneratedChunk.java b/src/main/java/com/volmit/iris/GeneratedChunk.java deleted file mode 100644 index 0b5f4a06e..000000000 --- a/src/main/java/com/volmit/iris/GeneratedChunk.java +++ /dev/null @@ -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; - } -} diff --git a/src/main/java/com/volmit/iris/Iris.java b/src/main/java/com/volmit/iris/Iris.java index bd2b034f8..a1ce47b2a 100644 --- a/src/main/java/com/volmit/iris/Iris.java +++ b/src/main/java/com/volmit/iris/Iris.java @@ -23,6 +23,13 @@ import com.volmit.iris.gen.provisions.ProvisionBukkit; import com.volmit.iris.gen.scaffold.IrisGenConfiguration; import com.volmit.iris.gen.scaffold.TerrainTarget; 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.Form; import com.volmit.iris.util.GroupedExecutor; @@ -44,6 +51,7 @@ public class Iris extends MortarPlugin public static IrisHotloadManager hotloader; public static WandManager wand; public static StructureManager struct; + public static EditManager edit; public static IrisBoardManager board; public static String nmsTag = findNMSTag(); public static MultiverseCoreLink linkMultiverseCore; @@ -141,6 +149,7 @@ public class Iris extends MortarPlugin proj = new ProjectManager(); board = new IrisBoardManager(); linkMultiverseCore = new MultiverseCoreLink(); + edit = new EditManager(); J.a(() -> IO.delete(getTemp())); J.a(() -> bstats()); J.s(this::splash, 20); diff --git a/src/main/java/com/volmit/iris/command/CommandIrisCreate.java b/src/main/java/com/volmit/iris/command/CommandIrisCreate.java index 647257aee..9ced8230c 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisCreate.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisCreate.java @@ -11,13 +11,13 @@ import org.zeroturnaround.zip.ZipUtil; import org.zeroturnaround.zip.commons.FileUtils; import com.volmit.iris.Iris; -import com.volmit.iris.IrisDataManager; import com.volmit.iris.IrisSettings; import com.volmit.iris.gen.IrisTerrainProvider; import com.volmit.iris.gen.nms.NMSCreator; import com.volmit.iris.gen.provisions.ProvisionBukkit; import com.volmit.iris.gen.scaffold.IrisGenConfiguration; import com.volmit.iris.gen.scaffold.TerrainTarget; +import com.volmit.iris.manager.IrisDataManager; import com.volmit.iris.object.IrisDimension; import com.volmit.iris.util.Form; import com.volmit.iris.util.IO; diff --git a/src/main/java/com/volmit/iris/command/CommandIrisMetrics.java b/src/main/java/com/volmit/iris/command/CommandIrisMetrics.java index d74dd0055..16d1cfd36 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisMetrics.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisMetrics.java @@ -4,9 +4,9 @@ import org.bukkit.World; import org.bukkit.entity.Player; import com.volmit.iris.Iris; -import com.volmit.iris.IrisMetrics; import com.volmit.iris.gen.IrisTerrainProvider; 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.Form; import com.volmit.iris.util.MortarCommand; diff --git a/src/main/java/com/volmit/iris/command/CommandIrisObjectContract.java b/src/main/java/com/volmit/iris/command/CommandIrisObjectContract.java index 4c111dff2..1853216de 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisObjectContract.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisObjectContract.java @@ -6,7 +6,7 @@ import org.bukkit.entity.Player; import com.volmit.iris.Iris; 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.Direction; import com.volmit.iris.util.MortarCommand; diff --git a/src/main/java/com/volmit/iris/command/CommandIrisObjectExpand.java b/src/main/java/com/volmit/iris/command/CommandIrisObjectExpand.java index b48e78e68..fb019be08 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisObjectExpand.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisObjectExpand.java @@ -6,7 +6,7 @@ import org.bukkit.entity.Player; import com.volmit.iris.Iris; 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.Direction; import com.volmit.iris.util.MortarCommand; diff --git a/src/main/java/com/volmit/iris/command/CommandIrisObjectP1.java b/src/main/java/com/volmit/iris/command/CommandIrisObjectP1.java index fccb852f6..1d76ba883 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisObjectP1.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisObjectP1.java @@ -9,7 +9,7 @@ import org.bukkit.inventory.ItemStack; import com.volmit.iris.Iris; 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.MortarSender; diff --git a/src/main/java/com/volmit/iris/command/CommandIrisObjectP2.java b/src/main/java/com/volmit/iris/command/CommandIrisObjectP2.java index 6592a58e6..5d01a6659 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisObjectP2.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisObjectP2.java @@ -9,7 +9,7 @@ import org.bukkit.inventory.ItemStack; import com.volmit.iris.Iris; 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.MortarSender; diff --git a/src/main/java/com/volmit/iris/command/CommandIrisObjectPaste.java b/src/main/java/com/volmit/iris/command/CommandIrisObjectPaste.java index da54bef7a..19dfe47af 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisObjectPaste.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisObjectPaste.java @@ -11,7 +11,7 @@ import org.bukkit.inventory.ItemStack; import com.volmit.iris.Iris; 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.util.MortarCommand; import com.volmit.iris.util.MortarSender; diff --git a/src/main/java/com/volmit/iris/command/CommandIrisObjectSave.java b/src/main/java/com/volmit/iris/command/CommandIrisObjectSave.java index a28a2879c..61a9be426 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisObjectSave.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisObjectSave.java @@ -8,7 +8,7 @@ import org.bukkit.inventory.ItemStack; import com.volmit.iris.Iris; 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.util.MortarCommand; import com.volmit.iris.util.MortarSender; diff --git a/src/main/java/com/volmit/iris/command/CommandIrisObjectShift.java b/src/main/java/com/volmit/iris/command/CommandIrisObjectShift.java index 7ddb64262..f8336f0da 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisObjectShift.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisObjectShift.java @@ -6,7 +6,7 @@ import org.bukkit.entity.Player; import com.volmit.iris.Iris; 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.Direction; import com.volmit.iris.util.MortarCommand; diff --git a/src/main/java/com/volmit/iris/command/CommandIrisObjectWand.java b/src/main/java/com/volmit/iris/command/CommandIrisObjectWand.java index 4cb208d8b..311d171a1 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisObjectWand.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisObjectWand.java @@ -4,7 +4,7 @@ import org.bukkit.Sound; import com.volmit.iris.Iris; 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.MortarSender; diff --git a/src/main/java/com/volmit/iris/command/CommandIrisObjectXAY.java b/src/main/java/com/volmit/iris/command/CommandIrisObjectXAY.java index ba95b21bb..832e9d072 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisObjectXAY.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisObjectXAY.java @@ -8,7 +8,7 @@ import org.bukkit.util.Vector; import com.volmit.iris.Iris; 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.MortarCommand; import com.volmit.iris.util.MortarSender; diff --git a/src/main/java/com/volmit/iris/command/CommandIrisObjectXPY.java b/src/main/java/com/volmit/iris/command/CommandIrisObjectXPY.java index b759c6d6a..53b470a64 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisObjectXPY.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisObjectXPY.java @@ -8,7 +8,7 @@ import org.bukkit.util.Vector; import com.volmit.iris.Iris; 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.MortarCommand; import com.volmit.iris.util.MortarSender; diff --git a/src/main/java/com/volmit/iris/command/CommandIrisStructureClose.java b/src/main/java/com/volmit/iris/command/CommandIrisStructureClose.java index 74404c1ec..37701e90c 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisStructureClose.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisStructureClose.java @@ -4,9 +4,9 @@ import org.bukkit.entity.Player; import com.volmit.iris.Iris; import com.volmit.iris.IrisSettings; +import com.volmit.iris.structure.StructureTemplate; import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarSender; -import com.volmit.iris.util.StructureTemplate; public class CommandIrisStructureClose extends MortarCommand { diff --git a/src/main/java/com/volmit/iris/command/CommandIrisStructureCreate.java b/src/main/java/com/volmit/iris/command/CommandIrisStructureCreate.java index 5797ce6c8..181edf2a2 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisStructureCreate.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisStructureCreate.java @@ -4,9 +4,9 @@ import org.bukkit.entity.Player; import com.volmit.iris.Iris; import com.volmit.iris.IrisSettings; +import com.volmit.iris.structure.StructureTemplate; import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarSender; -import com.volmit.iris.util.StructureTemplate; public class CommandIrisStructureCreate extends MortarCommand { diff --git a/src/main/java/com/volmit/iris/command/CommandIrisStructureExpand.java b/src/main/java/com/volmit/iris/command/CommandIrisStructureExpand.java index 109514bbe..44e6e0451 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisStructureExpand.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisStructureExpand.java @@ -4,9 +4,9 @@ import org.bukkit.entity.Player; import com.volmit.iris.Iris; import com.volmit.iris.IrisSettings; +import com.volmit.iris.structure.StructureTemplate; import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarSender; -import com.volmit.iris.util.StructureTemplate; public class CommandIrisStructureExpand extends MortarCommand { diff --git a/src/main/java/com/volmit/iris/command/CommandIrisStructureMore.java b/src/main/java/com/volmit/iris/command/CommandIrisStructureMore.java index 9a18452cd..d46145467 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisStructureMore.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisStructureMore.java @@ -4,9 +4,9 @@ import org.bukkit.entity.Player; import com.volmit.iris.Iris; import com.volmit.iris.IrisSettings; +import com.volmit.iris.structure.StructureTemplate; import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarSender; -import com.volmit.iris.util.StructureTemplate; public class CommandIrisStructureMore extends MortarCommand { diff --git a/src/main/java/com/volmit/iris/command/CommandIrisStructureOpen.java b/src/main/java/com/volmit/iris/command/CommandIrisStructureOpen.java index 008584d6c..a585a26fa 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisStructureOpen.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisStructureOpen.java @@ -5,9 +5,9 @@ import org.bukkit.entity.Player; import com.volmit.iris.Iris; import com.volmit.iris.IrisSettings; import com.volmit.iris.object.IrisStructure; +import com.volmit.iris.structure.StructureTemplate; import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarSender; -import com.volmit.iris.util.StructureTemplate; public class CommandIrisStructureOpen extends MortarCommand { diff --git a/src/main/java/com/volmit/iris/command/CommandIrisStructureSave.java b/src/main/java/com/volmit/iris/command/CommandIrisStructureSave.java index ace333495..a4e928d1d 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisStructureSave.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisStructureSave.java @@ -4,9 +4,9 @@ import org.bukkit.entity.Player; import com.volmit.iris.Iris; import com.volmit.iris.IrisSettings; +import com.volmit.iris.structure.StructureTemplate; import com.volmit.iris.util.MortarCommand; import com.volmit.iris.util.MortarSender; -import com.volmit.iris.util.StructureTemplate; public class CommandIrisStructureSave extends MortarCommand { diff --git a/src/main/java/com/volmit/iris/edit/BlockEditor.java b/src/main/java/com/volmit/iris/edit/BlockEditor.java new file mode 100644 index 000000000..7e809efc9 --- /dev/null +++ b/src/main/java/com/volmit/iris/edit/BlockEditor.java @@ -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(); +} diff --git a/src/main/java/com/volmit/iris/edit/BukkitBlockEditor.java b/src/main/java/com/volmit/iris/edit/BukkitBlockEditor.java new file mode 100644 index 000000000..b4df1f3c1 --- /dev/null +++ b/src/main/java/com/volmit/iris/edit/BukkitBlockEditor.java @@ -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(); + } +} diff --git a/src/main/java/com/volmit/iris/edit/WEBlockEditor.java b/src/main/java/com/volmit/iris/edit/WEBlockEditor.java new file mode 100644 index 000000000..274480d03 --- /dev/null +++ b/src/main/java/com/volmit/iris/edit/WEBlockEditor.java @@ -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; + } +} diff --git a/src/main/java/com/volmit/iris/gen/ContextualTerrainProvider.java b/src/main/java/com/volmit/iris/gen/ContextualTerrainProvider.java index 02e0e56f1..cc16e36a2 100644 --- a/src/main/java/com/volmit/iris/gen/ContextualTerrainProvider.java +++ b/src/main/java/com/volmit/iris/gen/ContextualTerrainProvider.java @@ -22,14 +22,14 @@ import org.bukkit.event.world.ChunkUnloadEvent; import org.bukkit.event.world.WorldUnloadEvent; 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.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.TerrainProvider; import com.volmit.iris.gen.scaffold.TerrainTarget; +import com.volmit.iris.manager.IrisDataManager; import com.volmit.iris.noise.CNG; import com.volmit.iris.object.IrisBiome; import com.volmit.iris.object.IrisDimension; diff --git a/src/main/java/com/volmit/iris/gen/IrisTerrainProvider.java b/src/main/java/com/volmit/iris/gen/IrisTerrainProvider.java index 350c862a2..3fe2c0afc 100644 --- a/src/main/java/com/volmit/iris/gen/IrisTerrainProvider.java +++ b/src/main/java/com/volmit/iris/gen/IrisTerrainProvider.java @@ -14,9 +14,9 @@ import org.bukkit.event.entity.EntitySpawnEvent; import org.bukkit.inventory.ItemStack; import com.volmit.iris.Iris; -import com.volmit.iris.IrisContext; import com.volmit.iris.IrisSettings; 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.TerrainChunk; import com.volmit.iris.gen.scaffold.TerrainTarget; diff --git a/src/main/java/com/volmit/iris/IrisContext.java b/src/main/java/com/volmit/iris/gen/scaffold/IrisContext.java similarity index 90% rename from src/main/java/com/volmit/iris/IrisContext.java rename to src/main/java/com/volmit/iris/gen/scaffold/IrisContext.java index 719450a68..7e4ce81b1 100644 --- a/src/main/java/com/volmit/iris/IrisContext.java +++ b/src/main/java/com/volmit/iris/gen/scaffold/IrisContext.java @@ -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.IrisDimension; import com.volmit.iris.object.IrisRegion; diff --git a/src/main/java/com/volmit/iris/IrisMetrics.java b/src/main/java/com/volmit/iris/gen/scaffold/IrisMetrics.java similarity index 92% rename from src/main/java/com/volmit/iris/IrisMetrics.java rename to src/main/java/com/volmit/iris/gen/scaffold/IrisMetrics.java index fa1b8719f..6ed900c69 100644 --- a/src/main/java/com/volmit/iris/IrisMetrics.java +++ b/src/main/java/com/volmit/iris/gen/scaffold/IrisMetrics.java @@ -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 lombok.Data; diff --git a/src/main/java/com/volmit/iris/manager/EditManager.java b/src/main/java/com/volmit/iris/manager/EditManager.java new file mode 100644 index 000000000..89d1f79a0 --- /dev/null +++ b/src/main/java/com/volmit/iris/manager/EditManager.java @@ -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 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; + } +} diff --git a/src/main/java/com/volmit/iris/IrisBoardManager.java b/src/main/java/com/volmit/iris/manager/IrisBoardManager.java similarity index 98% rename from src/main/java/com/volmit/iris/IrisBoardManager.java rename to src/main/java/com/volmit/iris/manager/IrisBoardManager.java index 4e64244b9..5a0075238 100644 --- a/src/main/java/com/volmit/iris/IrisBoardManager.java +++ b/src/main/java/com/volmit/iris/manager/IrisBoardManager.java @@ -1,4 +1,4 @@ -package com.volmit.iris; +package com.volmit.iris.manager; import java.util.List; @@ -8,6 +8,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerChangedWorldEvent; +import com.volmit.iris.Iris; import com.volmit.iris.gen.IrisTerrainProvider; import com.volmit.iris.gen.provisions.ProvisionBukkit; import com.volmit.iris.noise.CNG; diff --git a/src/main/java/com/volmit/iris/IrisDataManager.java b/src/main/java/com/volmit/iris/manager/IrisDataManager.java similarity index 99% rename from src/main/java/com/volmit/iris/IrisDataManager.java rename to src/main/java/com/volmit/iris/manager/IrisDataManager.java index 6f538229d..e6bb968b7 100644 --- a/src/main/java/com/volmit/iris/IrisDataManager.java +++ b/src/main/java/com/volmit/iris/manager/IrisDataManager.java @@ -1,4 +1,4 @@ -package com.volmit.iris; +package com.volmit.iris.manager; import java.io.File; diff --git a/src/main/java/com/volmit/iris/IrisHotloadManager.java b/src/main/java/com/volmit/iris/manager/IrisHotloadManager.java similarity index 94% rename from src/main/java/com/volmit/iris/IrisHotloadManager.java rename to src/main/java/com/volmit/iris/manager/IrisHotloadManager.java index baa2a0311..0b81e6033 100644 --- a/src/main/java/com/volmit/iris/IrisHotloadManager.java +++ b/src/main/java/com/volmit/iris/manager/IrisHotloadManager.java @@ -1,10 +1,13 @@ -package com.volmit.iris; +package com.volmit.iris.manager; import java.io.File; import org.bukkit.Bukkit; 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.FolderWatcher; import com.volmit.iris.util.J; diff --git a/src/main/java/com/volmit/iris/ProjectManager.java b/src/main/java/com/volmit/iris/manager/ProjectManager.java similarity index 99% rename from src/main/java/com/volmit/iris/ProjectManager.java rename to src/main/java/com/volmit/iris/manager/ProjectManager.java index 8034dfc91..972b5d7ca 100644 --- a/src/main/java/com/volmit/iris/ProjectManager.java +++ b/src/main/java/com/volmit/iris/manager/ProjectManager.java @@ -1,4 +1,4 @@ -package com.volmit.iris; +package com.volmit.iris.manager; import java.awt.Desktop; import java.awt.GraphicsEnvironment; @@ -26,6 +26,8 @@ import org.zeroturnaround.zip.commons.FileUtils; import com.google.gson.Gson; 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.nms.NMSCreator; import com.volmit.iris.gen.provisions.ProvisionBukkit; diff --git a/src/main/java/com/volmit/iris/StructureManager.java b/src/main/java/com/volmit/iris/manager/StructureManager.java similarity index 89% rename from src/main/java/com/volmit/iris/StructureManager.java rename to src/main/java/com/volmit/iris/manager/StructureManager.java index 3fb14351b..b4949d6be 100644 --- a/src/main/java/com/volmit/iris/StructureManager.java +++ b/src/main/java/com/volmit/iris/manager/StructureManager.java @@ -1,9 +1,9 @@ -package com.volmit.iris; +package com.volmit.iris.manager; import org.bukkit.entity.Player; +import com.volmit.iris.structure.StructureTemplate; import com.volmit.iris.util.KList; -import com.volmit.iris.util.StructureTemplate; public class StructureManager { diff --git a/src/main/java/com/volmit/iris/WandManager.java b/src/main/java/com/volmit/iris/manager/WandManager.java similarity index 99% rename from src/main/java/com/volmit/iris/WandManager.java rename to src/main/java/com/volmit/iris/manager/WandManager.java index 9e3c345ab..0747aa06c 100644 --- a/src/main/java/com/volmit/iris/WandManager.java +++ b/src/main/java/com/volmit/iris/manager/WandManager.java @@ -1,4 +1,4 @@ -package com.volmit.iris; +package com.volmit.iris.manager; import java.awt.Color; import java.util.Iterator; @@ -22,6 +22,7 @@ import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.util.BlockVector; import org.bukkit.util.Vector; +import com.volmit.iris.Iris; import com.volmit.iris.object.IrisObject; import com.volmit.iris.util.C; import com.volmit.iris.util.Cuboid; diff --git a/src/main/java/com/volmit/iris/util/StructureTemplate.java b/src/main/java/com/volmit/iris/structure/StructureTemplate.java similarity index 95% rename from src/main/java/com/volmit/iris/util/StructureTemplate.java rename to src/main/java/com/volmit/iris/structure/StructureTemplate.java index 0c2c56dd5..f4d23005b 100644 --- a/src/main/java/com/volmit/iris/util/StructureTemplate.java +++ b/src/main/java/com/volmit/iris/structure/StructureTemplate.java @@ -1,4 +1,4 @@ -package com.volmit.iris.util; +package com.volmit.iris.structure; import java.io.File; 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.StructureTileCondition; 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; @@ -64,6 +81,7 @@ public class StructureTemplate implements Listener, IObjectPlacer private KMap updates = new KMap<>(); private File folder; private CNG variants; + private boolean quiet = true; private KMap forceVariant = new KMap<>(); 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); gLatch = new ChronoLatch(250); focus = center; - dirtyLatch = new ChronoLatch(2350); + dirtyLatch = new ChronoLatch(250); task = Bukkit.getScheduler().scheduleSyncRepeatingTask(Iris.instance, this::tick, 0, 0); this.world = c.getWorld(); this.center = c.clone(); @@ -143,6 +161,8 @@ public class StructureTemplate implements Listener, IObjectPlacer { Iris.info("Loading existing structure"); + // TODO load input properties + for(IrisStructureTile i : structure.getTiles().copy()) { String realType = i.getForceObjects().get(1).getLoadKey().replaceAll("\\Q-1\\E", ""); @@ -354,11 +374,15 @@ public class StructureTemplate implements Listener, IObjectPlacer if(dirtyLatch.couldFlip()) { - int u = 3; - while(updates.size() > 0 && u-- > 0) - { - runClosestTo(); - } + updateAll(); + } + } + + public void updateAll() + { + while(updates.size() > 0) + { + runClosestTo(); } } @@ -386,6 +410,11 @@ public class StructureTemplate implements Listener, IObjectPlacer } private void mod(Location l) + { + mod(l, true); + } + + private void mod(Location l, boolean u) { 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); - center.getWorld().playSound(center, Sound.BLOCK_ANCIENT_DEBRIS_BREAK, 1f, 0.35f); - center.getWorld().spawnParticle(Particle.FLASH, center.getX(), center.getY(), center.getZ(), 1); + if(!quiet) + { + 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) @@ -774,7 +806,7 @@ public class StructureTemplate implements Listener, IObjectPlacer return; } - world.getBlockAt(x, y, z).setBlockData(d, false); + Iris.edit.set(world, x, y, z, d); } @Override @@ -1068,7 +1100,10 @@ public class StructureTemplate implements Listener, IObjectPlacer @EventHandler 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 @@ -1134,7 +1169,10 @@ public class StructureTemplate implements Listener, IObjectPlacer @EventHandler 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()