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();
}