From 0d4a234483651a7734ad99fcd1da87d9ffd72261 Mon Sep 17 00:00:00 2001
From: WildInterloper <156627888+WildInterloper@users.noreply.github.com>
Date: Tue, 5 Mar 2024 09:59:41 -0500
Subject: [PATCH] v0.2.3 - Default banned_items.yml config file doesn't
generate properly. Investigating now.
---
pom.xml | 2 +-
.../Configs/BannedItemsConfig.java | 57 ++++++++++++++++++
.../Listeners/PlayerArmor.java | 2 +
.../Listeners/PlayerItems.java | 60 +++++++++++++++++++
.../nvus/nvus_prison_setup/PrisonSetup.java | 23 ++++++-
src/main/resources/banned_items.yml | 14 +++++
6 files changed, 154 insertions(+), 4 deletions(-)
create mode 100644 src/main/java/me/nvus/nvus_prison_setup/Configs/BannedItemsConfig.java
create mode 100644 src/main/java/me/nvus/nvus_prison_setup/Listeners/PlayerItems.java
create mode 100644 src/main/resources/banned_items.yml
diff --git a/pom.xml b/pom.xml
index 68edb41..9c83e2b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
me.NVus
NVus_Prison_Setup
- 0.1.9-SNAPSHOT
+ 0.2.3-SNAPSHOT
jar
PrisonSetup
diff --git a/src/main/java/me/nvus/nvus_prison_setup/Configs/BannedItemsConfig.java b/src/main/java/me/nvus/nvus_prison_setup/Configs/BannedItemsConfig.java
new file mode 100644
index 0000000..1b5af66
--- /dev/null
+++ b/src/main/java/me/nvus/nvus_prison_setup/Configs/BannedItemsConfig.java
@@ -0,0 +1,57 @@
+package me.nvus.nvus_prison_setup.Configs;
+
+import org.bukkit.configuration.file.FileConfiguration;
+import org.bukkit.configuration.file.YamlConfiguration;
+import org.bukkit.plugin.java.JavaPlugin;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+public class BannedItemsConfig {
+ private final JavaPlugin plugin;
+ private FileConfiguration config;
+ private File configFile;
+
+ public BannedItemsConfig(JavaPlugin plugin) {
+ this.plugin = plugin;
+ }
+
+ public void reloadConfig() {
+ if (configFile == null) {
+ configFile = new File(plugin.getDataFolder(), "banned_items.yml");
+ }
+ config = YamlConfiguration.loadConfiguration(configFile);
+ }
+
+ public FileConfiguration getConfig() {
+ if (config == null) {
+ reloadConfig();
+ }
+ return config;
+ }
+
+ public void saveConfig() {
+ if (config == null || configFile == null) {
+ return;
+ }
+ try {
+ getConfig().save(configFile);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void saveDefaultConfig() {
+ if (configFile == null) {
+ configFile = new File(plugin.getDataFolder(), "banned_items.yml");
+ }
+ if (!configFile.exists()) {
+ plugin.saveResource("banned_items.yml", false);
+ }
+ }
+
+ public List getBannedItems() {
+ return getConfig().getStringList("BannedItems");
+ }
+}
diff --git a/src/main/java/me/nvus/nvus_prison_setup/Listeners/PlayerArmor.java b/src/main/java/me/nvus/nvus_prison_setup/Listeners/PlayerArmor.java
index 68597b6..921e943 100644
--- a/src/main/java/me/nvus/nvus_prison_setup/Listeners/PlayerArmor.java
+++ b/src/main/java/me/nvus/nvus_prison_setup/Listeners/PlayerArmor.java
@@ -26,4 +26,6 @@ public class PlayerArmor implements Listener {
}
+
+
}
diff --git a/src/main/java/me/nvus/nvus_prison_setup/Listeners/PlayerItems.java b/src/main/java/me/nvus/nvus_prison_setup/Listeners/PlayerItems.java
new file mode 100644
index 0000000..d0c489f
--- /dev/null
+++ b/src/main/java/me/nvus/nvus_prison_setup/Listeners/PlayerItems.java
@@ -0,0 +1,60 @@
+package me.nvus.nvus_prison_setup.Listeners;
+
+import me.nvus.nvus_prison_setup.PrisonSetup;
+import org.bukkit.ChatColor;
+import org.bukkit.Material;
+import org.bukkit.configuration.file.FileConfiguration;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
+import org.bukkit.event.Listener;
+import org.bukkit.event.inventory.InventoryClickEvent;
+import org.bukkit.event.player.PlayerItemHeldEvent;
+import org.bukkit.inventory.ItemStack;
+
+import java.util.List;
+
+public class PlayerItems implements Listener {
+
+ private final PrisonSetup plugin;
+
+ public PlayerItems(PrisonSetup plugin) {
+ this.plugin = plugin;
+ }
+
+ @EventHandler(priority = EventPriority.LOWEST)
+ public void onPlayerItemHeld(PlayerItemHeldEvent event) {
+ Player player = event.getPlayer();
+ ItemStack item = player.getInventory().getItem(event.getNewSlot());
+
+ if (item != null && isBannedItem(item.getType())) {
+ if (player.hasPermission("nvus.prisoner")) {
+ event.setCancelled(true);
+ player.sendMessage(ChatColor.RED + "Sorry inmate! You're a prisoner and cannot use this tool!");
+ }
+ }
+ }
+
+ @EventHandler(priority = EventPriority.LOWEST)
+ public void onInventoryClick(InventoryClickEvent event) {
+ if (event.getClickedInventory() != null && event.getClickedInventory().getType() == org.bukkit.event.inventory.InventoryType.PLAYER) {
+ if (event.getSlotType() == org.bukkit.event.inventory.InventoryType.SlotType.QUICKBAR) {
+ ItemStack item = event.getCurrentItem();
+
+ if (item != null && isBannedItem(item.getType())) {
+ Player player = (Player) event.getWhoClicked();
+ if (player.hasPermission("nvus.prisoner")) {
+ event.setCancelled(true);
+ player.sendMessage(ChatColor.RED + "Sorry inmate! You're a prisoner and cannot use this tool!");
+ }
+ }
+ }
+ }
+ }
+
+ private boolean isBannedItem(Material itemType) {
+ FileConfiguration config = plugin.getBannedItemsConfig().getConfig();
+ List bannedItems = config.getStringList("BannedItems");
+ return bannedItems.contains(itemType.toString());
+ }
+}
diff --git a/src/main/java/me/nvus/nvus_prison_setup/PrisonSetup.java b/src/main/java/me/nvus/nvus_prison_setup/PrisonSetup.java
index 5fee269..73ddf66 100644
--- a/src/main/java/me/nvus/nvus_prison_setup/PrisonSetup.java
+++ b/src/main/java/me/nvus/nvus_prison_setup/PrisonSetup.java
@@ -1,6 +1,8 @@
package me.nvus.nvus_prison_setup;
+import me.nvus.nvus_prison_setup.Configs.BannedItemsConfig;
import me.nvus.nvus_prison_setup.Listeners.PlayerArmor;
+import me.nvus.nvus_prison_setup.Listeners.PlayerItems;
import me.nvus.nvus_prison_setup.Listeners.PlayerSpawn;
import org.bukkit.ChatColor;
import org.bukkit.event.Listener;
@@ -8,17 +10,32 @@ import org.bukkit.plugin.java.JavaPlugin;
public final class PrisonSetup extends JavaPlugin {
+ private BannedItemsConfig bannedItemsConfig;
+
@Override
public void onEnable() {
+
+ // Init the BannedItemsConfig
+ bannedItemsConfig = new BannedItemsConfig(this);
+
+ // Save banned_items.yml config if it doesn't exist
+ bannedItemsConfig.saveDefaultConfig();
+
getServer().getPluginManager().registerEvents(new PlayerSpawn(), this);
getServer().getPluginManager().registerEvents(new PlayerArmor(), this);
- getLogger().info(ChatColor.GREEN + "NVus Prison has been enabled successfully!");
+ getServer().getPluginManager().registerEvents(new PlayerItems(this), this);
+ getLogger().info(ChatColor.translateAlternateColorCodes('&',"&a&lNVus Prison Setup has been successfully enabled!"));
}
@Override
public void onDisable() {
- // Plugin shutdown logic
- getLogger().info(ChatColor.RED + "NVus Prison has been disabled successfully!");
+ // Saving config file, just in case it was changed prior to disabling plugin/shutdown?
+ bannedItemsConfig.saveConfig();
+ getLogger().info(ChatColor.translateAlternateColorCodes('&',"&c&lNVus Prison Setup has been successfully disabled!"));
+ }
+
+ public BannedItemsConfig getBannedItemsConfig() {
+ return bannedItemsConfig;
}
}
diff --git a/src/main/resources/banned_items.yml b/src/main/resources/banned_items.yml
new file mode 100644
index 0000000..464626d
--- /dev/null
+++ b/src/main/resources/banned_items.yml
@@ -0,0 +1,14 @@
+#======================================================================================#
+# NVus PRISON SETUP #
+# by never2nv #
+# www.FNGnation.net #
+# Discord: FNGnation.net/discord #
+#======================================================================================#
+
+
+# Place Item(s) here that prisoners should never be able to equip in their hands or move into their quickbar
+# Remember to give all prisoner ranks/groups that permission nvus.prisoner and negate that permission for any
+# players that are not or no longer considered a prisoner.
+Banned Items:
+ - DIAMOND_PICKAXE
+ - NETHERITE_PICKAXE
\ No newline at end of file