aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de
diff options
context:
space:
mode:
authorKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2025-01-11 15:41:01 -0500
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2025-01-11 15:41:01 -0500
commitade16c25fc4cae11bbbf8e9126a2d3d0ae42ea5e (patch)
tree8ecfeecda616c24ccd976056697d216a96f6cf2f /src/main/java/de
parentac94594c6abfadcb1ed3951a26c76abc94500a90 (diff)
downloadSkyblocker-ade16c25fc4cae11bbbf8e9126a2d3d0ae42ea5e.tar.gz
Skyblocker-ade16c25fc4cae11bbbf8e9126a2d3d0ae42ea5e.tar.bz2
Skyblocker-ade16c25fc4cae11bbbf8e9126a2d3d0ae42ea5e.zip
Fix profiled data null problems
Diffstat (limited to 'src/main/java/de')
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/OtherLocationsCategory.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/end/EndHudWidget.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/end/TheEnd.java10
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/MuseumItemCache.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/profile/ProfiledData.java6
5 files changed, 16 insertions, 6 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/OtherLocationsCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/OtherLocationsCategory.java
index c7fa6cb2..e08b3609 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/OtherLocationsCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/OtherLocationsCategory.java
@@ -134,7 +134,7 @@ public class OtherLocationsCategory {
.option(ButtonOption.createBuilder()
.name(Text.translatable("skyblocker.config.otherLocations.end.resetName"))
.text(Text.translatable("skyblocker.config.otherLocations.end.resetText"))
- .action((screen, opt) -> TheEnd.PROFILES_STATS.put(TheEnd.EndStats.EMPTY))
+ .action((screen, opt) -> TheEnd.PROFILES_STATS.put(TheEnd.EndStats.EMPTY.get()))
.build())
.option(Option.<Boolean>createBuilder()
.name(Text.translatable("skyblocker.config.otherLocations.end.muteEndermanSounds"))
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/end/EndHudWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/end/EndHudWidget.java
index ddfc892f..7cc24769 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/end/EndHudWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/end/EndHudWidget.java
@@ -68,7 +68,7 @@ public class EndHudWidget extends ComponentBasedWidget {
public void updateContent() {
// Zealots
if (SkyblockerConfigManager.get().otherLocations.end.zealotKillsEnabled) {
- TheEnd.EndStats endStats = TheEnd.PROFILES_STATS.putIfAbsent(TheEnd.EndStats.EMPTY);
+ TheEnd.EndStats endStats = TheEnd.PROFILES_STATS.computeIfAbsent(TheEnd.EndStats.EMPTY);
addComponent(new IcoTextComponent(ENDERMAN_HEAD, Text.literal("Zealots").formatted(Formatting.BOLD)));
addComponent(new PlainTextComponent(Text.translatable("skyblocker.end.hud.zealotsSinceLastEye", endStats.zealotsSinceLastEye())));
addComponent(new PlainTextComponent(Text.translatable("skyblocker.end.hud.zealotsTotalKills", endStats.totalZealotKills())));
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/end/TheEnd.java b/src/main/java/de/hysky/skyblocker/skyblock/end/TheEnd.java
index a87ac6d9..689544a7 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/end/TheEnd.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/end/TheEnd.java
@@ -31,7 +31,11 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.nio.file.Path;
-import java.util.*;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.UUID;
+import java.util.function.Supplier;
public class TheEnd {
protected static final Logger LOGGER = LoggerFactory.getLogger(TheEnd.class);
@@ -132,7 +136,7 @@ public class TheEnd {
public static void onEntityDeath(Entity entity) {
if (!(entity instanceof EndermanEntity enderman) || !isZealot(enderman)) return;
if (hitZealots.contains(enderman.getUuid())) {
- EndStats stats = PROFILES_STATS.putIfAbsent(EndStats.EMPTY);
+ EndStats stats = PROFILES_STATS.computeIfAbsent(EndStats.EMPTY);
if (isSpecialZealot(enderman)) {
PROFILES_STATS.put(new EndStats(stats.totalZealotKills() + 1, 0, stats.eyes() + 1));
} else {
@@ -172,7 +176,7 @@ public class TheEnd {
Codec.INT.fieldOf("zealotsSinceLastEye").forGetter(EndStats::zealotsSinceLastEye),
Codec.INT.fieldOf("eyes").forGetter(EndStats::eyes)
).apply(instance, EndStats::new));
- public static final EndStats EMPTY = new EndStats(0, 0, 0);
+ public static final Supplier<EndStats> EMPTY = () -> new EndStats(0, 0, 0);
}
public record ProtectorLocation(int x, int z, Text name, Waypoint waypoint) {
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/MuseumItemCache.java b/src/main/java/de/hysky/skyblocker/skyblock/item/MuseumItemCache.java
index 84ceb82c..554d2584 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/MuseumItemCache.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/MuseumItemCache.java
@@ -84,7 +84,7 @@ public class MuseumItemCache {
String profileId = Utils.getProfileId();
if (!itemId.isEmpty() && !profileId.isEmpty()) {
- MUSEUM_ITEM_CACHE.putIfAbsent(ProfileMuseumData.EMPTY.get()).collectedItemIds().add(itemId);
+ MUSEUM_ITEM_CACHE.computeIfAbsent(ProfileMuseumData.EMPTY).collectedItemIds().add(itemId);
MUSEUM_ITEM_CACHE.save();
}
}
diff --git a/src/main/java/de/hysky/skyblocker/utils/profile/ProfiledData.java b/src/main/java/de/hysky/skyblocker/utils/profile/ProfiledData.java
index f7afc2f1..4b3ed430 100644
--- a/src/main/java/de/hysky/skyblocker/utils/profile/ProfiledData.java
+++ b/src/main/java/de/hysky/skyblocker/utils/profile/ProfiledData.java
@@ -131,18 +131,22 @@ public class ProfiledData<T> {
return getPlayerData(uuid).get(profileId);
}
+ @Nullable
public T put(T value) {
return put(Utils.getUuid(), Utils.getProfileId(), value);
}
+ @Nullable
public T put(UUID uuid, String profileId, T value) {
return getPlayerData(uuid).put(profileId, value);
}
+ @Nullable
public T putIfAbsent(T value) {
return putIfAbsent(Utils.getUuid(), Utils.getProfileId(), value);
}
+ @Nullable
public T putIfAbsent(UUID uuid, String profileId, T value) {
return getPlayerData(uuid).putIfAbsent(profileId, value);
}
@@ -155,10 +159,12 @@ public class ProfiledData<T> {
return getPlayerData(uuid).computeIfAbsent(profileId, _profileId -> valueSupplier.get());
}
+ @Nullable
public T remove() {
return remove(Utils.getUuid(), Utils.getProfileId());
}
+ @Nullable
public T remove(UUID uuid, String profileId) {
return getPlayerData(uuid).remove(profileId);
}