add critical strikes

This commit is contained in:
hyperdefined
2026-01-14 14:12:04 -05:00
parent 3087e3adcb
commit bd4ab50dc7
7 changed files with 239 additions and 5 deletions

View File

@@ -135,6 +135,10 @@ public class AnvilEvent implements Listener {
addToken(event, tokenType, "enderdragon-kills", clone);
return;
}
if (tokenType.equalsIgnoreCase("critical-strikes")) {
addToken(event, tokenType, "critical-strikes", clone);
return;
}
}
return;
}
@@ -167,6 +171,10 @@ public class AnvilEvent implements Listener {
addToken(event, tokenType, "enderdragon-kills", clone);
return;
}
if (tokenType.equalsIgnoreCase("critical-strikes")) {
addToken(event, tokenType, "critical-strikes", clone);
return;
}
return;
}
if (firstSlotMaterial == Material.BOW || firstSlotMaterial == Material.CROSSBOW) {
@@ -333,6 +341,15 @@ public class AnvilEvent implements Listener {
}
break;
}
case "critical-strikes": {
if (toolStats.config.getBoolean("enabled.critical-strikes")) {
newItem.setItemMeta(toolStats.itemLore.updateCriticalStrikes(newItem, 0));
} else {
event.setResult(null);
return;
}
break;
}
}
event.setResult(newItem);
event.getView().setRepairCost(toolStats.itemChecker.getCost(targetToken));
@@ -450,6 +467,14 @@ public class AnvilEvent implements Listener {
meta = toolStats.itemLore.updateBossesKilled(finalItem, -enderDragonKills, "enderdragon");
finalItem.setItemMeta(meta);
}
if (container.has(toolStats.criticalStrikes)) {
Integer criticalStrikes = container.get(toolStats.criticalStrikes, PersistentDataType.INTEGER);
if (criticalStrikes == null) {
return;
}
meta = toolStats.itemLore.updateCriticalStrikes(finalItem, -criticalStrikes);
finalItem.setItemMeta(meta);
}
event.setResult(finalItem);
event.getView().setRepairCost(toolStats.itemChecker.getCost("reset"));
}

View File

@@ -67,6 +67,7 @@ public class EntityDamage implements Listener {
double finalDamage = event.getFinalDamage();
boolean modDied = mobBeingAttacked.getHealth() - finalDamage <= 0;
EntityType mobAttackedType = event.getEntityType();
boolean critical = event.isCritical();
// player attacks something
if (playerAttacking) {
@@ -80,6 +81,11 @@ public class EntityDamage implements Listener {
// update their weapon's damage
updateWeaponDamage(playerAttackingInventory, event.getFinalDamage());
// if the player crit
if (critical) {
updateCriticalStrikes(playerAttackingInventory);
}
// the mob the player attacked died
if (modDied) {
// player killed another player
@@ -88,12 +94,11 @@ public class EntityDamage implements Listener {
} else {
// player kills a regular mob
updateWeaponKills(playerAttackingInventory, "mob");
// reget the player inventory since we updated above
if (mobAttackedType == EntityType.WITHER) {
updateBossesKilled(player.getInventory(), "wither");
updateBossesKilled(playerAttackingInventory, "wither");
}
if (mobAttackedType == EntityType.ENDER_DRAGON) {
updateBossesKilled(player.getInventory(), "enderdragon");
updateBossesKilled(playerAttackingInventory, "enderdragon");
}
}
}
@@ -306,8 +311,7 @@ public class EntityDamage implements Listener {
private void updateBossesKilled(PlayerInventory playerInventory, String boss) {
ItemStack heldWeapon = playerInventory.getItemInMainHand();
ItemMeta newHeldWeaponMeta = null;
newHeldWeaponMeta = toolStats.itemLore.updateBossesKilled(heldWeapon, 1, boss);
ItemMeta newHeldWeaponMeta = toolStats.itemLore.updateBossesKilled(heldWeapon, 1, boss);
if (newHeldWeaponMeta != null) {
playerInventory.getItemInMainHand().setItemMeta(newHeldWeaponMeta);
}
@@ -333,4 +337,12 @@ public class EntityDamage implements Listener {
}
}
}
private void updateCriticalStrikes(PlayerInventory playerInventory) {
ItemStack heldWeapon = playerInventory.getItemInMainHand();
ItemMeta newHeldWeaponMeta = toolStats.itemLore.updateCriticalStrikes(heldWeapon, 1);
if (newHeldWeaponMeta != null) {
playerInventory.getItemInMainHand().setItemMeta(newHeldWeaponMeta);
}
}
}