Skip to content

Commit 1cef743

Browse files
committed
big cleanup
1 parent cbbdb4e commit 1cef743

File tree

10 files changed

+145
-70
lines changed

10 files changed

+145
-70
lines changed

src/main/java/lol/hyper/toolstats/events/BlocksMined.java

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.bukkit.Material;
2424
import org.bukkit.entity.Player;
2525
import org.bukkit.event.EventHandler;
26+
import org.bukkit.event.EventPriority;
2627
import org.bukkit.event.Listener;
2728
import org.bukkit.event.block.BlockBreakEvent;
2829
import org.bukkit.inventory.ItemStack;
@@ -41,7 +42,7 @@ public BlocksMined(ToolStats toolStats) {
4142
this.toolStats = toolStats;
4243
}
4344

44-
@EventHandler
45+
@EventHandler (priority = EventPriority.LOWEST)
4546
public void onBreak(BlockBreakEvent event) {
4647
if (event.isCancelled()) {
4748
return;
@@ -51,7 +52,8 @@ public void onBreak(BlockBreakEvent event) {
5152
return;
5253
}
5354
// if the player mines something with their fist
54-
ItemStack heldItem = player.getInventory().getItem(player.getInventory().getHeldItemSlot());
55+
int heldItemSlot = player.getInventory().getHeldItemSlot();
56+
ItemStack heldItem = player.getInventory().getItem(heldItemSlot);
5557
if (heldItem == null || heldItem.getType() == Material.AIR) {
5658
return;
5759
}
@@ -60,23 +62,32 @@ public void onBreak(BlockBreakEvent event) {
6062
return;
6163
}
6264
// if it's an item we want, update the stats
63-
updateBlocksMined(heldItem);
65+
ItemStack newTool = updateBlocksMined(heldItem);
66+
if (newTool != null) {
67+
player.getInventory().setItem(heldItemSlot, newTool);
68+
}
6469
}
6570

66-
private void updateBlocksMined(ItemStack itemStack) {
67-
ItemMeta meta = itemStack.getItemMeta();
71+
private ItemStack updateBlocksMined(ItemStack originalTool) {
72+
ItemStack newTool = originalTool.clone();
73+
ItemMeta meta = newTool.getItemMeta();
6874
if (meta == null) {
69-
return;
75+
toolStats.logger.warning(originalTool + " does NOT have any meta! Unable to update stats.");
76+
return null;
7077
}
7178
// read the current stats from the item
7279
// if they don't exist, then start from 0
73-
Integer blocksMined = null;
80+
Integer blocksMined = 0;
7481
PersistentDataContainer container = meta.getPersistentDataContainer();
7582
if (container.has(toolStats.genericMined, PersistentDataType.INTEGER)) {
7683
blocksMined = container.get(toolStats.genericMined, PersistentDataType.INTEGER);
84+
} else {
85+
blocksMined = 0;
7786
}
87+
7888
if (blocksMined == null) {
7989
blocksMined = 0;
90+
toolStats.logger.warning(originalTool + " does not have valid generic-mined set! Resting to zero. This should NEVER happen.");
8091
}
8192

8293
blocksMined++;
@@ -87,7 +98,7 @@ private void updateBlocksMined(ItemStack itemStack) {
8798

8899
if (configLore == null || configLoreRaw == null) {
89100
toolStats.logger.warning("There is no lore message for messages.blocks-mined!");
90-
return;
101+
return null;
91102
}
92103

93104
List<String> lore;
@@ -113,9 +124,10 @@ private void updateBlocksMined(ItemStack itemStack) {
113124
lore.add(configLoreRaw.replace("{blocks}", toolStats.commaFormat.format(blocksMined)));
114125
}
115126
// do we add the lore based on the config?
116-
if (toolStats.checkConfig(itemStack, "blocks-mined")) {
127+
if (toolStats.checkConfig(newTool, "blocks-mined")) {
117128
meta.setLore(lore);
118129
}
119-
itemStack.setItemMeta(meta);
130+
newTool.setItemMeta(meta);
131+
return newTool;
120132
}
121133
}

src/main/java/lol/hyper/toolstats/events/ChunkPopulate.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.bukkit.entity.Entity;
2626
import org.bukkit.entity.ItemFrame;
2727
import org.bukkit.event.EventHandler;
28+
import org.bukkit.event.EventPriority;
2829
import org.bukkit.event.Listener;
2930
import org.bukkit.event.world.ChunkPopulateEvent;
3031
import org.bukkit.inventory.ItemStack;
@@ -43,7 +44,7 @@ public ChunkPopulate(ToolStats toolStats) {
4344
this.toolStats = toolStats;
4445
}
4546

46-
@EventHandler
47+
@EventHandler(priority = EventPriority.LOWEST)
4748
public void onPopulate(ChunkPopulateEvent event) {
4849
if (event.getChunk().getWorld().getEnvironment() != World.Environment.THE_END) {
4950
return;

src/main/java/lol/hyper/toolstats/events/CraftItem.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.bukkit.Material;
2626
import org.bukkit.entity.Player;
2727
import org.bukkit.event.EventHandler;
28+
import org.bukkit.event.EventPriority;
2829
import org.bukkit.event.Listener;
2930
import org.bukkit.event.inventory.CraftItemEvent;
3031
import org.bukkit.inventory.ItemStack;
@@ -42,7 +43,7 @@ public CraftItem(ToolStats toolStats) {
4243
this.toolStats = toolStats;
4344
}
4445

45-
@EventHandler
46+
@EventHandler(priority = EventPriority.LOWEST)
4647
public void onCraft(CraftItemEvent event) {
4748
if (event.isCancelled()) {
4849
return;
@@ -89,6 +90,7 @@ private ItemStack addLore(ItemStack itemStack, Player owner) {
8990
ItemStack newItem = itemStack.clone();
9091
ItemMeta meta = newItem.getItemMeta();
9192
if (meta == null) {
93+
toolStats.logger.warning(itemStack + " does NOT have any meta! Unable to update stats.");
9294
return null;
9395
}
9496
// get the current time

src/main/java/lol/hyper/toolstats/events/EntityDamage.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.bukkit.Material;
2424
import org.bukkit.entity.*;
2525
import org.bukkit.event.EventHandler;
26+
import org.bukkit.event.EventPriority;
2627
import org.bukkit.event.Listener;
2728
import org.bukkit.event.entity.EntityDamageByBlockEvent;
2829
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -45,7 +46,7 @@ public EntityDamage(ToolStats toolStats) {
4546
this.toolStats = toolStats;
4647
}
4748

48-
@EventHandler
49+
@EventHandler(priority = EventPriority.LOWEST)
4950
public void onDamage(EntityDamageByEntityEvent event) {
5051
if (event.isCancelled()) {
5152
return;
@@ -145,7 +146,7 @@ public void onDamage(EntityDamageByEntityEvent event) {
145146
}
146147
}
147148

148-
@EventHandler
149+
@EventHandler(priority = EventPriority.LOWEST)
149150
public void onDamage(EntityDamageEvent event) {
150151
if (!(event.getEntity() instanceof LivingEntity)) {
151152
return;
@@ -175,7 +176,7 @@ public void onDamage(EntityDamageEvent event) {
175176
}
176177
}
177178

178-
@EventHandler
179+
@EventHandler(priority = EventPriority.LOWEST)
179180
public void onDamage(EntityDamageByBlockEvent event) {
180181
if (!(event.getEntity() instanceof LivingEntity)) {
181182
return;
@@ -215,15 +216,19 @@ private ItemStack updatePlayerKills(ItemStack itemStack) {
215216
ItemStack finalItem = itemStack.clone();
216217
ItemMeta meta = finalItem.getItemMeta();
217218
if (meta == null) {
219+
toolStats.logger.warning(itemStack + " does NOT have any meta! Unable to update stats.");
218220
return null;
219221
}
220222
Integer playerKills = null;
221223
PersistentDataContainer container = meta.getPersistentDataContainer();
222224
if (container.has(toolStats.swordPlayerKills, PersistentDataType.INTEGER)) {
223225
playerKills = container.get(toolStats.swordPlayerKills, PersistentDataType.INTEGER);
226+
} else {
227+
playerKills = 0;
224228
}
225229
if (playerKills == null) {
226230
playerKills = 0;
231+
toolStats.logger.warning(itemStack + " does not have valid player-kills set! Resting to zero. This should NEVER happen.");
227232
}
228233

229234
playerKills++;
@@ -277,15 +282,20 @@ private ItemStack updateMobKills(ItemStack itemStack) {
277282
ItemStack finalItem = itemStack.clone();
278283
ItemMeta meta = finalItem.getItemMeta();
279284
if (meta == null) {
285+
toolStats.logger.warning(itemStack + " does NOT have any meta! Unable to update stats.");
280286
return null;
281287
}
282288
Integer mobKills = null;
283289
PersistentDataContainer container = meta.getPersistentDataContainer();
284290
if (container.has(toolStats.swordMobKills, PersistentDataType.INTEGER)) {
285291
mobKills = container.get(toolStats.swordMobKills, PersistentDataType.INTEGER);
292+
} else {
293+
mobKills = 0;
286294
}
295+
287296
if (mobKills == null) {
288297
mobKills = 0;
298+
toolStats.logger.warning(itemStack + " does not have valid mob-kills set! Resting to zero. This should NEVER happen.");
289299
}
290300

291301
mobKills++;
@@ -338,15 +348,20 @@ private ItemStack updateMobKills(ItemStack itemStack) {
338348
private void updateArmorDamage(ItemStack itemStack, double damage) {
339349
ItemMeta meta = itemStack.getItemMeta();
340350
if (meta == null) {
351+
toolStats.logger.warning(itemStack + " does NOT have any meta! Unable to update stats.");
341352
return;
342353
}
343-
Double damageTaken = null;
354+
Double damageTaken;
344355
PersistentDataContainer container = meta.getPersistentDataContainer();
345356
if (container.has(toolStats.armorDamage, PersistentDataType.DOUBLE)) {
346357
damageTaken = container.get(toolStats.armorDamage, PersistentDataType.DOUBLE);
358+
} else {
359+
damageTaken = 0.0;
347360
}
361+
348362
if (damageTaken == null) {
349363
damageTaken = 0.0;
364+
toolStats.logger.warning(itemStack + " does not have valid damage-taken set! Resting to zero. This should NEVER happen.");
350365
}
351366

352367
damageTaken = damageTaken + damage;

src/main/java/lol/hyper/toolstats/events/EntityDeath.java

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.bukkit.entity.LivingEntity;
2323
import org.bukkit.entity.Player;
2424
import org.bukkit.event.EventHandler;
25+
import org.bukkit.event.EventPriority;
2526
import org.bukkit.event.Listener;
2627
import org.bukkit.event.entity.EntityDeathEvent;
2728
import org.bukkit.inventory.ItemStack;
@@ -37,7 +38,7 @@ public EntityDeath(ToolStats toolStats) {
3738
this.toolStats = toolStats;
3839
}
3940

40-
@EventHandler
41+
@EventHandler(priority = EventPriority.LOWEST)
4142
public void onDeath(EntityDeathEvent event) {
4243
LivingEntity livingEntity = event.getEntity();
4344
if (livingEntity instanceof Player) {
@@ -46,9 +47,13 @@ public void onDeath(EntityDeathEvent event) {
4647
UUID livingEntityUUID = event.getEntity().getUniqueId();
4748
// if it's a mob we are tracking that matters
4849
if (toolStats.mobKill.trackedMobs.contains(livingEntityUUID)) {
49-
for (ItemStack current : event.getDrops()) {
50+
for (int i = 0; i < event.getDrops().size(); i++) {
51+
ItemStack current = event.getDrops().get(i);
5052
if (ItemChecker.isValidItem(current.getType())) {
51-
addLore(current, livingEntity.getName());
53+
ItemStack newItem = addLore(current, livingEntity.getName());
54+
if (newItem != null) {
55+
event.getDrops().set(i, newItem);
56+
}
5257
}
5358
}
5459
toolStats.mobKill.trackedMobs.remove(livingEntityUUID);
@@ -58,13 +63,14 @@ public void onDeath(EntityDeathEvent event) {
5863
/**
5964
* Adds "drop by" tag to item.
6065
*
61-
* @param itemStack The item to add lore to.
66+
* @param oldItem The item to add lore to.
6267
* @param mob The mob or player name.
6368
*/
64-
private void addLore(ItemStack itemStack, String mob) {
65-
ItemMeta meta = itemStack.getItemMeta();
69+
private ItemStack addLore(ItemStack oldItem, String mob) {
70+
ItemStack newItem = oldItem.clone();
71+
ItemMeta meta = newItem.getItemMeta();
6672
if (meta == null) {
67-
return;
73+
return null;
6874
}
6975
boolean hasTag = false;
7076

@@ -73,7 +79,7 @@ private void addLore(ItemStack itemStack, String mob) {
7379

7480
if (droppedByLore == null || droppedByLoreRaw == null) {
7581
toolStats.logger.warning("There is no lore message for messages.dropped-by!");
76-
return;
82+
return null;
7783
}
7884

7985
List<String> lore;
@@ -96,6 +102,7 @@ private void addLore(ItemStack itemStack, String mob) {
96102
if (toolStats.config.getBoolean("enabled.dropped-by")) {
97103
meta.setLore(lore);
98104
}
99-
itemStack.setItemMeta(meta);
105+
newItem.setItemMeta(meta);
106+
return newItem;
100107
}
101108
}

src/main/java/lol/hyper/toolstats/events/GenerateLoot.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.bukkit.entity.Player;
2929
import org.bukkit.entity.minecart.StorageMinecart;
3030
import org.bukkit.event.EventHandler;
31+
import org.bukkit.event.EventPriority;
3132
import org.bukkit.event.Listener;
3233
import org.bukkit.event.world.LootGenerateEvent;
3334
import org.bukkit.inventory.Inventory;
@@ -49,7 +50,7 @@ public GenerateLoot(ToolStats toolStats) {
4950
this.toolStats = toolStats;
5051
}
5152

52-
@EventHandler
53+
@EventHandler(priority = EventPriority.LOWEST)
5354
public void onGenerateLoot(LootGenerateEvent event) {
5455
InventoryHolder inventoryHolder = event.getInventoryHolder();
5556
if (inventoryHolder == null) {

src/main/java/lol/hyper/toolstats/events/PickupItem.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.bukkit.Material;
2424
import org.bukkit.entity.*;
2525
import org.bukkit.event.EventHandler;
26+
import org.bukkit.event.EventPriority;
2627
import org.bukkit.event.Listener;
2728
import org.bukkit.event.entity.EntityPickupItemEvent;
2829
import org.bukkit.inventory.ItemStack;
@@ -42,7 +43,7 @@ public PickupItem(ToolStats toolStats) {
4243
this.toolStats = toolStats;
4344
}
4445

45-
@EventHandler
46+
@EventHandler(priority = EventPriority.LOWEST)
4647
public void onPickup(EntityPickupItemEvent event) {
4748
if (event.isCancelled()) {
4849
return;

0 commit comments

Comments
 (0)