mirror of
https://github.com/hyperdefined/ToolStats.git
synced 2026-01-27 07:55:59 +00:00
more misc things for bosses killed
This commit is contained in:
@@ -66,10 +66,12 @@ public class EntityDamage implements Listener {
|
|||||||
boolean playerBeingAttacked = mobBeingAttacked instanceof Player;
|
boolean playerBeingAttacked = mobBeingAttacked instanceof Player;
|
||||||
double finalDamage = event.getFinalDamage();
|
double finalDamage = event.getFinalDamage();
|
||||||
boolean modDied = mobBeingAttacked.getHealth() - finalDamage <= 0;
|
boolean modDied = mobBeingAttacked.getHealth() - finalDamage <= 0;
|
||||||
|
EntityType mobAttackedType = event.getEntityType();
|
||||||
|
|
||||||
// player attacks something
|
// player attacks something
|
||||||
if (playerAttacking) {
|
if (playerAttacking) {
|
||||||
PlayerInventory playerAttackingInventory = ((Player) damager).getInventory();
|
Player player = (Player) damager;
|
||||||
|
PlayerInventory playerAttackingInventory = player.getInventory();
|
||||||
// make sure the item the player used is an item we want
|
// make sure the item the player used is an item we want
|
||||||
if (!toolStats.itemChecker.isMeleeWeapon(playerAttackingInventory.getItemInMainHand().getType())) {
|
if (!toolStats.itemChecker.isMeleeWeapon(playerAttackingInventory.getItemInMainHand().getType())) {
|
||||||
return;
|
return;
|
||||||
@@ -86,6 +88,13 @@ public class EntityDamage implements Listener {
|
|||||||
} else {
|
} else {
|
||||||
// player kills a regular mob
|
// player kills a regular mob
|
||||||
updateWeaponKills(playerAttackingInventory, "mob");
|
updateWeaponKills(playerAttackingInventory, "mob");
|
||||||
|
// reget the player inventory since we updated above
|
||||||
|
if (mobAttackedType == EntityType.WITHER) {
|
||||||
|
updateBossesKilled(player.getInventory(), "wither");
|
||||||
|
}
|
||||||
|
if (mobAttackedType == EntityType.ENDER_DRAGON) {
|
||||||
|
updateBossesKilled(player.getInventory(), "enderdragon");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,7 +105,7 @@ public class EntityDamage implements Listener {
|
|||||||
// something was hit by a trident
|
// something was hit by a trident
|
||||||
if (damager instanceof Trident trident) {
|
if (damager instanceof Trident trident) {
|
||||||
ProjectileSource source = trident.getShooter();
|
ProjectileSource source = trident.getShooter();
|
||||||
if (source instanceof Player) {
|
if (source instanceof Player player) {
|
||||||
// update the trident's tracked damage
|
// update the trident's tracked damage
|
||||||
updateTridentDamage(trident, finalDamage);
|
updateTridentDamage(trident, finalDamage);
|
||||||
|
|
||||||
@@ -108,6 +117,12 @@ public class EntityDamage implements Listener {
|
|||||||
} else {
|
} else {
|
||||||
// the trident killed a mob, update the kills
|
// the trident killed a mob, update the kills
|
||||||
updateTridentKills(trident, "mob");
|
updateTridentKills(trident, "mob");
|
||||||
|
if (mobAttackedType == EntityType.WITHER) {
|
||||||
|
updateBossesKilled(player.getInventory(), "wither");
|
||||||
|
}
|
||||||
|
if (mobAttackedType == EntityType.ENDER_DRAGON) {
|
||||||
|
updateBossesKilled(player.getInventory(), "enderdragon");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,6 +148,12 @@ public class EntityDamage implements Listener {
|
|||||||
} else {
|
} else {
|
||||||
// player killed mob with an arrow
|
// player killed mob with an arrow
|
||||||
updateBowKills(shootingPlayer.getInventory(), "mob");
|
updateBowKills(shootingPlayer.getInventory(), "mob");
|
||||||
|
if (mobAttackedType == EntityType.WITHER) {
|
||||||
|
updateBossesKilledByBow(shootingPlayer.getInventory(), "wither");
|
||||||
|
}
|
||||||
|
if (mobAttackedType == EntityType.ENDER_DRAGON) {
|
||||||
|
updateBossesKilledByBow(shootingPlayer.getInventory(), "enderdragon");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -188,7 +209,6 @@ public class EntityDamage implements Listener {
|
|||||||
boolean isMain = playerInventory.getItemInMainHand().getType() == Material.BOW || playerInventory.getItemInMainHand().getType() == Material.CROSSBOW;
|
boolean isMain = playerInventory.getItemInMainHand().getType() == Material.BOW || playerInventory.getItemInMainHand().getType() == Material.CROSSBOW;
|
||||||
boolean isOffHand = playerInventory.getItemInOffHand().getType() == Material.BOW || playerInventory.getItemInOffHand().getType() == Material.CROSSBOW;
|
boolean isOffHand = playerInventory.getItemInOffHand().getType() == Material.BOW || playerInventory.getItemInOffHand().getType() == Material.CROSSBOW;
|
||||||
ItemMeta newBowDamage = toolStats.itemLore.updateWeaponDamage(heldBow, damage, false);
|
ItemMeta newBowDamage = toolStats.itemLore.updateWeaponDamage(heldBow, damage, false);
|
||||||
//toolStats.logger.info(newBowDamage.toString());
|
|
||||||
|
|
||||||
// player is shooting another player
|
// player is shooting another player
|
||||||
if (newBowDamage != null) {
|
if (newBowDamage != null) {
|
||||||
@@ -283,4 +303,34 @@ public class EntityDamage implements Listener {
|
|||||||
playerInventory.getItemInMainHand().setItemMeta(newHeldWeaponMeta);
|
playerInventory.getItemInMainHand().setItemMeta(newHeldWeaponMeta);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateBossesKilled(PlayerInventory playerInventory, String boss) {
|
||||||
|
ItemStack heldWeapon = playerInventory.getItemInMainHand();
|
||||||
|
ItemMeta newHeldWeaponMeta = null;
|
||||||
|
newHeldWeaponMeta = toolStats.itemLore.updateBossesKilled(heldWeapon, 1, boss);
|
||||||
|
if (newHeldWeaponMeta != null) {
|
||||||
|
playerInventory.getItemInMainHand().setItemMeta(newHeldWeaponMeta);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateBossesKilledByBow(PlayerInventory playerInventory, String boss) {
|
||||||
|
ItemStack heldBow = toolStats.itemChecker.getBow(playerInventory);
|
||||||
|
if (heldBow == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isMain = playerInventory.getItemInMainHand().getType() == Material.BOW || playerInventory.getItemInMainHand().getType() == Material.CROSSBOW;
|
||||||
|
boolean isOffHand = playerInventory.getItemInOffHand().getType() == Material.BOW || playerInventory.getItemInOffHand().getType() == Material.CROSSBOW;
|
||||||
|
|
||||||
|
ItemMeta newHeldWeaponMeta = toolStats.itemLore.updateBossesKilled(heldBow, 1, boss);
|
||||||
|
if (newHeldWeaponMeta != null) {
|
||||||
|
if (isMain && isOffHand) {
|
||||||
|
playerInventory.getItemInMainHand().setItemMeta(newHeldWeaponMeta);
|
||||||
|
} else if (isMain) {
|
||||||
|
playerInventory.getItemInMainHand().setItemMeta(newHeldWeaponMeta);
|
||||||
|
} else if (isOffHand) {
|
||||||
|
playerInventory.getItemInOffHand().setItemMeta(newHeldWeaponMeta);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ public class TokenData {
|
|||||||
ShapedRecipe enderDragonKillsRecipe = new ShapedRecipe(enderDragonKillsKey, createToken("enderdragon-kills"));
|
ShapedRecipe enderDragonKillsRecipe = new ShapedRecipe(enderDragonKillsKey, createToken("enderdragon-kills"));
|
||||||
enderDragonKillsRecipe.shape(" P ", "PEP", " P ");
|
enderDragonKillsRecipe.shape(" P ", "PEP", " P ");
|
||||||
enderDragonKillsRecipe.setIngredient('P', Material.PAPER);
|
enderDragonKillsRecipe.setIngredient('P', Material.PAPER);
|
||||||
enderDragonKillsRecipe.setIngredient('W', Material.ENDER_PEARL);
|
enderDragonKillsRecipe.setIngredient('E', Material.ENDER_PEARL);
|
||||||
recipes.add(enderDragonKillsRecipe);
|
recipes.add(enderDragonKillsRecipe);
|
||||||
|
|
||||||
tokenTypes.add("crops-mined");
|
tokenTypes.add("crops-mined");
|
||||||
|
|||||||
Reference in New Issue
Block a user