diff --git a/bukkit/pom.xml b/bukkit/pom.xml index a6a0b17..197c876 100644 --- a/bukkit/pom.xml +++ b/bukkit/pom.xml @@ -28,8 +28,8 @@ sqlite-jdbc - mysql - mysql-connector-java + com.mysql + mysql-connector-j diff --git a/bukkit/src/main/java/org/zhdev/varioutil/bukkit/gui/Gui.java b/bukkit/src/main/java/org/zhdev/varioutil/bukkit/gui/Gui.java index 7648455..59d87dd 100644 --- a/bukkit/src/main/java/org/zhdev/varioutil/bukkit/gui/Gui.java +++ b/bukkit/src/main/java/org/zhdev/varioutil/bukkit/gui/Gui.java @@ -2,11 +2,15 @@ package org.zhdev.varioutil.bukkit.gui; import org.bukkit.Material; import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryCloseEvent; +import org.bukkit.event.inventory.InventoryOpenEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import java.util.HashMap; import java.util.Map; +import java.util.Objects; +import java.util.function.Consumer; public class Gui { final GuiHolder holder = new GuiHolder(this); @@ -16,6 +20,9 @@ public class Gui { private String title; private GuiType type = GuiType.SIZE_27; + private Consumer openEvent = inventoryCloseEvent -> {}; + private Consumer closeEvent = inventoryCloseEvent -> {}; + public String getTitle() { return title; } @@ -32,6 +39,22 @@ public class Gui { this.type = type; } + public Consumer getOpenEvent() { + return openEvent; + } + + public void setOpenEvent(Consumer openEvent) { + this.openEvent = Objects.requireNonNull(openEvent, "openEvent"); + } + + public Consumer getCloseEvent() { + return closeEvent; + } + + public void setCloseEvent(Consumer closeEvent) { + this.closeEvent = Objects.requireNonNull(closeEvent, "closeEvent"); + } + public GuiIcon getIcon(int slot) { return iconMap.get(slot); } diff --git a/bukkit/src/main/java/org/zhdev/varioutil/bukkit/gui/GuiIcon.java b/bukkit/src/main/java/org/zhdev/varioutil/bukkit/gui/GuiIcon.java index 698d3fe..ca641b7 100644 --- a/bukkit/src/main/java/org/zhdev/varioutil/bukkit/gui/GuiIcon.java +++ b/bukkit/src/main/java/org/zhdev/varioutil/bukkit/gui/GuiIcon.java @@ -106,7 +106,7 @@ public class GuiIcon { if (meta != null) { meta.setDisplayName(displayName); meta.setLore(lore); - meta.addItemFlags(flags); + if (flags != null) meta.addItemFlags(flags); if (texture != null && meta instanceof SkullMeta) { BukkitUtils.setSkullTexture(((SkullMeta) meta), texture); } diff --git a/bukkit/src/main/java/org/zhdev/varioutil/bukkit/gui/GuiListener.java b/bukkit/src/main/java/org/zhdev/varioutil/bukkit/gui/GuiListener.java index 72465b4..43fac37 100644 --- a/bukkit/src/main/java/org/zhdev/varioutil/bukkit/gui/GuiListener.java +++ b/bukkit/src/main/java/org/zhdev/varioutil/bukkit/gui/GuiListener.java @@ -5,8 +5,12 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryCloseEvent; +import org.bukkit.event.inventory.InventoryDragEvent; +import org.bukkit.event.inventory.InventoryOpenEvent; import org.bukkit.event.server.PluginDisableEvent; import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryHolder; import org.bukkit.plugin.Plugin; public class GuiListener implements Listener { @@ -17,7 +21,14 @@ public class GuiListener implements Listener { } @EventHandler - public void onClick(InventoryClickEvent event) { + private void onDrag(InventoryDragEvent event) { + if (event.getInventory().getHolder() instanceof GuiHolder) { + event.setCancelled(true); + } + } + + @EventHandler + private void onClick(InventoryClickEvent event) { if (!(event.getWhoClicked() instanceof Player)) { return; } @@ -48,7 +59,23 @@ public class GuiListener implements Listener { } @EventHandler - public void onPluginDisable(PluginDisableEvent event) { + private void onOpen(InventoryOpenEvent event) { + InventoryHolder holder = event.getInventory().getHolder(); + if (holder instanceof GuiHolder) { + ((GuiHolder) holder).gui.getOpenEvent().accept(event); + } + } + + @EventHandler + private void onClose(InventoryCloseEvent event) { + InventoryHolder holder = event.getInventory().getHolder(); + if (holder instanceof GuiHolder) { + ((GuiHolder) holder).gui.getCloseEvent().accept(event); + } + } + + @EventHandler + private void onPluginDisable(PluginDisableEvent event) { if (event.getPlugin() == plugin) { for (Player player : Bukkit.getOnlinePlayers()) { Inventory inventory = player.getOpenInventory().getTopInventory(); diff --git a/bukkit/src/main/java/org/zhdev/varioutil/util/BukkitUtils.java b/bukkit/src/main/java/org/zhdev/varioutil/util/BukkitUtils.java index ee8a210..cc75588 100644 --- a/bukkit/src/main/java/org/zhdev/varioutil/util/BukkitUtils.java +++ b/bukkit/src/main/java/org/zhdev/varioutil/util/BukkitUtils.java @@ -62,7 +62,7 @@ public class BukkitUtils { BukkitReflectionUtils.setProfile(meta, profile); } - public static String stacksToString(ItemStack[] contents) { + public static String stacksToString(ItemStack... contents) { try (ByteArrayOutputStream str = new ByteArrayOutputStream(); BukkitObjectOutputStream data = new BukkitObjectOutputStream(str)) { data.writeInt(contents.length); diff --git a/db/pom.xml b/db/pom.xml index 1a0e172..b2ec446 100644 --- a/db/pom.xml +++ b/db/pom.xml @@ -29,8 +29,8 @@ compile - mysql - mysql-connector-java + com.mysql + mysql-connector-j 8.0.33 compile diff --git a/db/src/main/java/org/zhdev/varioutil/util/SqlUtils.java b/db/src/main/java/org/zhdev/varioutil/util/SqlUtils.java index b5392c8..738d7a4 100644 --- a/db/src/main/java/org/zhdev/varioutil/util/SqlUtils.java +++ b/db/src/main/java/org/zhdev/varioutil/util/SqlUtils.java @@ -28,7 +28,6 @@ public class SqlUtils { public static Connection createH2Connection(String path, String username, String password) throws SqlException { try { - DriverManager.registerDriver(new org.h2.Driver()); Connection connection; if (username != null) { connection = DriverManager.getConnection("jdbc:h2:./" + path + ";mode=MySQL;AUTO_SERVER=TRUE", username, password); @@ -57,10 +56,7 @@ public class SqlUtils { } } try { - Class.forName("org.sqlite.JDBC"); return DriverManager.getConnection("jdbc:sqlite:" + path); - } catch (ClassNotFoundException e) { - throw new SqlException("No suitable driver"); } catch (SQLException e) { throw new SqlException(e); } @@ -144,5 +140,6 @@ public class SqlUtils { static { initializeH2(); initializeMySql(); + initializeSqlite(); } } diff --git a/misc/src/main/java/org/zhdev/varioutil/PreparedPlugin.java b/misc/src/main/java/org/zhdev/varioutil/PreparedPlugin.java index 5aae0fa..cc50f37 100644 --- a/misc/src/main/java/org/zhdev/varioutil/PreparedPlugin.java +++ b/misc/src/main/java/org/zhdev/varioutil/PreparedPlugin.java @@ -10,8 +10,11 @@ import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; +import java.util.logging.Logger; public interface PreparedPlugin { + Logger getLogger(); + Config getDefaultConfig(); Language getLanguage(); diff --git a/misc/src/main/java/org/zhdev/varioutil/util/ConfigUtils.java b/misc/src/main/java/org/zhdev/varioutil/util/ConfigUtils.java index c060932..32ecdfb 100644 --- a/misc/src/main/java/org/zhdev/varioutil/util/ConfigUtils.java +++ b/misc/src/main/java/org/zhdev/varioutil/util/ConfigUtils.java @@ -7,6 +7,7 @@ import org.zhdev.varioutil.sql.*; import java.io.File; import java.util.ArrayList; import java.util.Collections; +import java.util.List; import java.util.function.Function; public class ConfigUtils { @@ -15,9 +16,12 @@ public class ConfigUtils { ConfigSection section = config.getSection(i); if (section == null) continue; for (String j : section) { - String phrase = section.getString(j); - if (phrase == null) { - phrase = String.join("\n", CollectionUtils.mapToString(section.getList(j, Collections.emptyList()), ArrayList::new)); + String phrase; + List list = section.getList(j); + if (list == null) { + phrase = section.getString(j); + } else { + phrase = String.join("\n", CollectionUtils.mapToString(list, ArrayList::new)); } language.addPhrase(i, j, function.apply(phrase)); } diff --git a/velocity/src/main/java/org/zhdev/varioutil/VelocityPlugin.java b/velocity/src/main/java/org/zhdev/varioutil/VelocityPlugin.java index 14738c9..b2aa9b6 100644 --- a/velocity/src/main/java/org/zhdev/varioutil/VelocityPlugin.java +++ b/velocity/src/main/java/org/zhdev/varioutil/VelocityPlugin.java @@ -24,7 +24,11 @@ public abstract class VelocityPlugin { return dataFolder; } - public Logger getLogger() { + public java.util.logging.Logger getLogger() { + return java.util.logging.Logger.getLogger(logger.getName()); + } + + public Logger getSLF4JLogger() { return logger; } } diff --git a/velocity/src/main/java/org/zhdev/varioutil/VelocityPreparedPlugin.java b/velocity/src/main/java/org/zhdev/varioutil/VelocityPreparedPlugin.java index bdafaf6..bc61bd3 100644 --- a/velocity/src/main/java/org/zhdev/varioutil/VelocityPreparedPlugin.java +++ b/velocity/src/main/java/org/zhdev/varioutil/VelocityPreparedPlugin.java @@ -22,9 +22,6 @@ public abstract class VelocityPreparedPlugin extends VelocityPlugin implements P protected VelocityPreparedPlugin(ProxyServer server, Logger logger, Path dataFolder) { super(server, logger, dataFolder); - loadConfig(defaultConfig); - loadPhrases(); - establishSqlConnection(); } protected SqlAdapter createSqlAdapter() { @@ -68,6 +65,9 @@ public abstract class VelocityPreparedPlugin extends VelocityPlugin implements P @Subscribe private void onProxyInitialization(ProxyInitializeEvent event) { + loadConfig(defaultConfig); + loadPhrases(); + establishSqlConnection(); onEnabling(); }