Skip to content

Commit b38d282

Browse files
committed
added NBT for origins of items
1 parent fd6c120 commit b38d282

File tree

10 files changed

+82
-44
lines changed

10 files changed

+82
-44
lines changed

src/main/java/lol/hyper/toolstats/ToolStats.java

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,26 +39,56 @@
3939

4040
public final class ToolStats extends JavaPlugin {
4141

42-
// stores who created an item
42+
/**
43+
* Stores who created an item.
44+
*/
4345
public final NamespacedKey genericOwner = new NamespacedKey(this, "owner");
44-
// stores when an item was created
46+
/**
47+
* Stores when the item was created.
48+
*/
4549
public final NamespacedKey timeCreated = new NamespacedKey(this, "time-created");
46-
// stores how many player kills by sword
50+
/**
51+
* Stores how many player kills.
52+
*/
4753
public final NamespacedKey swordPlayerKills = new NamespacedKey(this, "player-kills");
48-
// stores how many mob kills by sword
54+
/**
55+
* Stores how many mob kills.
56+
*/
4957
public final NamespacedKey swordMobKills = new NamespacedKey(this, "mob-kills");
50-
// stores how blocks mined (used for all tools)
58+
/**
59+
* Stores how many blocks were mined.
60+
*/
5161
public final NamespacedKey genericMined = new NamespacedKey(this, "generic-mined");
52-
// stores how many fish were caught
62+
/**
63+
* Stores how many fish were caught.
64+
*/
5365
public final NamespacedKey fishingRodCaught = new NamespacedKey(this, "fish-caught");
54-
// stores how many times sheep were sheared
66+
/**
67+
* Stores how many sheep were sheared.
68+
*/
5569
public final NamespacedKey shearsSheared = new NamespacedKey(this, "sheared");
56-
// stores how much damage armor has taken
70+
/**
71+
* Stores how much damage an armor piece has taken.
72+
*/
5773
public final NamespacedKey armorDamage = new NamespacedKey(this, "damage-taken");
58-
// stores how much damage armor has taken (as int)
74+
/**
75+
* Stores how much damage an armor piece has taken (as an int).
76+
*/
5977
public final NamespacedKey armorDamageInt = new NamespacedKey(this, "damage-taken-int");
60-
// used for tracking new elytras
78+
/**
79+
* Key for tracking new elytras that spawn.
80+
*/
6181
public final NamespacedKey newElytra = new NamespacedKey(this, "new");
82+
/**
83+
* Stores how an item was created.
84+
* 0 = crafted.
85+
* 1 = dropped.
86+
* 2 = looted.
87+
* 3 = traded.
88+
* 4 = founded (for elytras).
89+
* 5 = fished.
90+
*/
91+
public final NamespacedKey originType = new NamespacedKey(this, "origin");
6292

6393
public BlocksMined blocksMined;
6494
public ChunkPopulate chunkPopulate;

src/main/java/lol/hyper/toolstats/commands/CommandToolStats.java

Lines changed: 31 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -129,24 +129,15 @@ private void fixItemLore(ItemStack original, Player player) {
129129
return;
130130
}
131131

132-
// determine how the item was originally created
133-
// this doesn't get saved, so we just rely on the lore
134-
// if there isn't a tag, default to crafted
135-
String type = "DEFAULT";
136-
if (finalMeta.hasLore()) {
137-
if (finalMeta.getLore() != null) {
138-
for (String line : finalMeta.getLore()) {
139-
if (line.contains(caughtByLore)) {
140-
type = "CAUGHT";
141-
}
142-
if (line.contains(lootedByLore)) {
143-
type = "LOOTED";
144-
}
145-
if (line.contains(tradedByLore)) {
146-
type = "TRADED";
147-
}
148-
}
149-
}
132+
// set how the item was obtained
133+
Integer origin = -1;
134+
if (container.has(toolStats.originType, PersistentDataType.INTEGER)) {
135+
origin = container.get(toolStats.originType, PersistentDataType.INTEGER);
136+
}
137+
138+
// set to -1 if it's invalid
139+
if (origin == null) {
140+
origin = -1;
150141
}
151142

152143
// hard code elytras
@@ -171,21 +162,25 @@ private void fixItemLore(ItemStack original, Player player) {
171162
if (container.has(toolStats.genericOwner, new UUIDDataType())) {
172163
container.set(toolStats.genericOwner, new UUIDDataType(), player.getUniqueId());
173164
// show how the item was created based on the previous lore
174-
switch (type) {
175-
case "DEFAULT": {
165+
switch (origin) {
166+
case 0: {
176167
lore.add(toolStats.getLoreFromConfig("created.created-by", true).replace("{player}", player.getName()));
177168
break;
178169
}
179-
case "CAUGHT": {
180-
lore.add(toolStats.getLoreFromConfig("fished.caught-by", true).replace("{player}", player.getName()));
170+
case 2: {
171+
lore.add(toolStats.getLoreFromConfig("looted.looted-by", true).replace("{player}", player.getName()));
181172
break;
182173
}
183-
case "LOOTED": {
174+
case 3: {
175+
lore.add(toolStats.getLoreFromConfig("traded.traded-by", true).replace("{player}", player.getName()));
176+
break;
177+
}
178+
case 4: {
184179
lore.add(toolStats.getLoreFromConfig("looted.found-by", true).replace("{player}", player.getName()));
185180
break;
186181
}
187-
case "TRADED": {
188-
lore.add(toolStats.getLoreFromConfig("traded.traded-by", true).replace("{player}", player.getName()));
182+
case 5: {
183+
lore.add(toolStats.getLoreFromConfig("fished.caught-by", true).replace("{player}", player.getName()));
189184
break;
190185
}
191186
}
@@ -196,21 +191,25 @@ private void fixItemLore(ItemStack original, Player player) {
196191
Long time = container.get(toolStats.timeCreated, PersistentDataType.LONG);
197192
if (time != null) {
198193
// show how when the item was created based on the previous lore
199-
switch (type) {
200-
case "DEFAULT": {
194+
switch (origin) {
195+
case 0: {
201196
lore.add(toolStats.getLoreFromConfig("created.created-on", true).replace("{date}", toolStats.numberFormat.formatDate(new Date(time))));
202197
break;
203198
}
204-
case "CAUGHT": {
205-
lore.add(toolStats.getLoreFromConfig("fished.caught-on", true).replace("{date}", toolStats.numberFormat.formatDate(new Date(time))));
199+
case 2: {
200+
lore.add(toolStats.getLoreFromConfig("looted.looted-on", true).replace("{date}", toolStats.numberFormat.formatDate(new Date(time))));
206201
break;
207202
}
208-
case "LOOTED": {
203+
case 3: {
204+
lore.add(toolStats.getLoreFromConfig("traded.traded-on", true).replace("{date}", toolStats.numberFormat.formatDate(new Date(time))));
205+
break;
206+
}
207+
case 4: {
209208
lore.add(toolStats.getLoreFromConfig("looted.found-on", true).replace("{date}", toolStats.numberFormat.formatDate(new Date(time))));
210209
break;
211210
}
212-
case "TRADED": {
213-
lore.add(toolStats.getLoreFromConfig("traded.traded-on", true).replace("{date}", toolStats.numberFormat.formatDate(new Date(time))));
211+
case 5: {
212+
lore.add(toolStats.getLoreFromConfig("fished.caught-on", true).replace("{date}", toolStats.numberFormat.formatDate(new Date(time))));
214213
break;
215214
}
216215
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ private ItemStack addLore(ItemStack itemStack, Player owner) {
106106

107107
container.set(toolStats.timeCreated, PersistentDataType.LONG, timeCreated);
108108
container.set(toolStats.genericOwner, new UUIDDataType(), owner.getUniqueId());
109+
container.set(toolStats.originType, PersistentDataType.INTEGER, 0);
109110

110111
String createdByRaw = toolStats.getLoreFromConfig("created.created-by", true);
111112
String createdOnRaw = toolStats.getLoreFromConfig("created.created-on", true);

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,9 @@ private ItemStack addLore(ItemStack oldItem, String mob) {
8383
return null;
8484
}
8585

86+
PersistentDataContainer container = meta.getPersistentDataContainer();
87+
container.set(toolStats.originType, PersistentDataType.INTEGER, 1);
88+
8689
List<String> newLore = toolStats.itemLore.addItemLore(meta, "{name}", mob, "dropped-by");
8790

8891
if (toolStats.config.getBoolean("enabled.dropped-by")) {

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ private ItemStack addLore(ItemStack itemStack, Player owner) {
143143

144144
container.set(toolStats.timeCreated, PersistentDataType.LONG, timeCreated);
145145
container.set(toolStats.genericOwner, new UUIDDataType(), owner.getUniqueId());
146+
container.set(toolStats.originType, PersistentDataType.INTEGER, 2);
146147

147148
String formattedDate = toolStats.numberFormat.formatDate(finalDate);
148149
List<String> newLore = toolStats.itemLore.addNewOwner(meta, owner.getName(), formattedDate, "LOOTED");

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ private ItemStack addLore(ItemStack itemStack, Player owner) {
9191
PersistentDataContainer container = meta.getPersistentDataContainer();
9292
container.set(toolStats.timeCreated, PersistentDataType.LONG, timeCreated);
9393
container.set(toolStats.genericOwner, new UUIDDataType(), owner.getUniqueId());
94+
container.set(toolStats.originType, PersistentDataType.INTEGER, 4);
9495
container.remove(toolStats.newElytra);
9596

9697
String formattedDate = toolStats.numberFormat.formatDate(finalDate);

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ private ItemStack addNewLore(ItemStack originalItem, Player owner) {
157157

158158
container.set(toolStats.timeCreated, PersistentDataType.LONG, timeCreated);
159159
container.set(toolStats.genericOwner, new UUIDDataType(), owner.getUniqueId());
160+
container.set(toolStats.originType, PersistentDataType.INTEGER, 5);
160161

161162
String formattedDate = toolStats.numberFormat.formatDate(finalDate);
162163
List<String> newLore = toolStats.itemLore.addNewOwner(meta, owner.getName(), formattedDate, "FISHED");

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ private ItemStack addLore(ItemStack oldItem, Player owner) {
109109

110110
container.set(toolStats.timeCreated, PersistentDataType.LONG, timeCreated);
111111
container.set(toolStats.genericOwner, new UUIDDataType(), owner.getUniqueId());
112+
container.set(toolStats.originType, PersistentDataType.INTEGER, 3);
112113

113114
String formattedDate = toolStats.numberFormat.formatDate(finalDate);
114115
List<String> newLore = toolStats.itemLore.addNewOwner(meta, owner.getName(), formattedDate, "TRADED");

src/main/java/lol/hyper/toolstats/tools/ItemLore.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import org.bukkit.inventory.meta.ItemMeta;
2222

2323
import java.util.ArrayList;
24-
import java.util.Collections;
2524
import java.util.List;
2625
import java.util.Locale;
2726

src/main/resources/config.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ messages:
8080
caught-on: "&7Caught on: &8{date}"
8181
fish-caught: "&7Fish caught: &8{fish}"
8282
looted:
83+
looted-by: "&7Found by: &8{player}"
84+
looted-on: "&7Found on: &8{date}"
8385
found-by: "&7Found by: &8{player}"
8486
found-on: "&7Found on: &8{date}"
8587
traded:
@@ -111,4 +113,4 @@ number-formats:
111113
comma-format: "#,###"
112114
decimal-format: "#,###.00"
113115

114-
config-version: 4
116+
config-version: 5

0 commit comments

Comments
 (0)