Skip to content

Commit bc8f494

Browse files
committed
add normalize-time-creation
1 parent 70e1926 commit bc8f494

File tree

9 files changed

+69
-11
lines changed

9 files changed

+69
-11
lines changed

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,13 @@ private ItemStack addCraftOrigin(ItemStack itemStack, Player owner) {
121121
}
122122
// get the current time
123123
long timeCreated = System.currentTimeMillis();
124-
Date finalDate = new Date(timeCreated);
124+
Date finalDate;
125+
if (toolStats.config.getBoolean("normalize-time-creation")) {
126+
finalDate = toolStats.numberFormat.normalizeTime(timeCreated);
127+
timeCreated = finalDate.getTime();
128+
} else {
129+
finalDate = new Date(timeCreated);
130+
}
125131
PersistentDataContainer container = meta.getPersistentDataContainer();
126132

127133
// if the item already has the tag

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,13 @@ private ItemStack addCreativeOrigin(ItemStack itemStack, Player owner) {
8888
}
8989
// get the current time
9090
long timeCreated = System.currentTimeMillis();
91-
Date finalDate = new Date(timeCreated);
91+
Date finalDate;
92+
if (toolStats.config.getBoolean("normalize-time-creation")) {
93+
finalDate = toolStats.numberFormat.normalizeTime(timeCreated);
94+
timeCreated = finalDate.getTime();
95+
} else {
96+
finalDate = new Date(timeCreated);
97+
}
9298
PersistentDataContainer container = meta.getPersistentDataContainer();
9399

94100
// if the item already has the tag

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,13 @@ private ItemStack addLootedOrigin(ItemStack itemStack, Player owner) {
100100
return null;
101101
}
102102
long timeCreated = System.currentTimeMillis();
103-
Date finalDate = new Date(timeCreated);
103+
Date finalDate;
104+
if (toolStats.config.getBoolean("normalize-time-creation")) {
105+
finalDate = toolStats.numberFormat.normalizeTime(timeCreated);
106+
timeCreated = finalDate.getTime();
107+
} else {
108+
finalDate = new Date(timeCreated);
109+
}
104110
PersistentDataContainer container = meta.getPersistentDataContainer();
105111

106112
if (container.has(toolStats.timeCreated, PersistentDataType.LONG) || container.has(toolStats.itemOwner, PersistentDataType.LONG)) {

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,13 @@ private ItemStack addElytraOrigin(ItemStack itemStack, Player owner) {
9191
return null;
9292
}
9393
long timeCreated = System.currentTimeMillis();
94-
Date finalDate = new Date(timeCreated);
94+
Date finalDate;
95+
if (toolStats.config.getBoolean("normalize-time-creation")) {
96+
finalDate = toolStats.numberFormat.normalizeTime(timeCreated);
97+
timeCreated = finalDate.getTime();
98+
} else {
99+
finalDate = new Date(timeCreated);
100+
}
95101
PersistentDataContainer container = meta.getPersistentDataContainer();
96102

97103
if (!toolStats.config.getBoolean("enabled.elytra-tag")) {

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,13 @@ private ItemStack addFishedOrigin(ItemStack originalItem, Player owner) {
110110
return null;
111111
}
112112
long timeCreated = System.currentTimeMillis();
113-
Date finalDate = new Date(timeCreated);
113+
Date finalDate;
114+
if (toolStats.config.getBoolean("normalize-time-creation")) {
115+
finalDate = toolStats.numberFormat.normalizeTime(timeCreated);
116+
timeCreated = finalDate.getTime();
117+
} else {
118+
finalDate = new Date(timeCreated);
119+
}
114120
PersistentDataContainer container = meta.getPersistentDataContainer();
115121

116122
if (container.has(toolStats.timeCreated, PersistentDataType.LONG) || container.has(toolStats.itemOwner, PersistentDataType.LONG)) {

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,13 @@ private ItemStack addTradeOrigin(ItemStack oldItem, Player owner) {
127127
return null;
128128
}
129129
long timeCreated = System.currentTimeMillis();
130-
Date finalDate = new Date(timeCreated);
130+
Date finalDate;
131+
if (toolStats.config.getBoolean("normalize-time-creation")) {
132+
finalDate = toolStats.numberFormat.normalizeTime(timeCreated);
133+
timeCreated = finalDate.getTime();
134+
} else {
135+
finalDate = new Date(timeCreated);
136+
}
131137
PersistentDataContainer container = meta.getPersistentDataContainer();
132138

133139
if (container.has(toolStats.timeCreated, PersistentDataType.LONG) || container.has(toolStats.itemOwner, PersistentDataType.LONG)) {

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

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222
import java.text.DecimalFormat;
2323
import java.text.DecimalFormatSymbols;
2424
import java.text.SimpleDateFormat;
25+
import java.time.Instant;
26+
import java.time.LocalDate;
27+
import java.time.ZoneId;
28+
import java.time.ZonedDateTime;
2529
import java.util.Date;
2630
import java.util.HashMap;
2731
import java.util.Locale;
@@ -35,6 +39,7 @@ public class NumberFormat {
3539

3640
/**
3741
* Utility class to format different numbers
42+
*
3843
* @param toolStats Plugin instance.
3944
*/
4045
public NumberFormat(ToolStats toolStats) {
@@ -140,8 +145,9 @@ public String formatDate(Date date) {
140145
}
141146

142147
/**
143-
* Returns a human readable form of time in milliseconds.
144-
* E.g. given 3752348000L outputs 1 years, 5 months, 3 days, 14 hours, 12 minutes, 28 seconds.
148+
* Returns a human-readable form of time in milliseconds.
149+
* E.g. given 3752348000L outputs 1 year, 5 months, 3 days, 14 hours, 12 minutes, 28 seconds.
150+
*
145151
* @param time The time in ms.
146152
* @return Map with units as keys and time value, e.g. "years" (key) -> 1 (value)
147153
*/
@@ -155,7 +161,7 @@ public Map<String, String> formatTime(Long time) {
155161
long totalSeconds = time / 1000;
156162

157163
Map<String, String> timeUnits = new HashMap<>();
158-
164+
159165
long years = totalSeconds / (DAYS_PER_YEAR * HOURS_PER_DAY * MINUTES_PER_HOUR * SECONDS_PER_MINUTE);
160166
if (years > 0) {
161167
timeUnits.put("years", Long.toString(years));
@@ -190,7 +196,16 @@ public Map<String, String> formatTime(Long time) {
190196
if (seconds > 0 || timeUnits.isEmpty()) { // Always include seconds if everything else is zero
191197
timeUnits.put("seconds", Long.toString(seconds));
192198
}
193-
199+
194200
return timeUnits;
195201
}
202+
203+
public Date normalizeTime(Long time) {
204+
Instant instant = Instant.ofEpochMilli(time);
205+
ZoneId zone = ZoneId.systemDefault();
206+
207+
LocalDate localDate = instant.atZone(zone).toLocalDate();
208+
ZonedDateTime midnight = localDate.atStartOfDay(zone);
209+
return Date.from(midnight.toInstant());
210+
}
196211
}

src/main/java/lol/hyper/toolstats/tools/config/versions/Version12.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@ public void update() {
9393
toolStats.config.set("messages.crafted.crafted-by", craftedByMessage);
9494
toolStats.config.set("messages.crafted.crafted-on", craftedOnMessage);
9595

96+
toolStats.logger.info("Adding normalize-time-creation");
97+
toolStats.config.set("normalize-time-creation", false);
98+
9699
// save the config and reload it
97100
try {
98101
toolStats.config.save("plugins" + File.separator + "ToolStats" + File.separator + "config.yml");

src/main/resources/config.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,4 +265,8 @@ number-formats:
265265
# This has no use currently, but can be used for future features for dupe detection.
266266
generate-hash-for-items: false
267267

268-
config-version: 11
268+
# Make when items are created at midnight on the date.
269+
# This makes dates for items more "normalized" instead of being at different times.
270+
normalize-time-creation: false
271+
272+
config-version: 12

0 commit comments

Comments
 (0)