Fancier debug/help
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<groupId>com.drtshock</groupId>
|
<groupId>com.drtshock</groupId>
|
||||||
<artifactId>PlayerVaultsX</artifactId>
|
<artifactId>PlayerVaultsX</artifactId>
|
||||||
<version>4.1.17</version>
|
<version>4.2.0-SNAPSHOT</version>
|
||||||
<name>PlayerVaultsX</name>
|
<name>PlayerVaultsX</name>
|
||||||
<url>https://www.spigotmc.org/resources/51204/</url>
|
<url>https://www.spigotmc.org/resources/51204/</url>
|
||||||
|
|
||||||
@@ -74,6 +74,10 @@
|
|||||||
<id>vault-repo</id>
|
<id>vault-repo</id>
|
||||||
<url>http://nexus.hc.to/content/repositories/pub_releases/</url>
|
<url>http://nexus.hc.to/content/repositories/pub_releases/</url>
|
||||||
</repository>
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>fuuid-repo</id>
|
||||||
|
<url>https://github.com/factions-site/repo/raw/public</url>
|
||||||
|
</repository>
|
||||||
<repository>
|
<repository>
|
||||||
<id>spigot-repo</id>
|
<id>spigot-repo</id>
|
||||||
<url>https://hub.spigotmc.org/nexus/content/groups/public/</url>
|
<url>https://hub.spigotmc.org/nexus/content/groups/public/</url>
|
||||||
@@ -119,6 +123,12 @@
|
|||||||
<version>0.1.0</version>
|
<version>0.1.0</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.kitteh</groupId>
|
||||||
|
<artifactId>paste-gg-api</artifactId>
|
||||||
|
<version>0.9.1</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.spigotmc</groupId>
|
<groupId>org.spigotmc</groupId>
|
||||||
<artifactId>spigot-api</artifactId>
|
<artifactId>spigot-api</artifactId>
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ package com.drtshock.playervaults;
|
|||||||
|
|
||||||
import com.drtshock.playervaults.commands.ConvertCommand;
|
import com.drtshock.playervaults.commands.ConvertCommand;
|
||||||
import com.drtshock.playervaults.commands.DeleteCommand;
|
import com.drtshock.playervaults.commands.DeleteCommand;
|
||||||
|
import com.drtshock.playervaults.commands.HelpMeCommand;
|
||||||
import com.drtshock.playervaults.commands.SignCommand;
|
import com.drtshock.playervaults.commands.SignCommand;
|
||||||
import com.drtshock.playervaults.commands.SignSetInfo;
|
import com.drtshock.playervaults.commands.SignSetInfo;
|
||||||
import com.drtshock.playervaults.commands.VaultCommand;
|
import com.drtshock.playervaults.commands.VaultCommand;
|
||||||
@@ -30,11 +31,10 @@ import com.drtshock.playervaults.listeners.Listeners;
|
|||||||
import com.drtshock.playervaults.listeners.SignListener;
|
import com.drtshock.playervaults.listeners.SignListener;
|
||||||
import com.drtshock.playervaults.listeners.VaultPreloadListener;
|
import com.drtshock.playervaults.listeners.VaultPreloadListener;
|
||||||
import com.drtshock.playervaults.tasks.Cleanup;
|
import com.drtshock.playervaults.tasks.Cleanup;
|
||||||
|
import com.drtshock.playervaults.vaultmanagement.EconomyOperations;
|
||||||
import com.drtshock.playervaults.vaultmanagement.VaultManager;
|
import com.drtshock.playervaults.vaultmanagement.VaultManager;
|
||||||
import com.drtshock.playervaults.vaultmanagement.VaultViewInfo;
|
import com.drtshock.playervaults.vaultmanagement.VaultViewInfo;
|
||||||
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
|
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
|
||||||
import net.milkbowl.vault.economy.Economy;
|
|
||||||
import net.milkbowl.vault.permission.Permission;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@@ -47,23 +47,28 @@ import org.bukkit.configuration.file.YamlConfiguration;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
import org.bukkit.plugin.RegisteredServiceProvider;
|
|
||||||
import org.bukkit.plugin.SimplePluginManager;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
import sun.misc.Unsafe;
|
import sun.misc.Unsafe;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.io.StringWriter;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.lang.reflect.Modifier;
|
import java.lang.reflect.Modifier;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.time.ZonedDateTime;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
@@ -77,7 +82,6 @@ public class PlayerVaults extends JavaPlugin {
|
|||||||
// VaultViewInfo - Inventory
|
// VaultViewInfo - Inventory
|
||||||
private final HashMap<String, Inventory> openInventories = new HashMap<>();
|
private final HashMap<String, Inventory> openInventories = new HashMap<>();
|
||||||
private final Set<Material> blockedMats = new HashSet<>();
|
private final Set<Material> blockedMats = new HashSet<>();
|
||||||
private Economy economy;
|
|
||||||
private boolean useVault;
|
private boolean useVault;
|
||||||
private YamlConfiguration signs;
|
private YamlConfiguration signs;
|
||||||
private File signsFile;
|
private File signsFile;
|
||||||
@@ -92,6 +96,7 @@ public class PlayerVaults extends JavaPlugin {
|
|||||||
private Config config = new Config();
|
private Config config = new Config();
|
||||||
private BukkitAudiences platform;
|
private BukkitAudiences platform;
|
||||||
private Translation translation = new Translation(this);
|
private Translation translation = new Translation(this);
|
||||||
|
private List<String> exceptions = new CopyOnWriteArrayList<>();
|
||||||
|
|
||||||
public static PlayerVaults getInstance() {
|
public static PlayerVaults getInstance() {
|
||||||
return instance;
|
return instance;
|
||||||
@@ -142,9 +147,10 @@ public class PlayerVaults extends JavaPlugin {
|
|||||||
getCommand("pvdel").setExecutor(new DeleteCommand(this));
|
getCommand("pvdel").setExecutor(new DeleteCommand(this));
|
||||||
getCommand("pvconvert").setExecutor(new ConvertCommand(this));
|
getCommand("pvconvert").setExecutor(new ConvertCommand(this));
|
||||||
getCommand("pvsign").setExecutor(new SignCommand(this));
|
getCommand("pvsign").setExecutor(new SignCommand(this));
|
||||||
|
getCommand("pvhelpme").setExecutor(new HelpMeCommand(this));
|
||||||
debug("registered commands", time);
|
debug("registered commands", time);
|
||||||
time = System.currentTimeMillis();
|
time = System.currentTimeMillis();
|
||||||
useVault = setupEconomy();
|
useVault = EconomyOperations.setup();
|
||||||
debug("setup economy", time);
|
debug("setup economy", time);
|
||||||
|
|
||||||
if (getConf().getPurge().isEnabled()) {
|
if (getConf().getPurge().isEnabled()) {
|
||||||
@@ -167,15 +173,18 @@ public class PlayerVaults extends JavaPlugin {
|
|||||||
this.metricsDrillPie("vault_econ", () -> {
|
this.metricsDrillPie("vault_econ", () -> {
|
||||||
Map<String, Map<String, Integer>> map = new HashMap<>();
|
Map<String, Map<String, Integer>> map = new HashMap<>();
|
||||||
Map<String, Integer> entry = new HashMap<>();
|
Map<String, Integer> entry = new HashMap<>();
|
||||||
entry.put(economy == null ? "none" : economy.getName(), 1);
|
entry.put(!this.useVault ? "none" : EconomyOperations.getName(), 1);
|
||||||
map.put(isEconomyEnabled() ? "enabled" : "disabled", entry);
|
map.put(isEconomyEnabled() ? "enabled" : "disabled", entry);
|
||||||
return map;
|
return map;
|
||||||
});
|
});
|
||||||
if (isEconomyEnabled()) {
|
if (isEconomyEnabled()) {
|
||||||
String name = economy.getName();
|
String name = EconomyOperations.getName();
|
||||||
if (name.equals("Essentials Economy")) {
|
if (name.equals("Essentials Economy")) {
|
||||||
name = "Essentials";
|
name = "Essentials";
|
||||||
}
|
}
|
||||||
|
if (name.equals("CMIEconomy")) {
|
||||||
|
name = "CMI";
|
||||||
|
}
|
||||||
Plugin plugin = getServer().getPluginManager().getPlugin(name);
|
Plugin plugin = getServer().getPluginManager().getPlugin(name);
|
||||||
if (plugin != null) {
|
if (plugin != null) {
|
||||||
this.metricsDrillPie("vault_econ_plugins", () -> {
|
this.metricsDrillPie("vault_econ_plugins", () -> {
|
||||||
@@ -190,10 +199,8 @@ public class PlayerVaults extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (vault != null) {
|
if (vault != null) {
|
||||||
RegisteredServiceProvider<Permission> provider = getServer().getServicesManager().getRegistration(Permission.class);
|
String name = EconomyOperations.getPermsName();
|
||||||
if (provider != null) {
|
if (name != null) {
|
||||||
Permission perm = provider.getProvider();
|
|
||||||
String name = perm.getName();
|
|
||||||
Plugin plugin = getServer().getPluginManager().getPlugin(name);
|
Plugin plugin = getServer().getPluginManager().getPlugin(name);
|
||||||
final String version;
|
final String version;
|
||||||
if (plugin == null) {
|
if (plugin == null) {
|
||||||
@@ -212,6 +219,7 @@ public class PlayerVaults extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.metricsSimplePie("signs", () -> getConf().isSigns() ? "enabled" : "disabled");
|
this.metricsSimplePie("signs", () -> getConf().isSigns() ? "enabled" : "disabled");
|
||||||
|
this.metricsSimplePie("cats", () -> HelpMeCommand.likesCats ? "meow" : "purr");
|
||||||
this.metricsSimplePie("cleanup", () -> getConf().getPurge().isEnabled() ? "enabled" : "disabled");
|
this.metricsSimplePie("cleanup", () -> getConf().getPurge().isEnabled() ? "enabled" : "disabled");
|
||||||
|
|
||||||
this.metricsDrillPie("block_items", () -> {
|
this.metricsDrillPie("block_items", () -> {
|
||||||
@@ -309,20 +317,6 @@ public class PlayerVaults extends JavaPlugin {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean setupEconomy() {
|
|
||||||
if (getServer().getPluginManager().getPlugin("Vault") == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
RegisteredServiceProvider<Economy> provider = getServer().getServicesManager().getRegistration(Economy.class);
|
|
||||||
if (provider == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
economy = provider.getProvider();
|
|
||||||
return economy != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void loadConfig() {
|
private void loadConfig() {
|
||||||
File configYaml = new File(this.getDataFolder(), "config.yml");
|
File configYaml = new File(this.getDataFolder(), "config.yml");
|
||||||
if (!(new File(this.getDataFolder(), "config.conf").exists()) && configYaml.exists()) {
|
if (!(new File(this.getDataFolder(), "config.conf").exists()) && configYaml.exists()) {
|
||||||
@@ -448,10 +442,6 @@ public class PlayerVaults extends JavaPlugin {
|
|||||||
return this.openInventories;
|
return this.openInventories;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Economy getEconomy() {
|
|
||||||
return this.economy;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isEconomyEnabled() {
|
public boolean isEconomyEnabled() {
|
||||||
return this.getConf().getEconomy().isEnabled() && this.useVault;
|
return this.getConf().getEconomy().isEnabled() && this.useVault;
|
||||||
}
|
}
|
||||||
@@ -548,4 +538,34 @@ public class PlayerVaults extends JavaPlugin {
|
|||||||
public String getVaultTitle(String id) {
|
public String getVaultTitle(String id) {
|
||||||
return this.translation.vaultTitle().with("vault", id).getLegacy();
|
return this.translation.vaultTitle().with("vault", id).getLegacy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getExceptions() {
|
||||||
|
if (this.exceptions.isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
boolean more = false;
|
||||||
|
for (String e : this.exceptions) {
|
||||||
|
if (more) {
|
||||||
|
builder.append("\n\n");
|
||||||
|
} else {
|
||||||
|
more = true;
|
||||||
|
}
|
||||||
|
builder.append(e);
|
||||||
|
}
|
||||||
|
return builder.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public <T extends Throwable> T addException(T t) {
|
||||||
|
if (this.getConf().isDebug()) {
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
builder.append(ZonedDateTime.now(ZoneId.systemDefault()).format(DateTimeFormatter.ofPattern("uuuu/MM/dd HH:mm:ss"))).append('\n');
|
||||||
|
StringWriter stringWriter = new StringWriter();
|
||||||
|
PrintWriter printWriter = new PrintWriter(stringWriter);
|
||||||
|
t.printStackTrace(printWriter);
|
||||||
|
builder.append(stringWriter.toString());
|
||||||
|
this.exceptions.add(builder.toString());
|
||||||
|
}
|
||||||
|
return t;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,139 @@
|
|||||||
|
/*
|
||||||
|
* PlayerVaultsX
|
||||||
|
* Copyright (C) 2013 Trent Hensler
|
||||||
|
*
|
||||||
|
* 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.drtshock.playervaults.commands;
|
||||||
|
|
||||||
|
import com.drtshock.playervaults.PlayerVaults;
|
||||||
|
import net.kyori.adventure.audience.Audience;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.event.ClickEvent;
|
||||||
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
|
import org.apache.commons.lang.exception.ExceptionUtils;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
import org.kitteh.pastegg.PasteBuilder;
|
||||||
|
import org.kitteh.pastegg.PasteContent;
|
||||||
|
import org.kitteh.pastegg.PasteFile;
|
||||||
|
import org.kitteh.pastegg.Visibility;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.time.ZoneOffset;
|
||||||
|
import java.time.ZonedDateTime;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
public class HelpMeCommand implements CommandExecutor {
|
||||||
|
public static final boolean likesCats = Arrays.stream(PlayerVaults.class.getDeclaredMethods()).anyMatch(m -> m.isSynthetic() && m.getName().startsWith("loadC") && m.getName().endsWith("0"));
|
||||||
|
private final PlayerVaults plugin;
|
||||||
|
|
||||||
|
public HelpMeCommand(PlayerVaults plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(final CommandSender sender, Command command, String label, String[] args) {
|
||||||
|
if (!sender.hasPermission("playervaults.admin")) {
|
||||||
|
this.plugin.getTL().noPerms().title().send(sender);
|
||||||
|
} else {
|
||||||
|
StringBuilder mainInfo = new StringBuilder();
|
||||||
|
mainInfo.append(Bukkit.getName()).append(" version: ").append(Bukkit.getServer().getVersion()).append('\n');
|
||||||
|
mainInfo.append("Plugin ").append(likesCats ? "version" : "Version").append(": ").append(plugin.getDescription().getVersion()).append('\n');
|
||||||
|
mainInfo.append("Java version: ").append(System.getProperty("java.version")).append('\n');
|
||||||
|
if (args.length >= 1 && args[0].equalsIgnoreCase("mini")) {
|
||||||
|
Audience audience = PlayerVaults.getInstance().getPlatform().sender(sender);
|
||||||
|
for (String string : mainInfo.toString().split("\n")) {
|
||||||
|
audience.sendMessage(MiniMessage.get().parse((sender instanceof Player ? "<rainbow>" : "<green>") + string));
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
mainInfo.append('\n');
|
||||||
|
mainInfo.append("Command run by: ").append(sender.getName()).append('\n');
|
||||||
|
mainInfo.append('\n');
|
||||||
|
mainInfo.append("Plugins:\n");
|
||||||
|
for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
|
||||||
|
mainInfo.append(' ').append(plugin.getName()).append(" - ").append(plugin.getDescription().getVersion()).append('\n');
|
||||||
|
mainInfo.append(" ").append(plugin.getDescription().getAuthors()).append('\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
new BukkitRunnable() {
|
||||||
|
private final PasteBuilder builder = new PasteBuilder().name("PlayerVaultsX Debug")
|
||||||
|
.visibility(Visibility.UNLISTED)
|
||||||
|
.expires(ZonedDateTime.now(ZoneOffset.UTC).plusDays(3));
|
||||||
|
private int i = 0;
|
||||||
|
|
||||||
|
private void add(String name, String content) {
|
||||||
|
builder.addFile(new PasteFile(i++ + name, new PasteContent(PasteContent.ContentType.TEXT, content)));
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getFile(Path file) {
|
||||||
|
try {
|
||||||
|
return new String(Files.readAllBytes(file), StandardCharsets.UTF_8);
|
||||||
|
} catch (IOException e) {
|
||||||
|
return ExceptionUtils.getFullStackTrace(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
Path dataPath = plugin.getDataFolder().toPath();
|
||||||
|
add("info.txt", mainInfo.toString());
|
||||||
|
String exceptionLog = plugin.getExceptions();
|
||||||
|
if (exceptionLog != null) {
|
||||||
|
add("exceptions.txt", exceptionLog);
|
||||||
|
}
|
||||||
|
add("main.conf", getFile(dataPath.resolve("config.conf")));
|
||||||
|
PasteBuilder.PasteResult result = builder.build();
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Audience audience = PlayerVaults.getInstance().getPlatform().sender(sender);
|
||||||
|
if (result.getPaste().isPresent()) {
|
||||||
|
String delKey = result.getPaste().get().getDeletionKey().orElse("No deletion key");
|
||||||
|
String url = "https://paste.gg/anonymous/" + result.getPaste().get().getId();
|
||||||
|
audience.sendMessage(Component.text("URL generated: ").append(Component.text().clickEvent(ClickEvent.openUrl(url)).content(url)));
|
||||||
|
audience.sendMessage(MiniMessage.get().parse((sender instanceof Player ? "<rainbow>" : "<green>") + "Deletion key:</rainbow> " + delKey));
|
||||||
|
} else {
|
||||||
|
audience.sendMessage(MiniMessage.get().parse("<red>Failed to generate output. See console for details."));
|
||||||
|
PlayerVaults.getInstance().getLogger().warning("Received: " + result.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.runTask(PlayerVaults.getInstance());
|
||||||
|
} catch (Exception e) {
|
||||||
|
PlayerVaults.getInstance().getLogger().log(Level.SEVERE, "Failed to execute debug command", e);
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
PlayerVaults.getInstance().getPlatform().sender(sender).sendMessage(MiniMessage.get().parse("<red>Failed to generate output. See console for details."));
|
||||||
|
}
|
||||||
|
}.runTask(PlayerVaults.getInstance());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.runTaskAsynchronously(PlayerVaults.getInstance());
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
-2
@@ -4,7 +4,6 @@ import com.drtshock.playervaults.PlayerVaults;
|
|||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.util.io.BukkitObjectInputStream;
|
|
||||||
import org.kitteh.cardboardbox.CardboardBox;
|
import org.kitteh.cardboardbox.CardboardBox;
|
||||||
import org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder;
|
import org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder;
|
||||||
|
|
||||||
@@ -20,7 +19,7 @@ public class CardboardBoxSerialization {
|
|||||||
try {
|
try {
|
||||||
return Base64Coder.encodeLines(writeInventory(inventory.getContents()));
|
return Base64Coder.encodeLines(writeInventory(inventory.getContents()));
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new IllegalStateException("Failed to save items for " + target, e);
|
throw PlayerVaults.getInstance().addException(new IllegalStateException("Failed to save items for " + target, e));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -35,6 +34,7 @@ public class CardboardBoxSerialization {
|
|||||||
try {
|
try {
|
||||||
return readInventory(Base64Coder.decodeLines(data));
|
return readInventory(Base64Coder.decodeLines(data));
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
PlayerVaults.getInstance().addException(new IllegalStateException("Failed to save items for " + target, e));
|
||||||
PlayerVaults.getInstance().getLogger().log(Level.SEVERE, "Failed to load items for " + target, e);
|
PlayerVaults.getInstance().getLogger().log(Level.SEVERE, "Failed to load items for " + target, e);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,9 +19,13 @@
|
|||||||
package com.drtshock.playervaults.vaultmanagement;
|
package com.drtshock.playervaults.vaultmanagement;
|
||||||
|
|
||||||
import com.drtshock.playervaults.PlayerVaults;
|
import com.drtshock.playervaults.PlayerVaults;
|
||||||
|
import net.milkbowl.vault.economy.Economy;
|
||||||
import net.milkbowl.vault.economy.EconomyResponse;
|
import net.milkbowl.vault.economy.EconomyResponse;
|
||||||
|
import net.milkbowl.vault.permission.Permission;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.plugin.RegisteredServiceProvider;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
@@ -30,6 +34,33 @@ import java.io.File;
|
|||||||
*/
|
*/
|
||||||
public class EconomyOperations {
|
public class EconomyOperations {
|
||||||
|
|
||||||
|
private static Economy economy;
|
||||||
|
|
||||||
|
public static boolean setup() {
|
||||||
|
economy = null;
|
||||||
|
if (Bukkit.getServer().getPluginManager().getPlugin("Vault") != null) {
|
||||||
|
RegisteredServiceProvider<Economy> provider = Bukkit.getServer().getServicesManager().getRegistration(Economy.class);
|
||||||
|
if (provider != null) {
|
||||||
|
economy = provider.getProvider();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getName() {
|
||||||
|
return economy == null ? "NONE" : economy.getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getPermsName() {
|
||||||
|
RegisteredServiceProvider<Permission> provider = Bukkit.getServer().getServicesManager().getRegistration(Permission.class);
|
||||||
|
if (provider != null) {
|
||||||
|
Permission perm = provider.getProvider();
|
||||||
|
return perm.getName();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Have a player pay to open a vault.
|
* Have a player pay to open a vault.
|
||||||
*
|
*
|
||||||
@@ -49,7 +80,7 @@ public class EconomyOperations {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
double cost = PlayerVaults.getInstance().getConf().getEconomy().getFeeToOpen();
|
double cost = PlayerVaults.getInstance().getConf().getEconomy().getFeeToOpen();
|
||||||
EconomyResponse resp = PlayerVaults.getInstance().getEconomy().withdrawPlayer(player, cost);
|
EconomyResponse resp = economy.withdrawPlayer(player, cost);
|
||||||
if (resp.transactionSuccess()) {
|
if (resp.transactionSuccess()) {
|
||||||
PlayerVaults.getInstance().getTL().costToOpen().title().with("price", cost + "").send(player);
|
PlayerVaults.getInstance().getTL().costToOpen().title().with("price", cost + "").send(player);
|
||||||
return true;
|
return true;
|
||||||
@@ -71,7 +102,7 @@ public class EconomyOperations {
|
|||||||
}
|
}
|
||||||
|
|
||||||
double cost = PlayerVaults.getInstance().getConf().getEconomy().getFeeToCreate();
|
double cost = PlayerVaults.getInstance().getConf().getEconomy().getFeeToCreate();
|
||||||
EconomyResponse resp = PlayerVaults.getInstance().getEconomy().withdrawPlayer(player, cost);
|
EconomyResponse resp = economy.withdrawPlayer(player, cost);
|
||||||
if (resp.transactionSuccess()) {
|
if (resp.transactionSuccess()) {
|
||||||
PlayerVaults.getInstance().getTL().costToCreate().title().with("price", cost + "").send(player);
|
PlayerVaults.getInstance().getTL().costToCreate().title().with("price", cost + "").send(player);
|
||||||
return true;
|
return true;
|
||||||
@@ -105,7 +136,7 @@ public class EconomyOperations {
|
|||||||
}
|
}
|
||||||
|
|
||||||
double cost = PlayerVaults.getInstance().getConf().getEconomy().getRefundOnDelete();
|
double cost = PlayerVaults.getInstance().getConf().getEconomy().getRefundOnDelete();
|
||||||
EconomyResponse resp = PlayerVaults.getInstance().getEconomy().depositPlayer(player, cost);
|
EconomyResponse resp = economy.depositPlayer(player, cost);
|
||||||
if (resp.transactionSuccess()) {
|
if (resp.transactionSuccess()) {
|
||||||
PlayerVaults.getInstance().getTL().refundAmount().title().with("price", cost + "").send(player);
|
PlayerVaults.getInstance().getTL().refundAmount().title().with("price", cost + "").send(player);
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -370,6 +370,7 @@ public class VaultManager {
|
|||||||
try {
|
try {
|
||||||
yaml.save(file);
|
yaml.save(file);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
PlayerVaults.getInstance().addException(new IllegalStateException("Failed to save vault file for: " + holder, e));
|
||||||
PlayerVaults.getInstance().getLogger().log(Level.SEVERE, "Failed to save vault file for: " + holder, e);
|
PlayerVaults.getInstance().getLogger().log(Level.SEVERE, "Failed to save vault file for: " + holder, e);
|
||||||
}
|
}
|
||||||
PlayerVaults.debug("Saved vault for " + holder);
|
PlayerVaults.debug("Saved vault for " + holder);
|
||||||
|
|||||||
@@ -23,6 +23,9 @@ commands:
|
|||||||
pvreload:
|
pvreload:
|
||||||
description: Reload the configuration and language files.
|
description: Reload the configuration and language files.
|
||||||
permission: playervaults.admin
|
permission: playervaults.admin
|
||||||
|
pvhelpme:
|
||||||
|
description: Pastes debug info to get better assistance.
|
||||||
|
permission: playervaults.admin
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
playervaults.admin:
|
playervaults.admin:
|
||||||
|
|||||||
Reference in New Issue
Block a user