mirror of
https://github.com/hyperdefined/ToolStats.git
synced 2025-12-06 06:41:44 +00:00
support for trident throwing (pog)
This commit is contained in:
@@ -3,8 +3,8 @@
|
|||||||
A simple plugin to track cool stats for your tools and armor!
|
A simple plugin to track cool stats for your tools and armor!
|
||||||
|
|
||||||
## Todo
|
## Todo
|
||||||
* Track trident throw kills.
|
* ~~Track trident throw kills.~~
|
||||||
* Track armor damage.
|
* ~~Track armor damage.~~
|
||||||
* ~~Track fish caught.~~
|
* ~~Track fish caught.~~
|
||||||
* ~~Track sheep sheared.~~
|
* ~~Track sheep sheared.~~
|
||||||
* Properly handle combing of tools. Stats should combine together.
|
* Properly handle combing of tools. Stats should combine together.
|
||||||
@@ -6,6 +6,7 @@ import org.bukkit.GameMode;
|
|||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.entity.Trident;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
@@ -54,13 +55,26 @@ public class EntityDamage implements Listener {
|
|||||||
}
|
}
|
||||||
// a player is killing another player
|
// a player is killing another player
|
||||||
if (livingEntity instanceof Player) {
|
if (livingEntity instanceof Player) {
|
||||||
updatePlayerKills(heldItem);
|
player.getInventory().setItem(player.getInventory().getHeldItemSlot(), updatePlayerKills(heldItem));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// player is killing regular mob
|
// player is killing regular mob
|
||||||
updateMobKills(heldItem);
|
player.getInventory().setItem(player.getInventory().getHeldItemSlot(), updateMobKills(heldItem));
|
||||||
trackedMobs.add(livingEntity.getUniqueId());
|
trackedMobs.add(livingEntity.getUniqueId());
|
||||||
}
|
}
|
||||||
|
if (event.getDamager() instanceof Trident) {
|
||||||
|
Trident trident = (Trident) event.getDamager();
|
||||||
|
ItemStack clone;
|
||||||
|
if (livingEntity instanceof Player) {
|
||||||
|
clone = updatePlayerKills(trident.getItem());
|
||||||
|
} else {
|
||||||
|
clone = updateMobKills(trident.getItem());
|
||||||
|
}
|
||||||
|
if (clone == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
trident.setItem(clone);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// player is taken damage but not being killed
|
// player is taken damage but not being killed
|
||||||
if (livingEntity instanceof Player) {
|
if (livingEntity instanceof Player) {
|
||||||
@@ -74,10 +88,11 @@ public class EntityDamage implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updatePlayerKills(ItemStack itemStack) {
|
private ItemStack updatePlayerKills(ItemStack itemStack) {
|
||||||
ItemMeta meta = itemStack.getItemMeta();
|
ItemStack finalItem = itemStack.clone();
|
||||||
|
ItemMeta meta = finalItem.getItemMeta();
|
||||||
if (meta == null) {
|
if (meta == null) {
|
||||||
return;
|
return null;
|
||||||
}
|
}
|
||||||
Integer playerKills = 0;
|
Integer playerKills = 0;
|
||||||
PersistentDataContainer container = meta.getPersistentDataContainer();
|
PersistentDataContainer container = meta.getPersistentDataContainer();
|
||||||
@@ -85,7 +100,7 @@ public class EntityDamage implements Listener {
|
|||||||
playerKills = container.get(toolStats.swordPlayerKills, PersistentDataType.INTEGER);
|
playerKills = container.get(toolStats.swordPlayerKills, PersistentDataType.INTEGER);
|
||||||
}
|
}
|
||||||
if (playerKills == null) {
|
if (playerKills == null) {
|
||||||
return;
|
return null;
|
||||||
} else {
|
} else {
|
||||||
playerKills++;
|
playerKills++;
|
||||||
}
|
}
|
||||||
@@ -99,7 +114,7 @@ public class EntityDamage implements Listener {
|
|||||||
// we do a for loop like this, we can keep track of index
|
// we do a for loop like this, we can keep track of index
|
||||||
// this doesn't mess the lore up of existing items
|
// this doesn't mess the lore up of existing items
|
||||||
for (int x = 0; x < lore.size(); x++) {
|
for (int x = 0; x < lore.size(); x++) {
|
||||||
if (lore.get(x).contains("Mob kills")) {
|
if (lore.get(x).contains("Player kills")) {
|
||||||
hasLore = true;
|
hasLore = true;
|
||||||
lore.set(x, playerKillsLore.replace("X", Integer.toString(playerKills)));
|
lore.set(x, playerKillsLore.replace("X", Integer.toString(playerKills)));
|
||||||
break;
|
break;
|
||||||
@@ -115,13 +130,15 @@ public class EntityDamage implements Listener {
|
|||||||
lore.add(playerKillsLore.replace("X", Integer.toString(playerKills)));
|
lore.add(playerKillsLore.replace("X", Integer.toString(playerKills)));
|
||||||
}
|
}
|
||||||
meta.setLore(lore);
|
meta.setLore(lore);
|
||||||
itemStack.setItemMeta(meta);
|
finalItem.setItemMeta(meta);
|
||||||
|
return finalItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateMobKills(ItemStack itemStack) {
|
private ItemStack updateMobKills(ItemStack itemStack) {
|
||||||
ItemMeta meta = itemStack.getItemMeta();
|
ItemStack finalItem = itemStack.clone();
|
||||||
|
ItemMeta meta = finalItem.getItemMeta();
|
||||||
if (meta == null) {
|
if (meta == null) {
|
||||||
return;
|
return null;
|
||||||
}
|
}
|
||||||
Integer mobKills = 0;
|
Integer mobKills = 0;
|
||||||
PersistentDataContainer container = meta.getPersistentDataContainer();
|
PersistentDataContainer container = meta.getPersistentDataContainer();
|
||||||
@@ -129,7 +146,7 @@ public class EntityDamage implements Listener {
|
|||||||
mobKills = container.get(toolStats.swordMobKills, PersistentDataType.INTEGER);
|
mobKills = container.get(toolStats.swordMobKills, PersistentDataType.INTEGER);
|
||||||
}
|
}
|
||||||
if (mobKills == null) {
|
if (mobKills == null) {
|
||||||
return;
|
return null;
|
||||||
} else {
|
} else {
|
||||||
mobKills++;
|
mobKills++;
|
||||||
}
|
}
|
||||||
@@ -159,7 +176,8 @@ public class EntityDamage implements Listener {
|
|||||||
lore.add(mobKillsLore.replace("X", Integer.toString(mobKills)));
|
lore.add(mobKillsLore.replace("X", Integer.toString(mobKills)));
|
||||||
}
|
}
|
||||||
meta.setLore(lore);
|
meta.setLore(lore);
|
||||||
itemStack.setItemMeta(meta);
|
finalItem.setItemMeta(meta);
|
||||||
|
return finalItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateArmorDamage(ItemStack itemStack, double damage) {
|
private void updateArmorDamage(ItemStack itemStack, double damage) {
|
||||||
|
|||||||
Reference in New Issue
Block a user