From 9431f7c18911d68b01d3ab96e785aa9fd72145f9 Mon Sep 17 00:00:00 2001 From: IronApollo Date: Mon, 14 Sep 2020 21:18:06 -0400 Subject: [PATCH] Fix Vault integration + remove DummyFAWE --- .../com/boydti/fawe/bukkit/FaweBukkit.java | 15 --- .../java/com/sk89q/wepif/VaultResolver.java | 2 +- .../sk89q/worldedit/bukkit/BukkitPlayer.java | 13 ++- .../worldedit/bukkit/WorldEditPlugin.java | 107 +----------------- .../src/main/resources/plugin.yml | 3 +- 5 files changed, 13 insertions(+), 127 deletions(-) diff --git a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/FaweBukkit.java b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/FaweBukkit.java index 9c0079ea8..1f58e55ff 100644 --- a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/FaweBukkit.java +++ b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/FaweBukkit.java @@ -53,7 +53,6 @@ public class FaweBukkit implements IFawe, Listener { private static final Logger log = LoggerFactory.getLogger(FaweBukkit.class); private final Plugin plugin; - private VaultUtil vault; private ItemUtil itemUtil; private boolean listeningImages; @@ -61,10 +60,6 @@ public class FaweBukkit implements IFawe, Listener { private CFIPacketListener packetListener; private final boolean chunksStretched; - public VaultUtil getVault() { - return this.vault; - } - public FaweBukkit(Plugin plugin) { this.plugin = plugin; try { @@ -87,9 +82,6 @@ public class FaweBukkit implements IFawe, Listener { chunksStretched = Integer.parseInt(Bukkit.getBukkitVersion().split("-")[0].split("\\.")[1]) >= 16; - //Vault is Spigot/Paper only so this needs to be done in the Bukkit module - TaskManager.IMP.later(this::setupVault, 0); - //PlotSquared support is limited to Spigot/Paper as of 02/20/2020 TaskManager.IMP.later(this::setupPlotSquared, 0); @@ -177,13 +169,6 @@ public class FaweBukkit implements IFawe, Listener { return tmp; } - private void setupVault() { - try { - this.vault = new VaultUtil(); - } catch (final Throwable ignored) { - } - } - @Override public String getDebugInfo() { StringBuilder msg = new StringBuilder(); msg.append("Server Version: ").append(Bukkit.getVersion()).append("\n"); diff --git a/worldedit-bukkit/src/main/java/com/sk89q/wepif/VaultResolver.java b/worldedit-bukkit/src/main/java/com/sk89q/wepif/VaultResolver.java index c5019f0d1..39746bf0e 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/wepif/VaultResolver.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/wepif/VaultResolver.java @@ -28,7 +28,7 @@ import org.bukkit.plugin.RegisteredServiceProvider; public class VaultResolver implements PermissionsResolver { - private static Permission perms = null; + public static Permission perms = null; public static PermissionsResolver factory(Server server, YAMLProcessor config) { if (server.getPluginManager().getPlugin("Vault") == null) { diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitPlayer.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitPlayer.java index ef6370e85..64b5d8389 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitPlayer.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitPlayer.java @@ -26,6 +26,7 @@ import com.boydti.fawe.config.Settings; import com.boydti.fawe.object.RunnableVal; import com.boydti.fawe.util.TaskManager; import com.sk89q.util.StringUtil; +import com.sk89q.wepif.VaultResolver; import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.blocks.BaseItemStack; @@ -240,13 +241,15 @@ public class BukkitPlayer extends AbstractPlayerActor { * Permissions are used to managing WorldEdit region restrictions * - The `/wea` command will give/remove the required bypass permission */ - if (Fawe.imp().getVault() == null || Fawe. imp().getVault().permission == null) { - player.addAttachment(plugin).setPermission(permission, value); - } else if (value) { - if (!Fawe. imp().getVault().permission.playerAdd(player, permission)) { + if(VaultResolver.perms != null){ + if(value){ + if(!VaultResolver.perms.playerAdd(player, permission)){ + player.addAttachment(plugin).setPermission(permission, value); + } + }else if(!VaultResolver.perms.playerRemove(player, permission)){ player.addAttachment(plugin).setPermission(permission, value); } - } else if (!Fawe.imp().getVault().permission.playerRemove(player, permission)) { + }else{ player.addAttachment(plugin).setPermission(permission, value); } } diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java index f56998faa..0b769b75b 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java @@ -125,70 +125,9 @@ public class WorldEditPlugin extends JavaPlugin { //implements TabCompleter private BukkitServerInterface server; private BukkitConfiguration config; - private static Map lookupNames; - - static { - // Disable AWE as otherwise both fail to load - PluginManager manager = Bukkit.getPluginManager(); - try { - Field pluginsField = manager.getClass().getDeclaredField("plugins"); - Field lookupNamesField = manager.getClass().getDeclaredField("lookupNames"); - pluginsField.setAccessible(true); - lookupNamesField.setAccessible(true); - List plugins = (List) pluginsField.get(manager); - lookupNames = (Map) lookupNamesField.get(manager); - pluginsField.set(manager, new ArrayList(plugins) { - @Override - public boolean add(Plugin plugin) { - if (plugin.getName().startsWith("AsyncWorldEdit")) { - log.debug("Disabling `" + plugin.getName() + "` as it is incompatible"); - } else { - return super.add(plugin); - } - return false; - } - }); - lookupNamesField.set(manager, lookupNames = new ConcurrentHashMap(lookupNames) { - @Override - public Plugin put(@NotNull String key, @NotNull Plugin plugin) { - if (plugin.getName().startsWith("AsyncWorldEdit")) { - return null; - } - return super.put(key, plugin); - } - }); - } catch (Throwable ignored) { - } - } - - public WorldEditPlugin() { - init(); - } - - public WorldEditPlugin(JavaPluginLoader loader, PluginDescriptionFile desc, File dataFolder, File jarFile) { - super(loader, desc, dataFolder, jarFile); - init(); - } - - private void init() { - if (lookupNames != null) { - lookupNames.putIfAbsent("FastAsyncWorldEdit".toLowerCase(Locale.ROOT), this); - lookupNames.putIfAbsent("WorldEdit".toLowerCase(Locale.ROOT), this); - lookupNames.putIfAbsent("FastAsyncWorldEdit", this); - lookupNames.putIfAbsent("WorldEdit", this); - rename(); - } - setEnabled(true); - } - @Override public void onLoad() { - if (INSTANCE != null) { - return; - } - rename(); INSTANCE = this; - FaweBukkit imp = new FaweBukkit(this); //noinspection ResultOfMethodCallIgnored getDataFolder().mkdirs(); @@ -203,8 +142,6 @@ public class WorldEditPlugin extends JavaPlugin { //implements TabCompleter if (Files.exists(delChunks)) { ChunkDeleter.runFromFile(delChunks, true); } - - fail(() -> PermissionsResolverManager.initialize(INSTANCE), "Failed to initialize permissions resolver"); } /** @@ -212,10 +149,8 @@ public class WorldEditPlugin extends JavaPlugin { //implements TabCompleter */ @Override public void onEnable() { - if (INSTANCE != null) { - return; - } - onLoad(); + + FaweBukkit imp = new FaweBukkit(this); PermissionsResolverManager.initialize(this); // Setup permission resolver @@ -335,44 +270,6 @@ public class WorldEditPlugin extends JavaPlugin { //implements TabCompleter } } - private void rename() { - File dir = new File(getDataFolder().getParentFile(), "FastAsyncWorldEdit"); - try { - Field descriptionField = JavaPlugin.class.getDeclaredField("dataFolder"); - descriptionField.setAccessible(true); - descriptionField.set(this, dir); - } catch (Throwable e) { - e.printStackTrace(); - } - try { - File pluginsFolder = MainUtil.getJarFile().getParentFile(); - - for (File file : pluginsFolder.listFiles()) { - if (file.length() == 2052) { - return; - } - } - Plugin plugin = Bukkit.getPluginManager().getPlugin("FastAsyncWorldEdit"); - File dummy = MainUtil.copyFile(MainUtil.getJarFile(), "DummyFawe.src", pluginsFolder, "DummyFawe.jar"); - if (dummy != null && dummy.exists() && plugin == this) { - try { - Bukkit.getPluginManager().loadPlugin(dummy); - } catch (Throwable e) { - if (Bukkit.getUpdateFolderFile().mkdirs()) { - MainUtil.copyFile(MainUtil.getJarFile(), "DummyFawe.src", pluginsFolder, Bukkit.getUpdateFolder() + File.separator + "DummyFawe.jar"); - } else { - getLogger().info("Please delete DummyFawe.jar and restart"); - } - } - getLogger().info("Please restart the server if you have any plugins which depend on FAWE."); - } else if (dummy == null) { - MainUtil.copyFile(MainUtil.getJarFile(), "DummyFawe.src", pluginsFolder, "update" + File.separator + "DummyFawe.jar"); - } - } catch (Throwable e) { - e.printStackTrace(); - } - } - private void fail(Runnable run, String message) { try { run.run(); diff --git a/worldedit-bukkit/src/main/resources/plugin.yml b/worldedit-bukkit/src/main/resources/plugin.yml index 9126b008f..30b1c0f50 100644 --- a/worldedit-bukkit/src/main/resources/plugin.yml +++ b/worldedit-bukkit/src/main/resources/plugin.yml @@ -1,9 +1,10 @@ -name: WorldEdit +name: FastAsyncWorldEdit main: com.sk89q.worldedit.bukkit.WorldEditPlugin version: "${internalVersion}" load: STARTUP api-version: 1.13 softdepend: [Vault] +provides: [WorldEdit] website: https://intellectualsites.github.io/download/fawe.html description: Blazingly fast world manipulation for builders, large networks and developers. authors: [Empire92, MattBDev, IronApollo, dordsor21, NotMyFault]