forked from never2nv/NVus_Prison
1.0.4 - Beginning stages of adding Prisoner Kits!
This commit is contained in:
parent
59814c88ed
commit
e87fd3d7a1
2
pom.xml
2
pom.xml
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
<groupId>me.NVus</groupId>
|
<groupId>me.NVus</groupId>
|
||||||
<artifactId>NVus_Prison</artifactId>
|
<artifactId>NVus_Prison</artifactId>
|
||||||
<version>1.0.3</version>
|
<version>1.0.4</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>NVus_PrisonSetup</name>
|
<name>NVus_PrisonSetup</name>
|
||||||
|
|
|
@ -0,0 +1,85 @@
|
||||||
|
package me.nvus.nvus_prison_setup.Kit;
|
||||||
|
import me.nvus.nvus_prison_setup.Configs.ConfigManager;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.enchantments.Enchantment;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class KitManager {
|
||||||
|
|
||||||
|
private final ConfigManager configManager;
|
||||||
|
|
||||||
|
public KitManager(ConfigManager configManager) {
|
||||||
|
this.configManager = configManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isPrisonerKitItem(ItemStack item) {
|
||||||
|
FileConfiguration config = configManager.getConfig("config.yml");
|
||||||
|
List<Map<?, ?>> kitItems = config.getMapList("PrisonerKitItems");
|
||||||
|
|
||||||
|
for (Map<?, ?> itemSpec : kitItems) {
|
||||||
|
String itemName = (String) itemSpec.get("item");
|
||||||
|
Material material = Material.matchMaterial(itemName);
|
||||||
|
|
||||||
|
if (material != null && item.getType() == material) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void givePrisonerKit(Player player) {
|
||||||
|
if (!configManager.getBoolean("config.yml", "PrisonerKit", false)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
FileConfiguration config = configManager.getConfig("config.yml");
|
||||||
|
List<Map<?, ?>> kitItems = config.getMapList("PrisonerKitItems");
|
||||||
|
|
||||||
|
for (Map<?, ?> itemSpec : kitItems) {
|
||||||
|
Material material = Material.matchMaterial((String) itemSpec.get("item"));
|
||||||
|
if (material == null) continue;
|
||||||
|
|
||||||
|
ItemStack item = new ItemStack(material);
|
||||||
|
ItemMeta meta = item.getItemMeta();
|
||||||
|
|
||||||
|
// Set lore if available
|
||||||
|
if (itemSpec.containsKey("lore")) {
|
||||||
|
List<String> lore = new ArrayList<>();
|
||||||
|
for (String line : (List<String>) itemSpec.get("lore")) {
|
||||||
|
lore.add(ChatColor.translateAlternateColorCodes('&', line));
|
||||||
|
}
|
||||||
|
meta.setLore(lore);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set enchantments if available
|
||||||
|
if (itemSpec.containsKey("enchantments")) {
|
||||||
|
Map<String, Integer> enchantments = (Map<String, Integer>) itemSpec.get("enchantments");
|
||||||
|
for (Map.Entry<String, Integer> enchantmentEntry : enchantments.entrySet()) {
|
||||||
|
Enchantment enchantment = Enchantment.getByName(enchantmentEntry.getKey());
|
||||||
|
if (enchantment != null) {
|
||||||
|
meta.addEnchant(enchantment, enchantmentEntry.getValue(), true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
item.setItemMeta(meta);
|
||||||
|
|
||||||
|
// Set item in specified quickbar slot, if available
|
||||||
|
if (itemSpec.containsKey("slot")) {
|
||||||
|
player.getInventory().setItem((Integer) itemSpec.get("slot"), item);
|
||||||
|
} else {
|
||||||
|
player.getInventory().addItem(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,96 @@
|
||||||
|
package me.nvus.nvus_prison_setup.Kit.Listeners;
|
||||||
|
|
||||||
|
import me.nvus.nvus_prison_setup.Configs.ConfigManager;
|
||||||
|
import me.nvus.nvus_prison_setup.Kit.KitManager;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
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.player.PlayerDropItemEvent;
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
public class KitListener implements Listener {
|
||||||
|
|
||||||
|
private final ConfigManager configManager;
|
||||||
|
private final KitManager kitManager;
|
||||||
|
|
||||||
|
public KitListener(ConfigManager configManager, KitManager kitManager) {
|
||||||
|
this.configManager = configManager;
|
||||||
|
this.kitManager = kitManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
// Check for permission first before giving kit
|
||||||
|
if (!player.hasPermission("nvus.prisoner")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
kitManager.givePrisonerKit(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPlayerRespawn(PlayerRespawnEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
// Check for permission first before giving kit
|
||||||
|
if (!player.hasPermission("nvus.prisoner")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
kitManager.givePrisonerKit(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPlayerDropItem(PlayerDropItemEvent event) {
|
||||||
|
if (!shouldRestrictKitDrop()) return;
|
||||||
|
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
// Permission check first before defining droppedItem etc
|
||||||
|
if (!player.hasPermission("nvus.prisoner")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemStack droppedItem = event.getItemDrop().getItemStack();
|
||||||
|
|
||||||
|
|
||||||
|
if (kitManager.isPrisonerKitItem(droppedItem)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
player.sendMessage("§cPER THE WARDEN: You cannot drop your prisoner kit items!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onInventoryClick(InventoryClickEvent event) {
|
||||||
|
if (!shouldRestrictKitMove()) return;
|
||||||
|
|
||||||
|
if (!(event.getWhoClicked() instanceof Player)) return;
|
||||||
|
|
||||||
|
Player player = (Player) event.getWhoClicked();
|
||||||
|
|
||||||
|
// Permission Check first before defining clickedItem etc
|
||||||
|
if (!player.hasPermission("nvus.prisoner")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemStack clickedItem = event.getCurrentItem();
|
||||||
|
|
||||||
|
if (clickedItem == null || clickedItem.getType() == Material.AIR) return;
|
||||||
|
|
||||||
|
if (kitManager.isPrisonerKitItem(clickedItem)) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
player.sendMessage("§cPER THE WARDEN: You cannot move your prisoner kit items!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private boolean shouldRestrictKitDrop() {
|
||||||
|
return configManager.getBoolean("config.yml", "RestrictKitDrop", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean shouldRestrictKitMove() {
|
||||||
|
return configManager.getBoolean("config.yml", "RestrictKitMove", false);
|
||||||
|
}
|
||||||
|
}
|
|
@ -80,7 +80,7 @@ public class BlockListener implements Listener {
|
||||||
} else {
|
} else {
|
||||||
// Inventory is full, drop the item on the ground
|
// Inventory is full, drop the item on the ground
|
||||||
block.getWorld().dropItemNaturally(block.getLocation(), drop);
|
block.getWorld().dropItemNaturally(block.getLocation(), drop);
|
||||||
player.sendMessage("Your inventory is currently full. The resource has been dropped on the ground!");
|
player.sendMessage("Your inventory is currently full! The resource has been dropped on the ground!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ public class PlayerArmor implements Listener {
|
||||||
createArmor(Material.LEATHER_CHESTPLATE, "Prisoner Chestplate"),
|
createArmor(Material.LEATHER_CHESTPLATE, "Prisoner Chestplate"),
|
||||||
createArmor(Material.LEATHER_HELMET, "Prisoner Helmet")
|
createArmor(Material.LEATHER_HELMET, "Prisoner Helmet")
|
||||||
});
|
});
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6&lYou have been equipped with prisoner armor!"));
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cPer The Warden: &6&lYou have been equipped with standard issue prisoner armor!"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ public class PlayerArmor implements Listener {
|
||||||
boolean restrictArmor = configManager.getConfig("config.yml").getBoolean("RestrictArmor");
|
boolean restrictArmor = configManager.getConfig("config.yml").getBoolean("RestrictArmor");
|
||||||
if (restrictArmor) {
|
if (restrictArmor) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&c&lSorry inmate! &cYou're a &6&lprisoner &cand cannot change your armor!"));
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&c&lPer The Warden: &c You cannot change your armor!"));
|
||||||
}
|
}
|
||||||
// If restrictArmor is false, allows the player to change armor freely.
|
// If restrictArmor is false, allows the player to change armor freely.
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ public class PlayerItems implements Listener {
|
||||||
if (item != null && isBannedItem(item.getType())) {
|
if (item != null && isBannedItem(item.getType())) {
|
||||||
if (player.hasPermission("nvus.prisoner")) {
|
if (player.hasPermission("nvus.prisoner")) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&',"&c&lSorry inmate! &cYou're a &6&lprisoner &cand cannot use this tool!"));
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&',"&c&lPer The Warden: &6You cannot use this tool!"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ public class PlayerItems implements Listener {
|
||||||
if (player.hasPermission("nvus.prisoner")) {
|
if (player.hasPermission("nvus.prisoner")) {
|
||||||
// Cancel the event to prevent interaction with banned items
|
// Cancel the event to prevent interaction with banned items
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&',"&c&lSorry inmate! &cYou're a &6&lprisoner &cand cannot use this tool!"));
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&',"&c&lPer The Warden: &6You cannot use this tool!"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,7 +97,7 @@ public class PlayerSpawn implements Listener {
|
||||||
player.getInventory().setLeggings(leatherLeggingsPrison);
|
player.getInventory().setLeggings(leatherLeggingsPrison);
|
||||||
player.getInventory().setBoots(leatherBootsPrison);
|
player.getInventory().setBoots(leatherBootsPrison);
|
||||||
|
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6&lYou're a prisoner! &6You've been given the default prisoner armor!"));
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&c&lPer The Warden: &6You've been given the default prisoner armor!"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package me.nvus.nvus_prison_setup;
|
package me.nvus.nvus_prison_setup;
|
||||||
|
|
||||||
import me.nvus.nvus_prison_setup.Configs.ConfigManager;
|
import me.nvus.nvus_prison_setup.Configs.ConfigManager;
|
||||||
import me.nvus.nvus_prison_setup.Listeners.CommandListener;
|
import me.nvus.nvus_prison_setup.Kit.KitManager;
|
||||||
import me.nvus.nvus_prison_setup.Configs.SettingsMenu;
|
import me.nvus.nvus_prison_setup.Configs.SettingsMenu;
|
||||||
// Listeners
|
// Listeners
|
||||||
import me.nvus.nvus_prison_setup.Listeners.PlayerArmor;
|
import me.nvus.nvus_prison_setup.Listeners.PlayerArmor;
|
||||||
|
@ -18,6 +18,8 @@ import me.nvus.nvus_prison_setup.Listeners.ToolDamageListener;
|
||||||
import me.nvus.nvus_prison_setup.TreeFarm.TreeFarmListener;
|
import me.nvus.nvus_prison_setup.TreeFarm.TreeFarmListener;
|
||||||
import me.nvus.nvus_prison_setup.AutoSell.SellManager;
|
import me.nvus.nvus_prison_setup.AutoSell.SellManager;
|
||||||
import me.nvus.nvus_prison_setup.AutoSell.Listeners.AutoSellListener;
|
import me.nvus.nvus_prison_setup.AutoSell.Listeners.AutoSellListener;
|
||||||
|
import me.nvus.nvus_prison_setup.Kit.Listeners.KitListener;
|
||||||
|
import me.nvus.nvus_prison_setup.Listeners.CommandListener;
|
||||||
// Database
|
// Database
|
||||||
import me.nvus.nvus_prison_setup.Database.DatabaseManager;
|
import me.nvus.nvus_prison_setup.Database.DatabaseManager;
|
||||||
// Gangs
|
// Gangs
|
||||||
|
@ -156,6 +158,14 @@ public final class PrisonSetup extends JavaPlugin {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Prisoner Kits
|
||||||
|
boolean prisonerKitEnabled = configManager.getConfig("config.yml").getBoolean("PrisonerKit", true);
|
||||||
|
if (prisonerRanksEnabled) {
|
||||||
|
KitManager kitManager = new KitManager(configManager);
|
||||||
|
KitListener kitListener = new KitListener(configManager, kitManager);
|
||||||
|
getServer().getPluginManager().registerEvents(kitListener, this);
|
||||||
|
}
|
||||||
|
|
||||||
// Successful Startup/Enable
|
// Successful Startup/Enable
|
||||||
getLogger().info(ChatColor.translateAlternateColorCodes('&',"&a&lNVus Prison Setup has been successfully enabled!"));
|
getLogger().info(ChatColor.translateAlternateColorCodes('&',"&a&lNVus Prison Setup has been successfully enabled!"));
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,49 @@ PrisonerTools:
|
||||||
# When set to FALSE it will prevent Prisoner Tools from receiving damage when mining etc.
|
# When set to FALSE it will prevent Prisoner Tools from receiving damage when mining etc.
|
||||||
ToolDamage: false
|
ToolDamage: false
|
||||||
|
|
||||||
|
########################################################################################
|
||||||
|
# PRISONER KIT SETTINGS #
|
||||||
|
########################################################################################
|
||||||
|
|
||||||
|
# Should players spawn with a prisoner kit when they join the server or respawn?
|
||||||
|
PrisonerKit: True
|
||||||
|
# If PrisonerKit above is true: What items should be in the prisoner kit?
|
||||||
|
PrisonerKitItems:
|
||||||
|
- item: IRON_PICKAXE
|
||||||
|
lore:
|
||||||
|
- "&7Standard issue"
|
||||||
|
- "&7Prisoner's Pickaxe"
|
||||||
|
slot: 0
|
||||||
|
enchantments:
|
||||||
|
- EFFICIENCY:3
|
||||||
|
- UNBREAKING:2
|
||||||
|
- item: IRON_AXE
|
||||||
|
lore:
|
||||||
|
- "&7Standard issue"
|
||||||
|
- "&7Prisoner's Axe"
|
||||||
|
slot: 1
|
||||||
|
enchantments:
|
||||||
|
- SHARPNESS:2
|
||||||
|
- item: IRON_SHOVEL
|
||||||
|
lore:
|
||||||
|
- "&7Standard issue"
|
||||||
|
- "&7Prisoner's Shovel"
|
||||||
|
slot: 2
|
||||||
|
enchantments:
|
||||||
|
- SILK_TOUCH:1
|
||||||
|
- item: IRON_SWORD
|
||||||
|
lore:
|
||||||
|
- "&7Standard issue"
|
||||||
|
- "&7Prisoner's Sword"
|
||||||
|
slot: 3
|
||||||
|
enchantments:
|
||||||
|
- DAMAGE_ALL:3
|
||||||
|
# Should players be able to drop their prisoner kit items?
|
||||||
|
RestrictKitDrop: True
|
||||||
|
# Should prisoners be able to move their prisoner kit items around in their inventory?
|
||||||
|
RestrictKitMove: True
|
||||||
|
|
||||||
|
|
||||||
########################################################################################
|
########################################################################################
|
||||||
# TREE FARM FEATURE #
|
# TREE FARM FEATURE #
|
||||||
########################################################################################
|
########################################################################################
|
||||||
|
|
Loading…
Reference in New Issue