Compare commits

..

5 Commits
1.4.3 ... 1.4.4

Author SHA1 Message Date
hyperdefined
05200f075b Update pom.xml 2022-08-19 18:27:57 -04:00
hyperdefined
9973d743a5 better handling of /kill
apparently minecraft:kill runs in multiple entity damage events?
2022-08-19 18:27:34 -04:00
hyperdefined
a89b9d6f6a Update CommandToolStats.java 2022-08-19 17:39:25 -04:00
hyperdefined
082f529c32 hopefully fixed long standing bug 2022-08-18 11:59:20 -04:00
hyperdefined
05f940026f ignore void and /kill damage 2022-08-18 10:27:43 -04:00
7 changed files with 52 additions and 27 deletions

View File

@@ -23,7 +23,7 @@
<groupId>lol.hyper</groupId>
<artifactId>toolstats</artifactId>
<version>1.4.3</version>
<version>1.4.4</version>
<packaging>jar</packaging>
<name>ToolStats</name>

View File

@@ -271,15 +271,18 @@ public class CommandToolStats implements TabExecutor {
if (args.length == 1) {
if (sender.hasPermission("toolstats.reload")) {
return Arrays.asList("reset", "reload");
} else {
}
if (sender.hasPermission("toolstats.reset")) {
return Collections.singletonList("reset");
}
}
if (args.length == 2) {
if (args[0].equalsIgnoreCase("reset")) {
if (sender.hasPermission("toolstats.reset.confirm")) {
return Collections.singletonList("confirm");
}
}
}
return null;
}
}

View File

@@ -70,17 +70,18 @@ public class BlocksMined implements Listener {
}
// read the current stats from the item
// if they don't exist, then start from 0
Integer blocksMined = 0;
Integer blocksMined = null;
PersistentDataContainer container = meta.getPersistentDataContainer();
if (container.has(toolStats.genericMined, PersistentDataType.INTEGER)) {
blocksMined = container.get(toolStats.genericMined, PersistentDataType.INTEGER);
}
if (blocksMined == null) {
return;
} else {
blocksMined++;
blocksMined = 0;
}
blocksMined++;
container.set(toolStats.genericMined, PersistentDataType.INTEGER, blocksMined);
String configLore = toolStats.getLoreFromConfig("blocks-mined", false);
String configLoreRaw = toolStats.getLoreFromConfig("blocks-mined", true);

View File

@@ -49,10 +49,18 @@ public class EntityDamage implements Listener {
if (event.isCancelled()) {
return;
}
if (!(event.getEntity() instanceof LivingEntity)) {
return;
}
LivingEntity livingEntity = (LivingEntity) event.getEntity();
// ignore void and /kill damage
EntityDamageEvent.DamageCause cause = event.getCause();
if (cause == EntityDamageEvent.DamageCause.SUICIDE || cause == EntityDamageEvent.DamageCause.VOID) {
return;
}
// mob is going to die
if (livingEntity.getHealth() - event.getFinalDamage() <= 0) {
// a player is killing something
@@ -141,6 +149,13 @@ public class EntityDamage implements Listener {
if (!(event.getEntity() instanceof LivingEntity)) {
return;
}
// ignore void and /kill damage
EntityDamageEvent.DamageCause cause = event.getCause();
if (cause == EntityDamageEvent.DamageCause.SUICIDE || cause == EntityDamageEvent.DamageCause.VOID) {
return;
}
LivingEntity livingEntity = (LivingEntity) event.getEntity();
// player is taken damage but not being killed
if (livingEntity instanceof Player) {
@@ -164,6 +179,13 @@ public class EntityDamage implements Listener {
if (!(event.getEntity() instanceof LivingEntity)) {
return;
}
// ignore void and /kill damage
EntityDamageEvent.DamageCause cause = event.getCause();
if (cause == EntityDamageEvent.DamageCause.SUICIDE || cause == EntityDamageEvent.DamageCause.VOID) {
return;
}
LivingEntity livingEntity = (LivingEntity) event.getEntity();
// player is taken damage but not being killed
if (livingEntity instanceof Player) {
@@ -194,16 +216,16 @@ public class EntityDamage implements Listener {
if (meta == null) {
return null;
}
Integer playerKills = 0;
Integer playerKills = null;
PersistentDataContainer container = meta.getPersistentDataContainer();
if (container.has(toolStats.swordPlayerKills, PersistentDataType.INTEGER)) {
playerKills = container.get(toolStats.swordPlayerKills, PersistentDataType.INTEGER);
}
if (playerKills == null) {
return null;
} else {
playerKills++;
playerKills = 0;
}
playerKills++;
container.set(toolStats.swordPlayerKills, PersistentDataType.INTEGER, playerKills);
String playerKillsLore = toolStats.getLoreFromConfig("kills.player", false);
@@ -257,16 +279,16 @@ public class EntityDamage implements Listener {
if (meta == null) {
return null;
}
Integer mobKills = 0;
Integer mobKills = null;
PersistentDataContainer container = meta.getPersistentDataContainer();
if (container.has(toolStats.swordMobKills, PersistentDataType.INTEGER)) {
mobKills = container.get(toolStats.swordMobKills, PersistentDataType.INTEGER);
}
if (mobKills == null) {
return null;
} else {
mobKills++;
mobKills = 0;
}
mobKills++;
container.set(toolStats.swordMobKills, PersistentDataType.INTEGER, mobKills);
String mobKillsLore = toolStats.getLoreFromConfig("kills.mob", false);
@@ -319,16 +341,16 @@ public class EntityDamage implements Listener {
if (meta == null) {
return;
}
Double damageTaken = 0.0;
Double damageTaken = null;
PersistentDataContainer container = meta.getPersistentDataContainer();
if (container.has(toolStats.armorDamage, PersistentDataType.DOUBLE)) {
damageTaken = container.get(toolStats.armorDamage, PersistentDataType.DOUBLE);
}
if (damageTaken == null) {
return;
} else {
damageTaken = damageTaken + damage;
damageTaken = 0.0;
}
damageTaken = damageTaken + damage;
container.set(toolStats.armorDamage, PersistentDataType.DOUBLE, damageTaken);
String damageTakenLore = toolStats.getLoreFromConfig("damage-taken", false);

View File

@@ -82,16 +82,16 @@ public class PlayerFish implements Listener {
if (meta == null) {
return;
}
Integer fishCaught = 0;
Integer fishCaught = null;
PersistentDataContainer container = meta.getPersistentDataContainer();
if (container.has(toolStats.fishingRodCaught, PersistentDataType.INTEGER)) {
fishCaught = container.get(toolStats.fishingRodCaught, PersistentDataType.INTEGER);
}
if (fishCaught == null) {
return;
} else {
fishCaught++;
fishCaught = 0;
}
fishCaught++;
container.set(toolStats.fishingRodCaught, PersistentDataType.INTEGER, fishCaught);
String fishCaughtLore = toolStats.getLoreFromConfig("fished.fish-caught", false);

View File

@@ -84,10 +84,10 @@ public class SheepShear implements Listener {
sheepSheared = container.get(toolStats.shearsSheared, PersistentDataType.INTEGER);
}
if (sheepSheared == null) {
return;
} else {
sheepSheared++;
sheepSheared = 0;
}
sheepSheared++;
container.set(toolStats.shearsSheared, PersistentDataType.INTEGER, sheepSheared);
String sheepShearedLore = toolStats.getLoreFromConfig("sheep-sheared", false);

View File

@@ -78,7 +78,6 @@ public class VillagerTrade implements Listener {
if (newItem != null) {
// this gets delayed since villager inventories suck for no reason
Bukkit.getScheduler().runTaskLater(toolStats, () -> event.setCurrentItem(newItem), 5);
return;
}
}
}