diff --git a/pom.xml b/pom.xml
index 7fa2ac5..4ecdd0d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
me.NVus
NVus_Prison_Setup
- 0.4.0
+ 0.5.1
jar
NVus_PrisonSetup
diff --git a/src/main/java/me/nvus/nvus_prison_setup/Configs/ConfigManager.java b/src/main/java/me/nvus/nvus_prison_setup/Configs/ConfigManager.java
new file mode 100644
index 0000000..4de2259
--- /dev/null
+++ b/src/main/java/me/nvus/nvus_prison_setup/Configs/ConfigManager.java
@@ -0,0 +1,61 @@
+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.HashMap;
+import java.util.Map;
+
+public class ConfigManager {
+ private final JavaPlugin plugin;
+ private final Map configs;
+ private final Map configFiles;
+
+ public ConfigManager(JavaPlugin plugin) {
+ this.plugin = plugin;
+ this.configs = new HashMap<>();
+ this.configFiles = new HashMap<>();
+ }
+
+ public void reloadConfig(String configName) {
+ File configFile = getConfigFile(configName);
+ FileConfiguration config = YamlConfiguration.loadConfiguration(configFile);
+ configs.put(configName, config);
+ }
+
+ public FileConfiguration getConfig(String configName) {
+ if (!configs.containsKey(configName)) {
+ reloadConfig(configName);
+ }
+ return configs.get(configName);
+ }
+
+ public void saveConfig(String configName) {
+ FileConfiguration config = getConfig(configName);
+ File configFile = getConfigFile(configName);
+ try {
+ config.save(configFile);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void saveDefaultConfig(String configName) {
+ File configFile = getConfigFile(configName);
+ if (!configFile.exists()) {
+ plugin.saveResource(configName, false);
+ plugin.getLogger().info(configName + " has been created.");
+ }
+ }
+
+ private File getConfigFile(String configName) {
+ if (!configFiles.containsKey(configName)) {
+ File configFile = new File(plugin.getDataFolder(), configName);
+ configFiles.put(configName, configFile);
+ }
+ return configFiles.get(configName);
+ }
+}
diff --git a/src/main/java/me/nvus/nvus_prison_setup/Listeners/BlockListener.java b/src/main/java/me/nvus/nvus_prison_setup/Listeners/BlockListener.java
new file mode 100644
index 0000000..5913ab4
--- /dev/null
+++ b/src/main/java/me/nvus/nvus_prison_setup/Listeners/BlockListener.java
@@ -0,0 +1,38 @@
+package me.nvus.nvus_prison_setup.Listeners;
+
+import me.nvus.nvus_prison_setup.PrisonSetup;
+import org.bukkit.Material;
+import org.bukkit.block.Block;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.block.BlockBreakEvent;
+import org.bukkit.inventory.ItemStack;
+
+public class BlockListener implements Listener {
+
+ private final PrisonSetup plugin;
+
+ public BlockListener(PrisonSetup plugin) {
+ this.plugin = plugin;
+ }
+
+ @EventHandler
+ public void onBlockBreak(BlockBreakEvent event) {
+ Player player = event.getPlayer();
+ Block block = event.getBlock();
+
+ // Check if the player is a prisoner and auto-pickup is enabled
+ if (player.hasPermission("nvus.prisoner") && plugin.getConfigManager().getConfig("config.yml").getBoolean("AutoPickup")) {
+ ItemStack itemStack = new ItemStack(block.getType());
+ if (player.getInventory().addItem(itemStack).isEmpty()) {
+ // Inventory has enough space, remove the dropped item
+ event.setDropItems(false);
+ } else {
+ // Inventory is full, drop the item on the ground
+ block.getWorld().dropItemNaturally(block.getLocation(), itemStack);
+ player.sendMessage("Your inventory is currently full. The resource has been dropped on the ground!");
+ }
+ }
+ }
+}
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
index 33bb62d..0fb8998 100644
--- a/src/main/java/me/nvus/nvus_prison_setup/Listeners/PlayerItems.java
+++ b/src/main/java/me/nvus/nvus_prison_setup/Listeners/PlayerItems.java
@@ -1,15 +1,14 @@
package me.nvus.nvus_prison_setup.Listeners;
+import me.nvus.nvus_prison_setup.Configs.ConfigManager;
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.inventory.InventoryType;
import org.bukkit.event.player.PlayerItemHeldEvent;
import org.bukkit.inventory.ItemStack;
@@ -17,10 +16,10 @@ import java.util.List;
public class PlayerItems implements Listener {
- private final PrisonSetup plugin;
+ private final ConfigManager configManager;
- public PlayerItems(PrisonSetup plugin) {
- this.plugin = plugin;
+ public PlayerItems(ConfigManager configManager) {
+ this.configManager = configManager;
}
@EventHandler(priority = EventPriority.LOWEST)
@@ -54,41 +53,8 @@ public class PlayerItems implements Listener {
}
private boolean isBannedItem(Material itemType) {
- FileConfiguration config = plugin.getBannedItemsConfig().getConfig();
- List bannedItems = config.getStringList("BannedItems");
+ List bannedItems = configManager.getConfig("banned_items.yml").getStringList("BannedItems");
+
return bannedItems.contains(itemType.toString());
}
-
-
-
-
- /*
- @EventHandler(priority = EventPriority.LOWEST)
- public void onInventoryClick(InventoryClickEvent event) {
- if (event.getClickedInventory() != null && event.getClickedInventory().getType() == InventoryType.PLAYER) {
- if (event.getSlotType() == InventoryType.SlotType.QUICKBAR) {
- ItemStack item = event.getCurrentItem();
- Player player = (Player) event.getWhoClicked();
-
- // Check if the clicked item is a banned item
- if (item != null && isBannedItem(item.getType())) {
- // Check if the player is a prisoner
- if (player.hasPermission("nvus.prisoner")) {
- // Cancel the event to prevent the banned item from being moved to the quickbar
- event.setCancelled(true);
- player.sendMessage(ChatColor.translateAlternateColorCodes('&',"&c&lSorry inmate! &cYou'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 73ddf66..40de988 100644
--- a/src/main/java/me/nvus/nvus_prison_setup/PrisonSetup.java
+++ b/src/main/java/me/nvus/nvus_prison_setup/PrisonSetup.java
@@ -1,41 +1,49 @@
package me.nvus.nvus_prison_setup;
-import me.nvus.nvus_prison_setup.Configs.BannedItemsConfig;
+import me.nvus.nvus_prison_setup.Configs.ConfigManager;
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 me.nvus.nvus_prison_setup.Listeners.BlockListener;
import org.bukkit.ChatColor;
-import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
public final class PrisonSetup extends JavaPlugin {
- private BannedItemsConfig bannedItemsConfig;
+ private ConfigManager configManager;
@Override
public void onEnable() {
+ // Initialize the ConfigManager
+ configManager = new ConfigManager(this);
- // Init the BannedItemsConfig
- bannedItemsConfig = new BannedItemsConfig(this);
-
- // Save banned_items.yml config if it doesn't exist
- bannedItemsConfig.saveDefaultConfig();
+ // Save the default config if it doesn't exist
+ configManager.saveDefaultConfig("banned_items.yml");
+ configManager.saveDefaultConfig("config.yml"); // Add this line
+ // Register event listeners
getServer().getPluginManager().registerEvents(new PlayerSpawn(), this);
getServer().getPluginManager().registerEvents(new PlayerArmor(), this);
- getServer().getPluginManager().registerEvents(new PlayerItems(this), this);
- getLogger().info(ChatColor.translateAlternateColorCodes('&',"&a&lNVus Prison Setup has been successfully enabled!"));
+ getServer().getPluginManager().registerEvents(new PlayerItems(configManager), this);
+ getServer().getPluginManager().registerEvents(new BlockListener(this), this);
+
+ // Log a success message
+ getLogger().info(ChatColor.translateAlternateColorCodes('&',"&a&lNVus Prison Setup has been successfully enabled!"));
}
+
@Override
public void onDisable() {
- // Saving config file, just in case it was changed prior to disabling plugin/shutdown?
- bannedItemsConfig.saveConfig();
+ // Save the config when disabling the plugin
+ configManager.saveConfig("config.yml");
+ configManager.saveConfig("banned_items.yml");
+
+ // Log a success message
getLogger().info(ChatColor.translateAlternateColorCodes('&',"&c&lNVus Prison Setup has been successfully disabled!"));
}
- public BannedItemsConfig getBannedItemsConfig() {
- return bannedItemsConfig;
+ public ConfigManager getConfigManager() {
+ return configManager;
}
}
diff --git a/src/main/resources/banned_items.yml b/src/main/resources/banned_items.yml
index a9ad675..8bd5694 100644
--- a/src/main/resources/banned_items.yml
+++ b/src/main/resources/banned_items.yml
@@ -7,7 +7,7 @@
# 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
+# Remember to give all prisoner ranks/groups the permission ' nvus.prisoner ' and negate that permission for any
# players that are not or no longer considered a prisoner.
BannedItems:
- DIAMOND_PICKAXE
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
new file mode 100644
index 0000000..4a31f68
--- /dev/null
+++ b/src/main/resources/config.yml
@@ -0,0 +1,11 @@
+#======================================================================================#
+# NVus PRISON SETUP #
+# by never2nv #
+# www.FNGnation.net #
+# Discord: FNGnation.net/discord #
+#======================================================================================#
+# Remember to give all prisoner ranks/groups the permission ' nvus.prisoner ' and negate that permission for any
+# players that are not or no longer considered a prisoner.
+
+# Should prisoners auto pickup blocks they have mined?
+AutoPickup: true