From 361a4e3dce921b31ed48f4c50ce582d32b86596d Mon Sep 17 00:00:00 2001 From: Jesse Boyd Date: Sat, 13 Apr 2019 00:56:10 +1000 Subject: [PATCH] Potential NBT fix --- .../main/java/com/boydti/fawe/FaweCache.java | 5 +- .../object/extent/FastWorldEditExtent.java | 265 ++++++++++++++---- 2 files changed, 206 insertions(+), 64 deletions(-) diff --git a/core/src/main/java/com/boydti/fawe/FaweCache.java b/core/src/main/java/com/boydti/fawe/FaweCache.java index 9c14313b..2f6eb6b2 100644 --- a/core/src/main/java/com/boydti/fawe/FaweCache.java +++ b/core/src/main/java/com/boydti/fawe/FaweCache.java @@ -907,12 +907,9 @@ public class FaweCache { case 250: case 251: case 252: - case 253: - case 254: - case 256: return false; default: - return id > 256; + return id > 252; } } 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 6cd92232..1234af9e 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 @@ -154,77 +154,24 @@ public class FastWorldEditExtent extends AbstractDelegateExtent implements HasFa public boolean setBlock(int x, int y, int z, final BaseBlock block) throws WorldEditException { int id = block.getId(); switch (id) { - case 63: + case 63: { // Fix for signs CompoundTag nbt = block.getNbtData(); return queue.setBlock(x, y, z, id, block.getData(), nbt != null && !MainUtil.isValidSign(nbt) ? null : nbt); - case 65: + } + case 65: // Fix rotation case 68: case 54: case 146: - case 61: + case 61: { // Fix for default block rotation byte data = (byte) block.getData(); if (data == 0) { data = 2; } return queue.setBlock(x, y, z, id, data, block.getNbtData()); - case 26: - case 218: - case 130: - case 142: - case 27: - case 137: - case 52: - case 154: - case 84: - case 25: - case 144: - case 138: - case 176: - case 177: - case 119: - case 323: - case 117: - case 116: - case 28: - case 66: - case 157: - case 62: - case 140: - case 149: - case 150: - case 158: - case 23: - case 123: - case 124: - case 29: - case 33: - case 151: - case 178: - case 209: - case 210: - case 211: - case 255: - case 219: - case 220: - case 221: - case 222: - case 223: - case 224: - case 225: - case 226: - case 227: - case 228: - case 229: - case 230: - case 231: - case 232: - case 233: - case 234: - // Tile - return queue.setBlock(x, y, z, id, block.getData(), block.getNbtData()); - case 0: + } + case 0: // No data case 2: case 4: case 13: @@ -283,9 +230,207 @@ public class FastWorldEditExtent extends AbstractDelegateExtent implements HasFa case 192: // No data return queue.setBlock(x, y, z, id); - default: { + case 1: // No tiles + case 3: + case 5: + case 6: + case 8: + case 9: + case 10: + case 11: + case 12: + case 16: + case 17: + case 18: + case 19: + case 24: + case 31: + case 34: + case 35: + case 36: + case 38: + case 43: + case 44: + case 50: + case 53: + case 55: + case 59: + case 60: + case 64: + case 67: + case 69: + case 70: + case 71: + case 72: + case 75: + case 76: + case 77: + case 78: + case 89: + case 90: + case 91: + case 92: + case 93: + case 94: + case 95: + case 96: + case 97: + case 98: + case 99: + case 100: + case 104: + case 105: + case 106: + case 107: + case 108: + case 109: + case 111: + case 114: + case 115: + case 118: + case 120: + case 125: + case 126: + case 127: + case 128: + case 131: + case 132: + case 134: + case 135: + case 136: + case 139: + case 141: + case 143: + case 145: + case 147: + case 148: + case 152: + case 153: + case 155: + case 156: + case 159: + case 160: + case 161: + case 162: + case 163: + case 164: + case 167: + case 168: + case 170: + case 171: + case 175: + case 179: + case 180: + case 181: + case 182: + case 183: + case 184: + case 185: + case 186: + case 187: + case 193: + case 194: + case 195: + case 196: + case 197: + case 198: + case 199: + case 200: + case 201: + case 202: + case 203: + case 204: + case 205: + case 206: + case 207: + case 208: + case 212: + case 213: + case 214: + case 215: + case 216: + case 217: + case 235: + case 236: + case 237: + case 238: + case 239: + case 240: + case 241: + case 242: + case 243: + case 244: + case 245: + case 246: + case 247: + case 248: + case 249: + case 250: + case 251: + case 252: { return queue.setBlock(x, y, z, id, block.getData()); } + case 26: // Tiles + case 218: + case 130: + case 142: + case 27: + case 137: + case 52: + case 154: + case 84: + case 25: + case 144: + case 138: + case 176: + case 177: + case 119: + case 323: + case 117: + case 116: + case 28: + case 66: + case 157: + case 62: + case 140: + case 149: + case 150: + case 158: + case 23: + case 123: + case 124: + case 29: + case 33: + case 151: + case 178: + case 209: + case 210: + case 211: + case 255: + case 219: + case 220: + case 221: + case 222: + case 223: + case 224: + case 225: + case 226: + case 227: + case 228: + case 229: + case 230: + case 231: + case 232: + case 233: + case 234: + default: { + CompoundTag nbt = block.getNbtData(); + if (nbt != null) { + return queue.setBlock(x, y, z, id, block.getData(), nbt); + } else { + return queue.setBlock(x, y, z, id, block.getData()); + } + } } } }