From adbd80e0a67a5794bd50cb133a343dfc234864ad Mon Sep 17 00:00:00 2001 From: viciscat <51047087+viciscat@users.noreply.github.com> Date: Tue, 6 Aug 2024 22:36:58 +0200 Subject: yea --- .../skyblock/dwarven/CrystalsChestHighlighter.java | 2 +- .../skyblock/waypoint/OrderedWaypoints.java | 22 ++++++++++------------ .../java/de/hysky/skyblocker/utils/CodecUtils.java | 22 ++++++++++++++++++++++ 3 files changed, 33 insertions(+), 13 deletions(-) create mode 100644 src/main/java/de/hysky/skyblocker/utils/CodecUtils.java (limited to 'src/main/java/de') diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsChestHighlighter.java b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsChestHighlighter.java index 85d17e5f..bc794d89 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsChestHighlighter.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsChestHighlighter.java @@ -154,7 +154,7 @@ public class CrystalsChestHighlighter { Vec3d highlightSpot = Vec3d.ZERO; //if to old remove particle - activeParticles.entrySet().removeIf(e -> System.currentTimeMillis() - e.getValue() > MAX_PARTICLE_LIFE_TIME); + activeParticles.object2LongEntrySet().removeIf(e -> System.currentTimeMillis() - e.getLongValue() > MAX_PARTICLE_LIFE_TIME); //add up all particle within range of active block for (Vec3d particlePos : activeParticles.keySet()) { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/OrderedWaypoints.java b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/OrderedWaypoints.java index b88eb38f..c6901d4c 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/OrderedWaypoints.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/OrderedWaypoints.java @@ -12,6 +12,7 @@ import com.mojang.serialization.JsonOps; import com.mojang.serialization.codecs.RecordCodecBuilder; import de.hysky.skyblocker.SkyblockerMod; import de.hysky.skyblocker.config.SkyblockerConfigManager; +import de.hysky.skyblocker.utils.CodecUtils; import de.hysky.skyblocker.utils.ColorUtils; import de.hysky.skyblocker.utils.Constants; import de.hysky.skyblocker.utils.Utils; @@ -45,10 +46,7 @@ import java.io.ByteArrayOutputStream; import java.nio.file.Files; import java.nio.file.NoSuchFileException; import java.nio.file.Path; -import java.util.Base64; -import java.util.List; -import java.util.Map; -import java.util.Optional; +import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Semaphore; import java.util.zip.GZIPInputStream; @@ -349,7 +347,7 @@ public class OrderedWaypoints { //I think Cole Weight ignores the colors and overrides them so we will comment this out //float[] colorComponents = (waypoint.r().isPresent() && waypoint.g().isPresent() && waypoint.b().isPresent()) ? new float[] { waypoint.r().get() / 255f, waypoint.g().get() / 255f, waypoint.b().get() / 255f } : new float[0]; - convertedWaypoints.add(new OrderedWaypoint(new BlockPos(waypoint.x().get(), waypoint.y().get(), waypoint.z().get()), new float[0])); + convertedWaypoints.add(new OrderedWaypoint(new BlockPos(waypoint.x().getAsInt(), waypoint.y().getAsInt(), waypoint.z().getAsInt()), new float[0])); } } @@ -425,14 +423,14 @@ public class OrderedWaypoints { } } - private record ColeWeightWaypoint(Optional x, Optional y, Optional z, Optional r, Optional g, Optional b, Optional options) { + private record ColeWeightWaypoint(OptionalInt x, OptionalInt y, OptionalInt z, OptionalInt r, OptionalInt g, OptionalInt b, Optional options) { static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - Codec.INT.optionalFieldOf("x").forGetter(ColeWeightWaypoint::x), - Codec.INT.optionalFieldOf("y").forGetter(ColeWeightWaypoint::y), - Codec.INT.optionalFieldOf("z").forGetter(ColeWeightWaypoint::z), - Codec.INT.optionalFieldOf("r").forGetter(ColeWeightWaypoint::r), - Codec.INT.optionalFieldOf("g").forGetter(ColeWeightWaypoint::g), - Codec.INT.optionalFieldOf("b").forGetter(ColeWeightWaypoint::b), + CodecUtils.optionalInt(Codec.INT.optionalFieldOf("x")).forGetter(ColeWeightWaypoint::x), + CodecUtils.optionalInt(Codec.INT.optionalFieldOf("y")).forGetter(ColeWeightWaypoint::y), + CodecUtils.optionalInt(Codec.INT.optionalFieldOf("z")).forGetter(ColeWeightWaypoint::z), + CodecUtils.optionalInt(Codec.INT.optionalFieldOf("r")).forGetter(ColeWeightWaypoint::r), + CodecUtils.optionalInt(Codec.INT.optionalFieldOf("g")).forGetter(ColeWeightWaypoint::g), + CodecUtils.optionalInt(Codec.INT.optionalFieldOf("b")).forGetter(ColeWeightWaypoint::b), Options.CODEC.optionalFieldOf("options").forGetter(ColeWeightWaypoint::options)) .apply(instance, ColeWeightWaypoint::new)); static final Codec> LIST_CODEC = CODEC.listOf(); diff --git a/src/main/java/de/hysky/skyblocker/utils/CodecUtils.java b/src/main/java/de/hysky/skyblocker/utils/CodecUtils.java new file mode 100644 index 00000000..ec81af58 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/utils/CodecUtils.java @@ -0,0 +1,22 @@ +package de.hysky.skyblocker.utils; + +import com.mojang.serialization.MapCodec; + +import java.util.Optional; +import java.util.OptionalDouble; +import java.util.OptionalInt; + +public final class CodecUtils { + + private CodecUtils() { + throw new IllegalStateException("Uhhhh no? like just no. What are you trying to do? D- Do you think this will be useful to instantiate this? Like it's private, so you went through the effort of putting an accessor actually i'm not sure you can accessor a constructor. can you? so did you really put an access widener for that? like really? honestly this is just sad. Plus there isn't even any method in here that requires an instance. There's only static methods. like bruh. you know what i'm done typing shit for you to read, bye i'm leaving *voice lowers as I leave* I swear those modders think they can access all they want sheesh *comes back instantly* AND I SWEAR IF YOU INJECT SO THIS ERROR CANNOT BE THROWN I WILL SEND YOU TO HELL'S FREEZER"); + } + + public static MapCodec optionalInt(MapCodec> codec) { + return codec.xmap(opt -> opt.map(OptionalInt::of).orElseGet(OptionalInt::empty), optInt -> optInt.isPresent() ? Optional.of(optInt.getAsInt()) : Optional.empty()); + } + + public static MapCodec optionalDouble(MapCodec> codec) { + return codec.xmap(opt -> opt.map(OptionalDouble::of).orElseGet(OptionalDouble::empty), optDouble -> optDouble.isPresent() ? Optional.of(optDouble.getAsDouble()) : Optional.empty()); + } +} -- cgit