diff --git a/src/main/java/com/drtshock/playervaults/commands/ConvertCommand.java b/src/main/java/com/drtshock/playervaults/commands/ConvertCommand.java
index 10c212a..aac5e05 100644
--- a/src/main/java/com/drtshock/playervaults/commands/ConvertCommand.java
+++ b/src/main/java/com/drtshock/playervaults/commands/ConvertCommand.java
@@ -19,10 +19,7 @@
package com.drtshock.playervaults.commands;
import com.drtshock.playervaults.PlayerVaults;
-import com.drtshock.playervaults.converters.BackpackConverter;
-import com.drtshock.playervaults.converters.Converter;
-import com.drtshock.playervaults.converters.Cosmic2Converter;
-import com.drtshock.playervaults.converters.Cosmic3Converter;
+import com.drtshock.playervaults.converters.*;
import com.drtshock.playervaults.vaultmanagement.VaultOperations;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
@@ -40,6 +37,7 @@ public class ConvertCommand implements CommandExecutor {
converters.add(new BackpackConverter());
converters.add(new Cosmic2Converter());
converters.add(new Cosmic3Converter());
+ converters.add(new EnderVaultsConverter());
this.plugin = plugin;
}
diff --git a/src/main/java/com/drtshock/playervaults/converters/EnderVaultsConverter.java b/src/main/java/com/drtshock/playervaults/converters/EnderVaultsConverter.java
new file mode 100644
index 0000000..6c40ad2
--- /dev/null
+++ b/src/main/java/com/drtshock/playervaults/converters/EnderVaultsConverter.java
@@ -0,0 +1,127 @@
+/*
+ * PlayerVaultsX
+ * Copyright (C) 2013 Trent Hensler, turt2live
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package com.drtshock.playervaults.converters;
+
+import com.drtshock.playervaults.PlayerVaults;
+import com.drtshock.playervaults.vaultmanagement.VaultManager;
+import org.bukkit.command.CommandSender;
+import org.bukkit.inventory.Inventory;
+import org.bukkit.plugin.Plugin;
+
+import java.io.IOException;
+import java.lang.invoke.MethodHandle;
+import java.lang.invoke.MethodHandles;
+import java.lang.invoke.MethodType;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.logging.Level;
+import java.util.stream.Stream;
+
+public class EnderVaultsConverter implements Converter {
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public int run(CommandSender initiator) {
+ PlayerVaults plugin = PlayerVaults.getInstance();
+ VaultManager vaultManager = VaultManager.getInstance();
+
+ Path path = plugin.getDataFolder().toPath().getParent().resolve("EnderVaults").resolve("data");
+ if (!Files.isDirectory(path)) {
+ plugin.getLogger().warning("Could not find EnderVaults data folder");
+ return -1;
+ }
+
+ MethodHandle load;
+ MethodHandle getInventory;
+ MethodHandle getMetadata;
+ Plugin enderVaultsPlugin = plugin.getServer().getPluginManager().getPlugin("EnderVaults");
+ Object dataStorage;
+
+ if (enderVaultsPlugin == null) {
+ plugin.getLogger().warning("EnderVaults not running. Need it to convert.");
+ return -1;
+ }
+ try {
+ Class> pluginClass = Class.forName("com.github.dig.endervaults.api.EnderVaultsPlugin");
+ Class> dataStorageClass = Class.forName("com.github.dig.endervaults.api.storage.DataStorage");
+ Class> bukkitVaultClass = Class.forName("com.github.dig.endervaults.bukkit.vault.BukkitVault");
+
+ MethodHandles.Lookup lookup = MethodHandles.publicLookup();
+
+ MethodType typeGetDataStorage = MethodType.methodType(dataStorageClass);
+ MethodHandle getDataStorage = lookup.findVirtual(pluginClass, "getDataStorage", typeGetDataStorage);
+
+ dataStorage = getDataStorage.invoke(enderVaultsPlugin);
+
+ MethodType typeLoad = MethodType.methodType(List.class, UUID.class);
+ load = lookup.findVirtual(dataStorageClass, "load", typeLoad);
+ MethodType typeGetInventory = MethodType.methodType(Inventory.class);
+ getInventory = lookup.findVirtual(bukkitVaultClass, "getInventory", typeGetInventory);
+ MethodType typeGetMetadata = MethodType.methodType(Map.class);
+ getMetadata = lookup.findVirtual(bukkitVaultClass, "getMetadata", typeGetMetadata);
+
+ if (!pluginClass.isAssignableFrom(enderVaultsPlugin.getClass())) {
+ plugin.getLogger().warning("EnderVaults plugin not of expected type");
+ return -1;
+ }
+ } catch (Throwable e) {
+ e.printStackTrace();
+ return -1;
+ }
+
+ AtomicInteger playerCount = new AtomicInteger(0);
+ try (Stream dir = Files.list(path)) {
+ dir.forEach(f -> {
+ if (!Files.isDirectory(f)) {
+ return;
+ }
+ try {
+ List