Workaround for WorldEdit's sign bug
This commit is contained in:
parent
2012d56900
commit
aa06bc19d2
@ -2,6 +2,7 @@ package com.boydti.fawe.object.extent;
|
|||||||
|
|
||||||
import com.boydti.fawe.FaweCache;
|
import com.boydti.fawe.FaweCache;
|
||||||
import com.boydti.fawe.util.FaweQueue;
|
import com.boydti.fawe.util.FaweQueue;
|
||||||
|
import com.boydti.fawe.util.MainUtil;
|
||||||
import com.boydti.fawe.util.TaskManager;
|
import com.boydti.fawe.util.TaskManager;
|
||||||
import com.sk89q.worldedit.BlockVector;
|
import com.sk89q.worldedit.BlockVector;
|
||||||
import com.sk89q.worldedit.EditSession;
|
import com.sk89q.worldedit.EditSession;
|
||||||
@ -93,6 +94,12 @@ public class FastWorldEditExtent extends FaweExtent {
|
|||||||
final int y = location.getBlockY();
|
final int y = location.getBlockY();
|
||||||
final int z = location.getBlockZ();
|
final int z = location.getBlockZ();
|
||||||
switch (id) {
|
switch (id) {
|
||||||
|
case 63:
|
||||||
|
case 68:
|
||||||
|
if (block.hasNbtData() && !MainUtil.isValidSign(block.getNbtData())) {
|
||||||
|
queue.setBlock(x, y, z, id, FaweCache.hasData(id) ? (byte) block.getData() : 0);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
case 54:
|
case 54:
|
||||||
case 130:
|
case 130:
|
||||||
case 142:
|
case 142:
|
||||||
@ -106,9 +113,7 @@ public class FastWorldEditExtent extends FaweExtent {
|
|||||||
case 138:
|
case 138:
|
||||||
case 176:
|
case 176:
|
||||||
case 177:
|
case 177:
|
||||||
case 63:
|
|
||||||
case 119:
|
case 119:
|
||||||
case 68:
|
|
||||||
case 323:
|
case 323:
|
||||||
case 117:
|
case 117:
|
||||||
case 116:
|
case 116:
|
||||||
|
@ -5,6 +5,7 @@ import com.boydti.fawe.object.FaweLimit;
|
|||||||
import com.boydti.fawe.object.FawePlayer;
|
import com.boydti.fawe.object.FawePlayer;
|
||||||
import com.boydti.fawe.object.RegionWrapper;
|
import com.boydti.fawe.object.RegionWrapper;
|
||||||
import com.boydti.fawe.util.FaweQueue;
|
import com.boydti.fawe.util.FaweQueue;
|
||||||
|
import com.boydti.fawe.util.MainUtil;
|
||||||
import com.boydti.fawe.util.TaskManager;
|
import com.boydti.fawe.util.TaskManager;
|
||||||
import com.boydti.fawe.util.WEManager;
|
import com.boydti.fawe.util.WEManager;
|
||||||
import com.sk89q.worldedit.BlockVector;
|
import com.sk89q.worldedit.BlockVector;
|
||||||
@ -108,7 +109,13 @@ public class ProcessedWEExtent extends FaweExtent {
|
|||||||
@Override
|
@Override
|
||||||
public boolean setBlock(final Vector location, final BaseBlock block) throws WorldEditException {
|
public boolean setBlock(final Vector location, final BaseBlock block) throws WorldEditException {
|
||||||
final short id = (short) block.getType();
|
final short id = (short) block.getType();
|
||||||
|
boolean nbt = true;
|
||||||
switch (id) {
|
switch (id) {
|
||||||
|
case 63:
|
||||||
|
case 68:
|
||||||
|
if (block.hasNbtData() && !MainUtil.isValidSign(block.getNbtData())) {
|
||||||
|
nbt = false;
|
||||||
|
}
|
||||||
case 54:
|
case 54:
|
||||||
case 130:
|
case 130:
|
||||||
case 142:
|
case 142:
|
||||||
@ -122,9 +129,7 @@ public class ProcessedWEExtent extends FaweExtent {
|
|||||||
case 138:
|
case 138:
|
||||||
case 176:
|
case 176:
|
||||||
case 177:
|
case 177:
|
||||||
case 63:
|
|
||||||
case 119:
|
case 119:
|
||||||
case 68:
|
|
||||||
case 323:
|
case 323:
|
||||||
case 117:
|
case 117:
|
||||||
case 116:
|
case 116:
|
||||||
@ -158,7 +163,7 @@ public class ProcessedWEExtent extends FaweExtent {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (block.hasNbtData()) {
|
if (block.hasNbtData() && nbt) {
|
||||||
final Vector loc = new Vector(location.x, location.y, location.z);
|
final Vector loc = new Vector(location.x, location.y, location.z);
|
||||||
queue.addTask(x >> 4, z >> 4, new Runnable() {
|
queue.addTask(x >> 4, z >> 4, new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -8,6 +8,7 @@ import com.sk89q.jnbt.EndTag;
|
|||||||
import com.sk89q.jnbt.ListTag;
|
import com.sk89q.jnbt.ListTag;
|
||||||
import com.sk89q.jnbt.Tag;
|
import com.sk89q.jnbt.Tag;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
public class MainUtil {
|
public class MainUtil {
|
||||||
@ -53,12 +54,13 @@ public class MainUtil {
|
|||||||
if (tag instanceof EndTag) {
|
if (tag instanceof EndTag) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (tag instanceof ListTag) {
|
else if (tag instanceof ListTag) {
|
||||||
if (((ListTag) tag).getType() == EndTag.class) {
|
ListTag lt = (ListTag) tag;
|
||||||
|
if ((lt).getType() == EndTag.class) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (tag instanceof CompoundTag) {
|
else if (tag instanceof CompoundTag) {
|
||||||
for (Entry<String, Tag> entry : ((CompoundTag) tag).getValue().entrySet()) {
|
for (Entry<String, Tag> entry : ((CompoundTag) tag).getValue().entrySet()) {
|
||||||
if (!isValidTag(entry.getValue())) {
|
if (!isValidTag(entry.getValue())) {
|
||||||
return false;
|
return false;
|
||||||
@ -67,4 +69,9 @@ public class MainUtil {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isValidSign(CompoundTag tag) {
|
||||||
|
Map<String, Tag> values = tag.getValue();
|
||||||
|
return values.size() > 4 && values.containsKey("Text1");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user