diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 000000000..638b0d702
Binary files /dev/null and b/.DS_Store differ
diff --git a/pom.xml b/pom.xml
index 606744859..6053c0a17 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,40 +15,44 @@
${user.home}\Documents\development\server\plugins\${project.name}.jar
${project.basedir}\lint\in.jar
+
+
+
+ src/main/resources
+ true
+
+ **/*.xml
+ **/*.yml
+ **/*.txt
+ **/*.properties
+ **/*.json
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.1.0
+
+
+ package
+
+ shade
+
+
+ false
+
+
+
+
+
+
dan
-
-
- src/main/resources
- true
-
- **/*.xml
- **/*.yml
- **/*.txt
- **/*.properties
- **/*.json
-
-
-
-
- org.apache.maven.plugins
- maven-shade-plugin
- 3.1.0
-
-
- package
-
- shade
-
-
- true
-
-
-
-
org.codehaus.mojo
exec-maven-plugin
@@ -77,36 +81,7 @@
release
-
-
- src/main/resources
- true
-
- **/*.xml
- **/*.yml
- **/*.txt
- **/*.properties
- **/*.html
-
-
-
-
- org.apache.maven.plugins
- maven-shade-plugin
- 3.1.0
-
-
- package
-
- shade
-
-
- false
-
-
-
-
org.codehaus.mojo
exec-maven-plugin
diff --git a/src/main/java/com/volmit/iris/command/CommandIrisGoto.java b/src/main/java/com/volmit/iris/command/CommandIrisGoto.java
index 8e545990c..11409776c 100644
--- a/src/main/java/com/volmit/iris/command/CommandIrisGoto.java
+++ b/src/main/java/com/volmit/iris/command/CommandIrisGoto.java
@@ -24,7 +24,7 @@ public class CommandIrisGoto extends MortarCommand
@Override
public boolean handle(MortarSender sender, String[] args)
{
- if(args.length <= 1)
+ if(args.length < 1)
{
sender.sendMessage("/iris world goto " + getArgsUsage());
return true;
diff --git a/src/main/java/com/volmit/iris/command/CommandIrisMetrics.java b/src/main/java/com/volmit/iris/command/CommandIrisMetrics.java
index ffec3ec36..658b4f3de 100644
--- a/src/main/java/com/volmit/iris/command/CommandIrisMetrics.java
+++ b/src/main/java/com/volmit/iris/command/CommandIrisMetrics.java
@@ -26,7 +26,7 @@ public class CommandIrisMetrics extends MortarCommand
{
if(sender.isPlayer())
{
- Player p = (Player) sender;
+ Player p = sender.player();
World world = p.getWorld();
IrisChunkGenerator g = (IrisChunkGenerator) world.getGenerator();
IrisMetrics m = g.getMetrics();
diff --git a/src/main/java/com/volmit/iris/command/CommandIrisStudioCreate.java b/src/main/java/com/volmit/iris/command/CommandIrisStudioCreate.java
index 825915dd9..bed1f3871 100644
--- a/src/main/java/com/volmit/iris/command/CommandIrisStudioCreate.java
+++ b/src/main/java/com/volmit/iris/command/CommandIrisStudioCreate.java
@@ -79,17 +79,17 @@ public class CommandIrisStudioCreate extends MortarCommand
b1.setMin(3);
b1.setMax(7);
IrisBiomeGeneratorLink b2 = new IrisBiomeGeneratorLink();
- b1.setGenerator(gen.getLoadKey());
- b1.setMin(12);
- b1.setMax(35);
+ b2.setGenerator(gen.getLoadKey());
+ b2.setMin(12);
+ b2.setMax(35);
IrisBiomeGeneratorLink b3 = new IrisBiomeGeneratorLink();
- b1.setGenerator(gen.getLoadKey());
- b1.setMin(-1);
- b1.setMax(1);
+ b3.setGenerator(gen.getLoadKey());
+ b3.setMin(-1);
+ b3.setMax(1);
IrisBiomeGeneratorLink b4 = new IrisBiomeGeneratorLink();
- b1.setGenerator(gen.getLoadKey());
- b1.setMin(-5);
- b1.setMax(-38);
+ b4.setGenerator(gen.getLoadKey());
+ b4.setMin(-5);
+ b4.setMax(-38);
exampleLand2.getLayers().get(0).getPalette().clear();
exampleLand2.getLayers().get(0).getPalette().add("RED_SAND");
exampleShore1.getLayers().get(0).getPalette().clear();
diff --git a/src/main/java/com/volmit/iris/command/CommandIrisWhatBlock.java b/src/main/java/com/volmit/iris/command/CommandIrisWhatBlock.java
index e0e3bc876..d90aa436b 100644
--- a/src/main/java/com/volmit/iris/command/CommandIrisWhatBlock.java
+++ b/src/main/java/com/volmit/iris/command/CommandIrisWhatBlock.java
@@ -25,7 +25,8 @@ public class CommandIrisWhatBlock extends MortarCommand
{
if(sender.isPlayer())
{
- BlockData bd = ((Player) sender).getTargetBlockExact(128, FluidCollisionMode.NEVER).getBlockData();
+ Player p = sender.player();
+ BlockData bd = p.getTargetBlockExact(128, FluidCollisionMode.NEVER).getBlockData();
sender.sendMessage("Material: " + ChatColor.GREEN + bd.getMaterial().name());
sender.sendMessage("Full: " + ChatColor.WHITE + bd.getAsString(true));
}
diff --git a/src/main/java/com/volmit/iris/command/CommandIrisWhatHand.java b/src/main/java/com/volmit/iris/command/CommandIrisWhatHand.java
index b6f0e11ee..d280d943d 100644
--- a/src/main/java/com/volmit/iris/command/CommandIrisWhatHand.java
+++ b/src/main/java/com/volmit/iris/command/CommandIrisWhatHand.java
@@ -1,7 +1,6 @@
package com.volmit.iris.command;
import org.bukkit.ChatColor;
-import org.bukkit.FluidCollisionMode;
import org.bukkit.block.data.BlockData;
import org.bukkit.entity.Player;
@@ -9,10 +8,8 @@ import com.volmit.iris.Iris;
import com.volmit.iris.util.MortarCommand;
import com.volmit.iris.util.MortarSender;
-public class CommandIrisWhatHand extends MortarCommand
-{
- public CommandIrisWhatHand()
- {
+public class CommandIrisWhatHand extends MortarCommand {
+ public CommandIrisWhatHand() {
super("hand", "h");
setDescription("Get the block data for holding.");
requiresPermission(Iris.perm.studio);
@@ -24,8 +21,9 @@ public class CommandIrisWhatHand extends MortarCommand
public boolean handle(MortarSender sender, String[] args)
{
if(sender.isPlayer())
- {
- BlockData bd = ((Player) sender).getTargetBlockExact(128, FluidCollisionMode.NEVER).getBlockData();
+ {
+ Player p = sender.player();
+ BlockData bd = p.getInventory().getItemInMainHand().getType().createBlockData();
sender.sendMessage("Material: " + ChatColor.GREEN + bd.getMaterial().name());
sender.sendMessage("Full: " + ChatColor.WHITE + bd.getAsString(true));
}
@@ -39,8 +37,7 @@ public class CommandIrisWhatHand extends MortarCommand
}
@Override
- protected String getArgsUsage()
- {
+ protected String getArgsUsage() {
return "";
}
}
diff --git a/src/main/java/com/volmit/iris/gen/atomics/AtomicSliver.java b/src/main/java/com/volmit/iris/gen/atomics/AtomicSliver.java
index 34324975e..0d77ea718 100644
--- a/src/main/java/com/volmit/iris/gen/atomics/AtomicSliver.java
+++ b/src/main/java/com/volmit/iris/gen/atomics/AtomicSliver.java
@@ -14,6 +14,7 @@ import org.bukkit.generator.ChunkGenerator.ChunkData;
import com.volmit.iris.object.IrisBiome;
import com.volmit.iris.util.BlockDataTools;
import com.volmit.iris.util.HeightMap;
+import com.volmit.iris.util.KList;
import com.volmit.iris.util.KMap;
import com.volmit.iris.util.M;
@@ -166,40 +167,60 @@ public class AtomicSliver
height.setHeight(x, z, highestBlock);
lock.unlock();
}
-
+
public void read(DataInputStream din) throws IOException
{
lock.lock();
this.block = new KMap();
int h = din.readByte() - Byte.MIN_VALUE;
+ int p = din.readByte() - Byte.MIN_VALUE;
+ KList palette = new KList();
highestBlock = h;
-
+
+ for(int i = 0; i < p; i++)
+ {
+ palette.add(BlockDataTools.getBlockData(din.readUTF()));
+ }
+
for(int i = 0; i <= h; i++)
{
- BlockData v = BlockDataTools.getBlockData(din.readUTF());
-
- if(v == null)
- {
- block.put(i, AIR);
- continue;
- }
-
- block.put(i, v);
+ block.put(i, palette.get(din.readByte() - Byte.MIN_VALUE).clone());
}
modified = false;
lock.unlock();
}
-
+
public void write(DataOutputStream dos) throws IOException
{
lock.lock();
dos.writeByte(highestBlock + Byte.MIN_VALUE);
-
+ KList palette = new KList<>();
+
for(int i = 0; i <= highestBlock; i++)
{
BlockData dat = block.get(i);
- dos.writeUTF((dat == null ? AIR : dat).getAsString(true));
+ String d = (dat == null ? AIR : dat).getAsString(true);
+
+ if(!palette.contains(d))
+ {
+ palette.add(d);
+ }
}
+
+ dos.writeByte(palette.size() + Byte.MIN_VALUE);
+
+ for(String i : palette)
+ {
+ dos.writeUTF(i);
+ }
+
+ for(int i = 0; i <= highestBlock; i++)
+ {
+ BlockData dat = block.get(i);
+ String d = (dat == null ? AIR : dat).getAsString(true);
+ dos.writeByte(palette.indexOf(d) + Byte.MIN_VALUE);
+ }
+
lock.unlock();
}
diff --git a/src/main/java/com/volmit/iris/util/BlockDataTools.java b/src/main/java/com/volmit/iris/util/BlockDataTools.java
index 8543e9aa0..5706627a4 100644
--- a/src/main/java/com/volmit/iris/util/BlockDataTools.java
+++ b/src/main/java/com/volmit/iris/util/BlockDataTools.java
@@ -8,18 +8,19 @@ import com.volmit.iris.Iris;
public class BlockDataTools
{
+ private static final BlockData AIR = Material.AIR.createBlockData();
private static final KMap bdc = new KMap<>();
private static final KList nulls = new KList<>();
public static BlockData getBlockData(String bd)
+ {try
{
if(bdc.containsKey(bd))
{
return bdc.get(bd).clone();
}
- try
- {
+
BlockData bdx = parseBlockData(bd);
if(bdx == null)
@@ -39,7 +40,7 @@ public class BlockDataTools
Iris.warn("Unknown Block Data '" + bd + "'");
}
- return null;
+ return AIR;
}
public static BlockData parseBlockData(String ix)
@@ -75,7 +76,7 @@ public class BlockDataTools
}
- return null;
+ return AIR;
}
public static boolean isLit(BlockData mat)
diff --git a/src/main/java/com/volmit/iris/util/Denv.java b/src/main/java/com/volmit/iris/util/Denv.java
new file mode 100644
index 000000000..9bb0daa87
--- /dev/null
+++ b/src/main/java/com/volmit/iris/util/Denv.java
@@ -0,0 +1,6 @@
+package com.volmit.iris.util;
+
+public class Denv
+{
+
+}