From 1186a00b47ef121fd3b01f2174b481fba517959d Mon Sep 17 00:00:00 2001 From: Jesse Boyd Date: Wed, 17 Jan 2018 11:57:01 +1100 Subject: [PATCH] Fixes #885 --- .gitignore | 1 + .../fawe/bukkit/wrapper/state/AsyncSign.java | 17 ++++++++++++++--- .../com/boydti/fawe/example/NMSRelighter.java | 16 ++++++++-------- .../fawe/object/extent/FastWorldEditExtent.java | 2 +- 4 files changed, 24 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index 5990ffac..01816a6d 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ gradle.log /forge1710/build /sponge/build /sponge111/build +/bukkit/out /nukkit/out /sponge112/build /core/out diff --git a/bukkit/src/main/java/com/boydti/fawe/bukkit/wrapper/state/AsyncSign.java b/bukkit/src/main/java/com/boydti/fawe/bukkit/wrapper/state/AsyncSign.java index d860e4f0..64c378ee 100644 --- a/bukkit/src/main/java/com/boydti/fawe/bukkit/wrapper/state/AsyncSign.java +++ b/bukkit/src/main/java/com/boydti/fawe/bukkit/wrapper/state/AsyncSign.java @@ -1,5 +1,6 @@ package com.boydti.fawe.bukkit.wrapper.state; +import com.boydti.fawe.bukkit.chat.FancyMessage; import com.boydti.fawe.bukkit.wrapper.AsyncBlock; import com.boydti.fawe.bukkit.wrapper.AsyncBlockState; import com.boydti.fawe.util.ReflectionUtils; @@ -20,16 +21,26 @@ public class AsyncSign extends AsyncBlockState implements Sign { String[] data = new String[4]; if (nbt != null) { for (int i = 1; i <= 4; i++) { - data[i - 1] = nbt.getString("Text" + i); + data[i - 1] = fromJson(nbt.getString("Text" + i)); } } return data; } + private String fromJson(String jsonInput) { + if (jsonInput == null) return ""; + return FancyMessage.deserialize(jsonInput).toOldMessageFormat(); + } + + private String toJson(String oldInput) { + if (oldInput == null || oldInput.isEmpty()) return ""; + return new FancyMessage("").color(oldInput).toJSONString(); + } + @Override public String getLine(int index) throws IndexOutOfBoundsException { CompoundTag nbt = getNbtData(); - return nbt == null ? null : nbt.getString("Text" + (index + 1)); + return nbt == null ? null : fromJson(nbt.getString("Text" + (index + 1))); } @Override @@ -37,7 +48,7 @@ public class AsyncSign extends AsyncBlockState implements Sign { CompoundTag nbt = getNbtData(); if (nbt != null) { Map map = ReflectionUtils.getMap(nbt.getValue()); - map.put("Text" + (index + 1), new StringTag(line)); + map.put("Text" + (index + 1), new StringTag(toJson(line))); } } } diff --git a/core/src/main/java/com/boydti/fawe/example/NMSRelighter.java b/core/src/main/java/com/boydti/fawe/example/NMSRelighter.java index 309fd5d7..5fb07020 100644 --- a/core/src/main/java/com/boydti/fawe/example/NMSRelighter.java +++ b/core/src/main/java/com/boydti/fawe/example/NMSRelighter.java @@ -6,7 +6,7 @@ import com.boydti.fawe.object.FaweChunk; import com.boydti.fawe.object.FaweQueue; import com.boydti.fawe.object.IntegerTrio; import com.boydti.fawe.object.RunnableVal; -import com.boydti.fawe.object.collection.LocalBlockVector2DSet; +import com.boydti.fawe.object.collection.BlockVectorSet; import com.boydti.fawe.util.MathMan; import com.boydti.fawe.util.TaskManager; import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; @@ -390,18 +390,18 @@ public class NMSRelighter implements Relighter { private void fixSkyLighting(List sorted) { RelightSkyEntry[] chunks = sorted.toArray(new RelightSkyEntry[sorted.size()]); boolean remove = this.removeFirst; - LocalBlockVector2DSet chunkSet = null; + BlockVectorSet chunkSet = null; if (remove) { - chunkSet = new LocalBlockVector2DSet(); - LocalBlockVector2DSet tmpSet = new LocalBlockVector2DSet(); + chunkSet = new BlockVectorSet(); + BlockVectorSet tmpSet = new BlockVectorSet(); for (RelightSkyEntry chunk : chunks) { - chunkSet.add(chunk.x, chunk.z); + tmpSet.add(chunk.x, 0, chunk.z); } for (RelightSkyEntry chunk : chunks) { int x = chunk.x; int z = chunk.z; - if (tmpSet.contains(x + 1, z) && tmpSet.contains(x - 1, z) && tmpSet.contains(x, z + 1) && tmpSet.contains(x, z - 1)) { - chunkSet.add(x, z); + if (tmpSet.contains(x + 1, 0, z) && tmpSet.contains(x - 1, 0, z) && tmpSet.contains(x, 0, z + 1) && tmpSet.contains(x, 0, z - 1)) { + chunkSet.add(x, 0, z); } } } @@ -427,7 +427,7 @@ public class NMSRelighter implements Relighter { if (section == null) continue; chunk.smooth = false; - if (remove && (y & 15) == 15 && chunkSet.contains(chunk.x, chunk.z)) { + if (remove && (y & 15) == 15 && chunkSet.contains(chunk.x, 0, chunk.z)) { queue.removeSectionLighting(section, y >> 4, true); } diff --git a/core/src/main/java/com/boydti/fawe/object/extent/FastWorldEditExtent.java b/core/src/main/java/com/boydti/fawe/object/extent/FastWorldEditExtent.java index 9526a382..a1126ed1 100644 --- a/core/src/main/java/com/boydti/fawe/object/extent/FastWorldEditExtent.java +++ b/core/src/main/java/com/boydti/fawe/object/extent/FastWorldEditExtent.java @@ -30,7 +30,7 @@ public class FastWorldEditExtent extends AbstractDelegateExtent implements HasFa private final int maxY; public FastWorldEditExtent(final World world, FaweQueue queue) { - super(world); + super(queue); this.queue = queue; this.maxY = world.getMaxY(); }