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]