From ea0133b740f83d073b8b48ea983d3b58a8a94388 Mon Sep 17 00:00:00 2001 From: IronApollo Date: Fri, 19 Oct 2018 18:24:58 -0400 Subject: [PATCH 1/3] Changes to completely separate SyncTabCompleteListener from Paper --- .../boydti/fawe/bukkit/listener/SyncTabCompleteListener.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/listener/SyncTabCompleteListener.java b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/listener/SyncTabCompleteListener.java index 323ac0db4..02ebe9a85 100644 --- a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/listener/SyncTabCompleteListener.java +++ b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/listener/SyncTabCompleteListener.java @@ -1,6 +1,8 @@ package com.boydti.fawe.bukkit.listener; import com.sk89q.worldedit.bukkit.WorldEditPlugin; + +import org.bukkit.command.ConsoleCommandSender; import org.bukkit.event.EventHandler; import org.bukkit.event.server.TabCompleteEvent; @@ -13,7 +15,7 @@ public class SyncTabCompleteListener extends ATabCompleteListener { @EventHandler public void onTabComplete(TabCompleteEvent event) { - if (event.isCommand()) { + if (event.getSender() instanceof ConsoleCommandSender || event.getBuffer().startsWith("/")) { List result = this.onTab(event.getBuffer(), event.getSender()); if (result != null) { event.setCompletions(result); From be73d2935498b199f5d169739151893f9baab559 Mon Sep 17 00:00:00 2001 From: IronApollo Date: Wed, 24 Oct 2018 18:25:50 -0400 Subject: [PATCH 2/3] 1.13.2 setType adaptation --- .../bukkit/adapter/v1_13_1/Spigot_v1_13_R2.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/v1_13_1/Spigot_v1_13_R2.java b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/v1_13_1/Spigot_v1_13_R2.java index 10eda3100..22df9a2c1 100644 --- a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/v1_13_1/Spigot_v1_13_R2.java +++ b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/v1_13_1/Spigot_v1_13_R2.java @@ -53,6 +53,7 @@ import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; import javax.annotation.Nullable; import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.*; import java.util.function.Consumer; @@ -68,6 +69,7 @@ public final class Spigot_v1_13_R2 extends CachedBukkitAdapter implements Bukkit private final Field nbtListTagListField; private final Method nbtCreateTagMethod; + private Method chunkSetTypeMethod; static { // A simple test @@ -86,6 +88,13 @@ public final class Spigot_v1_13_R2 extends CachedBukkitAdapter implements Bukkit // The method to create an NBTBase tag given its type ID nbtCreateTagMethod = NBTBase.class.getDeclaredMethod("createTag", byte.class); nbtCreateTagMethod.setAccessible(true); + + // 1.13.2 Adaptation to find the a/setType method + try { + chunkSetTypeMethod = Chunk.class.getMethod("setType", BlockPosition.class, IBlockData.class, boolean.class); + }catch(NoSuchMethodException e) { + chunkSetTypeMethod = Chunk.class.getMethod("a", BlockPosition.class, IBlockData.class, boolean.class); + } } private int[] idbToStateOrdinal; @@ -276,7 +285,12 @@ public final class Spigot_v1_13_R2 extends CachedBukkitAdapter implements Bukkit sections[y4] = section = new ChunkSection(y4 << 4, nmsWorld.worldProvider.g()); } if (existing.e() != blockData.e() || existing.getMaterial().f() != blockData.getMaterial().f()) { - nmsChunk.a(pos = new BlockPosition(x, y, z), blockData, false); + try { + chunkSetTypeMethod.invoke(pos = new BlockPosition(x, y, z), blockData, false); + } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { + logger.warning("Error when setting block!"); + e.printStackTrace(); + } } else { section.setType(x & 15, y & 15, z & 15, blockData); } From 34c8ecc694ad9d6991189f7569859a4b6358a0c0 Mon Sep 17 00:00:00 2001 From: IronApollo Date: Thu, 25 Oct 2018 07:12:08 -0400 Subject: [PATCH 3/3] Fixed invoke method missing argument --- .../com/boydti/fawe/bukkit/adapter/v1_13_1/Spigot_v1_13_R2.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/v1_13_1/Spigot_v1_13_R2.java b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/v1_13_1/Spigot_v1_13_R2.java index 22df9a2c1..5d1987cf9 100644 --- a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/v1_13_1/Spigot_v1_13_R2.java +++ b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/v1_13_1/Spigot_v1_13_R2.java @@ -286,7 +286,7 @@ public final class Spigot_v1_13_R2 extends CachedBukkitAdapter implements Bukkit } if (existing.e() != blockData.e() || existing.getMaterial().f() != blockData.getMaterial().f()) { try { - chunkSetTypeMethod.invoke(pos = new BlockPosition(x, y, z), blockData, false); + chunkSetTypeMethod.invoke(nmsChunk, pos = new BlockPosition(x, y, z), blockData, false); } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { logger.warning("Error when setting block!"); e.printStackTrace();