1.0.5 - Finishing off first draft of adidng Prisoner Kits! Added new gang placeholders now there's: %nvus_gang_name%, %nvus_gang_owner% and %nvus_gang_members% to mimic the style of our Lifesteal Prison.
This commit is contained in:
parent
e87fd3d7a1
commit
2870e0111f
|
@ -21,8 +21,8 @@ Useful features for Minecraft Prison Servers & Then Some :P
|
|||
- [x] SellAll Command (Toggable)
|
||||
- [X] Rankup Commands **
|
||||
- [x] MySQL/SQLite Rankup Support **
|
||||
- [ ] Spawn with Prisoner Tools (Toggable)
|
||||
- [ ] Restrict Prisoner Tools from moving in inventory and dropping? (Toggable)
|
||||
- [x] Spawn with Prisoner Tools (Toggable) **
|
||||
- [x] Restrict Prisoner Tools from moving in inventory and dropping? (Toggable) **
|
||||
- [ ] Prisoner Tokens or Gems (Tied into Vault?)\
|
||||
** Implemented but still WIP
|
||||
|
||||
|
|
2
pom.xml
2
pom.xml
|
@ -6,7 +6,7 @@
|
|||
|
||||
<groupId>me.NVus</groupId>
|
||||
<artifactId>NVus_Prison</artifactId>
|
||||
<version>1.0.4</version>
|
||||
<version>1.0.5</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>NVus_PrisonSetup</name>
|
||||
|
|
|
@ -21,14 +21,29 @@ public class KitManager {
|
|||
}
|
||||
|
||||
public boolean isPrisonerKitItem(ItemStack item) {
|
||||
if (item == null || !item.hasItemMeta()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
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);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
String itemName = meta.hasDisplayName() ? meta.getDisplayName() : "";
|
||||
List<String> itemLore = meta.hasLore() ? meta.getLore() : new ArrayList<>();
|
||||
|
||||
if (material != null && item.getType() == material) {
|
||||
for (Map<?, ?> itemSpec : kitItems) {
|
||||
String configItemName = ChatColor.translateAlternateColorCodes('&', (String) itemSpec.get("name"));
|
||||
List<String> configItemLore = new ArrayList<>();
|
||||
if (itemSpec.get("lore") != null) {
|
||||
for (String line : (List<String>) itemSpec.get("lore")) {
|
||||
configItemLore.add(ChatColor.translateAlternateColorCodes('&', line));
|
||||
}
|
||||
}
|
||||
|
||||
// Check if the item matches the config item name ANNNND lore
|
||||
// Just to be double sure we're saying yes this is a prioner kit item on the right items!
|
||||
if (itemName.equals(configItemName) && itemLore.equals(configItemLore)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -51,6 +66,12 @@ public class KitManager {
|
|||
ItemStack item = new ItemStack(material);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
|
||||
// Set the display name if available
|
||||
if (itemSpec.containsKey("name")) {
|
||||
String name = ChatColor.translateAlternateColorCodes('&', (String) itemSpec.get("name"));
|
||||
meta.setDisplayName(name);
|
||||
}
|
||||
|
||||
// Set lore if available
|
||||
if (itemSpec.containsKey("lore")) {
|
||||
List<String> lore = new ArrayList<>();
|
||||
|
@ -80,6 +101,8 @@ public class KitManager {
|
|||
player.getInventory().addItem(item);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -7,12 +7,16 @@ 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.entity.PlayerDeathEvent;
|
||||
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;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class KitListener implements Listener {
|
||||
|
||||
private final ConfigManager configManager;
|
||||
|
@ -26,6 +30,7 @@ public class KitListener implements Listener {
|
|||
@EventHandler
|
||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
//player.sendMessage("§cKIT LISTENER ON JOIN ACTIVE!");
|
||||
// Check for permission first before giving kit
|
||||
if (!player.hasPermission("nvus.prisoner")) {
|
||||
return;
|
||||
|
@ -33,9 +38,36 @@ public class KitListener implements Listener {
|
|||
kitManager.givePrisonerKit(player);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerDeath(PlayerDeathEvent event) {
|
||||
Player player = event.getEntity();
|
||||
// Check for permission first before proceeding
|
||||
if (!player.hasPermission("nvus.prisoner")) {
|
||||
return;
|
||||
}
|
||||
|
||||
// This list will contain all items that are not part of the prisoner kit
|
||||
List<ItemStack> itemsToKeep = new ArrayList<>();
|
||||
|
||||
// Iterate over the items that would be dropped on death
|
||||
for (ItemStack item : event.getDrops()) {
|
||||
// If the item is not a prisoner kit item, add it to the list of items to keep
|
||||
if (!kitManager.isPrisonerKitItem(item)) {
|
||||
itemsToKeep.add(item);
|
||||
}
|
||||
}
|
||||
|
||||
// Clear the original list of drops
|
||||
event.getDrops().clear();
|
||||
|
||||
// Add back all items that are not part of the prisoner kit
|
||||
event.getDrops().addAll(itemsToKeep);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerRespawn(PlayerRespawnEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
//player.sendMessage("§cKIT LISTENER onRespawn ACTIVE!");
|
||||
// Check for permission first before giving kit
|
||||
if (!player.hasPermission("nvus.prisoner")) {
|
||||
return;
|
||||
|
@ -48,6 +80,7 @@ public class KitListener implements Listener {
|
|||
if (!shouldRestrictKitDrop()) return;
|
||||
|
||||
Player player = event.getPlayer();
|
||||
//player.sendMessage("§cKIT LISTENER onDrop ACTIVE!");
|
||||
// Permission check first before defining droppedItem etc
|
||||
if (!player.hasPermission("nvus.prisoner")) {
|
||||
return;
|
||||
|
@ -58,7 +91,7 @@ public class KitListener implements Listener {
|
|||
|
||||
if (kitManager.isPrisonerKitItem(droppedItem)) {
|
||||
event.setCancelled(true);
|
||||
player.sendMessage("§cPER THE WARDEN: You cannot drop your prisoner kit items!");
|
||||
player.sendMessage("§c&lPER THE WARDEN: You cannot drop your prisoner kit items!");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
package me.nvus.nvus_prison_setup.Placeholders;
|
||||
|
||||
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
||||
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
||||
import org.bukkit.entity.Player;
|
||||
import me.nvus.nvus_prison_setup.Gangs.GangManager;
|
||||
import me.nvus.nvus_prison_setup.Gangs.GangInfo;
|
||||
|
||||
public class GangPlaceholders extends PlaceholderExpansion {
|
||||
|
||||
|
@ -25,7 +25,7 @@ public class GangPlaceholders extends PlaceholderExpansion {
|
|||
|
||||
@Override
|
||||
public String getVersion() {
|
||||
return "1.0";
|
||||
return "1.1";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -34,12 +34,25 @@ public class GangPlaceholders extends PlaceholderExpansion {
|
|||
return "";
|
||||
}
|
||||
|
||||
// Placeholder: %nvus_gang_name%
|
||||
if (identifier.equals("gang_name")) {
|
||||
String gangName = gangManager.getCurrentGangName(player.getUniqueId());
|
||||
return gangName != null ? gangName : "No Gang";
|
||||
String gangName = gangManager.getCurrentGangName(player.getUniqueId());
|
||||
if (gangName == null) {
|
||||
return "No Gang";
|
||||
}
|
||||
|
||||
return null;
|
||||
GangInfo gangInfo = gangManager.getGangInfo(gangName);
|
||||
if (gangInfo == null) {
|
||||
return "Gang information could not be retrieved.";
|
||||
}
|
||||
|
||||
switch (identifier) {
|
||||
case "gang_name":
|
||||
return gangInfo.getName();
|
||||
case "gang_owner":
|
||||
return gangInfo.getOwnerName();
|
||||
case "gang_members":
|
||||
return String.valueOf(gangInfo.getMemberCount());
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -49,6 +49,8 @@ public final class PrisonSetup extends JavaPlugin {
|
|||
private DatabaseManager dbManager;
|
||||
private GangManager gangManager;
|
||||
|
||||
private KitManager kitManager;
|
||||
|
||||
private RankManager rankManager;
|
||||
|
||||
private static Economy econ = null; // Vault / Economy
|
||||
|
@ -160,9 +162,12 @@ 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);
|
||||
if (prisonerKitEnabled) {
|
||||
// Initialize KitManager with the instance of ConfigManager
|
||||
this.kitManager = new KitManager(this.configManager);
|
||||
|
||||
// Initialize KitListener with ConfigManager and KitManager, then register it
|
||||
KitListener kitListener = new KitListener(this.configManager, this.kitManager);
|
||||
getServer().getPluginManager().registerEvents(kitListener, this);
|
||||
}
|
||||
|
||||
|
@ -231,6 +236,10 @@ public final class PrisonSetup extends JavaPlugin {
|
|||
return econ;
|
||||
}
|
||||
|
||||
public KitManager getKitManager() {
|
||||
return kitManager;
|
||||
}
|
||||
|
||||
public RankManager getRankManager() {
|
||||
return rankManager;
|
||||
}
|
||||
|
|
|
@ -63,35 +63,39 @@ ToolDamage: false
|
|||
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
|
||||
name: "&7Prisoner's Sword"
|
||||
lore:
|
||||
- "&7Standard issue"
|
||||
- "&7Prisoner's Sword"
|
||||
slot: 0
|
||||
enchantments:
|
||||
DAMAGE_ALL: 3
|
||||
- item: IRON_PICKAXE
|
||||
name: "&7Prisoner's Pickaxe"
|
||||
lore:
|
||||
- "&7Standard issue"
|
||||
- "&7Prisoner's Pickaxe"
|
||||
slot: 1
|
||||
enchantments:
|
||||
EFFICIENCY: 3
|
||||
UNBREAKING: 2
|
||||
- item: IRON_AXE
|
||||
name: "&7Prisoner's Axe"
|
||||
lore:
|
||||
- "&7Standard issue"
|
||||
- "&7Prisoner's Axe"
|
||||
slot: 2
|
||||
enchantments:
|
||||
SHARPNESS: 2
|
||||
- item: IRON_SHOVEL
|
||||
name: "&7Prisoner's Shovel"
|
||||
lore:
|
||||
- "&7Standard issue"
|
||||
- "&7Prisoner's Shovel"
|
||||
slot: 3
|
||||
enchantments:
|
||||
- DAMAGE_ALL:3
|
||||
SILK_TOUCH: 1
|
||||
# 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?
|
||||
|
|
Loading…
Reference in New Issue