Skip to content

Commit 6428925

Browse files
committed
support for complete customization of numbers
closes #24
1 parent 1d4faa8 commit 6428925

File tree

12 files changed

+120
-65
lines changed

12 files changed

+120
-65
lines changed

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

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import lol.hyper.githubreleaseapi.GitHubReleaseAPI;
2222
import lol.hyper.toolstats.commands.CommandToolStats;
2323
import lol.hyper.toolstats.events.*;
24+
import lol.hyper.toolstats.tools.NumberFormat;
2425
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
2526
import org.bstats.bukkit.Metrics;
2627
import org.bukkit.Bukkit;
@@ -33,10 +34,6 @@
3334

3435
import java.io.File;
3536
import java.io.IOException;
36-
import java.text.DecimalFormat;
37-
import java.text.DecimalFormatSymbols;
38-
import java.text.SimpleDateFormat;
39-
import java.util.Locale;
4037
import java.util.logging.Logger;
4138

4239
public final class ToolStats extends JavaPlugin {
@@ -60,7 +57,6 @@ public final class ToolStats extends JavaPlugin {
6057
// used for tracking new elytras
6158
public final NamespacedKey newElytra = new NamespacedKey(this, "new");
6259

63-
public SimpleDateFormat dateFormat;
6460
public BlocksMined blocksMined;
6561
public ChunkPopulate chunkPopulate;
6662
public CraftItem craftItem;
@@ -77,10 +73,12 @@ public final class ToolStats extends JavaPlugin {
7773
public final Logger logger = this.getLogger();
7874
public final File configFile = new File(this.getDataFolder(), "config.yml");
7975
public FileConfiguration config;
80-
public final int CONFIG_VERSION = 3;
76+
public final int CONFIG_VERSION = 4;
8177

8278
private BukkitAudiences adventure;
8379

80+
public NumberFormat numberFormat;
81+
8482
@Override
8583
public void onEnable() {
8684
this.adventure = BukkitAudiences.create(this);
@@ -127,19 +125,7 @@ public void loadConfig() {
127125
logger.warning("Your config file is outdated! Please regenerate the config.");
128126
}
129127

130-
String dateFormatConfig = config.getString("date-format");
131-
if (dateFormatConfig != null) {
132-
try {
133-
dateFormat = new SimpleDateFormat(dateFormatConfig, Locale.getDefault());
134-
} catch (IllegalArgumentException exception) {
135-
logger.severe("date-format is NOT a valid format! Using default American English format.");
136-
exception.printStackTrace();
137-
dateFormat = new SimpleDateFormat("M/dd/yyyy", Locale.ENGLISH);
138-
}
139-
} else {
140-
logger.warning("date-format is missing from your config! Using default American English format.");
141-
dateFormat = new SimpleDateFormat("M/dd/yyyy", Locale.ENGLISH);
142-
}
128+
numberFormat = new NumberFormat(this);
143129
}
144130

145131
public void checkForUpdates() {

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

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
package lol.hyper.toolstats.commands;
1919

2020
import lol.hyper.toolstats.ToolStats;
21-
import lol.hyper.toolstats.tools.NumberFormat;
2221
import lol.hyper.toolstats.tools.UUIDDataType;
2322
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
2423
import net.kyori.adventure.text.Component;
@@ -151,7 +150,7 @@ private void fixItemLore(ItemStack original, Player player) {
151150
if (container.has(toolStats.timeCreated, PersistentDataType.LONG)) {
152151
Long time = container.get(toolStats.timeCreated, PersistentDataType.LONG);
153152
if (time != null) {
154-
lore.add(toolStats.getLoreFromConfig("looted.found-on", true).replace("{date}", toolStats.dateFormat.format(new Date(time))));
153+
lore.add(toolStats.getLoreFromConfig("looted.found-on", true).replace("{date}", toolStats.numberFormat.formatDate(new Date(time))));
155154
}
156155
}
157156
finalMeta.setLore(lore);
@@ -193,19 +192,19 @@ private void fixItemLore(ItemStack original, Player player) {
193192
// show how when the item was created based on the previous lore
194193
switch (type) {
195194
case "DEFAULT": {
196-
lore.add(toolStats.getLoreFromConfig("created.created-on", true).replace("{date}", toolStats.dateFormat.format(new Date(time))));
195+
lore.add(toolStats.getLoreFromConfig("created.created-on", true).replace("{date}", toolStats.numberFormat.formatDate(new Date(time))));
197196
break;
198197
}
199198
case "CAUGHT": {
200-
lore.add(toolStats.getLoreFromConfig("fished.caught-on", true).replace("{date}", toolStats.dateFormat.format(new Date(time))));
199+
lore.add(toolStats.getLoreFromConfig("fished.caught-on", true).replace("{date}", toolStats.numberFormat.formatDate(new Date(time))));
201200
break;
202201
}
203202
case "LOOTED": {
204-
lore.add(toolStats.getLoreFromConfig("looted.found-on", true).replace("{date}", toolStats.dateFormat.format(new Date(time))));
203+
lore.add(toolStats.getLoreFromConfig("looted.found-on", true).replace("{date}", toolStats.numberFormat.formatDate(new Date(time))));
205204
break;
206205
}
207206
case "TRADED": {
208-
lore.add(toolStats.getLoreFromConfig("traded.traded-on", true).replace("{date}", toolStats.dateFormat.format(new Date(time))));
207+
lore.add(toolStats.getLoreFromConfig("traded.traded-on", true).replace("{date}", toolStats.numberFormat.formatDate(new Date(time))));
209208
break;
210209
}
211210
}
@@ -216,47 +215,47 @@ private void fixItemLore(ItemStack original, Player player) {
216215
if (container.has(toolStats.swordPlayerKills, PersistentDataType.INTEGER)) {
217216
Integer kills = container.get(toolStats.swordPlayerKills, PersistentDataType.INTEGER);
218217
if (kills != null) {
219-
lore.add(toolStats.getLoreFromConfig("kills.player", true).replace("{kills}", NumberFormat.formatInt(kills)));
218+
lore.add(toolStats.getLoreFromConfig("kills.player", true).replace("{kills}", toolStats.numberFormat.formatInt(kills)));
220219
}
221220
}
222221
}
223222
if (toolStats.checkConfig(original, "mob-kills")) {
224223
if (container.has(toolStats.swordMobKills, PersistentDataType.INTEGER)) {
225224
Integer kills = container.get(toolStats.swordMobKills, PersistentDataType.INTEGER);
226225
if (kills != null) {
227-
lore.add(toolStats.getLoreFromConfig("kills.mob", true).replace("{kills}", NumberFormat.formatInt(kills)));
226+
lore.add(toolStats.getLoreFromConfig("kills.mob", true).replace("{kills}", toolStats.numberFormat.formatInt(kills)));
228227
}
229228
}
230229
}
231230
if (toolStats.checkConfig(original, "blocks-mined")) {
232231
if (container.has(toolStats.genericMined, PersistentDataType.INTEGER)) {
233232
Integer blocksMined = container.get(toolStats.genericMined, PersistentDataType.INTEGER);
234233
if (blocksMined != null) {
235-
lore.add(toolStats.getLoreFromConfig("blocks-mined", true).replace("{blocks}", NumberFormat.formatInt(blocksMined)));
234+
lore.add(toolStats.getLoreFromConfig("blocks-mined", true).replace("{blocks}", toolStats.numberFormat.formatInt(blocksMined)));
236235
}
237236
}
238237
}
239238
if (toolStats.config.getBoolean("enabled.fish-caught")) {
240239
if (container.has(toolStats.fishingRodCaught, PersistentDataType.INTEGER)) {
241240
Integer fish = container.get(toolStats.fishingRodCaught, PersistentDataType.INTEGER);
242241
if (fish != null) {
243-
lore.add(toolStats.getLoreFromConfig("fished.fish-caught", true).replace("{fish}", NumberFormat.formatInt(fish)));
242+
lore.add(toolStats.getLoreFromConfig("fished.fish-caught", true).replace("{fish}", toolStats.numberFormat.formatInt(fish)));
244243
}
245244
}
246245
}
247246
if (toolStats.config.getBoolean("enabled.sheep-sheared")) {
248247
if (container.has(toolStats.shearsSheared, PersistentDataType.INTEGER)) {
249248
Integer sheep = container.get(toolStats.shearsSheared, PersistentDataType.INTEGER);
250249
if (sheep != null) {
251-
lore.add(toolStats.getLoreFromConfig("sheep-sheared", true).replace("{sheep}", NumberFormat.formatInt(sheep)));
250+
lore.add(toolStats.getLoreFromConfig("sheep-sheared", true).replace("{sheep}", toolStats.numberFormat.formatInt(sheep)));
252251
}
253252
}
254253
}
255254
if (toolStats.config.getBoolean("enabled.armor-damage")) {
256255
if (container.has(toolStats.armorDamage, PersistentDataType.DOUBLE)) {
257256
Double damage = container.get(toolStats.armorDamage, PersistentDataType.DOUBLE);
258257
if (damage != null) {
259-
lore.add(toolStats.getLoreFromConfig("damage-taken", true).replace("{damage}", NumberFormat.formatDouble(damage)));
258+
lore.add(toolStats.getLoreFromConfig("damage-taken", true).replace("{damage}", toolStats.numberFormat.formatDouble(damage)));
260259
}
261260
}
262261
}

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import lol.hyper.toolstats.ToolStats;
2121
import lol.hyper.toolstats.tools.ItemChecker;
22-
import lol.hyper.toolstats.tools.NumberFormat;
2322
import org.bukkit.Bukkit;
2423
import org.bukkit.GameMode;
2524
import org.bukkit.Material;
@@ -98,7 +97,7 @@ private void updateBlocksMined(ItemStack playerTool) {
9897
}
9998

10099
List<String> lore;
101-
String newLine = configLoreRaw.replace("{blocks}", NumberFormat.formatInt(blocksMined));
100+
String newLine = configLoreRaw.replace("{blocks}", toolStats.numberFormat.formatInt(blocksMined));
102101
if (meta.hasLore()) {
103102
lore = meta.getLore();
104103
boolean hasLore = false;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ private ItemStack addLore(ItemStack itemStack, Player owner) {
128128
}
129129
// do we add the lore based on the config?
130130
if (toolStats.checkConfig(itemStack, "created-date")) {
131-
lore.add(createdOnRaw.replace("{date}", toolStats.dateFormat.format(finalDate)));
131+
lore.add(createdOnRaw.replace("{date}", toolStats.numberFormat.formatDate(finalDate)));
132132
}
133133
if (toolStats.checkConfig(itemStack, "created-by")) {
134134
lore.add(createdByRaw.replace("{player}", owner.getName()));

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

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import lol.hyper.toolstats.ToolStats;
2121
import lol.hyper.toolstats.tools.ItemChecker;
22-
import lol.hyper.toolstats.tools.NumberFormat;
2322
import org.bukkit.Bukkit;
2423
import org.bukkit.GameMode;
2524
import org.bukkit.Material;
@@ -30,7 +29,6 @@
3029
import org.bukkit.event.entity.EntityDamageByBlockEvent;
3130
import org.bukkit.event.entity.EntityDamageByEntityEvent;
3231
import org.bukkit.event.entity.EntityDamageEvent;
33-
import org.bukkit.inventory.Inventory;
3432
import org.bukkit.inventory.ItemStack;
3533
import org.bukkit.inventory.PlayerInventory;
3634
import org.bukkit.inventory.meta.ItemMeta;
@@ -249,7 +247,7 @@ private ItemStack updatePlayerKills(ItemStack itemStack) {
249247
}
250248

251249
List<String> lore;
252-
String newLine = playerKillsLoreRaw.replace("{kills}", NumberFormat.formatInt(playerKills));
250+
String newLine = playerKillsLoreRaw.replace("{kills}", toolStats.numberFormat.formatInt(playerKills));
253251
if (meta.hasLore()) {
254252
lore = meta.getLore();
255253
boolean hasLore = false;
@@ -315,7 +313,7 @@ private ItemStack updateMobKills(ItemStack itemStack) {
315313
}
316314

317315
List<String> lore;
318-
String newLine = mobKillsLoreRaw.replace("{kills}", NumberFormat.formatInt(mobKills));
316+
String newLine = mobKillsLoreRaw.replace("{kills}", toolStats.numberFormat.formatInt(mobKills));
319317
if (meta.hasLore()) {
320318
lore = meta.getLore();
321319
boolean hasLore = false;
@@ -380,7 +378,7 @@ private void updateArmorDamage(ItemStack itemStack, double damage) {
380378
}
381379

382380
List<String> lore;
383-
String newLine = damageTakenLoreRaw.replace("{damage}", NumberFormat.formatDouble(damageTaken));
381+
String newLine = damageTakenLoreRaw.replace("{damage}", toolStats.numberFormat.formatDouble(damageTaken));
384382
if (meta.hasLore()) {
385383
lore = meta.getLore();
386384
boolean hasLore = false;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ private ItemStack addLore(ItemStack itemStack, Player owner) {
160160
lore = new ArrayList<>();
161161
}
162162
if (toolStats.checkConfig(newItem, "looted-tag")) {
163-
lore.add(foundOnLoreRaw.replace("{date}", toolStats.dateFormat.format(finalDate)));
163+
lore.add(foundOnLoreRaw.replace("{date}", toolStats.numberFormat.formatDate(finalDate)));
164164
lore.add(foundByLoreRaw.replace("{player}", owner.getName()));
165165
}
166166
meta.setLore(lore);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ private ItemStack addLore(ItemStack itemStack, Player owner) {
109109
lore = new ArrayList<>();
110110
}
111111
if (toolStats.config.getBoolean("enabled.elytra-tag")) {
112-
lore.add(foundOnLoreRaw.replace("{date}", toolStats.dateFormat.format(finalDate)));
112+
lore.add(foundOnLoreRaw.replace("{date}", toolStats.numberFormat.formatDate(finalDate)));
113113
lore.add(foundByLoreRaw.replace("{player}", owner.getName()));
114114
}
115115
meta.setLore(lore);

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

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import lol.hyper.toolstats.ToolStats;
2121
import lol.hyper.toolstats.tools.ItemChecker;
22-
import lol.hyper.toolstats.tools.NumberFormat;
2322
import lol.hyper.toolstats.tools.UUIDDataType;
2423
import org.bukkit.Bukkit;
2524
import org.bukkit.GameMode;
@@ -118,7 +117,7 @@ private void updateFishCount(ItemStack fishingRod) {
118117
}
119118

120119
List<String> lore;
121-
String newLine = fishCaughtLoreRaw.replace("{fish}", NumberFormat.formatInt(fishCaught));
120+
String newLine = fishCaughtLoreRaw.replace("{fish}", toolStats.numberFormat.formatInt(fishCaught));
122121
if (meta.hasLore()) {
123122
lore = meta.getLore();
124123
boolean hasLore = false;
@@ -140,19 +139,6 @@ private void updateFishCount(ItemStack fishingRod) {
140139
lore = new ArrayList<>();
141140
lore.add(newLine);
142141
}
143-
144-
/*
145-
if (Bukkit.getPluginManager().isPluginEnabled("EvenMoreFish")) {
146-
ListIterator<String> iterator = lore.listIterator();
147-
while (iterator.hasNext()) {
148-
String line = iterator.next();
149-
toolStats.logger.info(line);
150-
if (line.equalsIgnoreCase("§f")) {
151-
iterator.remove();
152-
}
153-
}
154-
}*/
155-
156142
if (toolStats.config.getBoolean("enabled.fish-caught")) {
157143
meta.setLore(lore);
158144
}
@@ -199,7 +185,7 @@ private ItemStack addNewLore(ItemStack originalItem, Player owner) {
199185
lore = new ArrayList<>();
200186
}
201187
if (toolStats.checkConfig(newItem, "fished-tag")) {
202-
lore.add(caughtOnLoreRaw.replace("{date}", toolStats.dateFormat.format(finalDate)));
188+
lore.add(caughtOnLoreRaw.replace("{date}", toolStats.numberFormat.formatDate(finalDate)));
203189
lore.add(caughtByLoreRaw.replace("{player}", owner.getName()));
204190
meta.setLore(lore);
205191
}

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
package lol.hyper.toolstats.events;
1919

2020
import lol.hyper.toolstats.ToolStats;
21-
import lol.hyper.toolstats.tools.NumberFormat;
2221
import org.bukkit.Bukkit;
2322
import org.bukkit.GameMode;
2423
import org.bukkit.Material;
@@ -110,7 +109,7 @@ private ItemStack addLore(ItemStack oldShears) {
110109
}
111110

112111
List<String> lore;
113-
String newLine = sheepShearedLoreRaw.replace("{sheep}", NumberFormat.formatInt(sheepSheared));
112+
String newLine = sheepShearedLoreRaw.replace("{sheep}", toolStats.numberFormat.formatInt(sheepSheared));
114113
if (meta.hasLore()) {
115114
lore = meta.getLore();
116115
boolean hasLore = false;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ private ItemStack addLore(ItemStack oldItem, Player owner) {
125125
lore = new ArrayList<>();
126126
}
127127
if (toolStats.checkConfig(newItem, "traded-tag")) {
128-
lore.add(tradedOnLoreRaw.replace("{date}", toolStats.dateFormat.format(finalDate)));
128+
lore.add(tradedOnLoreRaw.replace("{date}", toolStats.numberFormat.formatDate(finalDate)));
129129
lore.add(tradedByLoreRaw.replace("{player}", owner.getName()));
130130
meta.setLore(lore);
131131
}

0 commit comments

Comments
 (0)