mirror of
https://github.com/hyperdefined/ToolStats.git
synced 2025-12-06 06:41:44 +00:00
big cleanup
This commit is contained in:
@@ -23,6 +23,7 @@ import org.bukkit.GameMode;
|
|||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.block.BlockBreakEvent;
|
import org.bukkit.event.block.BlockBreakEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
@@ -41,7 +42,7 @@ public class BlocksMined implements Listener {
|
|||||||
this.toolStats = toolStats;
|
this.toolStats = toolStats;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler (priority = EventPriority.LOWEST)
|
||||||
public void onBreak(BlockBreakEvent event) {
|
public void onBreak(BlockBreakEvent event) {
|
||||||
if (event.isCancelled()) {
|
if (event.isCancelled()) {
|
||||||
return;
|
return;
|
||||||
@@ -51,7 +52,8 @@ public class BlocksMined implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// if the player mines something with their fist
|
// if the player mines something with their fist
|
||||||
ItemStack heldItem = player.getInventory().getItem(player.getInventory().getHeldItemSlot());
|
int heldItemSlot = player.getInventory().getHeldItemSlot();
|
||||||
|
ItemStack heldItem = player.getInventory().getItem(heldItemSlot);
|
||||||
if (heldItem == null || heldItem.getType() == Material.AIR) {
|
if (heldItem == null || heldItem.getType() == Material.AIR) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -60,23 +62,32 @@ public class BlocksMined implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// if it's an item we want, update the stats
|
// if it's an item we want, update the stats
|
||||||
updateBlocksMined(heldItem);
|
ItemStack newTool = updateBlocksMined(heldItem);
|
||||||
|
if (newTool != null) {
|
||||||
|
player.getInventory().setItem(heldItemSlot, newTool);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateBlocksMined(ItemStack itemStack) {
|
private ItemStack updateBlocksMined(ItemStack originalTool) {
|
||||||
ItemMeta meta = itemStack.getItemMeta();
|
ItemStack newTool = originalTool.clone();
|
||||||
|
ItemMeta meta = newTool.getItemMeta();
|
||||||
if (meta == null) {
|
if (meta == null) {
|
||||||
return;
|
toolStats.logger.warning(originalTool + " does NOT have any meta! Unable to update stats.");
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
// read the current stats from the item
|
// read the current stats from the item
|
||||||
// if they don't exist, then start from 0
|
// if they don't exist, then start from 0
|
||||||
Integer blocksMined = null;
|
Integer blocksMined = 0;
|
||||||
PersistentDataContainer container = meta.getPersistentDataContainer();
|
PersistentDataContainer container = meta.getPersistentDataContainer();
|
||||||
if (container.has(toolStats.genericMined, PersistentDataType.INTEGER)) {
|
if (container.has(toolStats.genericMined, PersistentDataType.INTEGER)) {
|
||||||
blocksMined = container.get(toolStats.genericMined, PersistentDataType.INTEGER);
|
blocksMined = container.get(toolStats.genericMined, PersistentDataType.INTEGER);
|
||||||
|
} else {
|
||||||
|
blocksMined = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (blocksMined == null) {
|
if (blocksMined == null) {
|
||||||
blocksMined = 0;
|
blocksMined = 0;
|
||||||
|
toolStats.logger.warning(originalTool + " does not have valid generic-mined set! Resting to zero. This should NEVER happen.");
|
||||||
}
|
}
|
||||||
|
|
||||||
blocksMined++;
|
blocksMined++;
|
||||||
@@ -87,7 +98,7 @@ public class BlocksMined implements Listener {
|
|||||||
|
|
||||||
if (configLore == null || configLoreRaw == null) {
|
if (configLore == null || configLoreRaw == null) {
|
||||||
toolStats.logger.warning("There is no lore message for messages.blocks-mined!");
|
toolStats.logger.warning("There is no lore message for messages.blocks-mined!");
|
||||||
return;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> lore;
|
List<String> lore;
|
||||||
@@ -113,9 +124,10 @@ public class BlocksMined implements Listener {
|
|||||||
lore.add(configLoreRaw.replace("{blocks}", toolStats.commaFormat.format(blocksMined)));
|
lore.add(configLoreRaw.replace("{blocks}", toolStats.commaFormat.format(blocksMined)));
|
||||||
}
|
}
|
||||||
// do we add the lore based on the config?
|
// do we add the lore based on the config?
|
||||||
if (toolStats.checkConfig(itemStack, "blocks-mined")) {
|
if (toolStats.checkConfig(newTool, "blocks-mined")) {
|
||||||
meta.setLore(lore);
|
meta.setLore(lore);
|
||||||
}
|
}
|
||||||
itemStack.setItemMeta(meta);
|
newTool.setItemMeta(meta);
|
||||||
|
return newTool;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import org.bukkit.World;
|
|||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.ItemFrame;
|
import org.bukkit.entity.ItemFrame;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.world.ChunkPopulateEvent;
|
import org.bukkit.event.world.ChunkPopulateEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
@@ -43,7 +44,7 @@ public class ChunkPopulate implements Listener {
|
|||||||
this.toolStats = toolStats;
|
this.toolStats = toolStats;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
public void onPopulate(ChunkPopulateEvent event) {
|
public void onPopulate(ChunkPopulateEvent event) {
|
||||||
if (event.getChunk().getWorld().getEnvironment() != World.Environment.THE_END) {
|
if (event.getChunk().getWorld().getEnvironment() != World.Environment.THE_END) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import org.bukkit.GameMode;
|
|||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.inventory.CraftItemEvent;
|
import org.bukkit.event.inventory.CraftItemEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
@@ -42,7 +43,7 @@ public class CraftItem implements Listener {
|
|||||||
this.toolStats = toolStats;
|
this.toolStats = toolStats;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
public void onCraft(CraftItemEvent event) {
|
public void onCraft(CraftItemEvent event) {
|
||||||
if (event.isCancelled()) {
|
if (event.isCancelled()) {
|
||||||
return;
|
return;
|
||||||
@@ -89,6 +90,7 @@ public class CraftItem implements Listener {
|
|||||||
ItemStack newItem = itemStack.clone();
|
ItemStack newItem = itemStack.clone();
|
||||||
ItemMeta meta = newItem.getItemMeta();
|
ItemMeta meta = newItem.getItemMeta();
|
||||||
if (meta == null) {
|
if (meta == null) {
|
||||||
|
toolStats.logger.warning(itemStack + " does NOT have any meta! Unable to update stats.");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
// get the current time
|
// get the current time
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import org.bukkit.GameMode;
|
|||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.*;
|
import org.bukkit.entity.*;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.entity.EntityDamageByBlockEvent;
|
import org.bukkit.event.entity.EntityDamageByBlockEvent;
|
||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
@@ -45,7 +46,7 @@ public class EntityDamage implements Listener {
|
|||||||
this.toolStats = toolStats;
|
this.toolStats = toolStats;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
public void onDamage(EntityDamageByEntityEvent event) {
|
public void onDamage(EntityDamageByEntityEvent event) {
|
||||||
if (event.isCancelled()) {
|
if (event.isCancelled()) {
|
||||||
return;
|
return;
|
||||||
@@ -145,7 +146,7 @@ public class EntityDamage implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
public void onDamage(EntityDamageEvent event) {
|
public void onDamage(EntityDamageEvent event) {
|
||||||
if (!(event.getEntity() instanceof LivingEntity)) {
|
if (!(event.getEntity() instanceof LivingEntity)) {
|
||||||
return;
|
return;
|
||||||
@@ -175,7 +176,7 @@ public class EntityDamage implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
public void onDamage(EntityDamageByBlockEvent event) {
|
public void onDamage(EntityDamageByBlockEvent event) {
|
||||||
if (!(event.getEntity() instanceof LivingEntity)) {
|
if (!(event.getEntity() instanceof LivingEntity)) {
|
||||||
return;
|
return;
|
||||||
@@ -215,15 +216,19 @@ public class EntityDamage implements Listener {
|
|||||||
ItemStack finalItem = itemStack.clone();
|
ItemStack finalItem = itemStack.clone();
|
||||||
ItemMeta meta = finalItem.getItemMeta();
|
ItemMeta meta = finalItem.getItemMeta();
|
||||||
if (meta == null) {
|
if (meta == null) {
|
||||||
|
toolStats.logger.warning(itemStack + " does NOT have any meta! Unable to update stats.");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Integer playerKills = null;
|
Integer playerKills = null;
|
||||||
PersistentDataContainer container = meta.getPersistentDataContainer();
|
PersistentDataContainer container = meta.getPersistentDataContainer();
|
||||||
if (container.has(toolStats.swordPlayerKills, PersistentDataType.INTEGER)) {
|
if (container.has(toolStats.swordPlayerKills, PersistentDataType.INTEGER)) {
|
||||||
playerKills = container.get(toolStats.swordPlayerKills, PersistentDataType.INTEGER);
|
playerKills = container.get(toolStats.swordPlayerKills, PersistentDataType.INTEGER);
|
||||||
|
} else {
|
||||||
|
playerKills = 0;
|
||||||
}
|
}
|
||||||
if (playerKills == null) {
|
if (playerKills == null) {
|
||||||
playerKills = 0;
|
playerKills = 0;
|
||||||
|
toolStats.logger.warning(itemStack + " does not have valid player-kills set! Resting to zero. This should NEVER happen.");
|
||||||
}
|
}
|
||||||
|
|
||||||
playerKills++;
|
playerKills++;
|
||||||
@@ -277,15 +282,20 @@ public class EntityDamage implements Listener {
|
|||||||
ItemStack finalItem = itemStack.clone();
|
ItemStack finalItem = itemStack.clone();
|
||||||
ItemMeta meta = finalItem.getItemMeta();
|
ItemMeta meta = finalItem.getItemMeta();
|
||||||
if (meta == null) {
|
if (meta == null) {
|
||||||
|
toolStats.logger.warning(itemStack + " does NOT have any meta! Unable to update stats.");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Integer mobKills = null;
|
Integer mobKills = null;
|
||||||
PersistentDataContainer container = meta.getPersistentDataContainer();
|
PersistentDataContainer container = meta.getPersistentDataContainer();
|
||||||
if (container.has(toolStats.swordMobKills, PersistentDataType.INTEGER)) {
|
if (container.has(toolStats.swordMobKills, PersistentDataType.INTEGER)) {
|
||||||
mobKills = container.get(toolStats.swordMobKills, PersistentDataType.INTEGER);
|
mobKills = container.get(toolStats.swordMobKills, PersistentDataType.INTEGER);
|
||||||
|
} else {
|
||||||
|
mobKills = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mobKills == null) {
|
if (mobKills == null) {
|
||||||
mobKills = 0;
|
mobKills = 0;
|
||||||
|
toolStats.logger.warning(itemStack + " does not have valid mob-kills set! Resting to zero. This should NEVER happen.");
|
||||||
}
|
}
|
||||||
|
|
||||||
mobKills++;
|
mobKills++;
|
||||||
@@ -338,15 +348,20 @@ public class EntityDamage implements Listener {
|
|||||||
private void updateArmorDamage(ItemStack itemStack, double damage) {
|
private void updateArmorDamage(ItemStack itemStack, double damage) {
|
||||||
ItemMeta meta = itemStack.getItemMeta();
|
ItemMeta meta = itemStack.getItemMeta();
|
||||||
if (meta == null) {
|
if (meta == null) {
|
||||||
|
toolStats.logger.warning(itemStack + " does NOT have any meta! Unable to update stats.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Double damageTaken = null;
|
Double damageTaken;
|
||||||
PersistentDataContainer container = meta.getPersistentDataContainer();
|
PersistentDataContainer container = meta.getPersistentDataContainer();
|
||||||
if (container.has(toolStats.armorDamage, PersistentDataType.DOUBLE)) {
|
if (container.has(toolStats.armorDamage, PersistentDataType.DOUBLE)) {
|
||||||
damageTaken = container.get(toolStats.armorDamage, PersistentDataType.DOUBLE);
|
damageTaken = container.get(toolStats.armorDamage, PersistentDataType.DOUBLE);
|
||||||
|
} else {
|
||||||
|
damageTaken = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (damageTaken == null) {
|
if (damageTaken == null) {
|
||||||
damageTaken = 0.0;
|
damageTaken = 0.0;
|
||||||
|
toolStats.logger.warning(itemStack + " does not have valid damage-taken set! Resting to zero. This should NEVER happen.");
|
||||||
}
|
}
|
||||||
|
|
||||||
damageTaken = damageTaken + damage;
|
damageTaken = damageTaken + damage;
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import lol.hyper.toolstats.tools.ItemChecker;
|
|||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.entity.EntityDeathEvent;
|
import org.bukkit.event.entity.EntityDeathEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
@@ -37,7 +38,7 @@ public class EntityDeath implements Listener {
|
|||||||
this.toolStats = toolStats;
|
this.toolStats = toolStats;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
public void onDeath(EntityDeathEvent event) {
|
public void onDeath(EntityDeathEvent event) {
|
||||||
LivingEntity livingEntity = event.getEntity();
|
LivingEntity livingEntity = event.getEntity();
|
||||||
if (livingEntity instanceof Player) {
|
if (livingEntity instanceof Player) {
|
||||||
@@ -46,9 +47,13 @@ public class EntityDeath implements Listener {
|
|||||||
UUID livingEntityUUID = event.getEntity().getUniqueId();
|
UUID livingEntityUUID = event.getEntity().getUniqueId();
|
||||||
// if it's a mob we are tracking that matters
|
// if it's a mob we are tracking that matters
|
||||||
if (toolStats.mobKill.trackedMobs.contains(livingEntityUUID)) {
|
if (toolStats.mobKill.trackedMobs.contains(livingEntityUUID)) {
|
||||||
for (ItemStack current : event.getDrops()) {
|
for (int i = 0; i < event.getDrops().size(); i++) {
|
||||||
|
ItemStack current = event.getDrops().get(i);
|
||||||
if (ItemChecker.isValidItem(current.getType())) {
|
if (ItemChecker.isValidItem(current.getType())) {
|
||||||
addLore(current, livingEntity.getName());
|
ItemStack newItem = addLore(current, livingEntity.getName());
|
||||||
|
if (newItem != null) {
|
||||||
|
event.getDrops().set(i, newItem);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
toolStats.mobKill.trackedMobs.remove(livingEntityUUID);
|
toolStats.mobKill.trackedMobs.remove(livingEntityUUID);
|
||||||
@@ -58,13 +63,14 @@ public class EntityDeath implements Listener {
|
|||||||
/**
|
/**
|
||||||
* Adds "drop by" tag to item.
|
* Adds "drop by" tag to item.
|
||||||
*
|
*
|
||||||
* @param itemStack The item to add lore to.
|
* @param oldItem The item to add lore to.
|
||||||
* @param mob The mob or player name.
|
* @param mob The mob or player name.
|
||||||
*/
|
*/
|
||||||
private void addLore(ItemStack itemStack, String mob) {
|
private ItemStack addLore(ItemStack oldItem, String mob) {
|
||||||
ItemMeta meta = itemStack.getItemMeta();
|
ItemStack newItem = oldItem.clone();
|
||||||
|
ItemMeta meta = newItem.getItemMeta();
|
||||||
if (meta == null) {
|
if (meta == null) {
|
||||||
return;
|
return null;
|
||||||
}
|
}
|
||||||
boolean hasTag = false;
|
boolean hasTag = false;
|
||||||
|
|
||||||
@@ -73,7 +79,7 @@ public class EntityDeath implements Listener {
|
|||||||
|
|
||||||
if (droppedByLore == null || droppedByLoreRaw == null) {
|
if (droppedByLore == null || droppedByLoreRaw == null) {
|
||||||
toolStats.logger.warning("There is no lore message for messages.dropped-by!");
|
toolStats.logger.warning("There is no lore message for messages.dropped-by!");
|
||||||
return;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> lore;
|
List<String> lore;
|
||||||
@@ -96,6 +102,7 @@ public class EntityDeath implements Listener {
|
|||||||
if (toolStats.config.getBoolean("enabled.dropped-by")) {
|
if (toolStats.config.getBoolean("enabled.dropped-by")) {
|
||||||
meta.setLore(lore);
|
meta.setLore(lore);
|
||||||
}
|
}
|
||||||
itemStack.setItemMeta(meta);
|
newItem.setItemMeta(meta);
|
||||||
|
return newItem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import org.bukkit.block.Chest;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.minecart.StorageMinecart;
|
import org.bukkit.entity.minecart.StorageMinecart;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.world.LootGenerateEvent;
|
import org.bukkit.event.world.LootGenerateEvent;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
@@ -49,7 +50,7 @@ public class GenerateLoot implements Listener {
|
|||||||
this.toolStats = toolStats;
|
this.toolStats = toolStats;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
public void onGenerateLoot(LootGenerateEvent event) {
|
public void onGenerateLoot(LootGenerateEvent event) {
|
||||||
InventoryHolder inventoryHolder = event.getInventoryHolder();
|
InventoryHolder inventoryHolder = event.getInventoryHolder();
|
||||||
if (inventoryHolder == null) {
|
if (inventoryHolder == null) {
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import org.bukkit.GameMode;
|
|||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.*;
|
import org.bukkit.entity.*;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.entity.EntityPickupItemEvent;
|
import org.bukkit.event.entity.EntityPickupItemEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
@@ -42,7 +43,7 @@ public class PickupItem implements Listener {
|
|||||||
this.toolStats = toolStats;
|
this.toolStats = toolStats;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
public void onPickup(EntityPickupItemEvent event) {
|
public void onPickup(EntityPickupItemEvent event) {
|
||||||
if (event.isCancelled()) {
|
if (event.isCancelled()) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import org.bukkit.Material;
|
|||||||
import org.bukkit.entity.Item;
|
import org.bukkit.entity.Item;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.PlayerFishEvent;
|
import org.bukkit.event.player.PlayerFishEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
@@ -44,7 +45,7 @@ public class PlayerFish implements Listener {
|
|||||||
this.toolStats = toolStats;
|
this.toolStats = toolStats;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
public void onFish(PlayerFishEvent event) {
|
public void onFish(PlayerFishEvent event) {
|
||||||
if (event.isCancelled()) {
|
if (event.isCancelled()) {
|
||||||
return;
|
return;
|
||||||
@@ -58,37 +59,54 @@ public class PlayerFish implements Listener {
|
|||||||
if (player.getGameMode() == GameMode.CREATIVE || player.getGameMode() == GameMode.SPECTATOR) {
|
if (player.getGameMode() == GameMode.CREATIVE || player.getGameMode() == GameMode.SPECTATOR) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// make sure the player is holding a fishing rod
|
||||||
ItemStack heldItem = player.getInventory().getItem(player.getInventory().getHeldItemSlot());
|
ItemStack heldItem = player.getInventory().getItem(player.getInventory().getHeldItemSlot());
|
||||||
|
int heldItemSlot = player.getInventory().getHeldItemSlot();
|
||||||
if (heldItem == null || heldItem.getType() == Material.AIR || heldItem.getType() != Material.FISHING_ROD) {
|
if (heldItem == null || heldItem.getType() == Material.AIR || heldItem.getType() != Material.FISHING_ROD) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
updateFishCount(heldItem);
|
// update the fishing rod to the new one
|
||||||
|
ItemStack newRod = updateFishCount(heldItem);
|
||||||
|
if (newRod != null) {
|
||||||
|
player.getInventory().setItem(heldItemSlot, newRod);
|
||||||
|
}
|
||||||
|
// check if the player caught an item
|
||||||
if (event.getCaught() == null) {
|
if (event.getCaught() == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ItemStack caughtItem = ((Item) event.getCaught()).getItemStack();
|
ItemStack caughtItem = ((Item) event.getCaught()).getItemStack();
|
||||||
|
Item caughtItemEntity = (Item) event.getCaught();
|
||||||
if (ItemChecker.isValidItem(caughtItem.getType())) {
|
if (ItemChecker.isValidItem(caughtItem.getType())) {
|
||||||
addNewLore(caughtItem, player);
|
ItemStack newItem = addNewLore(caughtItem, player);
|
||||||
|
if (newItem != null) {
|
||||||
|
caughtItemEntity.setItemStack(newItem);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates a fishing rod's count.
|
* Update a fishing rod's fish count.
|
||||||
*
|
* @param originalRod The fishing rod to update.
|
||||||
* @param itemStack The fishing rod to update.
|
* @return A new fishing rod with update counts.
|
||||||
*/
|
*/
|
||||||
private void updateFishCount(ItemStack itemStack) {
|
private ItemStack updateFishCount(ItemStack originalRod) {
|
||||||
ItemMeta meta = itemStack.getItemMeta();
|
ItemStack newRod = originalRod.clone();
|
||||||
|
ItemMeta meta = newRod.getItemMeta();
|
||||||
if (meta == null) {
|
if (meta == null) {
|
||||||
return;
|
toolStats.logger.warning(originalRod + " does NOT have any meta! Unable to update stats.");
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
Integer fishCaught = null;
|
Integer fishCaught;
|
||||||
PersistentDataContainer container = meta.getPersistentDataContainer();
|
PersistentDataContainer container = meta.getPersistentDataContainer();
|
||||||
if (container.has(toolStats.fishingRodCaught, PersistentDataType.INTEGER)) {
|
if (container.has(toolStats.fishingRodCaught, PersistentDataType.INTEGER)) {
|
||||||
fishCaught = container.get(toolStats.fishingRodCaught, PersistentDataType.INTEGER);
|
fishCaught = container.get(toolStats.fishingRodCaught, PersistentDataType.INTEGER);
|
||||||
|
} else {
|
||||||
|
fishCaught = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fishCaught == null) {
|
if (fishCaught == null) {
|
||||||
fishCaught = 0;
|
fishCaught = 0;
|
||||||
|
toolStats.logger.warning(originalRod + " does not have valid fish-caught set! Resting to zero. This should NEVER happen.");
|
||||||
}
|
}
|
||||||
|
|
||||||
fishCaught++;
|
fishCaught++;
|
||||||
@@ -99,7 +117,7 @@ public class PlayerFish implements Listener {
|
|||||||
|
|
||||||
if (fishCaughtLore == null || fishCaughtLoreRaw == null) {
|
if (fishCaughtLore == null || fishCaughtLoreRaw == null) {
|
||||||
toolStats.logger.warning("There is no lore message for messages.fish-caught!");
|
toolStats.logger.warning("There is no lore message for messages.fish-caught!");
|
||||||
return;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> lore;
|
List<String> lore;
|
||||||
@@ -127,26 +145,28 @@ public class PlayerFish implements Listener {
|
|||||||
if (toolStats.config.getBoolean("enabled.fish-caught")) {
|
if (toolStats.config.getBoolean("enabled.fish-caught")) {
|
||||||
meta.setLore(lore);
|
meta.setLore(lore);
|
||||||
}
|
}
|
||||||
itemStack.setItemMeta(meta);
|
newRod.setItemMeta(meta);
|
||||||
|
return newRod;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds "caught by" tags to newly fished items.
|
* Add lore to newly caught item.
|
||||||
*
|
* @param originalItem The original item to add lore.
|
||||||
* @param itemStack The item to add lore to.
|
* @param owner The player who caught it.
|
||||||
* @param owner The player who caught the item.
|
* @return A copy of the new item with lore.
|
||||||
*/
|
*/
|
||||||
private void addNewLore(ItemStack itemStack, Player owner) {
|
private ItemStack addNewLore(ItemStack originalItem, Player owner) {
|
||||||
ItemMeta meta = itemStack.getItemMeta();
|
ItemStack newItem = originalItem.clone();
|
||||||
|
ItemMeta meta = originalItem.getItemMeta();
|
||||||
if (meta == null) {
|
if (meta == null) {
|
||||||
return;
|
return null;
|
||||||
}
|
}
|
||||||
long timeCreated = System.currentTimeMillis();
|
long timeCreated = System.currentTimeMillis();
|
||||||
Date finalDate = new Date(timeCreated);
|
Date finalDate = new Date(timeCreated);
|
||||||
PersistentDataContainer container = meta.getPersistentDataContainer();
|
PersistentDataContainer container = meta.getPersistentDataContainer();
|
||||||
|
|
||||||
if (container.has(toolStats.timeCreated, PersistentDataType.LONG) || container.has(toolStats.genericOwner, PersistentDataType.LONG)) {
|
if (container.has(toolStats.timeCreated, PersistentDataType.LONG) || container.has(toolStats.genericOwner, PersistentDataType.LONG)) {
|
||||||
return;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
container.set(toolStats.timeCreated, PersistentDataType.LONG, timeCreated);
|
container.set(toolStats.timeCreated, PersistentDataType.LONG, timeCreated);
|
||||||
@@ -157,7 +177,7 @@ public class PlayerFish implements Listener {
|
|||||||
|
|
||||||
if (caughtByLoreRaw == null || caughtOnLoreRaw == null) {
|
if (caughtByLoreRaw == null || caughtOnLoreRaw == null) {
|
||||||
toolStats.logger.warning("There is no lore message for messages.fished!");
|
toolStats.logger.warning("There is no lore message for messages.fished!");
|
||||||
return;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> lore;
|
List<String> lore;
|
||||||
@@ -167,11 +187,12 @@ public class PlayerFish implements Listener {
|
|||||||
} else {
|
} else {
|
||||||
lore = new ArrayList<>();
|
lore = new ArrayList<>();
|
||||||
}
|
}
|
||||||
if (toolStats.checkConfig(itemStack, "fished-tag")) {
|
if (toolStats.checkConfig(newItem, "fished-tag")) {
|
||||||
lore.add(caughtOnLoreRaw.replace("{date}", toolStats.dateFormat.format(finalDate)));
|
lore.add(caughtOnLoreRaw.replace("{date}", toolStats.dateFormat.format(finalDate)));
|
||||||
lore.add(caughtByLoreRaw.replace("{player}", owner.getName()));
|
lore.add(caughtByLoreRaw.replace("{player}", owner.getName()));
|
||||||
|
meta.setLore(lore);
|
||||||
}
|
}
|
||||||
meta.setLore(lore);
|
newItem.setItemMeta(meta);
|
||||||
itemStack.setItemMeta(meta);
|
return newItem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import org.bukkit.entity.Entity;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Sheep;
|
import org.bukkit.entity.Sheep;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
@@ -42,7 +43,7 @@ public class SheepShear implements Listener {
|
|||||||
this.toolStats = toolStats;
|
this.toolStats = toolStats;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
public void onShear(PlayerInteractEntityEvent event) {
|
public void onShear(PlayerInteractEntityEvent event) {
|
||||||
if (event.isCancelled()) {
|
if (event.isCancelled()) {
|
||||||
return;
|
return;
|
||||||
@@ -56,7 +57,8 @@ public class SheepShear implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// check if the player is right-clicking with shears only
|
// check if the player is right-clicking with shears only
|
||||||
ItemStack heldItem = player.getInventory().getItem(player.getInventory().getHeldItemSlot());
|
int heldItemSlot = player.getInventory().getHeldItemSlot();
|
||||||
|
ItemStack heldItem = player.getInventory().getItem(heldItemSlot);
|
||||||
if (heldItem == null || heldItem.getType() == Material.AIR || heldItem.getType() != Material.SHEARS) {
|
if (heldItem == null || heldItem.getType() == Material.AIR || heldItem.getType() != Material.SHEARS) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -64,27 +66,36 @@ public class SheepShear implements Listener {
|
|||||||
Sheep sheep = (Sheep) entity;
|
Sheep sheep = (Sheep) entity;
|
||||||
// make sure the sheep is not sheared
|
// make sure the sheep is not sheared
|
||||||
if (!sheep.isSheared()) {
|
if (!sheep.isSheared()) {
|
||||||
addLore(heldItem);
|
ItemStack newShears = addLore(heldItem);
|
||||||
|
if (newShears != null) {
|
||||||
|
player.getInventory().setItem(heldItemSlot, newShears);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds tags to shears.
|
* Adds tags to shears.
|
||||||
*
|
*
|
||||||
* @param itemStack The shears.
|
* @param oldShears The shears.
|
||||||
*/
|
*/
|
||||||
private void addLore(ItemStack itemStack) {
|
private ItemStack addLore(ItemStack oldShears) {
|
||||||
ItemMeta meta = itemStack.getItemMeta();
|
ItemStack newShears = oldShears.clone();
|
||||||
|
ItemMeta meta = newShears.getItemMeta();
|
||||||
if (meta == null) {
|
if (meta == null) {
|
||||||
return;
|
toolStats.logger.warning(newShears + " does NOT have any meta! Unable to update stats.");
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
Integer sheepSheared = 0;
|
Integer sheepSheared;
|
||||||
PersistentDataContainer container = meta.getPersistentDataContainer();
|
PersistentDataContainer container = meta.getPersistentDataContainer();
|
||||||
if (container.has(toolStats.shearsSheared, PersistentDataType.INTEGER)) {
|
if (container.has(toolStats.shearsSheared, PersistentDataType.INTEGER)) {
|
||||||
sheepSheared = container.get(toolStats.shearsSheared, PersistentDataType.INTEGER);
|
sheepSheared = container.get(toolStats.shearsSheared, PersistentDataType.INTEGER);
|
||||||
|
} else {
|
||||||
|
sheepSheared = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sheepSheared == null) {
|
if (sheepSheared == null) {
|
||||||
sheepSheared = 0;
|
sheepSheared = 0;
|
||||||
|
toolStats.logger.warning(newShears + " does not have valid sheared set! Resting to zero. This should NEVER happen.");
|
||||||
}
|
}
|
||||||
|
|
||||||
sheepSheared++;
|
sheepSheared++;
|
||||||
@@ -95,7 +106,7 @@ public class SheepShear implements Listener {
|
|||||||
|
|
||||||
if (sheepShearedLore == null || sheepShearedLoreRaw == null) {
|
if (sheepShearedLore == null || sheepShearedLoreRaw == null) {
|
||||||
toolStats.logger.warning("There is no lore message for messages.sheep-sheared!");
|
toolStats.logger.warning("There is no lore message for messages.sheep-sheared!");
|
||||||
return;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> lore;
|
List<String> lore;
|
||||||
@@ -123,6 +134,7 @@ public class SheepShear implements Listener {
|
|||||||
if (toolStats.config.getBoolean("enabled.sheep-sheared")) {
|
if (toolStats.config.getBoolean("enabled.sheep-sheared")) {
|
||||||
meta.setLore(lore);
|
meta.setLore(lore);
|
||||||
}
|
}
|
||||||
itemStack.setItemMeta(meta);
|
newShears.setItemMeta(meta);
|
||||||
|
return newShears;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import org.bukkit.ChatColor;
|
|||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
import org.bukkit.event.inventory.InventoryType;
|
import org.bukkit.event.inventory.InventoryType;
|
||||||
@@ -47,7 +48,7 @@ public class VillagerTrade implements Listener {
|
|||||||
this.toolStats = toolStats;
|
this.toolStats = toolStats;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
public void onTrade(InventoryClickEvent event) {
|
public void onTrade(InventoryClickEvent event) {
|
||||||
if (event.isCancelled() || event.getCurrentItem() == null) {
|
if (event.isCancelled() || event.getCurrentItem() == null) {
|
||||||
return;
|
return;
|
||||||
@@ -87,13 +88,15 @@ public class VillagerTrade implements Listener {
|
|||||||
/**
|
/**
|
||||||
* Adds "traded by" tags to item.
|
* Adds "traded by" tags to item.
|
||||||
*
|
*
|
||||||
* @param itemStack The item to add lore.
|
* @param oldItem The item to add lore.
|
||||||
* @param owner The player who traded.
|
* @param owner The player who traded.
|
||||||
* @return The item with lore.
|
* @return The item with lore.
|
||||||
*/
|
*/
|
||||||
private ItemStack addLore(ItemStack itemStack, Player owner) {
|
private ItemStack addLore(ItemStack oldItem, Player owner) {
|
||||||
ItemMeta meta = itemStack.getItemMeta();
|
ItemStack newItem = oldItem.clone();
|
||||||
|
ItemMeta meta = newItem.getItemMeta();
|
||||||
if (meta == null) {
|
if (meta == null) {
|
||||||
|
toolStats.logger.warning(newItem + " does NOT have any meta! Unable to update stats.");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
long timeCreated = System.currentTimeMillis();
|
long timeCreated = System.currentTimeMillis();
|
||||||
@@ -121,12 +124,12 @@ public class VillagerTrade implements Listener {
|
|||||||
} else {
|
} else {
|
||||||
lore = new ArrayList<>();
|
lore = new ArrayList<>();
|
||||||
}
|
}
|
||||||
if (toolStats.checkConfig(itemStack, "traded-tag")) {
|
if (toolStats.checkConfig(newItem, "traded-tag")) {
|
||||||
lore.add(tradedOnLoreRaw.replace("{date}", toolStats.dateFormat.format(finalDate)));
|
lore.add(tradedOnLoreRaw.replace("{date}", toolStats.dateFormat.format(finalDate)));
|
||||||
lore.add(tradedByLoreRaw.replace("{player}", owner.getName()));
|
lore.add(tradedByLoreRaw.replace("{player}", owner.getName()));
|
||||||
|
meta.setLore(lore);
|
||||||
}
|
}
|
||||||
meta.setLore(lore);
|
newItem.setItemMeta(meta);
|
||||||
itemStack.setItemMeta(meta);
|
return newItem;
|
||||||
return itemStack;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user