diff --git a/pom.xml b/pom.xml
index a3157b2..63d5aa9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
me.cervinakuy
JoinEventsPro
- 4.3
+ 4.5
jar
${project.artifactId}
diff --git a/src/main/java/me/cervinakuy/joineventspro/Game.java b/src/main/java/me/cervinakuy/joineventspro/Game.java
index 8c20a96..1a3df3a 100644
--- a/src/main/java/me/cervinakuy/joineventspro/Game.java
+++ b/src/main/java/me/cervinakuy/joineventspro/Game.java
@@ -21,7 +21,6 @@
public class Game extends JavaPlugin {
- private static Game instance;
private Resources resources;
private DebugMode debugMode;
@@ -31,8 +30,7 @@ public class Game extends JavaPlugin {
@Override
public void onEnable() {
-
- instance = this;
+
this.resources = new Resources(this);
this.debugMode = new DebugMode();
@@ -100,8 +98,6 @@ private void checkUpdates() {
public Resources getResources() { return resources; }
- public static Game getInstance() { return instance; }
-
public static String getPrefix() { return prefix; }
}
diff --git a/src/main/java/me/cervinakuy/joineventspro/listener/JoinBook.java b/src/main/java/me/cervinakuy/joineventspro/listener/JoinBook.java
index 9b83aee..8993929 100644
--- a/src/main/java/me/cervinakuy/joineventspro/listener/JoinBook.java
+++ b/src/main/java/me/cervinakuy/joineventspro/listener/JoinBook.java
@@ -1,6 +1,5 @@
package me.cervinakuy.joineventspro.listener;
-import com.cryptomorin.xseries.XMaterial;
import me.cervinakuy.joineventspro.Game;
import me.cervinakuy.joineventspro.util.DebugMode;
import me.cervinakuy.joineventspro.util.Resource;
@@ -26,14 +25,14 @@ public JoinBook(Game plugin) {
@EventHandler
public void onJoin(PlayerJoinEvent e) {
Player p = e.getPlayer();
- String joinType = (!p.hasPlayedBefore() || debug.isDebugUser(p.getName())) ? "FirstJoin" : "Join";
+ String joinType = Toolkit.getJoinType(p, debug);
Resource joinConfig = resources.getResourceByName(joinType);
String pathPrefix = joinType + ".Book";
if (joinConfig.getBoolean(pathPrefix + ".Enabled") &&
p.hasPermission("jep." + joinType.toLowerCase() + ".book")) {
- ItemStack book = XMaterial.WRITTEN_BOOK.parseItem();
+ ItemStack book = Toolkit.safeItemStack("WRITTEN_BOOK", 1);
BookMeta bookMeta = (BookMeta) book.getItemMeta();
int bookSlot = joinConfig.getInt(pathPrefix + ".Information.Slot");
@@ -45,7 +44,6 @@ public void onJoin(PlayerJoinEvent e) {
book.setItemMeta(bookMeta);
p.getInventory().setItem(bookSlot, book);
}
-
}
}
diff --git a/src/main/java/me/cervinakuy/joineventspro/listener/JoinCommands.java b/src/main/java/me/cervinakuy/joineventspro/listener/JoinCommands.java
index 571ecb7..3e687c7 100644
--- a/src/main/java/me/cervinakuy/joineventspro/listener/JoinCommands.java
+++ b/src/main/java/me/cervinakuy/joineventspro/listener/JoinCommands.java
@@ -27,7 +27,7 @@ public JoinCommands(Game plugin) {
@EventHandler
public void onJoin(PlayerJoinEvent e) {
Player p = e.getPlayer();
- String joinType = (!p.hasPlayedBefore() || debug.isDebugUser(p.getName())) ? "FirstJoin" : "Join";
+ String joinType = Toolkit.getJoinType(p, debug);
Resource joinConfig = resources.getResourceByName(joinType);
if (p.hasPermission("jep." + joinType.toLowerCase() + ".commands")) {
diff --git a/src/main/java/me/cervinakuy/joineventspro/listener/JoinFirework.java b/src/main/java/me/cervinakuy/joineventspro/listener/JoinFirework.java
index 8e262f2..597c829 100644
--- a/src/main/java/me/cervinakuy/joineventspro/listener/JoinFirework.java
+++ b/src/main/java/me/cervinakuy/joineventspro/listener/JoinFirework.java
@@ -6,6 +6,7 @@
import me.cervinakuy.joineventspro.util.DebugMode;
import me.cervinakuy.joineventspro.util.Resource;
import me.cervinakuy.joineventspro.util.Resources;
+import me.cervinakuy.joineventspro.util.Toolkit;
import org.bukkit.Color;
import org.bukkit.FireworkEffect;
import org.bukkit.entity.EntityType;
@@ -29,7 +30,7 @@ public JoinFirework(Game plugin) {
@EventHandler
public void onJoin(PlayerJoinEvent e) {
Player p = e.getPlayer();
- String joinType = (!p.hasPlayedBefore() || debug.isDebugUser(p.getName())) ? "FirstJoin" : "Join";
+ String joinType = Toolkit.getJoinType(p, debug);
Resource joinConfig = resources.getResourceByName(joinType);
if (joinConfig.getBoolean(joinType + ".Other.Firework") &&
diff --git a/src/main/java/me/cervinakuy/joineventspro/listener/JoinItems.java b/src/main/java/me/cervinakuy/joineventspro/listener/JoinItems.java
index b9e9596..a118ab9 100644
--- a/src/main/java/me/cervinakuy/joineventspro/listener/JoinItems.java
+++ b/src/main/java/me/cervinakuy/joineventspro/listener/JoinItems.java
@@ -27,7 +27,7 @@ public JoinItems(Game plugin) {
@EventHandler
public void onJoin(PlayerJoinEvent e) {
Player p = e.getPlayer();
- String joinType = (!p.hasPlayedBefore() || debug.isDebugUser(p.getName())) ? "FirstJoin" : "Join";
+ String joinType = Toolkit.getJoinType(p, debug);
Resource joinConfig = resources.getResourceByName(joinType);
if (joinConfig.getBoolean(joinType + ".Items.Enabled") &&
@@ -63,7 +63,7 @@ public void onJoin(PlayerJoinEvent e) {
@EventHandler
public void onInteract(PlayerInteractEvent e) {
Player p = e.getPlayer();
- String joinType = (!p.hasPlayedBefore() || debug.isDebugUser(p.getName())) ? "FirstJoin" : "Join";
+ String joinType = Toolkit.getJoinType(p, debug);
Resource joinConfig = resources.getResourceByName(joinType);
if (!joinConfig.getBoolean(joinType + ".Items.Enabled")) {
@@ -71,8 +71,8 @@ public void onInteract(PlayerInteractEvent e) {
}
if (e.getAction() == Action.RIGHT_CLICK_BLOCK || e.getAction() == Action.RIGHT_CLICK_AIR) {
- ItemStack mainHand = Toolkit.getMainHandItem(p);
- if (!mainHand.hasItemMeta()) {
+ ItemStack handItem = Toolkit.getItemForInteraction(e);
+ if (!handItem.hasItemMeta()) {
return;
}
@@ -87,9 +87,9 @@ public void onInteract(PlayerInteractEvent e) {
Material joinItemMaterial = XMaterial.matchXMaterial(
joinConfig.fetchString(pathPrefix + ".Material")).get().parseMaterial();
- if (mainHand.getType() == joinItemMaterial) {
- if (mainHand.getItemMeta().hasDisplayName() &&
- mainHand.getItemMeta().getDisplayName()
+ if (handItem.getType() == joinItemMaterial) {
+ if (handItem.getItemMeta().hasDisplayName() &&
+ handItem.getItemMeta().getDisplayName()
.equals(joinConfig.fetchString(pathPrefix + ".Name"))) {
Toolkit.runCommands(p, joinConfig.getStringList(pathPrefix + ".Commands"));
}
diff --git a/src/main/java/me/cervinakuy/joineventspro/listener/JoinLocation.java b/src/main/java/me/cervinakuy/joineventspro/listener/JoinLocation.java
index ddbf3fd..8faf4a9 100644
--- a/src/main/java/me/cervinakuy/joineventspro/listener/JoinLocation.java
+++ b/src/main/java/me/cervinakuy/joineventspro/listener/JoinLocation.java
@@ -24,7 +24,7 @@ public JoinLocation(Game plugin) {
@EventHandler
public void onJoin(PlayerJoinEvent e) {
Player p = e.getPlayer();
- String joinType = (!p.hasPlayedBefore() || debug.isDebugUser(p.getName())) ? "FirstJoin" : "Join";
+ String joinType = Toolkit.getJoinType(p, debug);
Resource joinConfig = resources.getResourceByName(joinType);
String pathPrefix = joinType + ".Spawn";
diff --git a/src/main/java/me/cervinakuy/joineventspro/listener/JoinMOTD.java b/src/main/java/me/cervinakuy/joineventspro/listener/JoinMOTD.java
index 0d1da7c..76f0e5c 100644
--- a/src/main/java/me/cervinakuy/joineventspro/listener/JoinMOTD.java
+++ b/src/main/java/me/cervinakuy/joineventspro/listener/JoinMOTD.java
@@ -23,7 +23,7 @@ public JoinMOTD(Game plugin) {
@EventHandler
public void onJoin(PlayerJoinEvent e) {
Player p = e.getPlayer();
- String joinType = (!p.hasPlayedBefore() || debug.isDebugUser(p.getName())) ? "FirstJoin" : "Join";
+ String joinType = Toolkit.getJoinType(p, debug);
Resource joinConfig = resources.getResourceByName(joinType);
if (joinConfig.getBoolean(joinType + ".MOTD.Enabled") &&
diff --git a/src/main/java/me/cervinakuy/joineventspro/listener/JoinMessage.java b/src/main/java/me/cervinakuy/joineventspro/listener/JoinMessage.java
index 2c77bfc..24c5cdc 100644
--- a/src/main/java/me/cervinakuy/joineventspro/listener/JoinMessage.java
+++ b/src/main/java/me/cervinakuy/joineventspro/listener/JoinMessage.java
@@ -26,7 +26,7 @@ public JoinMessage(Game plugin) {
@EventHandler
public void onJoin(PlayerJoinEvent e) {
Player p = e.getPlayer();
- String joinType = (!p.hasPlayedBefore() || debug.isDebugUser(p.getName())) ? "FirstJoin" : "Join";
+ String joinType = Toolkit.getJoinType(p, debug);
Resource joinConfig = resources.getResourceByName(joinType);
String pathPrefix = joinType + ".Message";
diff --git a/src/main/java/me/cervinakuy/joineventspro/listener/JoinSound.java b/src/main/java/me/cervinakuy/joineventspro/listener/JoinSound.java
index e8c6843..b9b9e7c 100644
--- a/src/main/java/me/cervinakuy/joineventspro/listener/JoinSound.java
+++ b/src/main/java/me/cervinakuy/joineventspro/listener/JoinSound.java
@@ -1,10 +1,10 @@
package me.cervinakuy.joineventspro.listener;
-import com.cryptomorin.xseries.XSound;
import me.cervinakuy.joineventspro.Game;
import me.cervinakuy.joineventspro.util.DebugMode;
import me.cervinakuy.joineventspro.util.Resource;
import me.cervinakuy.joineventspro.util.Resources;
+import me.cervinakuy.joineventspro.util.Toolkit;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@@ -27,15 +27,14 @@ public JoinSound(Game plugin) {
@EventHandler
public void onJoin(PlayerJoinEvent e) {
Player p = e.getPlayer();
- String joinType = (!p.hasPlayedBefore() || debug.isDebugUser(p.getName())) ? "FirstJoin" : "Join";
+ String joinType = Toolkit.getJoinType(p, debug);
Resource joinConfig = resources.getResourceByName(joinType);
String pathPrefix = joinType + ".Sound";
if (joinConfig.getBoolean(pathPrefix + ".Enabled") &&
p.hasPermission("jep." + joinType.toLowerCase() + ".sound")) {
for (Player all : Bukkit.getOnlinePlayers()) {
- XSound.play(all, joinConfig.fetchString(pathPrefix + ".Sound") +
- ", 1, " +
+ Toolkit.playSoundToPlayer(all, joinConfig.fetchString(pathPrefix + ".Sound"),
joinConfig.getInt(pathPrefix + ".Pitch"));
}
}
@@ -47,8 +46,7 @@ public void onLeave(PlayerQuitEvent e) {
if (config.getBoolean("Leave.Sound.Enabled") && p.hasPermission("jep.leave.sound")) {
for (Player all : Bukkit.getOnlinePlayers()) {
- XSound.play(all, config.fetchString("Leave.Sound.Sound") +
- ", 1, " +
+ Toolkit.playSoundToPlayer(all, config.fetchString("Leave.Sound.Sound"),
config.getInt("Leave.Sound.Pitch"));
}
}
diff --git a/src/main/java/me/cervinakuy/joineventspro/util/Resources.java b/src/main/java/me/cervinakuy/joineventspro/util/Resources.java
index 0082717..393921a 100644
--- a/src/main/java/me/cervinakuy/joineventspro/util/Resources.java
+++ b/src/main/java/me/cervinakuy/joineventspro/util/Resources.java
@@ -51,7 +51,6 @@ public Resource getResourceByName(String resourceName) {
} else if (resourceName.equalsIgnoreCase("firstjoin")) {
return firstJoin;
}
-
return null;
}
diff --git a/src/main/java/me/cervinakuy/joineventspro/util/Toolkit.java b/src/main/java/me/cervinakuy/joineventspro/util/Toolkit.java
index 68f7ce7..3f0af1f 100644
--- a/src/main/java/me/cervinakuy/joineventspro/util/Toolkit.java
+++ b/src/main/java/me/cervinakuy/joineventspro/util/Toolkit.java
@@ -1,11 +1,11 @@
package me.cervinakuy.joineventspro.util;
import com.cryptomorin.xseries.XMaterial;
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.Location;
-import org.bukkit.Material;
+import com.cryptomorin.xseries.XSound;
+import org.bukkit.*;
import org.bukkit.entity.Player;
+import org.bukkit.event.player.PlayerInteractEvent;
+import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.ItemStack;
import me.clip.placeholderapi.PlaceholderAPI;
@@ -73,16 +73,6 @@ private static int versionToNumber() {
}
return 500;
}
-
- @SuppressWarnings("deprecation")
- public static ItemStack getMainHandItem(Player p) {
- if (versionToNumber() == 18) {
- return p.getItemInHand();
- } else if (versionToNumber() > 18) {
- return p.getInventory().getItemInMainHand();
- }
- return p.getItemInHand();
- }
public static String translate(String s) {
return ChatColor.translateAlternateColorCodes('&', s);
@@ -136,9 +126,54 @@ public static ItemStack safeItemStack(String materialName, int amount) {
printToConsole("&7[&b&lKIT-PVP&7] &cInvalid material: " + materialName);
return new ItemStack(Toolkit.FALLBACK_MATERIAL);
}
-
+
+ public static Sound safeSound(String soundName) {
+ Optional soundOptional = XSound.matchXSound(soundName);
+ if (soundOptional.isPresent()) {
+ Sound sound = soundOptional.get().parseSound();
+ if (sound != null) {
+ return sound;
+ }
+ }
+ printToConsole("&7[&b&lJOINEVENTSPRO&7] &cInvalid sound: " + soundName);
+ return XSound.ENTITY_ENDER_DRAGON_HURT.parseSound();
+ }
+
+ public static boolean isNumeric(String potentialNumber) {
+ if (potentialNumber == null) {
+ return false;
+ }
+
+ try {
+ int integer = Integer.parseInt(potentialNumber);
+ } catch (NumberFormatException nfe) {
+ return false;
+ }
+
+ return true;
+ }
+
public static void printToConsole(String string) {
Bukkit.getConsoleSender().sendMessage(Toolkit.translate(string));
}
+ public static ItemStack getItemForInteraction(PlayerInteractEvent e) {
+ Player p = e.getPlayer();
+
+ if (versionToNumber() == 18) {
+ return p.getItemInHand();
+ }
+
+ EquipmentSlot slot = e.getHand() != null ? e.getHand() : EquipmentSlot.HAND;
+ return p.getInventory().getItem(slot);
+ }
+
+ public static String getJoinType(Player p, DebugMode debugMode) {
+ return (!p.hasPlayedBefore() || debugMode.isDebugUser(p.getName())) ? "FirstJoin" : "Join";
+ }
+
+ public static void playSoundToPlayer(Player p, String soundName, int pitch) {
+ p.playSound(p.getLocation(), Toolkit.safeSound(soundName), 1, pitch);
+ }
+
}
diff --git a/src/main/java/me/cervinakuy/joineventspro/util/Updater.java b/src/main/java/me/cervinakuy/joineventspro/util/Updater.java
index 8760f08..624b3b5 100644
--- a/src/main/java/me/cervinakuy/joineventspro/util/Updater.java
+++ b/src/main/java/me/cervinakuy/joineventspro/util/Updater.java
@@ -18,7 +18,6 @@
public class Updater {
public enum VersionResponse {
-
LATEST,
FOUND_NEW,
UNAVAILABLE
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 897936a..09ad18d 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,7 +1,7 @@
name: JoinEventsPro
author: Cervinakuy
main: me.cervinakuy.joineventspro.Game
-version: 4.4
+version: 4.5
description: Completely manage and customize every event that happens when a player joins.
website: https://www.spigotmc.org/resources/22105/
softdepend: [PlaceholderAPI]