diff --git a/anticheat/src/main/java/net/swofty/anticheat/api/AnticheatAPI.java b/anticheat/src/main/java/net/swofty/anticheat/api/AnticheatAPI.java index b9fd80556..e109e7142 100644 --- a/anticheat/src/main/java/net/swofty/anticheat/api/AnticheatAPI.java +++ b/anticheat/src/main/java/net/swofty/anticheat/api/AnticheatAPI.java @@ -12,7 +12,7 @@ /** * Main API entry point for interacting with the Swofty Anticheat. - * + *

* This API allows you to: * - Register custom movement modifiers * - Store and retrieve custom player data diff --git a/anticheat/src/main/java/net/swofty/anticheat/engine/MovementEvents.java b/anticheat/src/main/java/net/swofty/anticheat/engine/MovementEvents.java index 124d5f177..82e8ca8fb 100644 --- a/anticheat/src/main/java/net/swofty/anticheat/engine/MovementEvents.java +++ b/anticheat/src/main/java/net/swofty/anticheat/engine/MovementEvents.java @@ -3,13 +3,17 @@ import net.swofty.anticheat.event.AntiCheatListener; import net.swofty.anticheat.event.ListenerMethod; import net.swofty.anticheat.event.events.AnticheatPacketEvent; -import net.swofty.anticheat.event.packet.*; +import net.swofty.anticheat.event.packet.IsOnGroundPacket; +import net.swofty.anticheat.event.packet.PositionAndRotationPacket; +import net.swofty.anticheat.event.packet.PositionPacket; +import net.swofty.anticheat.event.packet.RotationPacket; +import net.swofty.anticheat.event.packet.SwoftyPacket; import net.swofty.anticheat.math.Pos; public class MovementEvents extends AntiCheatListener { @ListenerMethod public void onPacketReceive(AnticheatPacketEvent event) { - SwoftyPacket packet = event.getPacket(); + SwoftyPacket packet = event.packet(); SwoftyPlayer player = packet.getPlayer(); Pos pos = player.getCurrentTick().getPos(); diff --git a/anticheat/src/main/java/net/swofty/anticheat/engine/PingEvents.java b/anticheat/src/main/java/net/swofty/anticheat/engine/PingEvents.java index c3bf1c71e..b0e915f75 100644 --- a/anticheat/src/main/java/net/swofty/anticheat/engine/PingEvents.java +++ b/anticheat/src/main/java/net/swofty/anticheat/engine/PingEvents.java @@ -9,7 +9,7 @@ public class PingEvents extends AntiCheatListener { @ListenerMethod public void onPacketReceive(AnticheatPacketEvent event) { - SwoftyPacket packet = event.getPacket(); + SwoftyPacket packet = event.packet(); if (packet instanceof PingResponsePacket pingResponsePacket) { SwoftyPlayer player = pingResponsePacket.getPlayer(); if (player != null) player.handlePingResponse(pingResponsePacket.getRequestId()); diff --git a/anticheat/src/main/java/net/swofty/anticheat/event/events/AnticheatPacketEvent.java b/anticheat/src/main/java/net/swofty/anticheat/event/events/AnticheatPacketEvent.java index ffbe5cd91..8438003d3 100644 --- a/anticheat/src/main/java/net/swofty/anticheat/event/events/AnticheatPacketEvent.java +++ b/anticheat/src/main/java/net/swofty/anticheat/event/events/AnticheatPacketEvent.java @@ -1,14 +1,7 @@ package net.swofty.anticheat.event.events; -import lombok.Getter; import net.swofty.anticheat.event.packet.SwoftyPacket; -@Getter -public class AnticheatPacketEvent { - private final SwoftyPacket packet; - - public AnticheatPacketEvent(SwoftyPacket packet) { - this.packet = packet; - } +public record AnticheatPacketEvent(SwoftyPacket packet) { } diff --git a/anticheat/src/main/java/net/swofty/anticheat/flag/flags/AimFlag.java b/anticheat/src/main/java/net/swofty/anticheat/flag/flags/AimFlag.java index 0e86022c4..6c3a8156b 100644 --- a/anticheat/src/main/java/net/swofty/anticheat/flag/flags/AimFlag.java +++ b/anticheat/src/main/java/net/swofty/anticheat/flag/flags/AimFlag.java @@ -1,13 +1,15 @@ package net.swofty.anticheat.flag.flags; -import net.swofty.anticheat.engine.PlayerTickInformation; import net.swofty.anticheat.event.ListenerMethod; import net.swofty.anticheat.event.events.PlayerAttackEvent; import net.swofty.anticheat.event.events.PlayerPositionUpdateEvent; import net.swofty.anticheat.flag.Flag; -import net.swofty.anticheat.math.Pos; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; public class AimFlag extends Flag { // Track rotation changes per player diff --git a/anticheat/src/main/java/net/swofty/anticheat/flag/flags/BadPacketsFlag.java b/anticheat/src/main/java/net/swofty/anticheat/flag/flags/BadPacketsFlag.java index b29436812..1abaeb6d0 100644 --- a/anticheat/src/main/java/net/swofty/anticheat/flag/flags/BadPacketsFlag.java +++ b/anticheat/src/main/java/net/swofty/anticheat/flag/flags/BadPacketsFlag.java @@ -5,9 +5,10 @@ import net.swofty.anticheat.event.events.PlayerPositionUpdateEvent; import net.swofty.anticheat.flag.Flag; import net.swofty.anticheat.math.Pos; -import net.swofty.anticheat.math.Vel; -import java.util.*; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; public class BadPacketsFlag extends Flag { // Track packet patterns per player diff --git a/anticheat/src/main/java/net/swofty/anticheat/flag/flags/FlightFlag.java b/anticheat/src/main/java/net/swofty/anticheat/flag/flags/FlightFlag.java index 35c7f6072..dba09623c 100644 --- a/anticheat/src/main/java/net/swofty/anticheat/flag/flags/FlightFlag.java +++ b/anticheat/src/main/java/net/swofty/anticheat/flag/flags/FlightFlag.java @@ -18,7 +18,7 @@ public class FlightFlag extends Flag { @ListenerMethod public void onPacket(AnticheatPacketEvent event) { - if (event.getPacket() instanceof AbilitiesPacket abilities) { + if (event.packet() instanceof AbilitiesPacket abilities) { SwoftyPlayer player = SwoftyPlayer.players.get(abilities.getPlayer().getUuid()); if (player != null) { player.updateAbilities(abilities.isFlying(), abilities.isAllowFlight(), abilities.isCreativeMode()); diff --git a/anticheat/src/main/java/net/swofty/anticheat/flag/flags/OnGroundSpoofFlag.java b/anticheat/src/main/java/net/swofty/anticheat/flag/flags/OnGroundSpoofFlag.java index 1a9be8468..f5cb39d95 100644 --- a/anticheat/src/main/java/net/swofty/anticheat/flag/flags/OnGroundSpoofFlag.java +++ b/anticheat/src/main/java/net/swofty/anticheat/flag/flags/OnGroundSpoofFlag.java @@ -3,8 +3,6 @@ import net.swofty.anticheat.event.ListenerMethod; import net.swofty.anticheat.event.events.PlayerPositionUpdateEvent; import net.swofty.anticheat.flag.Flag; -import net.swofty.anticheat.math.Pos; -import net.swofty.anticheat.math.Vel; public class OnGroundSpoofFlag extends Flag { @ListenerMethod diff --git a/anticheat/src/main/java/net/swofty/anticheat/flag/flags/TimerFlag.java b/anticheat/src/main/java/net/swofty/anticheat/flag/flags/TimerFlag.java index 4ee0fc701..677a4aa83 100644 --- a/anticheat/src/main/java/net/swofty/anticheat/flag/flags/TimerFlag.java +++ b/anticheat/src/main/java/net/swofty/anticheat/flag/flags/TimerFlag.java @@ -5,7 +5,6 @@ import net.swofty.anticheat.event.ListenerMethod; import net.swofty.anticheat.event.events.PlayerPositionUpdateEvent; import net.swofty.anticheat.flag.Flag; -import net.swofty.anticheat.loader.SwoftyAnticheat; import java.util.HashMap; import java.util.Map; diff --git a/anticheat/src/main/java/net/swofty/anticheat/loader/minestom/packets/MinestomHandlerAnimationPacket.java b/anticheat/src/main/java/net/swofty/anticheat/loader/minestom/packets/MinestomHandlerAnimationPacket.java index 669c0bf52..25e744f1a 100644 --- a/anticheat/src/main/java/net/swofty/anticheat/loader/minestom/packets/MinestomHandlerAnimationPacket.java +++ b/anticheat/src/main/java/net/swofty/anticheat/loader/minestom/packets/MinestomHandlerAnimationPacket.java @@ -1,6 +1,5 @@ package net.swofty.anticheat.loader.minestom.packets; -import net.minestom.server.entity.Player; import net.minestom.server.entity.PlayerHand; import net.minestom.server.network.packet.client.play.ClientAnimationPacket; import net.swofty.anticheat.event.packet.AnimationPacket; diff --git a/anticheat/src/main/java/net/swofty/anticheat/loader/minestom/packets/MinestomHandlerBlockPlacePacket.java b/anticheat/src/main/java/net/swofty/anticheat/loader/minestom/packets/MinestomHandlerBlockPlacePacket.java index 28dea2a3a..6e6f84ef6 100644 --- a/anticheat/src/main/java/net/swofty/anticheat/loader/minestom/packets/MinestomHandlerBlockPlacePacket.java +++ b/anticheat/src/main/java/net/swofty/anticheat/loader/minestom/packets/MinestomHandlerBlockPlacePacket.java @@ -1,6 +1,5 @@ package net.swofty.anticheat.loader.minestom.packets; -import net.minestom.server.entity.Player; import net.minestom.server.entity.PlayerHand; import net.minestom.server.network.packet.client.play.ClientPlayerBlockPlacementPacket; import net.swofty.anticheat.event.packet.BlockPlacePacket; diff --git a/anticheat/src/main/java/net/swofty/anticheat/world/Block.java b/anticheat/src/main/java/net/swofty/anticheat/world/Block.java index 58bdcca2e..e69e34412 100644 --- a/anticheat/src/main/java/net/swofty/anticheat/world/Block.java +++ b/anticheat/src/main/java/net/swofty/anticheat/world/Block.java @@ -1,17 +1,5 @@ package net.swofty.anticheat.world; -import lombok.Getter; - -@Getter -public class Block { - private final boolean isWater; - private final boolean isLava; - private final BoundingBox boundingBox; - - public Block(boolean isWater, boolean isLava, BoundingBox boundingBox) { - this.isWater = isWater; - this.isLava = isLava; - this.boundingBox = boundingBox; - } +public record Block(boolean isWater, boolean isLava, BoundingBox boundingBox) { } diff --git a/anticheat/src/main/java/net/swofty/anticheat/world/BoundingBox.java b/anticheat/src/main/java/net/swofty/anticheat/world/BoundingBox.java index 05f1994a9..9e39365f3 100644 --- a/anticheat/src/main/java/net/swofty/anticheat/world/BoundingBox.java +++ b/anticheat/src/main/java/net/swofty/anticheat/world/BoundingBox.java @@ -1,18 +1,4 @@ package net.swofty.anticheat.world; -import lombok.Getter; - -@Getter -public class BoundingBox { - private final float minX, minY, minZ; - private final float maxX, maxY, maxZ; - - public BoundingBox(float minX, float minY, float minZ, float maxX, float maxY, float maxZ) { - this.minX = minX; - this.minY = minY; - this.minZ = minZ; - this.maxX = maxX; - this.maxY = maxY; - this.maxZ = maxZ; - } +public record BoundingBox(float minX, float minY, float minZ, float maxX, float maxY, float maxZ) { } diff --git a/commons/src/main/java/net/swofty/commons/ServiceType.java b/commons/src/main/java/net/swofty/commons/ServiceType.java index b72b4a97e..5ec2edcdf 100644 --- a/commons/src/main/java/net/swofty/commons/ServiceType.java +++ b/commons/src/main/java/net/swofty/commons/ServiceType.java @@ -11,5 +11,4 @@ public enum ServiceType { ORCHESTRATOR, FRIEND, PUNISHMENT, - ; } diff --git a/commons/src/main/java/net/swofty/commons/friend/FriendEvent.java b/commons/src/main/java/net/swofty/commons/friend/FriendEvent.java index 4e4c60c49..df7b2a6a4 100644 --- a/commons/src/main/java/net/swofty/commons/friend/FriendEvent.java +++ b/commons/src/main/java/net/swofty/commons/friend/FriendEvent.java @@ -35,7 +35,6 @@ public FriendEvent() { throw new RuntimeException("Failed to find friend event class: " + className + " in " + Arrays.toString(packageNames)); } - @SuppressWarnings("unchecked") private static FriendEvent createDummyInstance(Class clazz) throws Exception { String className = clazz.getSimpleName(); diff --git a/commons/src/main/java/net/swofty/commons/party/FullParty.java b/commons/src/main/java/net/swofty/commons/party/FullParty.java index 2520e8a04..007be4e87 100644 --- a/commons/src/main/java/net/swofty/commons/party/FullParty.java +++ b/commons/src/main/java/net/swofty/commons/party/FullParty.java @@ -43,17 +43,17 @@ public static Serializer getStaticSerializer() { @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(FullParty value) { JSONObject json = new JSONObject(); json.put("uuid", value.uuid.toString()); json.put("members", value.members.stream() - .map(member -> new JSONObject() - .put("uuid", member.uuid.toString()) - .put("role", member.role.name()) - .put("joined", member.joined) - ).toList()); + .map(member -> new JSONObject() + .put("uuid", member.uuid.toString()) + .put("role", member.role.name()) + .put("joined", member.joined) + ).toList()); return json.toString(); } @@ -62,15 +62,15 @@ public FullParty deserialize(String json) { JSONObject jsonObject = new JSONObject(json); UUID uuid = UUID.fromString(jsonObject.getString("uuid")); List members = jsonObject.getJSONArray("members").toList().stream() - .map(member -> { - Map memberObject = (Map) member; - - return new Member( - UUID.fromString(memberObject.get("uuid").toString()), - Role.valueOf(memberObject.get("role").toString()), - memberObject.get("joined").toString().equals("true") - ); - }).toList(); + .map(member -> { + Map memberObject = (Map) member; + + return new Member( + UUID.fromString(memberObject.get("uuid").toString()), + Role.valueOf(memberObject.get("role").toString()), + memberObject.get("joined").toString().equals("true") + ); + }).toList(); return new FullParty(uuid, members); } diff --git a/commons/src/main/java/net/swofty/commons/party/PartyEvent.java b/commons/src/main/java/net/swofty/commons/party/PartyEvent.java index c89d75927..37db42a6b 100644 --- a/commons/src/main/java/net/swofty/commons/party/PartyEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/PartyEvent.java @@ -42,7 +42,6 @@ public List getParticipants() { throw new RuntimeException("Failed to find party event class: " + className + " in " + Arrays.toString(packageNames)); } - @SuppressWarnings("unchecked") private static PartyEvent createDummyInstance(Class clazz) throws Exception { String className = clazz.getSimpleName(); diff --git a/commons/src/main/java/net/swofty/commons/party/PendingParty.java b/commons/src/main/java/net/swofty/commons/party/PendingParty.java index a3b30d774..e95c2bdca 100644 --- a/commons/src/main/java/net/swofty/commons/party/PendingParty.java +++ b/commons/src/main/java/net/swofty/commons/party/PendingParty.java @@ -35,7 +35,7 @@ public static Serializer getStaticSerializer() { @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PendingParty value) { JSONObject json = new JSONObject(); @@ -49,9 +49,9 @@ public String serialize(PendingParty value) { public PendingParty deserialize(String json) { JSONObject jsonObject = new JSONObject(json); return new PendingParty( - UUID.fromString(jsonObject.getString("resultPartyUUID")), - UUID.fromString(jsonObject.getString("invitee")), - UUID.fromString(jsonObject.getString("leader")) + UUID.fromString(jsonObject.getString("resultPartyUUID")), + UUID.fromString(jsonObject.getString("invitee")), + UUID.fromString(jsonObject.getString("leader")) ); } diff --git a/commons/src/main/java/net/swofty/commons/party/events/PartyAcceptInviteEvent.java b/commons/src/main/java/net/swofty/commons/party/events/PartyAcceptInviteEvent.java index bbf2d327c..385b8c3b8 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/PartyAcceptInviteEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/PartyAcceptInviteEvent.java @@ -27,7 +27,7 @@ public List getParticipants() { @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyAcceptInviteEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/PartyChatMessageEvent.java b/commons/src/main/java/net/swofty/commons/party/events/PartyChatMessageEvent.java index 21c498ad7..7358b2ec7 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/PartyChatMessageEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/PartyChatMessageEvent.java @@ -27,7 +27,7 @@ public List getParticipants() { @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyChatMessageEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/PartyDemoteRequestEvent.java b/commons/src/main/java/net/swofty/commons/party/events/PartyDemoteRequestEvent.java index 692a720e8..6a6053055 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/PartyDemoteRequestEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/PartyDemoteRequestEvent.java @@ -27,7 +27,7 @@ public List getParticipants() { @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyDemoteRequestEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/PartyDisbandRequestEvent.java b/commons/src/main/java/net/swofty/commons/party/events/PartyDisbandRequestEvent.java index 32bbf272a..a17614e64 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/PartyDisbandRequestEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/PartyDisbandRequestEvent.java @@ -24,7 +24,7 @@ public List getParticipants() { @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyDisbandRequestEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/PartyHijackRequestEvent.java b/commons/src/main/java/net/swofty/commons/party/events/PartyHijackRequestEvent.java index 2a1eea77e..fa3cabcbc 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/PartyHijackRequestEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/PartyHijackRequestEvent.java @@ -27,7 +27,7 @@ public List getParticipants() { @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyHijackRequestEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/PartyInviteEvent.java b/commons/src/main/java/net/swofty/commons/party/events/PartyInviteEvent.java index 991550001..9e0f7fbeb 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/PartyInviteEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/PartyInviteEvent.java @@ -12,7 +12,7 @@ public PartyInviteEvent(PendingParty party) { @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyInviteEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/PartyKickRequestEvent.java b/commons/src/main/java/net/swofty/commons/party/events/PartyKickRequestEvent.java index ec2c7f726..7c2abaaed 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/PartyKickRequestEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/PartyKickRequestEvent.java @@ -27,7 +27,7 @@ public List getParticipants() { @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyKickRequestEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/PartyLeaveRequestEvent.java b/commons/src/main/java/net/swofty/commons/party/events/PartyLeaveRequestEvent.java index 3ca311459..6825f1a9b 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/PartyLeaveRequestEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/PartyLeaveRequestEvent.java @@ -24,7 +24,7 @@ public List getParticipants() { @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyLeaveRequestEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/PartyPlayerDisconnectEvent.java b/commons/src/main/java/net/swofty/commons/party/events/PartyPlayerDisconnectEvent.java index 8fb1be3fd..5cfdf99ca 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/PartyPlayerDisconnectEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/PartyPlayerDisconnectEvent.java @@ -24,7 +24,7 @@ public List getParticipants() { @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyPlayerDisconnectEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/PartyPlayerRejoinEvent.java b/commons/src/main/java/net/swofty/commons/party/events/PartyPlayerRejoinEvent.java index c655c6d5d..7c57e035e 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/PartyPlayerRejoinEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/PartyPlayerRejoinEvent.java @@ -24,7 +24,7 @@ public List getParticipants() { @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyPlayerRejoinEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/PartyPlayerSwitchedServerEvent.java b/commons/src/main/java/net/swofty/commons/party/events/PartyPlayerSwitchedServerEvent.java index 01f16d49d..c7a13dd1b 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/PartyPlayerSwitchedServerEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/PartyPlayerSwitchedServerEvent.java @@ -24,7 +24,7 @@ public List getParticipants() { @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyPlayerSwitchedServerEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/PartyPromoteRequestEvent.java b/commons/src/main/java/net/swofty/commons/party/events/PartyPromoteRequestEvent.java index f6637d8e9..4d828f5f9 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/PartyPromoteRequestEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/PartyPromoteRequestEvent.java @@ -27,7 +27,7 @@ public List getParticipants() { @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyPromoteRequestEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/PartyTransferRequestEvent.java b/commons/src/main/java/net/swofty/commons/party/events/PartyTransferRequestEvent.java index 0d0b2cee8..cf0fa3e9d 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/PartyTransferRequestEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/PartyTransferRequestEvent.java @@ -27,7 +27,7 @@ public List getParticipants() { @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyTransferRequestEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/PartyWarpRequestEvent.java b/commons/src/main/java/net/swofty/commons/party/events/PartyWarpRequestEvent.java index e6c57b7f2..132e0aed1 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/PartyWarpRequestEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/PartyWarpRequestEvent.java @@ -24,7 +24,7 @@ public List getParticipants() { @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyWarpRequestEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/response/PartyChatMessageResponseEvent.java b/commons/src/main/java/net/swofty/commons/party/events/response/PartyChatMessageResponseEvent.java index 7ce842177..9bcd47a8b 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/response/PartyChatMessageResponseEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/response/PartyChatMessageResponseEvent.java @@ -26,7 +26,7 @@ public PartyChatMessageResponseEvent(FullParty party, UUID player, String messag @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyChatMessageResponseEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/response/PartyDisbandResponseEvent.java b/commons/src/main/java/net/swofty/commons/party/events/response/PartyDisbandResponseEvent.java index 8f9f26d8d..e4ac3c63d 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/response/PartyDisbandResponseEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/response/PartyDisbandResponseEvent.java @@ -25,7 +25,7 @@ public PartyDisbandResponseEvent(FullParty party, UUID disbander, String reason) @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyDisbandResponseEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/response/PartyInviteExpiredResponseEvent.java b/commons/src/main/java/net/swofty/commons/party/events/response/PartyInviteExpiredResponseEvent.java index 0b13d3f45..ed63d6992 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/response/PartyInviteExpiredResponseEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/response/PartyInviteExpiredResponseEvent.java @@ -23,7 +23,7 @@ public PartyInviteExpiredResponseEvent(Party party, UUID inviter, UUID invitee) @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyInviteExpiredResponseEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/response/PartyInviteResponseEvent.java b/commons/src/main/java/net/swofty/commons/party/events/response/PartyInviteResponseEvent.java index 826e49995..3739ffd52 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/response/PartyInviteResponseEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/response/PartyInviteResponseEvent.java @@ -22,7 +22,7 @@ public PartyInviteResponseEvent(PendingParty party) { @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyInviteResponseEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/response/PartyLeaderTransferResponseEvent.java b/commons/src/main/java/net/swofty/commons/party/events/response/PartyLeaderTransferResponseEvent.java index 1246fe343..dd019c910 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/response/PartyLeaderTransferResponseEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/response/PartyLeaderTransferResponseEvent.java @@ -22,7 +22,7 @@ public PartyLeaderTransferResponseEvent(FullParty party, UUID oldLeader, UUID ne @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyLeaderTransferResponseEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberDisconnectTimeoutResponseEvent.java b/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberDisconnectTimeoutResponseEvent.java index a2b5ac40c..5c0f919dd 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberDisconnectTimeoutResponseEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberDisconnectTimeoutResponseEvent.java @@ -22,7 +22,7 @@ public PartyMemberDisconnectTimeoutResponseEvent(FullParty party, UUID timedOutP @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyMemberDisconnectTimeoutResponseEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberDisconnectedResponseEvent.java b/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberDisconnectedResponseEvent.java index 3d4b6cff3..59747810e 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberDisconnectedResponseEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberDisconnectedResponseEvent.java @@ -22,7 +22,7 @@ public PartyMemberDisconnectedResponseEvent(FullParty party, UUID disconnectedPl @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyMemberDisconnectedResponseEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberJoinResponseEvent.java b/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberJoinResponseEvent.java index c34403213..73ce61d10 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberJoinResponseEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberJoinResponseEvent.java @@ -24,7 +24,7 @@ public PartyMemberJoinResponseEvent(FullParty party, UUID inviter, UUID joiner) @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyMemberJoinResponseEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberKickResponseEvent.java b/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberKickResponseEvent.java index e9b6e9cc1..0a6de9906 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberKickResponseEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberKickResponseEvent.java @@ -22,7 +22,7 @@ public PartyMemberKickResponseEvent(FullParty party, UUID kicker, UUID kicked) { @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyMemberKickResponseEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberLeaveResponseEvent.java b/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberLeaveResponseEvent.java index 2d4a56b26..93355c1c9 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberLeaveResponseEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberLeaveResponseEvent.java @@ -19,7 +19,7 @@ public PartyMemberLeaveResponseEvent(FullParty party, UUID leaver) { @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyMemberLeaveResponseEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberRejoinedResponseEvent.java b/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberRejoinedResponseEvent.java index ba2d3fc8c..26fafa241 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberRejoinedResponseEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/response/PartyMemberRejoinedResponseEvent.java @@ -19,7 +19,7 @@ public PartyMemberRejoinedResponseEvent(FullParty party, UUID rejoinedPlayer) { @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyMemberRejoinedResponseEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/response/PartyPlayerSwitchedServerResponseEvent.java b/commons/src/main/java/net/swofty/commons/party/events/response/PartyPlayerSwitchedServerResponseEvent.java index 0b9315a1c..7ced13b29 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/response/PartyPlayerSwitchedServerResponseEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/response/PartyPlayerSwitchedServerResponseEvent.java @@ -19,7 +19,7 @@ public PartyPlayerSwitchedServerResponseEvent(FullParty party, UUID mover) { @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyPlayerSwitchedServerResponseEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/response/PartyPromotionResponseEvent.java b/commons/src/main/java/net/swofty/commons/party/events/response/PartyPromotionResponseEvent.java index c2e757262..be35581de 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/response/PartyPromotionResponseEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/response/PartyPromotionResponseEvent.java @@ -25,7 +25,7 @@ public PartyPromotionResponseEvent(FullParty party, UUID promoter, UUID promoted @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyPromotionResponseEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/party/events/response/PartyWarpOverviewResponseEvent.java b/commons/src/main/java/net/swofty/commons/party/events/response/PartyWarpOverviewResponseEvent.java index 2195d48cd..ae8f96b75 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/response/PartyWarpOverviewResponseEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/response/PartyWarpOverviewResponseEvent.java @@ -36,7 +36,7 @@ public PartyWarpOverviewResponseEvent(FullParty party, UUID warper, List s @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyWarpOverviewResponseEvent value) { JSONObject json = new JSONObject(); @@ -86,7 +86,8 @@ public PartyWarpOverviewResponseEvent deserialize(String json) { for (String key : failureReasonsJson.keySet()) { try { failureReasons.put(UUID.fromString(key), failureReasonsJson.getString(key)); - } catch (Exception ignored) {} + } catch (Exception ignored) { + } } } diff --git a/commons/src/main/java/net/swofty/commons/party/events/response/PartyWarpResponseEvent.java b/commons/src/main/java/net/swofty/commons/party/events/response/PartyWarpResponseEvent.java index 6e4ef4065..b43e4931d 100644 --- a/commons/src/main/java/net/swofty/commons/party/events/response/PartyWarpResponseEvent.java +++ b/commons/src/main/java/net/swofty/commons/party/events/response/PartyWarpResponseEvent.java @@ -19,7 +19,7 @@ public PartyWarpResponseEvent(FullParty party, UUID warper) { @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(PartyWarpResponseEvent value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/protocol/objects/orchestrator/ChooseGameProtocolObject.java b/commons/src/main/java/net/swofty/commons/protocol/objects/orchestrator/ChooseGameProtocolObject.java index ae4d896db..95168ae6f 100644 --- a/commons/src/main/java/net/swofty/commons/protocol/objects/orchestrator/ChooseGameProtocolObject.java +++ b/commons/src/main/java/net/swofty/commons/protocol/objects/orchestrator/ChooseGameProtocolObject.java @@ -13,7 +13,7 @@ public class ChooseGameProtocolObject extends ProtocolObject @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(ChooseGameMessage value) { JSONObject json = new JSONObject(); @@ -27,9 +27,9 @@ public String serialize(ChooseGameMessage value) { public ChooseGameMessage deserialize(String json) { JSONObject obj = new JSONObject(json); return new ChooseGameMessage( - UUID.fromString(obj.getString("uuid")), - UnderstandableProxyServer.singleFromJSON(obj.getJSONObject("server")), - obj.getString("gameId") + UUID.fromString(obj.getString("uuid")), + UnderstandableProxyServer.singleFromJSON(obj.getJSONObject("server")), + obj.getString("gameId") ); } @@ -42,7 +42,7 @@ public ChooseGameMessage clone(ChooseGameMessage value) { @Override public Serializer getReturnSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(ChooseGameResponse value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/protocol/objects/orchestrator/GameHeartbeatProtocolObject.java b/commons/src/main/java/net/swofty/commons/protocol/objects/orchestrator/GameHeartbeatProtocolObject.java index 05d8d4391..45b3ea852 100644 --- a/commons/src/main/java/net/swofty/commons/protocol/objects/orchestrator/GameHeartbeatProtocolObject.java +++ b/commons/src/main/java/net/swofty/commons/protocol/objects/orchestrator/GameHeartbeatProtocolObject.java @@ -7,7 +7,9 @@ import org.json.JSONArray; import org.json.JSONObject; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; public class GameHeartbeatProtocolObject extends ProtocolObject getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(HeartbeatMessage value) { JSONObject json = new JSONObject(); @@ -58,7 +60,7 @@ public HeartbeatMessage clone(HeartbeatMessage value) { @Override public Serializer getReturnSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(HeartbeatResponse value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/protocol/objects/orchestrator/GetGameCountsProtocolObject.java b/commons/src/main/java/net/swofty/commons/protocol/objects/orchestrator/GetGameCountsProtocolObject.java index f209514f6..05bb2c399 100644 --- a/commons/src/main/java/net/swofty/commons/protocol/objects/orchestrator/GetGameCountsProtocolObject.java +++ b/commons/src/main/java/net/swofty/commons/protocol/objects/orchestrator/GetGameCountsProtocolObject.java @@ -11,7 +11,7 @@ public class GetGameCountsProtocolObject extends ProtocolObject @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(GetGameCountsMessage value) { JSONObject json = new JSONObject(); @@ -25,9 +25,9 @@ public String serialize(GetGameCountsMessage value) { public GetGameCountsMessage deserialize(String json) { JSONObject obj = new JSONObject(json); return new GetGameCountsMessage( - ServerType.valueOf(obj.getString("type")), - obj.optString("gameTypeName", null), - obj.optString("mapName", null) + ServerType.valueOf(obj.getString("type")), + obj.optString("gameTypeName", null), + obj.optString("mapName", null) ); } @@ -40,7 +40,7 @@ public GetGameCountsMessage clone(GetGameCountsMessage value) { @Override public Serializer getReturnSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(GetGameCountsResponse value) { JSONObject json = new JSONObject(); @@ -53,8 +53,8 @@ public String serialize(GetGameCountsResponse value) { public GetGameCountsResponse deserialize(String json) { JSONObject obj = new JSONObject(json); return new GetGameCountsResponse( - obj.getInt("playerCount"), - obj.getInt("gameCount") + obj.getInt("playerCount"), + obj.getInt("gameCount") ); } diff --git a/commons/src/main/java/net/swofty/commons/protocol/objects/orchestrator/GetMapsProtocolObject.java b/commons/src/main/java/net/swofty/commons/protocol/objects/orchestrator/GetMapsProtocolObject.java index 91ecfc1f8..ba778c756 100644 --- a/commons/src/main/java/net/swofty/commons/protocol/objects/orchestrator/GetMapsProtocolObject.java +++ b/commons/src/main/java/net/swofty/commons/protocol/objects/orchestrator/GetMapsProtocolObject.java @@ -6,7 +6,8 @@ import org.json.JSONArray; import org.json.JSONObject; -import java.util.*; +import java.util.ArrayList; +import java.util.List; public class GetMapsProtocolObject extends ProtocolObject getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(GetMapsMessage value) { JSONObject json = new JSONObject(); @@ -38,7 +39,7 @@ public GetMapsMessage clone(GetMapsMessage value) { @Override public Serializer getReturnSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(GetMapsResponse value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/protocol/objects/orchestrator/GetServerForMapProtocolObject.java b/commons/src/main/java/net/swofty/commons/protocol/objects/orchestrator/GetServerForMapProtocolObject.java index c27b84706..a1160e3c5 100644 --- a/commons/src/main/java/net/swofty/commons/protocol/objects/orchestrator/GetServerForMapProtocolObject.java +++ b/commons/src/main/java/net/swofty/commons/protocol/objects/orchestrator/GetServerForMapProtocolObject.java @@ -13,7 +13,7 @@ public class GetServerForMapProtocolObject extends ProtocolObject @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(GetServerForMapMessage value) { JSONObject json = new JSONObject(); @@ -28,10 +28,10 @@ public String serialize(GetServerForMapMessage value) { public GetServerForMapMessage deserialize(String json) { JSONObject obj = new JSONObject(json); return new GetServerForMapMessage( - ServerType.valueOf(obj.getString("type")), - obj.has("map") ? obj.getString("map") : null, - obj.has("mode") ? obj.getString("mode") : null, - obj.getInt("neededSlots") + ServerType.valueOf(obj.getString("type")), + obj.has("map") ? obj.getString("map") : null, + obj.has("mode") ? obj.getString("mode") : null, + obj.getInt("neededSlots") ); } @@ -44,7 +44,7 @@ public GetServerForMapMessage clone(GetServerForMapMessage value) { @Override public Serializer getReturnSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(GetServerForMapResponse value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/protocol/objects/party/GetPartyProtocolObject.java b/commons/src/main/java/net/swofty/commons/protocol/objects/party/GetPartyProtocolObject.java index 201053d5c..2f7d2d093 100644 --- a/commons/src/main/java/net/swofty/commons/protocol/objects/party/GetPartyProtocolObject.java +++ b/commons/src/main/java/net/swofty/commons/protocol/objects/party/GetPartyProtocolObject.java @@ -14,7 +14,7 @@ public class GetPartyProtocolObject extends ProtocolObject @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(GetPartyMessage value) { JSONObject json = new JSONObject(); @@ -38,7 +38,7 @@ public GetPartyMessage clone(GetPartyMessage value) { @Override public Serializer getReturnSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(GetPartyResponse value) { JSONObject json = new JSONObject(); diff --git a/commons/src/main/java/net/swofty/commons/protocol/objects/party/IsPlayerInPartyProtocolObject.java b/commons/src/main/java/net/swofty/commons/protocol/objects/party/IsPlayerInPartyProtocolObject.java index cf60aa338..aaf8792bc 100644 --- a/commons/src/main/java/net/swofty/commons/protocol/objects/party/IsPlayerInPartyProtocolObject.java +++ b/commons/src/main/java/net/swofty/commons/protocol/objects/party/IsPlayerInPartyProtocolObject.java @@ -1,6 +1,5 @@ package net.swofty.commons.protocol.objects.party; -import net.swofty.commons.party.PartyEvent; import net.swofty.commons.protocol.ProtocolObject; import net.swofty.commons.protocol.Serializer; import org.json.JSONObject; @@ -14,7 +13,7 @@ public class IsPlayerInPartyProtocolObject extends ProtocolObject @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(IsPlayerInPartyMessage value) { JSONObject json = new JSONObject(); @@ -38,7 +37,7 @@ public IsPlayerInPartyMessage clone(IsPlayerInPartyMessage value) { @Override public Serializer getReturnSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(IsPlayerInPartyResponse value) { return value.isInParty ? "true" : "false"; diff --git a/commons/src/main/java/net/swofty/commons/protocol/objects/party/SendPartyEventToServiceProtocolObject.java b/commons/src/main/java/net/swofty/commons/protocol/objects/party/SendPartyEventToServiceProtocolObject.java index dd5747a0f..232da840e 100644 --- a/commons/src/main/java/net/swofty/commons/protocol/objects/party/SendPartyEventToServiceProtocolObject.java +++ b/commons/src/main/java/net/swofty/commons/protocol/objects/party/SendPartyEventToServiceProtocolObject.java @@ -1,15 +1,10 @@ package net.swofty.commons.protocol.objects.party; -import net.swofty.commons.TrackedItem; import net.swofty.commons.party.PartyEvent; import net.swofty.commons.protocol.ProtocolObject; import net.swofty.commons.protocol.Serializer; -import net.swofty.commons.protocol.objects.itemtracker.TrackedItemRetrieveProtocolObject; -import org.bson.Document; import org.json.JSONObject; -import java.util.UUID; - public class SendPartyEventToServiceProtocolObject extends ProtocolObject { @@ -17,7 +12,7 @@ public class SendPartyEventToServiceProtocolObject extends ProtocolObject @Override public Serializer getSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(SendPartyEventToServiceMessage value) { JSONObject json = new JSONObject(); @@ -44,7 +39,7 @@ public SendPartyEventToServiceMessage clone(SendPartyEventToServiceMessage value @Override public Serializer getReturnSerializer() { - return new Serializer() { + return new Serializer<>() { @Override public String serialize(SendPartyEventToServiceResponse value) { return value.success ? "true" : "false"; diff --git a/commons/src/main/java/net/swofty/commons/proxy/FromProxyChannels.java b/commons/src/main/java/net/swofty/commons/proxy/FromProxyChannels.java index b5b2d1870..a0c69a130 100644 --- a/commons/src/main/java/net/swofty/commons/proxy/FromProxyChannels.java +++ b/commons/src/main/java/net/swofty/commons/proxy/FromProxyChannels.java @@ -1,8 +1,15 @@ package net.swofty.commons.proxy; import lombok.Getter; -import net.swofty.commons.proxy.requirements.from.*; import net.swofty.commons.proxy.requirements.from.BroadcastStaffChatRequirements; +import net.swofty.commons.proxy.requirements.from.DoesServerHaveIslandRequirements; +import net.swofty.commons.proxy.requirements.from.GivePlayersOriginTypeRequirements; +import net.swofty.commons.proxy.requirements.from.PingServerRequirements; +import net.swofty.commons.proxy.requirements.from.PlayerHasSwitchedFromHereRequirements; +import net.swofty.commons.proxy.requirements.from.PromptPlayerForAuthenticationRequirements; +import net.swofty.commons.proxy.requirements.from.RefreshCoopDataOnServerRequirements; +import net.swofty.commons.proxy.requirements.from.RunEventRequirements; +import net.swofty.commons.proxy.requirements.from.TeleportRequirements; import org.jetbrains.annotations.Nullable; import org.json.JSONObject; diff --git a/commons/src/main/java/net/swofty/commons/proxy/ToProxyChannels.java b/commons/src/main/java/net/swofty/commons/proxy/ToProxyChannels.java index e8bc341e4..45e34a45a 100644 --- a/commons/src/main/java/net/swofty/commons/proxy/ToProxyChannels.java +++ b/commons/src/main/java/net/swofty/commons/proxy/ToProxyChannels.java @@ -2,7 +2,6 @@ import lombok.Getter; import net.swofty.commons.proxy.requirements.to.*; -import net.swofty.commons.proxy.requirements.to.StaffChatRequirements; import org.jetbrains.annotations.Nullable; import org.json.JSONObject; diff --git a/commons/src/main/java/net/swofty/commons/punishment/PunishmentRedis.java b/commons/src/main/java/net/swofty/commons/punishment/PunishmentRedis.java index fdd5a572a..b71c84e1d 100644 --- a/commons/src/main/java/net/swofty/commons/punishment/PunishmentRedis.java +++ b/commons/src/main/java/net/swofty/commons/punishment/PunishmentRedis.java @@ -8,8 +8,12 @@ import java.net.URI; import java.time.Duration; -import java.util.*; -import java.util.concurrent.CompletableFuture; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.UUID; public class PunishmentRedis { private static final String PREFIX = "punish:active:"; diff --git a/commons/src/main/java/net/swofty/commons/punishment/PunishmentType.java b/commons/src/main/java/net/swofty/commons/punishment/PunishmentType.java index d3e5c6085..b2ef86341 100644 --- a/commons/src/main/java/net/swofty/commons/punishment/PunishmentType.java +++ b/commons/src/main/java/net/swofty/commons/punishment/PunishmentType.java @@ -3,5 +3,5 @@ public enum PunishmentType { MUTE, BAN, - WARNING; + WARNING } diff --git a/commons/src/main/java/net/swofty/commons/skyblock/item/PotatoType.java b/commons/src/main/java/net/swofty/commons/skyblock/item/PotatoType.java index 685f79d7d..d8b50108b 100644 --- a/commons/src/main/java/net/swofty/commons/skyblock/item/PotatoType.java +++ b/commons/src/main/java/net/swofty/commons/skyblock/item/PotatoType.java @@ -15,8 +15,8 @@ public enum PotatoType { "§c+2" + ItemStatistic.STRENGTH.getSymbol() + " Strength §7and §c+2" + ItemStatistic.DAMAGE.getSymbol() + " Damage§7."), Map.of(ItemStatistic.STRENGTH, 2.0, ItemStatistic.DAMAGE, 2.0)), ; - public List display; - public Map stats; + public final List display; + public final Map stats; PotatoType(List display, Map stats) { this.display = display; diff --git a/commons/src/main/java/net/swofty/commons/skyblock/item/attribute/attributes/ItemAttributeGemData.java b/commons/src/main/java/net/swofty/commons/skyblock/item/attribute/attributes/ItemAttributeGemData.java index 303735758..e59df3b9c 100644 --- a/commons/src/main/java/net/swofty/commons/skyblock/item/attribute/attributes/ItemAttributeGemData.java +++ b/commons/src/main/java/net/swofty/commons/skyblock/item/attribute/attributes/ItemAttributeGemData.java @@ -4,7 +4,6 @@ import lombok.Getter; import lombok.Setter; import net.swofty.commons.skyblock.item.ItemType; -import net.swofty.commons.skyblock.item.SkyBlockItemType; import net.swofty.commons.skyblock.item.attribute.ItemAttribute; import net.swofty.commons.skyblock.statistics.ItemStatistics; diff --git a/commons/src/main/java/net/swofty/commons/skyblock/item/attribute/attributes/ItemAttributePotionData.java b/commons/src/main/java/net/swofty/commons/skyblock/item/attribute/attributes/ItemAttributePotionData.java index bf193c56f..424521c0a 100644 --- a/commons/src/main/java/net/swofty/commons/skyblock/item/attribute/attributes/ItemAttributePotionData.java +++ b/commons/src/main/java/net/swofty/commons/skyblock/item/attribute/attributes/ItemAttributePotionData.java @@ -141,7 +141,7 @@ private static String formatEffectName(String effectType) { StringBuilder result = new StringBuilder(); for (String word : words) { if (!word.isEmpty()) { - if (result.length() > 0) result.append(" "); + if (!result.isEmpty()) result.append(" "); result.append(Character.toUpperCase(word.charAt(0))); if (word.length() > 1) { result.append(word.substring(1)); diff --git a/commons/src/main/java/net/swofty/commons/skyblock/item/attribute/attributes/ItemAttributeRuneInfusedWith.java b/commons/src/main/java/net/swofty/commons/skyblock/item/attribute/attributes/ItemAttributeRuneInfusedWith.java index 415b819d4..4d7f6217a 100644 --- a/commons/src/main/java/net/swofty/commons/skyblock/item/attribute/attributes/ItemAttributeRuneInfusedWith.java +++ b/commons/src/main/java/net/swofty/commons/skyblock/item/attribute/attributes/ItemAttributeRuneInfusedWith.java @@ -26,8 +26,8 @@ public RuneData loadFromString(String string) { return new RuneData(null, null); } String[] split = string.split(";"); - Integer level = Integer.parseInt(split[0]);; - ItemType runeType = ItemType.valueOf(split[1]);; + Integer level = Integer.parseInt(split[0]); + ItemType runeType = ItemType.valueOf(split[1]); return new RuneData(level, runeType); } diff --git a/commons/src/main/java/net/swofty/commons/skyblock/item/reforge/ReforgeExpressionEvaluator.java b/commons/src/main/java/net/swofty/commons/skyblock/item/reforge/ReforgeExpressionEvaluator.java index c9ce0cd6e..312f3472b 100644 --- a/commons/src/main/java/net/swofty/commons/skyblock/item/reforge/ReforgeExpressionEvaluator.java +++ b/commons/src/main/java/net/swofty/commons/skyblock/item/reforge/ReforgeExpressionEvaluator.java @@ -26,8 +26,8 @@ public static double evaluate(String expression, Map variables) private static String replaceVariables(String expression, Map variables) { Matcher matcher = VARIABLE_PATTERN.matcher(expression); - StringBuffer result = new StringBuffer(); + StringBuilder result = new StringBuilder(); while (matcher.find()) { String varName = matcher.group(1); Double value = variables.get(varName); diff --git a/commons/src/main/java/net/swofty/commons/skywars/SkywarsLevelColor.java b/commons/src/main/java/net/swofty/commons/skywars/SkyWarsLevelColor.java similarity index 84% rename from commons/src/main/java/net/swofty/commons/skywars/SkywarsLevelColor.java rename to commons/src/main/java/net/swofty/commons/skywars/SkyWarsLevelColor.java index d3b3abb50..ecc60708f 100644 --- a/commons/src/main/java/net/swofty/commons/skywars/SkywarsLevelColor.java +++ b/commons/src/main/java/net/swofty/commons/skywars/SkyWarsLevelColor.java @@ -3,7 +3,7 @@ import lombok.Getter; @Getter -public enum SkywarsLevelColor { +public enum SkyWarsLevelColor { NONE(0, "7", "⋆"), IRON(5, "f", "✦"), GOLD(10, "6", "✦"), @@ -20,15 +20,15 @@ public enum SkywarsLevelColor { private final String colorCode; private final String symbol; - SkywarsLevelColor(int minimumLevel, String colorCode, String symbol) { + SkyWarsLevelColor(int minimumLevel, String colorCode, String symbol) { this.minimumLevel = minimumLevel; this.colorCode = colorCode; this.symbol = symbol; } - public static SkywarsLevelColor fromLevel(int level) { - SkywarsLevelColor result = NONE; - for (SkywarsLevelColor color : values()) { + public static SkyWarsLevelColor fromLevel(int level) { + SkyWarsLevelColor result = NONE; + for (SkyWarsLevelColor color : values()) { if (level >= color.minimumLevel) { result = color; } @@ -59,7 +59,7 @@ private String constructRainbowBrackets(int level) { result.append("§").append(colors[(i + 1) % colors.length]).append(levelStr.charAt(i)); } - result.append("§f").append(symbol).append("§" + colors[0] + "]"); + result.append("§f").append(symbol).append("§").append(colors[0]).append("]"); return result.toString(); } @@ -77,7 +77,7 @@ private String constructRainbowString(int level) { } public static String getLevelDisplay(int level) { - SkywarsLevelColor color = fromLevel(level); + SkyWarsLevelColor color = fromLevel(level); return color.constructLevelBrackets(level); } } diff --git a/dungeons/src/main/java/net/swofty/dungeons/DungeonsTest.java b/dungeons/src/main/java/net/swofty/dungeons/DungeonsTest.java index 3c3478a32..88a4bd072 100644 --- a/dungeons/src/main/java/net/swofty/dungeons/DungeonsTest.java +++ b/dungeons/src/main/java/net/swofty/dungeons/DungeonsTest.java @@ -1,7 +1,7 @@ package net.swofty.dungeons; public class DungeonsTest { - public static void main(String[] args) { + static void main(String[] args) { DungeonsData data = new DungeonsData(5, 5) .with(DungeonRoomType.FAIRY, new DungeonsData.RoomData(1, 1)) .with(DungeonRoomType.PUZZLE, new DungeonsData.RoomData(2, 4)) diff --git a/loader/src/main/java/net/swofty/loader/Hypixel.java b/loader/src/main/java/net/swofty/loader/Hypixel.java index 1ecd0b549..1c325db4e 100644 --- a/loader/src/main/java/net/swofty/loader/Hypixel.java +++ b/loader/src/main/java/net/swofty/loader/Hypixel.java @@ -79,7 +79,6 @@ static void main(String[] args) { options.setTracesSampleRate(1.0); options.setProfileSessionSampleRate(1.0); options.setProfileLifecycle(ProfileLifecycle.TRACE); - options.getLogs().setEnabled(true); }); } diff --git a/packer/src/main/java/net/swofty/packer/HypixelPackServer.java b/packer/src/main/java/net/swofty/packer/HypixelPackServer.java index 0bedf5b2d..4a868984b 100644 --- a/packer/src/main/java/net/swofty/packer/HypixelPackServer.java +++ b/packer/src/main/java/net/swofty/packer/HypixelPackServer.java @@ -11,7 +11,7 @@ public class HypixelPackServer { private static final String DEFAULT_HOST = "0.0.0.0"; private static final int DEFAULT_PORT = 7270; - public static void main(String[] args) throws IOException { + static void main(String[] args) throws IOException { String host = DEFAULT_HOST; int port = DEFAULT_PORT; diff --git a/proxy.api/src/main/java/net/swofty/proxyapi/ProxyAPI.java b/proxy.api/src/main/java/net/swofty/proxyapi/ProxyAPI.java index 1c7776e3d..7330351dc 100644 --- a/proxy.api/src/main/java/net/swofty/proxyapi/ProxyAPI.java +++ b/proxy.api/src/main/java/net/swofty/proxyapi/ProxyAPI.java @@ -79,7 +79,7 @@ public void registerFromServiceHandler(ServiceToClient handler) { RedisAPI.getInstance().publishMessage( serviceId, ChannelRegistry.getFromName("service_broadcast_response"), - requestId + "}=-=-={" + serverUUID.toString() + "}=-=-={" + response.toString()); + requestId + "}=-=-={" + serverUUID.toString() + "}=-=-={" + response); }); }); } diff --git a/proxy.api/src/main/java/net/swofty/proxyapi/ProxyPlayer.java b/proxy.api/src/main/java/net/swofty/proxyapi/ProxyPlayer.java index 2f5fc0b9e..f862ae44e 100644 --- a/proxy.api/src/main/java/net/swofty/proxyapi/ProxyPlayer.java +++ b/proxy.api/src/main/java/net/swofty/proxyapi/ProxyPlayer.java @@ -2,7 +2,6 @@ import lombok.Getter; import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.serializer.json.JSONComponentSerializer; import net.minestom.server.coordinate.Pos; import net.minestom.server.entity.Player; diff --git a/pvp/src/main/java/net/swofty/pvp/damage/combat/CombatManager.java b/pvp/src/main/java/net/swofty/pvp/damage/combat/CombatManager.java index c7ef6ded2..1cca07524 100644 --- a/pvp/src/main/java/net/swofty/pvp/damage/combat/CombatManager.java +++ b/pvp/src/main/java/net/swofty/pvp/damage/combat/CombatManager.java @@ -104,7 +104,7 @@ public Component getDeathMessage() { } CombatEntry heaviestFall = null; - CombatEntry lastEntry = entries.get(entries.size() - 1); + CombatEntry lastEntry = entries.getLast(); DamageTypeInfo lastInfo = DamageTypeInfo.of(lastEntry.damage().getType()); boolean fall = false; diff --git a/pvp/src/main/java/net/swofty/pvp/events/FinalAttackEvent.java b/pvp/src/main/java/net/swofty/pvp/events/FinalAttackEvent.java index 90d04a097..34b829c7d 100644 --- a/pvp/src/main/java/net/swofty/pvp/events/FinalAttackEvent.java +++ b/pvp/src/main/java/net/swofty/pvp/events/FinalAttackEvent.java @@ -16,10 +16,10 @@ * - whether the attack sounds should be played
*/ public class FinalAttackEvent implements EntityInstanceEvent, CancellableEvent { - + private final Entity entity; private final Entity target; - + private boolean sprint; private boolean critical; private boolean sweeping; @@ -27,9 +27,9 @@ public class FinalAttackEvent implements EntityInstanceEvent, CancellableEvent { private float enchantsExtraDamage; private boolean attackSounds; private boolean playSoundsOnFail; - + private boolean cancelled; - + public FinalAttackEvent(@NotNull Entity entity, @NotNull Entity target, boolean sprint, boolean critical, boolean sweeping, float baseDamage, float enchantsExtraDamage, @@ -44,16 +44,16 @@ public FinalAttackEvent(@NotNull Entity entity, @NotNull Entity target, this.attackSounds = attackSounds; this.playSoundsOnFail = playSoundsOnFail; } - + @Override public @NotNull Entity getEntity() { return entity; } - + public @NotNull Entity getTarget() { return target; } - + /** * Gets whether the attack was a sprint attack. * @@ -62,7 +62,7 @@ public FinalAttackEvent(@NotNull Entity entity, @NotNull Entity target, public boolean isSprint() { return sprint; } - + /** * Sets whether the attack was a sprint attack. * @@ -71,7 +71,7 @@ public boolean isSprint() { public void setSprint(boolean sprint) { this.sprint = sprint; } - + /** * Gets whether the attack was critical. * @@ -80,7 +80,7 @@ public void setSprint(boolean sprint) { public boolean isCritical() { return critical; } - + /** * Sets whether the attack was critical. * @@ -89,7 +89,7 @@ public boolean isCritical() { public void setCritical(boolean crit) { this.critical = crit; } - + /** * Gets whether the attack was sweeping. * @@ -98,7 +98,7 @@ public void setCritical(boolean crit) { public boolean isSweeping() { return sweeping; } - + /** * Sets whether the attack was sweeping. * @@ -107,7 +107,7 @@ public boolean isSweeping() { public void setSweeping(boolean sweeping) { this.sweeping = sweeping; } - + /** * Gets the base damage of the attack. * Tool enchantments are excluded, but attack cooldown strength (for 1.9+) is not. @@ -117,7 +117,7 @@ public void setSweeping(boolean sweeping) { public float getBaseDamage() { return baseDamage; } - + /** * Sets the base damage of the attack. * Enchantment extra damage will be added to this to get the final damage. @@ -127,7 +127,7 @@ public float getBaseDamage() { public void setBaseDamage(float baseDamage) { this.baseDamage = baseDamage; } - + /** * Gets the extra damage from enchantments of the attack * (e.g. sharpness, but also mob based, e.g. impaling). @@ -138,7 +138,7 @@ public void setBaseDamage(float baseDamage) { public float getEnchantsExtraDamage() { return enchantsExtraDamage; } - + /** * Sets the extra damage of the attack. * This will be added to the base damage to get the final damage. @@ -148,7 +148,7 @@ public float getEnchantsExtraDamage() { public void setEnchantsExtraDamage(float enchantsExtraDamage) { this.enchantsExtraDamage = enchantsExtraDamage; } - + /** * Gets whether the 1.9+ attack sounds should be played. * @@ -157,7 +157,7 @@ public void setEnchantsExtraDamage(float enchantsExtraDamage) { public boolean hasAttackSounds() { return attackSounds; } - + /** * Sets whether the 1.9+ attack sounds should be played. * This also works for legacy. @@ -167,11 +167,11 @@ public boolean hasAttackSounds() { public void setAttackSounds(boolean attackSounds) { this.attackSounds = attackSounds; } - + /** * Gets whether the 1.9+ attack sounds should be played if the damage failed. * This only applies if hasAttackSounds() is true. - * + *

* If this is true, the only sounds that may be played are knockback and nodamage. * * @return whether the attack sounds should be played if the damage failed @@ -179,11 +179,11 @@ public void setAttackSounds(boolean attackSounds) { public boolean playSoundsOnFail() { return playSoundsOnFail; } - + /** * Sets whether the 1.9+ attack sounds should be played if the damage failed. * This only applies if hasAttackSounds() is true. - * + *

* If this is true, the only sounds that may be played are knockback and nodamage. * * @param playSoundsOnFail whether the attack sounds should be played if the damage failed @@ -191,12 +191,12 @@ public boolean playSoundsOnFail() { public void setPlaySoundsOnFail(boolean playSoundsOnFail) { this.playSoundsOnFail = playSoundsOnFail; } - + @Override public boolean isCancelled() { return cancelled; } - + @Override public void setCancelled(boolean cancel) { this.cancelled = cancel; diff --git a/pvp/src/main/java/net/swofty/pvp/feature/explosion/VanillaExplosionSupplier.java b/pvp/src/main/java/net/swofty/pvp/feature/explosion/VanillaExplosionSupplier.java index e6bff26a6..38ca6d82a 100644 --- a/pvp/src/main/java/net/swofty/pvp/feature/explosion/VanillaExplosionSupplier.java +++ b/pvp/src/main/java/net/swofty/pvp/feature/explosion/VanillaExplosionSupplier.java @@ -30,341 +30,345 @@ import net.swofty.pvp.player.CombatPlayer; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; import java.util.concurrent.ThreadLocalRandom; public final class VanillaExplosionSupplier implements ExplosionSupplier { - private final ExplosionFeature feature; - - private final EnchantmentFeature enchantmentFeature; - - VanillaExplosionSupplier(ExplosionFeature feature, EnchantmentFeature enchantmentFeature) { - this.feature = feature; - this.enchantmentFeature = enchantmentFeature; - } - - public static double getExposure(Point center, Entity entity) { - BoundingBox box = entity.getBoundingBox(); - double xStep = 1 / (box.width() * 2 + 1); - double yStep = 1 / (box.height() * 2 + 1); - double zStep = 1 / (box.depth() * 2 + 1); - double g = (1 - Math.floor(1 / xStep) * xStep) / 2; - double h = (1 - Math.floor(1 / zStep) * zStep) / 2; - if (xStep < 0 || yStep < 0 || zStep < 0) return 0; - - int exposedCount = 0; - int rayCount = 0; - double dx = 0; - while (dx <= 1) { - double dy = 0; - while (dy <= 1) { - double dz = 0; - while (dz <= 1) { - double rayX = box.minX() + dx * box.width(); - double rayY = box.minY() + dy * box.height(); - double rayZ = box.minZ() + dz * box.depth(); - Point point = new Vec(rayX + g, rayY, rayZ + h).add(entity.getPosition()); - if (noBlocking(entity.getInstance(), point, center)) exposedCount++; - rayCount++; - dz += zStep; - } - dy += yStep; - } - dx += xStep; - } - - return exposedCount / (double) rayCount; - } - - public static boolean noBlocking(Instance instance, Point start, Point end) { - return CollisionUtils.isLineOfSightReachingShape(instance, null, start, end, new BoundingBox(1, 1, 1), new Pos(0, 0, 0)); - } - - @Override - public Explosion createExplosion(float centerX, float centerY, float centerZ, - float strength, @Nullable CompoundBinaryTag additionalData) { - return new Explosion(centerX, centerY, centerZ, strength) { - private final Map playerKnockback = new HashMap<>(); - - @Override - protected List prepare(Instance instance) { - List blocks = new ArrayList<>(); - ThreadLocalRandom random = ThreadLocalRandom.current(); - - boolean breakBlocks = true; - if (additionalData != null && additionalData.keySet().contains("breakBlocks")) - breakBlocks = additionalData.getBoolean("breakBlocks"); - - // UNOFFICIAL -- START - String requiredTag = null; - if (additionalData != null && additionalData.keySet().contains("requiredTag")) { - requiredTag = additionalData.getString("requiredTag"); - } - - UUID shooterUuid = null; - if (additionalData != null && additionalData.keySet().contains("shooter")) { - int[] shooterUuidParts = additionalData.getIntArray("shooter"); - shooterUuid = new UUID( - ((long) shooterUuidParts[0] << 32) | (shooterUuidParts[1] & 0xFFFFFFFFL), - ((long) shooterUuidParts[2] << 32) | (shooterUuidParts[3] & 0xFFFFFFFFL) - ); - } - - String ignorePlayerTag = null; - if (additionalData != null && additionalData.keySet().contains("ignorePlayerTag")) { - ignorePlayerTag = additionalData.getString("ignorePlayerTag"); - } - - int[] blacklist = null; - if (additionalData != null && additionalData.keySet().contains("blacklist")) { - blacklist = additionalData.getIntArray("blacklist"); - } - // UNOFFICIAL -- END - - if (breakBlocks) { - for (int x = 0; x < 16; ++x) { - for (int y = 0; y < 16; ++y) { - for (int z = 0; z < 16; ++z) { - if (x == 0 || x == 15 || y == 0 || y == 15 || z == 0 || z == 15) { - double xLength = (float) x / 15.0F * 2.0F - 1.0F; - double yLength = (float) y / 15.0F * 2.0F - 1.0F; - double zLength = (float) z / 15.0F * 2.0F - 1.0F; - double length = Math.sqrt(xLength * xLength + yLength * yLength + zLength * zLength); - xLength /= length; - yLength /= length; - zLength /= length; - double centerX = this.getCenterX(); - double centerY = this.getCenterY(); - double centerZ = this.getCenterZ(); - - float strengthLeft = this.getStrength() * (0.7F + random.nextFloat() * 0.6F); - for (; strengthLeft > 0.0F; strengthLeft -= 0.225F) { - Vec position = new Vec(centerX, centerY, centerZ); - Block block = instance.getBlock(position); - - if (!block.isAir()) { - float explosionResistance = block.registry().explosionResistance(); - strengthLeft -= (explosionResistance + 0.3F) * 0.3F; - - if (strengthLeft > 0.0F) { - Vec blockPosition = position.apply(Vec.Operator.FLOOR); - if (!blocks.contains(blockPosition)) { - Block blockAtPosition = instance.getBlock(blockPosition); - boolean blacklisted = false; - if (blacklist != null) { - for (int id : blacklist) { - if (id == blockAtPosition.id()) { - blacklisted = true; - break; - } - } - } - - if (!blacklisted) { - if (requiredTag != null) { - if (blockAtPosition.hasTag(Tag.Boolean(requiredTag))) { - blocks.add(blockPosition); - } - } else { - blocks.add(blockPosition); - } - } - } - } - } - - centerX += xLength * 0.30000001192092896D; - centerY += yLength * 0.30000001192092896D; - centerZ += zLength * 0.30000001192092896D; - } - } - } - } - } - } - - double strength = this.getStrength() * 2.0F; - int minX_ = (int) Math.floor(this.getCenterX() - strength - 1.0D); - int maxX_ = (int) Math.floor(this.getCenterX() + strength + 1.0D); - int minY_ = (int) Math.floor(this.getCenterY() - strength - 1.0D); - int maxY_ = (int) Math.floor(this.getCenterY() + strength + 1.0D); - int minZ_ = (int) Math.floor(this.getCenterZ() - strength - 1.0D); - int maxZ_ = (int) Math.floor(this.getCenterZ() + strength + 1.0D); - - int minX = Math.min(minX_, maxX_); - int maxX = Math.max(minX_, maxX_); - int minY = Math.min(minY_, maxY_); - int maxY = Math.max(minY_, maxY_); - int minZ = Math.min(minZ_, maxZ_); - int maxZ = Math.max(minZ_, maxZ_); - - BoundingBox explosionBox = new BoundingBox( - maxX - minX, - maxY - minY, - maxZ - minZ - ); - - Vec centerPoint = new Vec(getCenterX(), getCenterY(), getCenterZ()); - - Vec src = centerPoint.sub(0, explosionBox.height() / 2, 0); - List entities = new ArrayList<>(instance.getEntities().stream() - .filter(entity -> explosionBox.intersectEntity(src, entity)) - .toList()); - - boolean anchor = false; - if (additionalData != null && additionalData.keySet().contains("anchor")) { - anchor = additionalData.getBoolean("anchor"); - } - - Damage damageObj; - if (anchor) { - damageObj = new Damage(DamageType.BAD_RESPAWN_POINT, null, null, null, 0); - } else { - Entity causingEntity = getCausingEntity(instance); - damageObj = new Damage(DamageType.PLAYER_EXPLOSION, causingEntity, causingEntity, null, 0); - } - - // Blocks and entities list may be modified during the event call - ExplosionEvent explosionEvent = new ExplosionEvent(instance, blocks, entities, damageObj); - EventDispatcher.call(explosionEvent); - if (explosionEvent.isCancelled()) return null; - damageObj = explosionEvent.getDamageObject(); - - for (Entity entity : entities) { - double currentStrength = entity.getPosition().distance(centerPoint) / strength; - if (currentStrength <= 1.0D) { - double dx = entity.getPosition().x() - this.getCenterX(); - double dy = (entity.getEntityType() == EntityType.TNT ? entity.getPosition().y() : - entity.getPosition().y() + entity.getEyeHeight()) - this.getCenterY(); - double dz = entity.getPosition().z() - this.getCenterZ(); - double distance = Math.sqrt(dx * dx + dy * dy + dz * dz); - if (distance != 0.0D) { - dx /= distance; - dy /= distance; - dz /= distance; - double exposure = getExposure(centerPoint, entity); - currentStrength = (1.0D - currentStrength) * exposure; - // UNOFFICIAL - START - float damage = (float) ((currentStrength * currentStrength + currentStrength) - / 2.0D * 7.0D * strength + 1.0D); - damageObj.setAmount(damage); - // UNOFFICIAL - END - double knockback = currentStrength; - if (entity instanceof LivingEntity living) { - // UNOFFICIAL - START - if (ignorePlayerTag != null && living.hasTag(Tag.String(ignorePlayerTag))) { - continue; - } - if (shooterUuid != null && living.getUuid().equals(shooterUuid)) { - damage *= 0.15f; - damageObj.setAmount(damage); - } else { - damage *= 0.4f; - damageObj.setAmount(damage); - } - // UNOFFICIAL - END - if (!living.damage(damageObj)) continue; - knockback = enchantmentFeature.getExplosionKnockback(living, currentStrength); - } - - Vec knockbackVec = new Vec( - dx * knockback, - dy * knockback, - dz * knockback - ); - - int tps = ServerFlag.SERVER_TICKS_PER_SECOND; - if (entity instanceof Player player) { - if (!player.getGameMode().invulnerable() && !player.isFlying()) { - playerKnockback.put(player, knockbackVec); - - if (player instanceof CombatPlayer custom) - custom.setVelocityNoUpdate(velocity -> velocity.add(knockbackVec.mul(tps))); - } - } else { - entity.setVelocity(entity.getVelocity().add(knockbackVec.mul(tps))); - } - } - } - } - - return blocks; - } - - @Override - public void apply(@NotNull Instance instance) { - List blocks = prepare(instance); - if (blocks == null) return; // Event was cancelled - byte[] records = new byte[3 * blocks.size()]; - for (int i = 0; i < blocks.size(); i++) { - final var pos = blocks.get(i); - // UNOFFICIAL - START - DISABLED FOR NOW + private final ExplosionFeature feature; + private final EnchantmentFeature enchantmentFeature; + + VanillaExplosionSupplier(ExplosionFeature feature, EnchantmentFeature enchantmentFeature) { + this.feature = feature; + this.enchantmentFeature = enchantmentFeature; + } + + public static double getExposure(Point center, Entity entity) { + BoundingBox box = entity.getBoundingBox(); + double xStep = 1 / (box.width() * 2 + 1); + double yStep = 1 / (box.height() * 2 + 1); + double zStep = 1 / (box.depth() * 2 + 1); + double g = (1 - Math.floor(1 / xStep) * xStep) / 2; + double h = (1 - Math.floor(1 / zStep) * zStep) / 2; + if (xStep < 0 || yStep < 0 || zStep < 0) return 0; + + int exposedCount = 0; + int rayCount = 0; + double dx = 0; + while (dx <= 1) { + double dy = 0; + while (dy <= 1) { + double dz = 0; + while (dz <= 1) { + double rayX = box.minX() + dx * box.width(); + double rayY = box.minY() + dy * box.height(); + double rayZ = box.minZ() + dz * box.depth(); + Point point = new Vec(rayX + g, rayY, rayZ + h).add(entity.getPosition()); + if (noBlocking(entity.getInstance(), point, center)) exposedCount++; + rayCount++; + dz += zStep; + } + dy += yStep; + } + dx += xStep; + } + + return exposedCount / (double) rayCount; + } + + public static boolean noBlocking(Instance instance, Point start, Point end) { + return CollisionUtils.isLineOfSightReachingShape(instance, null, start, end, new BoundingBox(1, 1, 1), new Pos(0, 0, 0)); + } + + @Override + public @NonNull Explosion createExplosion(float centerX, float centerY, float centerZ, + float strength, @Nullable CompoundBinaryTag additionalData) { + return new Explosion(centerX, centerY, centerZ, strength) { + private final Map playerKnockback = new HashMap<>(); + + @Override + protected List prepare(@NonNull Instance instance) { + List blocks = new ArrayList<>(); + ThreadLocalRandom random = ThreadLocalRandom.current(); + + boolean breakBlocks = true; + if (additionalData != null && additionalData.keySet().contains("breakBlocks")) + breakBlocks = additionalData.getBoolean("breakBlocks"); + + // UNOFFICIAL -- START + String requiredTag = null; + if (additionalData != null && additionalData.keySet().contains("requiredTag")) { + requiredTag = additionalData.getString("requiredTag"); + } + + UUID shooterUuid = null; + if (additionalData != null && additionalData.keySet().contains("shooter")) { + int[] shooterUuidParts = additionalData.getIntArray("shooter"); + shooterUuid = new UUID( + ((long) shooterUuidParts[0] << 32) | (shooterUuidParts[1] & 0xFFFFFFFFL), + ((long) shooterUuidParts[2] << 32) | (shooterUuidParts[3] & 0xFFFFFFFFL) + ); + } + + String ignorePlayerTag = null; + if (additionalData != null && additionalData.keySet().contains("ignorePlayerTag")) { + ignorePlayerTag = additionalData.getString("ignorePlayerTag"); + } + + int[] blacklist = null; + if (additionalData != null && additionalData.keySet().contains("blacklist")) { + blacklist = additionalData.getIntArray("blacklist"); + } + // UNOFFICIAL -- END + + if (breakBlocks) { + for (int x = 0; x < 16; ++x) { + for (int y = 0; y < 16; ++y) { + for (int z = 0; z < 16; ++z) { + if (x == 0 || x == 15 || y == 0 || y == 15 || z == 0 || z == 15) { + double xLength = (float) x / 15.0F * 2.0F - 1.0F; + double yLength = (float) y / 15.0F * 2.0F - 1.0F; + double zLength = (float) z / 15.0F * 2.0F - 1.0F; + double length = Math.sqrt(xLength * xLength + yLength * yLength + zLength * zLength); + xLength /= length; + yLength /= length; + zLength /= length; + double centerX = this.getCenterX(); + double centerY = this.getCenterY(); + double centerZ = this.getCenterZ(); + + float strengthLeft = this.getStrength() * (0.7F + random.nextFloat() * 0.6F); + for (; strengthLeft > 0.0F; strengthLeft -= 0.225F) { + Vec position = new Vec(centerX, centerY, centerZ); + Block block = instance.getBlock(position); + + if (!block.isAir()) { + float explosionResistance = block.registry().explosionResistance(); + strengthLeft -= (explosionResistance + 0.3F) * 0.3F; + + if (strengthLeft > 0.0F) { + Vec blockPosition = position.apply(Vec.Operator.FLOOR); + if (!blocks.contains(blockPosition)) { + Block blockAtPosition = instance.getBlock(blockPosition); + boolean blacklisted = false; + if (blacklist != null) { + for (int id : blacklist) { + if (id == blockAtPosition.id()) { + blacklisted = true; + break; + } + } + } + + if (!blacklisted) { + if (requiredTag != null) { + if (blockAtPosition.hasTag(Tag.Boolean(requiredTag))) { + blocks.add(blockPosition); + } + } else { + blocks.add(blockPosition); + } + } + } + } + } + + centerX += xLength * 0.30000001192092896D; + centerY += yLength * 0.30000001192092896D; + centerZ += zLength * 0.30000001192092896D; + } + } + } + } + } + } + + double strength = this.getStrength() * 2.0F; + int minX_ = (int) Math.floor(this.getCenterX() - strength - 1.0D); + int maxX_ = (int) Math.floor(this.getCenterX() + strength + 1.0D); + int minY_ = (int) Math.floor(this.getCenterY() - strength - 1.0D); + int maxY_ = (int) Math.floor(this.getCenterY() + strength + 1.0D); + int minZ_ = (int) Math.floor(this.getCenterZ() - strength - 1.0D); + int maxZ_ = (int) Math.floor(this.getCenterZ() + strength + 1.0D); + + int minX = Math.min(minX_, maxX_); + int maxX = Math.max(minX_, maxX_); + int minY = Math.min(minY_, maxY_); + int maxY = Math.max(minY_, maxY_); + int minZ = Math.min(minZ_, maxZ_); + int maxZ = Math.max(minZ_, maxZ_); + + BoundingBox explosionBox = new BoundingBox( + maxX - minX, + maxY - minY, + maxZ - minZ + ); + + Vec centerPoint = new Vec(getCenterX(), getCenterY(), getCenterZ()); + + Vec src = centerPoint.sub(0, explosionBox.height() / 2, 0); + List entities = new ArrayList<>(instance.getEntities().stream() + .filter(entity -> explosionBox.intersectEntity(src, entity)) + .toList()); + + boolean anchor = false; + if (additionalData != null && additionalData.keySet().contains("anchor")) { + anchor = additionalData.getBoolean("anchor"); + } + + Damage damageObj; + if (anchor) { + damageObj = new Damage(DamageType.BAD_RESPAWN_POINT, null, null, null, 0); + } else { + Entity causingEntity = getCausingEntity(instance); + damageObj = new Damage(DamageType.PLAYER_EXPLOSION, causingEntity, causingEntity, null, 0); + } + + // Blocks and entities list may be modified during the event call + ExplosionEvent explosionEvent = new ExplosionEvent(instance, blocks, entities, damageObj); + EventDispatcher.call(explosionEvent); + if (explosionEvent.isCancelled()) return null; + damageObj = explosionEvent.getDamageObject(); + + for (Entity entity : entities) { + double currentStrength = entity.getPosition().distance(centerPoint) / strength; + if (currentStrength <= 1.0D) { + double dx = entity.getPosition().x() - this.getCenterX(); + double dy = (entity.getEntityType() == EntityType.TNT ? entity.getPosition().y() : + entity.getPosition().y() + entity.getEyeHeight()) - this.getCenterY(); + double dz = entity.getPosition().z() - this.getCenterZ(); + double distance = Math.sqrt(dx * dx + dy * dy + dz * dz); + if (distance != 0.0D) { + dx /= distance; + dy /= distance; + dz /= distance; + double exposure = getExposure(centerPoint, entity); + currentStrength = (1.0D - currentStrength) * exposure; + // UNOFFICIAL - START + float damage = (float) ((currentStrength * currentStrength + currentStrength) + / 2.0D * 7.0D * strength + 1.0D); + damageObj.setAmount(damage); + // UNOFFICIAL - END + double knockback = currentStrength; + if (entity instanceof LivingEntity living) { + // UNOFFICIAL - START + if (ignorePlayerTag != null && living.hasTag(Tag.String(ignorePlayerTag))) { + continue; + } + if (living.getUuid().equals(shooterUuid)) { + damage *= 0.15f; + damageObj.setAmount(damage); + } else { + damage *= 0.4f; + damageObj.setAmount(damage); + } + // UNOFFICIAL - END + if (!living.damage(damageObj)) continue; + knockback = enchantmentFeature.getExplosionKnockback(living, currentStrength); + } + + Vec knockbackVec = new Vec( + dx * knockback, + dy * knockback, + dz * knockback + ); + + int tps = ServerFlag.SERVER_TICKS_PER_SECOND; + if (entity instanceof Player player) { + if (!player.getGameMode().invulnerable() && !player.isFlying()) { + playerKnockback.put(player, knockbackVec); + + if (player instanceof CombatPlayer custom) + custom.setVelocityNoUpdate(velocity -> velocity.add(knockbackVec.mul(tps))); + } + } else { + entity.setVelocity(entity.getVelocity().add(knockbackVec.mul(tps))); + } + } + } + } + + return blocks; + } + + @Override + public void apply(@NotNull Instance instance) { + List blocks = prepare(instance); + if (blocks == null) return; // Event was cancelled + byte[] records = new byte[3 * blocks.size()]; + for (int i = 0; i < blocks.size(); i++) { + final var pos = blocks.get(i); + // UNOFFICIAL - START - DISABLED FOR NOW /*if (instance.getBlock(pos).compare(Block.TNT)) { Entity causingEntity = getCausingEntity(instance); feature.primeExplosive(instance, pos, new ExplosionFeature.IgnitionCause.Explosion(causingEntity), ThreadLocalRandom.current().nextInt(20) + 10); }*/ - // UNOFFICIAL - END - instance.setBlock(pos, Block.AIR); - final byte x = (byte) (pos.x() - Math.floor(getCenterX())); - final byte y = (byte) (pos.y() - Math.floor(getCenterY())); - final byte z = (byte) (pos.z() - Math.floor(getCenterZ())); - records[i * 3] = x; - records[i * 3 + 1] = y; - records[i * 3 + 2] = z; - } - - Chunk chunk = instance.getChunkAt(getCenterX(), getCenterZ()); - if (chunk != null) { - for (Player player : chunk.getViewers()) { - Vec knockbackVec = playerKnockback.getOrDefault(player, Vec.ZERO); - player.sendPacket( - new ExplosionPacket( - new BlockVec(centerX, centerY, centerZ), - getStrength(), - blocks.size(), - knockbackVec, - Particle.EXPLOSION, - SoundEvent.ENTITY_GENERIC_EXPLODE, - WeightedList.of( - new WeightedList.Entry<>(new ExplosionPacket.BlockParticleInfo(Particle.POOF, 0.5f, 1.0f), 1), - new WeightedList.Entry<>(new ExplosionPacket.BlockParticleInfo(Particle.SMOKE, 1.0f, 1.0f), 1) - ) - ) - ); - } - } - playerKnockback.clear(); - - if (additionalData != null && additionalData.keySet().contains("fire")) { - if (additionalData.getBoolean("fire")) { - ThreadLocalRandom random = ThreadLocalRandom.current(); - for (Point point : blocks) { - if (random.nextInt(3) != 0 - || !instance.getBlock(point).isAir() - || !instance.getBlock(point.sub(0, 1, 0)).isSolid()) - continue; - - instance.setBlock(point, Block.FIRE); - } - } - } - - postSend(instance, blocks); - } - - private @Nullable Entity getCausingEntity(Instance instance) { - Entity causingEntity = null; - if (additionalData != null && additionalData.keySet().contains("causingEntity")) { - UUID causingUuid = UUID.fromString(additionalData.getString("causingEntity")); - causingEntity = instance.getEntities().stream() - .filter(entity -> entity.getUuid().equals(causingUuid)) - .findAny().orElse(null); - } - - return causingEntity; - } - }; - } + // UNOFFICIAL - END + instance.setBlock(pos, Block.AIR); + final byte x = (byte) (pos.x() - Math.floor(getCenterX())); + final byte y = (byte) (pos.y() - Math.floor(getCenterY())); + final byte z = (byte) (pos.z() - Math.floor(getCenterZ())); + records[i * 3] = x; + records[i * 3 + 1] = y; + records[i * 3 + 2] = z; + } + + Chunk chunk = instance.getChunkAt(getCenterX(), getCenterZ()); + if (chunk != null) { + for (Player player : chunk.getViewers()) { + Vec knockbackVec = playerKnockback.getOrDefault(player, Vec.ZERO); + player.sendPacket( + new ExplosionPacket( + new BlockVec(centerX, centerY, centerZ), + getStrength(), + blocks.size(), + knockbackVec, + Particle.EXPLOSION, + SoundEvent.ENTITY_GENERIC_EXPLODE, + WeightedList.of( + new WeightedList.Entry<>(new ExplosionPacket.BlockParticleInfo(Particle.POOF, 0.5f, 1.0f), 1), + new WeightedList.Entry<>(new ExplosionPacket.BlockParticleInfo(Particle.SMOKE, 1.0f, 1.0f), 1) + ) + ) + ); + } + } + playerKnockback.clear(); + + if (additionalData != null && additionalData.keySet().contains("fire")) { + if (additionalData.getBoolean("fire")) { + ThreadLocalRandom random = ThreadLocalRandom.current(); + for (Point point : blocks) { + if (random.nextInt(3) != 0 + || !instance.getBlock(point).isAir() + || !instance.getBlock(point.sub(0, 1, 0)).isSolid()) + continue; + + instance.setBlock(point, Block.FIRE); + } + } + } + + postSend(instance, blocks); + } + + private @Nullable Entity getCausingEntity(Instance instance) { + Entity causingEntity = null; + if (additionalData != null && additionalData.keySet().contains("causingEntity")) { + UUID causingUuid = UUID.fromString(additionalData.getString("causingEntity")); + causingEntity = instance.getEntities().stream() + .filter(entity -> entity.getUuid().equals(causingUuid)) + .findAny().orElse(null); + } + + return causingEntity; + } + }; + } } diff --git a/service.api/src/main/java/net/swofty/service/api/APIService.java b/service.api/src/main/java/net/swofty/service/api/APIService.java index 72732c789..35fe4f06a 100644 --- a/service.api/src/main/java/net/swofty/service/api/APIService.java +++ b/service.api/src/main/java/net/swofty/service/api/APIService.java @@ -24,7 +24,7 @@ public class APIService implements SkyBlockService { - public static void main(String[] args) { + static void main(String[] args) { int port = 0; for (String arg : args) { if (arg.startsWith("--port=")) { diff --git a/service.api/src/main/java/net/swofty/service/api/http/StatusResponse.java b/service.api/src/main/java/net/swofty/service/api/http/StatusResponse.java index a8907f92e..d5f44a46a 100644 --- a/service.api/src/main/java/net/swofty/service/api/http/StatusResponse.java +++ b/service.api/src/main/java/net/swofty/service/api/http/StatusResponse.java @@ -7,7 +7,7 @@ public enum StatusResponse { ERROR("error"); @Getter - private String status; + private final String status; StatusResponse(String status) { this.status = status; diff --git a/service.auctionhouse/src/main/java/net/swofty/service/auction/AuctionService.java b/service.auctionhouse/src/main/java/net/swofty/service/auction/AuctionService.java index f8706e597..3e558eb52 100644 --- a/service.auctionhouse/src/main/java/net/swofty/service/auction/AuctionService.java +++ b/service.auctionhouse/src/main/java/net/swofty/service/auction/AuctionService.java @@ -10,7 +10,7 @@ public class AuctionService implements SkyBlockService { public static AuctionsCacheService cacheService; - public static void main(String[] args) { + static void main(String[] args) { SkyBlockService.init(new AuctionService()); cacheService = new AuctionsCacheService(); diff --git a/service.bazaar/src/main/java/net/swofty/service/bazaar/BazaarMarket.java b/service.bazaar/src/main/java/net/swofty/service/bazaar/BazaarMarket.java index 8446ea021..f441520f7 100644 --- a/service.bazaar/src/main/java/net/swofty/service/bazaar/BazaarMarket.java +++ b/service.bazaar/src/main/java/net/swofty/service/bazaar/BazaarMarket.java @@ -4,10 +4,18 @@ import net.swofty.commons.skyblock.bazaar.OrderExpiredBazaarTransaction; import net.swofty.commons.skyblock.bazaar.SuccessfulBazaarTransaction; -import java.time.*; +import java.time.Instant; import java.time.temporal.ChronoUnit; -import java.util.*; -import java.util.concurrent.*; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.PriorityQueue; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; public class BazaarMarket { private static final BazaarMarket INSTANCE = new BazaarMarket(); @@ -120,7 +128,7 @@ public void submitSell(String item, UUID seller, UUID sellerProfile, double pric } public void submitDelete(UUID orderId, UUID player, UUID profile) { - // Handle refund for cancelled buy order + // Handle refund for canceled buy order OrderRefundTracker tracker = refundTrackers.remove(orderId); if (tracker != null && tracker.accumulatedRefunds > 0) { // Issue refund for price improvements already accumulated diff --git a/service.bazaar/src/main/java/net/swofty/service/bazaar/BazaarService.java b/service.bazaar/src/main/java/net/swofty/service/bazaar/BazaarService.java index 770fedd99..00b07feb5 100644 --- a/service.bazaar/src/main/java/net/swofty/service/bazaar/BazaarService.java +++ b/service.bazaar/src/main/java/net/swofty/service/bazaar/BazaarService.java @@ -9,7 +9,7 @@ public class BazaarService implements SkyBlockService { - public static void main(String[] args) { + static void main(String[] args) { SkyBlockService.init(new BazaarService()); // Connect to MongoDB for orders diff --git a/service.darkauction/src/main/java/net/swofty/service/darkauction/DarkAuctionService.java b/service.darkauction/src/main/java/net/swofty/service/darkauction/DarkAuctionService.java index 306711e71..4d705382e 100644 --- a/service.darkauction/src/main/java/net/swofty/service/darkauction/DarkAuctionService.java +++ b/service.darkauction/src/main/java/net/swofty/service/darkauction/DarkAuctionService.java @@ -10,7 +10,7 @@ public class DarkAuctionService implements SkyBlockService { private static DarkAuctionState currentAuction = null; - public static void main(String[] args) { + static void main(String[] args) { SkyBlockService.init(new DarkAuctionService()); // Start the scheduler that checks SkyBlock time diff --git a/service.darkauction/src/main/java/net/swofty/service/darkauction/DarkAuctionState.java b/service.darkauction/src/main/java/net/swofty/service/darkauction/DarkAuctionState.java index ef85dddeb..7201cce32 100644 --- a/service.darkauction/src/main/java/net/swofty/service/darkauction/DarkAuctionState.java +++ b/service.darkauction/src/main/java/net/swofty/service/darkauction/DarkAuctionState.java @@ -7,7 +7,12 @@ import net.swofty.service.darkauction.loot.DarkAuctionBookPool; import net.swofty.service.darkauction.loot.DarkAuctionItemPool; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Queue; +import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; @@ -92,7 +97,7 @@ public void resetForNextRound() { */ public void recordBid(UUID playerId, String playerName, long bidAmount) { // Add to front of list (most recent first) - bidHistory.add(0, new BidEntry(playerId, playerName, bidAmount)); + bidHistory.addFirst(new BidEntry(playerId, playerName, bidAmount)); } /** diff --git a/service.darkauction/src/main/java/net/swofty/service/darkauction/loot/DarkAuctionBookPool.java b/service.darkauction/src/main/java/net/swofty/service/darkauction/loot/DarkAuctionBookPool.java index c23c4073b..a306055ae 100644 --- a/service.darkauction/src/main/java/net/swofty/service/darkauction/loot/DarkAuctionBookPool.java +++ b/service.darkauction/src/main/java/net/swofty/service/darkauction/loot/DarkAuctionBookPool.java @@ -8,7 +8,7 @@ /** * Pool for Dark Auction round 2 (book round) * All books have equal chance of being selected - * + *

* In actual Hypixel, these are specific enchanted books like: * - Soul Eater V * - One For All I @@ -19,7 +19,7 @@ * - Ender Slayer VII * - No Pain No Gain I * - Mana Vampire VI - * + *

* For now, we use ENCHANTED_BOOK as a placeholder. * The specific enchantment type would be handled by item metadata. */ diff --git a/service.datamutex/src/main/java/net/swofty/service/datamutex/DataMutexService.java b/service.datamutex/src/main/java/net/swofty/service/datamutex/DataMutexService.java index 17186e8de..dbcbfddd4 100644 --- a/service.datamutex/src/main/java/net/swofty/service/datamutex/DataMutexService.java +++ b/service.datamutex/src/main/java/net/swofty/service/datamutex/DataMutexService.java @@ -24,7 +24,7 @@ public List getEndpoints() { ); } - public static void main(String[] args) { + static void main(String[] args) { SkyBlockService.init(new DataMutexService()); } } \ No newline at end of file diff --git a/service.orchestrator/src/main/java/net/swofty/service/orchestrator/OrchestratorCache.java b/service.orchestrator/src/main/java/net/swofty/service/orchestrator/OrchestratorCache.java index 007c8828e..b4e0ae11f 100644 --- a/service.orchestrator/src/main/java/net/swofty/service/orchestrator/OrchestratorCache.java +++ b/service.orchestrator/src/main/java/net/swofty/service/orchestrator/OrchestratorCache.java @@ -5,7 +5,14 @@ import net.swofty.commons.game.Game; import java.time.Instant; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Comparator; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ThreadLocalRandom; @@ -121,7 +128,7 @@ public static GameServerState instantiateServer(ServerType serverType, int maxPl // Prefer servers with more available capacity candidates.sort(Comparator.comparingInt(GameServerState::availableSlots).reversed()); - int topAvail = candidates.get(0).availableSlots(); + int topAvail = candidates.getFirst().availableSlots(); List topServers = new ArrayList<>(); for (GameServerState server : candidates) { diff --git a/service.orchestrator/src/main/java/net/swofty/service/orchestrator/OrchestratorService.java b/service.orchestrator/src/main/java/net/swofty/service/orchestrator/OrchestratorService.java index 9cf85806c..480e257d4 100644 --- a/service.orchestrator/src/main/java/net/swofty/service/orchestrator/OrchestratorService.java +++ b/service.orchestrator/src/main/java/net/swofty/service/orchestrator/OrchestratorService.java @@ -11,7 +11,7 @@ public class OrchestratorService implements SkyBlockService { - public static void main(String[] args) { + static void main(String[] args) { SkyBlockService.init(new OrchestratorService()); ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(r -> { diff --git a/service.party/src/main/java/net/swofty/service/party/PartyCache.java b/service.party/src/main/java/net/swofty/service/party/PartyCache.java index 699cf6ef3..4f8e3f16c 100644 --- a/service.party/src/main/java/net/swofty/service/party/PartyCache.java +++ b/service.party/src/main/java/net/swofty/service/party/PartyCache.java @@ -5,11 +5,6 @@ import net.swofty.commons.party.PendingParty; import net.swofty.commons.party.events.*; import net.swofty.commons.party.events.response.*; -import net.swofty.commons.party.events.PartyPlayerDisconnectEvent; -import net.swofty.commons.party.events.PartyPlayerRejoinEvent; -import net.swofty.commons.party.events.response.PartyMemberDisconnectedResponseEvent; -import net.swofty.commons.party.events.response.PartyMemberRejoinedResponseEvent; -import net.swofty.commons.party.events.response.PartyMemberDisconnectTimeoutResponseEvent; import net.swofty.commons.service.FromServiceChannels; import net.swofty.service.generic.redis.ServiceToServerManager; import org.json.JSONObject; @@ -19,8 +14,8 @@ import java.util.List; import java.util.Map; import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; public class PartyCache { diff --git a/service.party/src/main/java/net/swofty/service/party/PartyService.java b/service.party/src/main/java/net/swofty/service/party/PartyService.java index 24e3e5b4f..b9d6cb6ca 100644 --- a/service.party/src/main/java/net/swofty/service/party/PartyService.java +++ b/service.party/src/main/java/net/swofty/service/party/PartyService.java @@ -8,7 +8,7 @@ public class PartyService implements SkyBlockService { - public static void main(String[] args) { + static void main(String[] args) { SkyBlockService.init(new PartyService()); } diff --git a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/commands/ForceStartCommand.java b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/commands/ForceStartCommand.java index 26d7bc971..7286b576f 100644 --- a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/commands/ForceStartCommand.java +++ b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/commands/ForceStartCommand.java @@ -1,6 +1,5 @@ package net.swofty.type.bedwarsgame.commands; -import net.swofty.type.bedwarsgame.TypeBedWarsGameLoader; import net.swofty.type.bedwarsgame.game.Game; import net.swofty.type.bedwarsgame.game.GameStatus; import net.swofty.type.bedwarsgame.user.BedWarsPlayer; diff --git a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/commands/ShoutCommand.java b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/commands/ShoutCommand.java index 1521b198e..294450c4b 100644 --- a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/commands/ShoutCommand.java +++ b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/commands/ShoutCommand.java @@ -2,7 +2,6 @@ import net.minestom.server.command.builder.arguments.ArgumentType; import net.swofty.commons.bedwars.BedwarsGameType; -import net.swofty.type.bedwarsgame.TypeBedWarsGameLoader; import net.swofty.type.bedwarsgame.game.Game; import net.swofty.type.bedwarsgame.game.GameStatus; import net.swofty.type.bedwarsgame.user.BedWarsPlayer; diff --git a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionGameBreak.java b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionGameBreak.java index f0d1051a5..59e52345c 100644 --- a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionGameBreak.java +++ b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionGameBreak.java @@ -7,7 +7,6 @@ import net.minestom.server.instance.block.Block; import net.minestom.server.item.ItemStack; import net.minestom.server.potion.PotionEffect; -import net.minestom.server.tag.Tag; import net.swofty.commons.bedwars.map.BedWarsMapsConfig; import net.swofty.commons.bedwars.map.BedWarsMapsConfig.MapTeam; import net.swofty.commons.bedwars.map.BedWarsMapsConfig.TeamKey; diff --git a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionGameCustomItems.java b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionGameCustomItems.java index b68c07fbd..1f7fff373 100644 --- a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionGameCustomItems.java +++ b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionGameCustomItems.java @@ -4,7 +4,6 @@ import net.minestom.server.coordinate.Pos; import net.minestom.server.entity.Entity; import net.minestom.server.entity.EntityType; -import net.minestom.server.entity.Player; import net.minestom.server.event.entity.projectile.ProjectileCollideWithBlockEvent; import net.minestom.server.event.entity.projectile.ProjectileCollideWithEntityEvent; import net.minestom.server.event.item.PlayerFinishItemUseEvent; @@ -13,7 +12,6 @@ import net.minestom.server.event.player.PlayerUseItemOnBlockEvent; import net.minestom.server.instance.Instance; import net.minestom.server.instance.block.Block; -import net.minestom.server.tag.Tag; import net.swofty.commons.bedwars.map.BedWarsMapsConfig; import net.swofty.pvp.projectile.entities.FireballProjectile; import net.swofty.type.bedwarsgame.TypeBedWarsGameLoader; diff --git a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionGameMove.java b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionGameMove.java index d01334429..5a272d88b 100644 --- a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionGameMove.java +++ b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionGameMove.java @@ -6,7 +6,6 @@ import net.minestom.server.entity.damage.Damage; import net.minestom.server.entity.damage.DamageType; import net.minestom.server.event.player.PlayerMoveEvent; -import net.minestom.server.tag.Tag; import net.swofty.commons.bedwars.map.BedWarsMapsConfig; import net.swofty.commons.bedwars.map.BedWarsMapsConfig.MapTeam; import net.swofty.commons.bedwars.map.BedWarsMapsConfig.TeamKey; diff --git a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionGamePlace.java b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionGamePlace.java index 616af57d7..fb8034568 100644 --- a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionGamePlace.java +++ b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionGamePlace.java @@ -7,14 +7,13 @@ import net.minestom.server.instance.block.Block; import net.minestom.server.item.Material; import net.minestom.server.sound.SoundEvent; -import net.minestom.server.tag.Tag; +import net.swofty.commons.bedwars.map.BedWarsMapsConfig; +import net.swofty.commons.bedwars.map.BedWarsMapsConfig.MapTeam; import net.swofty.type.bedwarsgame.TypeBedWarsGameLoader; import net.swofty.type.bedwarsgame.entity.TntEntity; import net.swofty.type.bedwarsgame.game.Game; import net.swofty.type.bedwarsgame.game.GameStatus; import net.swofty.type.bedwarsgame.user.BedWarsPlayer; -import net.swofty.commons.bedwars.map.BedWarsMapsConfig; -import net.swofty.commons.bedwars.map.BedWarsMapsConfig.MapTeam; import net.swofty.type.generic.event.EventNodes; import net.swofty.type.generic.event.HypixelEvent; import net.swofty.type.generic.event.HypixelEventClass; diff --git a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionGamePlayerEvent.java b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionGamePlayerEvent.java index 012a8f89e..0ee3904a3 100644 --- a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionGamePlayerEvent.java +++ b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionGamePlayerEvent.java @@ -2,7 +2,6 @@ import net.kyori.adventure.text.minimessage.MiniMessage; import net.minestom.server.entity.ItemEntity; -import net.minestom.server.entity.Player; import net.minestom.server.event.inventory.InventoryPreClickEvent; import net.minestom.server.event.item.ItemDropEvent; import net.minestom.server.event.player.PlayerBlockInteractEvent; @@ -11,11 +10,9 @@ import net.minestom.server.inventory.PlayerInventory; import net.minestom.server.item.ItemStack; import net.minestom.server.item.Material; -import net.minestom.server.tag.Tag; import net.swofty.commons.bedwars.map.BedWarsMapsConfig; import net.swofty.commons.bedwars.map.BedWarsMapsConfig.MapTeam; import net.swofty.commons.bedwars.map.BedWarsMapsConfig.TeamKey; -import net.swofty.type.bedwarsgame.TypeBedWarsGameLoader; import net.swofty.type.bedwarsgame.game.Game; import net.swofty.type.bedwarsgame.game.GameStatus; import net.swofty.type.bedwarsgame.gui.GUIEnderChest; @@ -50,7 +47,7 @@ public void run(InventoryPreClickEvent event) { event.setCancelled(true); return; } - ; + if (game.getGameStatus() == GameStatus.WAITING) { event.setCancelled(true); } diff --git a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionPlayerChat.java b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionPlayerChat.java index b6ec5f11c..a1eba9d36 100644 --- a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionPlayerChat.java +++ b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionPlayerChat.java @@ -4,7 +4,6 @@ import net.swofty.commons.bedwars.BedwarsGameType; import net.swofty.commons.bedwars.BedwarsLevelColor; import net.swofty.commons.bedwars.BedwarsLevelUtil; -import net.swofty.type.bedwarsgame.TypeBedWarsGameLoader; import net.swofty.type.bedwarsgame.game.Game; import net.swofty.type.bedwarsgame.game.GameStatus; import net.swofty.type.bedwarsgame.user.BedWarsPlayer; diff --git a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/game/Game.java b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/game/Game.java index abb710422..30a1209cf 100644 --- a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/game/Game.java +++ b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/game/Game.java @@ -33,11 +33,15 @@ import net.swofty.type.bedwarsgame.stats.BedWarsStatsRecorder; import net.swofty.type.bedwarsgame.user.BedWarsPlayer; import net.swofty.type.bedwarsgame.user.ExperienceCause; -import net.swofty.type.generic.user.HypixelPlayer; import org.tinylog.Logger; import java.time.Duration; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Random; +import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; diff --git a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/gui/GUIEnderChest.java b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/gui/GUIEnderChest.java index 7c881c8a6..6ecc5bfc4 100644 --- a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/gui/GUIEnderChest.java +++ b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/gui/GUIEnderChest.java @@ -5,8 +5,6 @@ import net.minestom.server.inventory.Inventory; import net.minestom.server.inventory.InventoryType; import net.minestom.server.item.ItemStack; -import net.minestom.server.tag.Tag; -import net.swofty.type.bedwarsgame.TypeBedWarsGameLoader; import net.swofty.type.bedwarsgame.game.Game; import net.swofty.type.bedwarsgame.user.BedWarsPlayer; import net.swofty.type.generic.gui.inventory.HypixelInventoryGUI; diff --git a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/gui/GUITeamShop.java b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/gui/GUITeamShop.java index a83795778..03ce504b2 100644 --- a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/gui/GUITeamShop.java +++ b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/gui/GUITeamShop.java @@ -10,11 +10,14 @@ import net.minestom.server.inventory.InventoryType; import net.minestom.server.item.ItemStack; import net.minestom.server.item.Material; -import net.minestom.server.tag.Tag; import net.swofty.commons.bedwars.map.BedWarsMapsConfig; import net.swofty.type.bedwarsgame.TypeBedWarsGameLoader; import net.swofty.type.bedwarsgame.game.Game; -import net.swofty.type.bedwarsgame.shop.*; +import net.swofty.type.bedwarsgame.shop.TeamShopManager; +import net.swofty.type.bedwarsgame.shop.TeamUpgrade; +import net.swofty.type.bedwarsgame.shop.TeamUpgradeTier; +import net.swofty.type.bedwarsgame.shop.Trap; +import net.swofty.type.bedwarsgame.shop.TrapManager; import net.swofty.type.bedwarsgame.user.BedWarsPlayer; import net.swofty.type.bedwarsgame.util.BedWarsInventoryManipulator; import net.swofty.type.generic.gui.inventory.HypixelInventoryGUI; diff --git a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/item/impl/LeaveGameBed.java b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/item/impl/LeaveGameBed.java index a5e3429d2..b78aedf68 100644 --- a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/item/impl/LeaveGameBed.java +++ b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/item/impl/LeaveGameBed.java @@ -3,10 +3,9 @@ import net.minestom.server.event.player.PlayerUseItemEvent; import net.minestom.server.item.ItemStack; import net.minestom.server.item.Material; -import net.swofty.type.bedwarsgame.TypeBedWarsGameLoader; import net.swofty.type.bedwarsgame.game.Game; -import net.swofty.type.bedwarsgame.user.BedWarsPlayer; import net.swofty.type.bedwarsgame.item.SimpleInteractableItem; +import net.swofty.type.bedwarsgame.user.BedWarsPlayer; import net.swofty.type.generic.gui.inventory.ItemStackCreator; public class LeaveGameBed extends SimpleInteractableItem { diff --git a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/redis/service/RedisBedWarsGamePropagatePartyEvent.java b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/redis/service/RedisBedWarsGamePropagatePartyEvent.java index 3fb6ea150..08b907184 100644 --- a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/redis/service/RedisBedWarsGamePropagatePartyEvent.java +++ b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/redis/service/RedisBedWarsGamePropagatePartyEvent.java @@ -13,17 +13,20 @@ import net.swofty.commons.service.FromServiceChannels; import net.swofty.proxyapi.ProxyPlayer; import net.swofty.proxyapi.redis.ServiceToClient; +import net.swofty.type.bedwarsgame.game.Game; +import net.swofty.type.bedwarsgame.user.BedWarsPlayer; import net.swofty.type.generic.HypixelConst; import net.swofty.type.generic.HypixelGenericLoader; import net.swofty.type.generic.user.HypixelPlayer; -import net.swofty.type.bedwarsgame.TypeBedWarsGameLoader; -import net.swofty.type.bedwarsgame.game.Game; -import net.swofty.type.bedwarsgame.user.BedWarsPlayer; import org.json.JSONArray; import org.json.JSONObject; import org.tinylog.Logger; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; import java.util.concurrent.TimeUnit; public class RedisBedWarsGamePropagatePartyEvent implements ServiceToClient { diff --git a/type.bedwarslobby/src/main/java/net/swofty/type/bedwarslobby/events/ActionPlayerDataSpawn.java b/type.bedwarslobby/src/main/java/net/swofty/type/bedwarslobby/events/ActionPlayerDataSpawn.java index 1639c7e84..a246e477c 100644 --- a/type.bedwarslobby/src/main/java/net/swofty/type/bedwarslobby/events/ActionPlayerDataSpawn.java +++ b/type.bedwarslobby/src/main/java/net/swofty/type/bedwarslobby/events/ActionPlayerDataSpawn.java @@ -2,22 +2,21 @@ import net.minestom.server.event.player.PlayerSpawnEvent; import net.swofty.commons.ServerType; +import net.swofty.commons.bedwars.BedwarsLevelUtil; +import net.swofty.type.bedwarslobby.hologram.LeaderboardHologramManager; +import net.swofty.type.generic.HypixelConst; +import net.swofty.type.generic.HypixelGenericLoader; import net.swofty.type.generic.achievement.AchievementCategory; import net.swofty.type.generic.data.datapoints.DatapointLeaderboardLong; import net.swofty.type.generic.data.datapoints.DatapointToggles; import net.swofty.type.generic.data.handlers.BedWarsDataHandler; +import net.swofty.type.generic.event.EventNodes; +import net.swofty.type.generic.event.HypixelEvent; +import net.swofty.type.generic.event.HypixelEventClass; import net.swofty.type.generic.quest.QuestData; import net.swofty.type.generic.quest.QuestDefinition; import net.swofty.type.generic.quest.QuestRegistry; import net.swofty.type.generic.quest.QuestType; -import net.swofty.commons.bedwars.BedwarsLevelUtil; -import net.swofty.type.bedwarslobby.hologram.LeaderboardHologramManager; -import net.swofty.type.generic.HypixelConst; -import net.swofty.type.generic.HypixelGenericLoader; -import net.swofty.type.generic.data.datapoints.DatapointLong; -import net.swofty.type.generic.event.EventNodes; -import net.swofty.type.generic.event.HypixelEvent; -import net.swofty.type.generic.event.HypixelEventClass; import net.swofty.type.generic.user.HypixelPlayer; import net.swofty.type.generic.user.categories.Rank; diff --git a/type.bedwarslobby/src/main/java/net/swofty/type/bedwarslobby/hologram/BedWarsLeaderboardHologram.java b/type.bedwarslobby/src/main/java/net/swofty/type/bedwarslobby/hologram/BedWarsLeaderboardHologram.java index eb76b9971..48b582400 100644 --- a/type.bedwarslobby/src/main/java/net/swofty/type/bedwarslobby/hologram/BedWarsLeaderboardHologram.java +++ b/type.bedwarslobby/src/main/java/net/swofty/type/bedwarslobby/hologram/BedWarsLeaderboardHologram.java @@ -2,9 +2,14 @@ import lombok.Getter; import net.minestom.server.coordinate.Pos; -import net.swofty.commons.bedwars.*; +import net.swofty.commons.bedwars.BedwarsLeaderboardMode; +import net.swofty.commons.bedwars.BedwarsLeaderboardPeriod; +import net.swofty.commons.bedwars.BedwarsLeaderboardView; +import net.swofty.commons.bedwars.BedwarsLevelColor; +import net.swofty.commons.bedwars.BedwarsLevelUtil; +import net.swofty.commons.bedwars.BedwarsStatType; +import net.swofty.commons.bedwars.BedwarsTextAlignment; import net.swofty.type.bedwarslobby.hologram.LeaderboardHologramManager.PlayerLeaderboardState; -import net.swofty.type.bedwarslobby.util.BedwarsNameFormatter; import net.swofty.type.generic.HypixelGenericLoader; import net.swofty.type.generic.data.datapoints.DatapointLeaderboardLong; import net.swofty.type.generic.data.handlers.BedWarsDataHandler; @@ -13,11 +18,15 @@ import net.swofty.type.generic.user.HypixelPlayer; import java.text.NumberFormat; -import java.time.*; +import java.time.DayOfWeek; +import java.time.Duration; +import java.time.ZoneOffset; +import java.time.ZonedDateTime; import java.time.temporal.TemporalAdjusters; import java.util.ArrayList; import java.util.List; import java.util.Locale; +import java.util.Objects; @Getter public enum BedWarsLeaderboardHologram { @@ -131,12 +140,8 @@ private List getPlayersInLobby(HypixelPlaye lobbyPlayer.getInstance().equals(viewer.getInstance())) { LeaderboardService.LeaderboardEntry entry = LeaderboardService.getPlayerRankEntry(leaderboardKey, lobbyPlayer.getUuid()); - if (entry != null) { - lobbyEntries.add(entry); - } else { - lobbyEntries.add(new LeaderboardService.LeaderboardEntry( - lobbyPlayer.getUuid(), -1, 0)); - } + lobbyEntries.add(Objects.requireNonNullElseGet(entry, () -> new LeaderboardService.LeaderboardEntry( + lobbyPlayer.getUuid(), -1, 0))); } } diff --git a/type.bedwarslobby/src/main/java/net/swofty/type/bedwarslobby/launchpad/BedWarsLaunchPads.java b/type.bedwarslobby/src/main/java/net/swofty/type/bedwarslobby/launchpad/BedWarsLaunchPads.java index d7580564c..511420fad 100644 --- a/type.bedwarslobby/src/main/java/net/swofty/type/bedwarslobby/launchpad/BedWarsLaunchPads.java +++ b/type.bedwarslobby/src/main/java/net/swofty/type/bedwarslobby/launchpad/BedWarsLaunchPads.java @@ -15,7 +15,6 @@ public enum BedWarsLaunchPads implements LaunchPad { new Pos(-10.5, 67, 0.5), (player) -> {}, ""); - ; private final List slimeBlocks; private final Pos destination; diff --git a/type.bedwarslobby/src/main/java/net/swofty/type/bedwarslobby/util/BedwarsNameFormatter.java b/type.bedwarslobby/src/main/java/net/swofty/type/bedwarslobby/util/BedwarsNameFormatter.java index 6b6600813..947e242c8 100644 --- a/type.bedwarslobby/src/main/java/net/swofty/type/bedwarslobby/util/BedwarsNameFormatter.java +++ b/type.bedwarslobby/src/main/java/net/swofty/type/bedwarslobby/util/BedwarsNameFormatter.java @@ -1,6 +1,5 @@ package net.swofty.type.bedwarslobby.util; -import net.swofty.commons.StringUtility; import net.swofty.commons.bedwars.BedwarsLevelColor; import net.swofty.commons.bedwars.BedwarsLevelUtil; import net.swofty.type.generic.data.HypixelDataHandler; diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/TypeDwarvenMinesLoader.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/TypeDwarvenMinesLoader.java index 1cec2e002..721709c4d 100644 --- a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/TypeDwarvenMinesLoader.java +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/TypeDwarvenMinesLoader.java @@ -9,12 +9,9 @@ import net.minestom.server.coordinate.Pos; import net.minestom.server.registry.RegistryKey; import net.minestom.server.world.DimensionType; -import net.minestom.server.world.biome.Biome; -import net.minestom.server.world.biome.BiomeEffects; import net.swofty.commons.CustomWorlds; import net.swofty.commons.ServerType; import net.swofty.commons.ServiceType; -import net.swofty.commons.bedwars.map.BedWarsMapsConfig; import net.swofty.proxyapi.redis.ProxyToClient; import net.swofty.proxyapi.redis.ServiceToClient; import net.swofty.type.dwarvenmines.gui.GUIGemstoneGrinder; diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/commission/Objective.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/commission/Objective.java index c53b8046f..a4dab9ef2 100644 --- a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/commission/Objective.java +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/commission/Objective.java @@ -1,10 +1,5 @@ package net.swofty.type.dwarvenmines.commission; -import net.minestom.server.entity.Entity; -import net.minestom.server.item.Material; - -import java.util.List; - public class Objective { public final ObjectiveType type; public final BlockTarget target; @@ -34,6 +29,6 @@ public enum BlockTarget { GOLDEN_GOBLIN, STAR_SENTRY, MITHRIL, - TITANIUM; + TITANIUM } } diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/gui/GUICommisions.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/gui/GUICommisions.java index 1c016ff27..3b89c4719 100644 --- a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/gui/GUICommisions.java +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/gui/GUICommisions.java @@ -5,7 +5,10 @@ import net.minestom.server.item.ItemStack; import net.minestom.server.item.Material; import net.swofty.commons.StringUtility; -import net.swofty.type.dwarvenmines.commission.*; +import net.swofty.type.dwarvenmines.commission.Commission; +import net.swofty.type.dwarvenmines.commission.CommissionMilestone; +import net.swofty.type.dwarvenmines.commission.CommissionReward; +import net.swofty.type.dwarvenmines.commission.Commissions; import net.swofty.type.generic.gui.inventory.HypixelInventoryGUI; import net.swofty.type.generic.gui.inventory.ItemStackCreator; import net.swofty.type.generic.gui.inventory.item.GUIClickableItem; @@ -17,6 +20,7 @@ import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; public class GUICommisions extends HypixelInventoryGUI { @@ -114,9 +118,7 @@ public ItemStack.Builder getItem(HypixelPlayer player) { lore.add("§9Rewards"); String[] rewardLines = CommissionReward.getRewardLore(hotmTier, isHotmMaxed, willGetDailyBonus); - for (String line : rewardLines) { - lore.add(line); - } + lore.addAll(Arrays.asList(rewardLines)); lore.add(" "); @@ -184,15 +186,9 @@ private String buildProgressBar(int percentage) { int filled = percentage / 5; // 20 segments total int empty = 20 - filled; - StringBuilder bar = new StringBuilder("§f§l§m"); - for (int i = 0; i < filled; i++) { - bar.append(" "); - } - bar.append("§7§l§m"); - for (int i = 0; i < empty; i++) { - bar.append(" "); - } - return bar.toString(); + return "§f§l§m" + " ".repeat(Math.max(0, filled)) + + "§7§l§m" + + " ".repeat(Math.max(0, empty)); } private String buildMilestoneProgressBar(double percentage) { diff --git a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/EmissaryBraum.java b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/EmissaryBraum.java index 965f402da..1743bebbc 100644 --- a/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/EmissaryBraum.java +++ b/type.dwarvenmines/src/main/java/net/swofty/type/dwarvenmines/npcs/EmissaryBraum.java @@ -6,7 +6,6 @@ import net.swofty.type.generic.entity.npc.HypixelNPC; import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration; import net.swofty.type.generic.event.custom.NPCInteractEvent; -import net.swofty.type.generic.gui.inventory.HypixelInventoryGUI; import net.swofty.type.generic.user.HypixelPlayer; public class EmissaryBraum extends HypixelNPC { diff --git a/type.generic/src/main/java/net/swofty/type/generic/achievement/AchievementDefinition.java b/type.generic/src/main/java/net/swofty/type/generic/achievement/AchievementDefinition.java index 779083280..5f6cd0683 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/achievement/AchievementDefinition.java +++ b/type.generic/src/main/java/net/swofty/type/generic/achievement/AchievementDefinition.java @@ -23,7 +23,7 @@ public class AchievementDefinition { public int getTotalPoints() { if (type == AchievementType.TIERED && tiers != null) { - return tiers.stream().mapToInt(AchievementTier::getPoints).sum(); + return tiers.stream().mapToInt(AchievementTier::points).sum(); } return points; } @@ -31,24 +31,24 @@ public int getTotalPoints() { public int getGoalForTier(int tier) { if (type != AchievementType.TIERED || tiers == null) return goal; return tiers.stream() - .filter(t -> t.getTier() == tier) + .filter(t -> t.tier() == tier) .findFirst() - .map(AchievementTier::getGoal) + .map(AchievementTier::goal) .orElse(0); } public int getPointsForTier(int tier) { if (type != AchievementType.TIERED || tiers == null) return points; return tiers.stream() - .filter(t -> t.getTier() == tier) + .filter(t -> t.tier() == tier) .findFirst() - .map(AchievementTier::getPoints) + .map(AchievementTier::points) .orElse(0); } public int getMaxTier() { if (type != AchievementType.TIERED || tiers == null) return 1; - return tiers.stream().mapToInt(AchievementTier::getTier).max().orElse(1); + return tiers.stream().mapToInt(AchievementTier::tier).max().orElse(1); } public int getPointsUpToTier(int tier) { @@ -56,8 +56,8 @@ public int getPointsUpToTier(int tier) { return tier >= 1 ? points : 0; } return tiers.stream() - .filter(t -> t.getTier() <= tier) - .mapToInt(AchievementTier::getPoints) + .filter(t -> t.tier() <= tier) + .mapToInt(AchievementTier::points) .sum(); } diff --git a/type.generic/src/main/java/net/swofty/type/generic/achievement/AchievementTier.java b/type.generic/src/main/java/net/swofty/type/generic/achievement/AchievementTier.java index ad9eb2dde..f7ab403ac 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/achievement/AchievementTier.java +++ b/type.generic/src/main/java/net/swofty/type/generic/achievement/AchievementTier.java @@ -1,15 +1,6 @@ package net.swofty.type.generic.achievement; -import lombok.AllArgsConstructor; -import lombok.Getter; - -@Getter -@AllArgsConstructor -public class AchievementTier { - private final int tier; - private final int goal; - private final int points; - +public record AchievementTier(int tier, int goal, int points) { public String getRomanNumeral() { return switch (tier) { case 1 -> "I"; diff --git a/type.generic/src/main/java/net/swofty/type/generic/command/commands/LobbyCommand.java b/type.generic/src/main/java/net/swofty/type/generic/command/commands/LobbyCommand.java index 86c9c3cb7..571f773f8 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/command/commands/LobbyCommand.java +++ b/type.generic/src/main/java/net/swofty/type/generic/command/commands/LobbyCommand.java @@ -1,8 +1,5 @@ package net.swofty.type.generic.command.commands; -import net.minestom.server.command.builder.arguments.ArgumentEnum; -import net.minestom.server.command.builder.arguments.ArgumentType; -import net.minestom.server.entity.GameMode; import net.swofty.commons.ServerType; import net.swofty.type.generic.command.CommandParameters; import net.swofty.type.generic.command.HypixelCommand; diff --git a/type.generic/src/main/java/net/swofty/type/generic/command/commands/MessageCommand.java b/type.generic/src/main/java/net/swofty/type/generic/command/commands/MessageCommand.java index 38c7d46b1..2f8acd54b 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/command/commands/MessageCommand.java +++ b/type.generic/src/main/java/net/swofty/type/generic/command/commands/MessageCommand.java @@ -4,11 +4,8 @@ import net.minestom.server.command.builder.arguments.ArgumentStringArray; import net.minestom.server.command.builder.arguments.ArgumentType; import net.swofty.proxyapi.ProxyPlayer; -import net.swofty.type.generic.HypixelGenericLoader; import net.swofty.type.generic.command.CommandParameters; import net.swofty.type.generic.command.HypixelCommand; -import net.swofty.type.generic.data.DataHandler; -import net.swofty.type.generic.data.HypixelDataHandler; import net.swofty.type.generic.data.HypixelDataHandler; import net.swofty.type.generic.i18n.I18n; import net.swofty.type.generic.user.HypixelPlayer; diff --git a/type.generic/src/main/java/net/swofty/type/generic/data/GameDataHandler.java b/type.generic/src/main/java/net/swofty/type/generic/data/GameDataHandler.java index 35d9f6afa..483467b0c 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/data/GameDataHandler.java +++ b/type.generic/src/main/java/net/swofty/type/generic/data/GameDataHandler.java @@ -9,7 +9,7 @@ /** * Interface for game-specific data handlers (BedWars, SkyWars, etc.) * These are account-wide handlers that can be selectively loaded by servers. - * + *

* To add a new game data handler: * 1. Create a class extending DataHandler and implementing GameDataHandler * 2. Register it in HypixelGenericLoader via GameDataHandlerRegistry.register() diff --git a/type.generic/src/main/java/net/swofty/type/generic/data/HypixelDataHandler.java b/type.generic/src/main/java/net/swofty/type/generic/data/HypixelDataHandler.java index 48fdbc5ad..11f53e111 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/data/HypixelDataHandler.java +++ b/type.generic/src/main/java/net/swofty/type/generic/data/HypixelDataHandler.java @@ -92,7 +92,6 @@ public Datapoint get(Data datapoint) { } /** Optionally typed getter (casts to the class you pass). */ - @SuppressWarnings("unchecked") public > R get(Data datapoint, Class type) { Datapoint dp = this.datapoints.get(datapoint.key); return (R) (dp != null ? type.cast(dp) : type.cast(datapoint.defaultDatapoint)); diff --git a/type.generic/src/main/java/net/swofty/type/generic/data/datapoints/DatapointChatType.java b/type.generic/src/main/java/net/swofty/type/generic/data/datapoints/DatapointChatType.java index 8a3005035..f26c67911 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/data/datapoints/DatapointChatType.java +++ b/type.generic/src/main/java/net/swofty/type/generic/data/datapoints/DatapointChatType.java @@ -4,7 +4,7 @@ import net.swofty.type.generic.data.Datapoint; public class DatapointChatType extends Datapoint { - private static final Serializer serializer = new Serializer() { + private static final Serializer serializer = new Serializer<>() { @Override public String serialize(ChatType value) { return value.currentChatType.name(); diff --git a/type.generic/src/main/java/net/swofty/type/generic/data/datapoints/DatapointFriendSort.java b/type.generic/src/main/java/net/swofty/type/generic/data/datapoints/DatapointFriendSort.java index 6668cff9f..31e86da2c 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/data/datapoints/DatapointFriendSort.java +++ b/type.generic/src/main/java/net/swofty/type/generic/data/datapoints/DatapointFriendSort.java @@ -5,7 +5,7 @@ import org.json.JSONObject; public class DatapointFriendSort extends Datapoint { - private static final Serializer serializer = new Serializer() { + private static final Serializer serializer = new Serializer<>() { @Override public String serialize(FriendSortData value) { JSONObject json = new JSONObject(); diff --git a/type.generic/src/main/java/net/swofty/type/generic/data/datapoints/DatapointPresentYear.java b/type.generic/src/main/java/net/swofty/type/generic/data/datapoints/DatapointPresentYear.java index 24d9e4b88..08e29e4b3 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/data/datapoints/DatapointPresentYear.java +++ b/type.generic/src/main/java/net/swofty/type/generic/data/datapoints/DatapointPresentYear.java @@ -3,10 +3,7 @@ import net.swofty.commons.protocol.JacksonSerializer; import net.swofty.type.generic.data.Datapoint; -import java.time.Year; -import java.util.HashMap; import java.util.List; -import java.util.Map; public class DatapointPresentYear extends Datapoint { private static final JacksonSerializer serializer = diff --git a/type.generic/src/main/java/net/swofty/type/generic/data/handlers/BedWarsDataHandler.java b/type.generic/src/main/java/net/swofty/type/generic/data/handlers/BedWarsDataHandler.java index e14be2ee1..c1c7c31c0 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/data/handlers/BedWarsDataHandler.java +++ b/type.generic/src/main/java/net/swofty/type/generic/data/handlers/BedWarsDataHandler.java @@ -5,14 +5,18 @@ import net.swofty.type.generic.data.DataHandler; import net.swofty.type.generic.data.Datapoint; import net.swofty.type.generic.data.GameDataHandler; -import net.swofty.type.generic.data.datapoints.*; import net.swofty.type.generic.data.datapoints.DatapointBedWarsModeStats; import net.swofty.type.generic.data.datapoints.DatapointBedWarsQuickBuy; +import net.swofty.type.generic.data.datapoints.DatapointLeaderboardLong; import net.swofty.type.generic.data.datapoints.DatapointLeaderboardPreferences; +import net.swofty.type.generic.data.datapoints.DatapointLong; +import net.swofty.type.generic.data.datapoints.DatapointMapStringLong; +import net.swofty.type.generic.data.datapoints.DatapointStringList; import net.swofty.type.generic.data.mongodb.UserDatabase; import net.swofty.type.generic.user.HypixelPlayer; import org.bson.Document; import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; import org.tinylog.Logger; import tools.jackson.core.JacksonException; @@ -82,7 +86,7 @@ public boolean hasDataInDocument(Document document) { return false; } - public static BedWarsDataHandler getUser(UUID uuid) { + public static @NonNull BedWarsDataHandler getUser(UUID uuid) { if (!bedwarsCache.containsKey(uuid)) throw new RuntimeException("User " + uuid + " does not exist!"); return bedwarsCache.get(uuid); } @@ -146,7 +150,6 @@ public Datapoint get(Data datapoint) { return dp != null ? dp : datapoint.defaultDatapoint; } - @SuppressWarnings("unchecked") public > R get(Data datapoint, Class type) { Datapoint dp = this.datapoints.get(datapoint.key); return (R) (dp != null ? type.cast(dp) : type.cast(datapoint.defaultDatapoint)); diff --git a/type.generic/src/main/java/net/swofty/type/generic/data/handlers/PrototypeLobbyDataHandler.java b/type.generic/src/main/java/net/swofty/type/generic/data/handlers/PrototypeLobbyDataHandler.java index 9d6808e5a..ab771f9ed 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/data/handlers/PrototypeLobbyDataHandler.java +++ b/type.generic/src/main/java/net/swofty/type/generic/data/handlers/PrototypeLobbyDataHandler.java @@ -125,7 +125,6 @@ public Datapoint get(Data datapoint) { return dp != null ? dp : datapoint.defaultDatapoint; } - @SuppressWarnings("unchecked") public > R get(Data datapoint, Class type) { Datapoint dp = this.datapoints.get(datapoint.key); return (R) (dp != null ? type.cast(dp) : type.cast(datapoint.defaultDatapoint)); diff --git a/type.generic/src/main/java/net/swofty/type/generic/data/handlers/SkywarsDataHandler.java b/type.generic/src/main/java/net/swofty/type/generic/data/handlers/SkywarsDataHandler.java index 592707ee8..62596d910 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/data/handlers/SkywarsDataHandler.java +++ b/type.generic/src/main/java/net/swofty/type/generic/data/handlers/SkywarsDataHandler.java @@ -5,7 +5,13 @@ import net.swofty.type.generic.data.DataHandler; import net.swofty.type.generic.data.Datapoint; import net.swofty.type.generic.data.GameDataHandler; -import net.swofty.type.generic.data.datapoints.*; +import net.swofty.type.generic.data.datapoints.DatapointBoolean; +import net.swofty.type.generic.data.datapoints.DatapointLong; +import net.swofty.type.generic.data.datapoints.DatapointSkywarsKitStats; +import net.swofty.type.generic.data.datapoints.DatapointSkywarsLeaderboardPreferences; +import net.swofty.type.generic.data.datapoints.DatapointSkywarsModeStats; +import net.swofty.type.generic.data.datapoints.DatapointSkywarsUnlocks; +import net.swofty.type.generic.data.datapoints.DatapointSoulWellUpgrades; import net.swofty.type.generic.data.mongodb.UserDatabase; import net.swofty.type.generic.user.HypixelPlayer; import org.bson.Document; @@ -140,7 +146,6 @@ public Datapoint get(Data datapoint) { return dp != null ? dp : datapoint.defaultDatapoint; } - @SuppressWarnings("unchecked") public > R get(Data datapoint, Class type) { Datapoint dp = this.datapoints.get(datapoint.key); return (R) (dp != null ? type.cast(dp) : type.cast(datapoint.defaultDatapoint)); diff --git a/type.generic/src/main/java/net/swofty/type/generic/data/mongodb/BedWarsStatsDatabase.java b/type.generic/src/main/java/net/swofty/type/generic/data/mongodb/BedWarsStatsDatabase.java index 5411cae3f..200ea8d14 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/data/mongodb/BedWarsStatsDatabase.java +++ b/type.generic/src/main/java/net/swofty/type/generic/data/mongodb/BedWarsStatsDatabase.java @@ -4,10 +4,8 @@ import com.mongodb.client.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; -import com.mongodb.client.model.Aggregates; import com.mongodb.client.model.Filters; import com.mongodb.client.model.Indexes; -import com.mongodb.client.model.Accumulators; import net.swofty.commons.bedwars.BedwarsGameType; import net.swofty.commons.bedwars.BedwarsLeaderboardMode; import net.swofty.commons.bedwars.BedwarsStatType; @@ -17,7 +15,12 @@ import java.time.ZoneOffset; import java.time.ZonedDateTime; import java.time.temporal.ChronoUnit; -import java.util.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; public class BedWarsStatsDatabase { public static MongoDatabase database; diff --git a/type.generic/src/main/java/net/swofty/type/generic/entity/npc/NPCOption.java b/type.generic/src/main/java/net/swofty/type/generic/entity/npc/NPCOption.java index 3a7da5bd9..ad4d5aeb6 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/entity/npc/NPCOption.java +++ b/type.generic/src/main/java/net/swofty/type/generic/entity/npc/NPCOption.java @@ -5,7 +5,6 @@ import net.kyori.adventure.text.event.ClickEvent; import net.kyori.adventure.text.event.HoverEvent; import net.kyori.adventure.text.format.NamedTextColor; -import net.kyori.adventure.text.format.Style; import net.kyori.adventure.text.format.TextDecoration; import net.swofty.type.generic.user.HypixelPlayer; import net.swofty.type.generic.utility.MathUtility; diff --git a/type.generic/src/main/java/net/swofty/type/generic/event/actions/ActionPlayerMute.java b/type.generic/src/main/java/net/swofty/type/generic/event/actions/ActionPlayerMute.java index 9dd79bc1f..fcf9e9387 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/event/actions/ActionPlayerMute.java +++ b/type.generic/src/main/java/net/swofty/type/generic/event/actions/ActionPlayerMute.java @@ -26,10 +26,13 @@ public void onPlayerChat(PlayerChatEvent event) { .orTimeout(2, TimeUnit.SECONDS) .join(); - if (response instanceof GetActivePunishmentProtocolObject.GetActivePunishmentResponse muteResponse && muteResponse.found()) { + if (response instanceof GetActivePunishmentProtocolObject.GetActivePunishmentResponse( + boolean found, String type, String banId, net.swofty.commons.punishment.PunishmentReason reason, + long expiresAt, java.util.List tags + ) && found) { event.setCancelled(true); ActivePunishment punishment = new ActivePunishment( - muteResponse.type(), muteResponse.banId(), muteResponse.reason(), muteResponse.expiresAt(), muteResponse.tags()); + type, banId, reason, expiresAt, tags); player.sendMessage(PunishmentMessages.muteMessage(punishment)); } } catch (Exception ignored) { diff --git a/type.generic/src/main/java/net/swofty/type/generic/friend/FriendManager.java b/type.generic/src/main/java/net/swofty/type/generic/friend/FriendManager.java index a595e59a1..d21585c38 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/friend/FriendManager.java +++ b/type.generic/src/main/java/net/swofty/type/generic/friend/FriendManager.java @@ -1,14 +1,18 @@ package net.swofty.type.generic.friend; import net.swofty.commons.ServiceType; -import net.swofty.commons.friend.*; +import net.swofty.commons.friend.FriendData; +import net.swofty.commons.friend.FriendEvent; +import net.swofty.commons.friend.FriendSettingType; +import net.swofty.commons.friend.PendingFriendRequest; import net.swofty.commons.friend.events.*; import net.swofty.commons.presence.PresenceInfo; -import net.swofty.commons.protocol.objects.friend.*; +import net.swofty.commons.protocol.objects.friend.AreFriendsProtocolObject; +import net.swofty.commons.protocol.objects.friend.GetFriendDataProtocolObject; +import net.swofty.commons.protocol.objects.friend.GetPendingFriendRequestsProtocolObject; +import net.swofty.commons.protocol.objects.friend.SendFriendEventToServiceProtocolObject; import net.swofty.commons.protocol.objects.presence.GetPresenceBulkProtocolObject; -import net.swofty.proxyapi.ProxyPlayer; import net.swofty.proxyapi.ProxyService; -import net.swofty.type.generic.data.DataHandler; import net.swofty.type.generic.data.HypixelDataHandler; import net.swofty.type.generic.user.HypixelPlayer; import org.jetbrains.annotations.Nullable; diff --git a/type.generic/src/main/java/net/swofty/type/generic/gui/v2/test/TestPaginatedView.java b/type.generic/src/main/java/net/swofty/type/generic/gui/v2/test/TestPaginatedView.java index 9f8428810..dd129e993 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/gui/v2/test/TestPaginatedView.java +++ b/type.generic/src/main/java/net/swofty/type/generic/gui/v2/test/TestPaginatedView.java @@ -5,13 +5,15 @@ import net.minestom.server.inventory.InventoryType; import net.minestom.server.item.ItemStack; import net.minestom.server.item.Material; -import net.swofty.type.generic.gui.v2.*; +import net.swofty.type.generic.gui.v2.Components; +import net.swofty.type.generic.gui.v2.PaginatedView; +import net.swofty.type.generic.gui.v2.ViewConfiguration; +import net.swofty.type.generic.gui.v2.ViewLayout; import net.swofty.type.generic.gui.v2.context.ClickContext; import net.swofty.type.generic.gui.v2.context.ViewContext; import net.swofty.type.generic.user.HypixelPlayer; import java.util.List; -import java.util.stream.IntStream; public final class TestPaginatedView extends PaginatedView { diff --git a/type.generic/src/main/java/net/swofty/type/generic/gui/v2/test/TestSharedStateView.java b/type.generic/src/main/java/net/swofty/type/generic/gui/v2/test/TestSharedStateView.java index b7e7015a6..cf5716193 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/gui/v2/test/TestSharedStateView.java +++ b/type.generic/src/main/java/net/swofty/type/generic/gui/v2/test/TestSharedStateView.java @@ -1,10 +1,13 @@ package net.swofty.type.generic.gui.v2.test; -import net.kyori.adventure.text.Component; import net.minestom.server.inventory.InventoryType; import net.minestom.server.item.Material; import net.swofty.type.generic.gui.inventory.ItemStackCreator; -import net.swofty.type.generic.gui.v2.*; +import net.swofty.type.generic.gui.v2.Components; +import net.swofty.type.generic.gui.v2.StatefulView; +import net.swofty.type.generic.gui.v2.ViewConfiguration; +import net.swofty.type.generic.gui.v2.ViewLayout; +import net.swofty.type.generic.gui.v2.ViewNavigator; import net.swofty.type.generic.gui.v2.context.ViewContext; import net.swofty.type.generic.user.HypixelPlayer; diff --git a/type.generic/src/main/java/net/swofty/type/generic/gui/v2/test/TestStateView.java b/type.generic/src/main/java/net/swofty/type/generic/gui/v2/test/TestStateView.java index 8c21bf0bc..17586b6e2 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/gui/v2/test/TestStateView.java +++ b/type.generic/src/main/java/net/swofty/type/generic/gui/v2/test/TestStateView.java @@ -1,10 +1,13 @@ package net.swofty.type.generic.gui.v2.test; -import net.kyori.adventure.text.Component; import net.minestom.server.inventory.InventoryType; import net.minestom.server.item.Material; import net.swofty.type.generic.gui.inventory.ItemStackCreator; -import net.swofty.type.generic.gui.v2.*; +import net.swofty.type.generic.gui.v2.Components; +import net.swofty.type.generic.gui.v2.Layouts; +import net.swofty.type.generic.gui.v2.StatefulView; +import net.swofty.type.generic.gui.v2.ViewConfiguration; +import net.swofty.type.generic.gui.v2.ViewLayout; import net.swofty.type.generic.gui.v2.context.ViewContext; public final class TestStateView implements StatefulView { diff --git a/type.generic/src/main/java/net/swofty/type/generic/leaderboard/LeaderboardTracked.java b/type.generic/src/main/java/net/swofty/type/generic/leaderboard/LeaderboardTracked.java index d683aef79..30d71bca2 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/leaderboard/LeaderboardTracked.java +++ b/type.generic/src/main/java/net/swofty/type/generic/leaderboard/LeaderboardTracked.java @@ -3,7 +3,7 @@ /** * Interface for datapoints that should be tracked on a single leaderboard. * Implement this in datapoints that hold simple numeric values (Long, Double, Integer). - * + *

* Example usage: *

  * public class DatapointLeaderboardLong extends DatapointLong implements LeaderboardTracked {
diff --git a/type.generic/src/main/java/net/swofty/type/generic/leaderboard/MapLeaderboardTracked.java b/type.generic/src/main/java/net/swofty/type/generic/leaderboard/MapLeaderboardTracked.java
index 205895c63..3abaaa530 100644
--- a/type.generic/src/main/java/net/swofty/type/generic/leaderboard/MapLeaderboardTracked.java
+++ b/type.generic/src/main/java/net/swofty/type/generic/leaderboard/MapLeaderboardTracked.java
@@ -5,7 +5,7 @@
 /**
  * Interface for datapoints that hold map-based data where each key has its own leaderboard.
  * Implement this for datapoints like Collections, Skills, etc.
- *
+ * 

* Example usage for SkyBlock Collections: *

  * public class DatapointCollection extends SkyBlockDatapoint
diff --git a/type.generic/src/main/java/net/swofty/type/generic/packet/HypixelPacketClientListener.java b/type.generic/src/main/java/net/swofty/type/generic/packet/HypixelPacketClientListener.java
index 4a4577e13..3f7c0dc4a 100644
--- a/type.generic/src/main/java/net/swofty/type/generic/packet/HypixelPacketClientListener.java
+++ b/type.generic/src/main/java/net/swofty/type/generic/packet/HypixelPacketClientListener.java
@@ -6,7 +6,6 @@
 import net.minestom.server.event.GlobalEventHandler;
 import net.minestom.server.event.player.PlayerPacketEvent;
 import net.minestom.server.network.packet.client.ClientPacket;
-import net.swofty.type.generic.HypixelConst;
 import net.swofty.type.generic.HypixelGenericLoader;
 import net.swofty.type.generic.user.HypixelPlayer;
 
diff --git a/type.generic/src/main/java/net/swofty/type/generic/party/PartyManager.java b/type.generic/src/main/java/net/swofty/type/generic/party/PartyManager.java
index 7816367fc..6bc8a1613 100644
--- a/type.generic/src/main/java/net/swofty/type/generic/party/PartyManager.java
+++ b/type.generic/src/main/java/net/swofty/type/generic/party/PartyManager.java
@@ -10,7 +10,6 @@
 import net.swofty.commons.protocol.objects.party.SendPartyEventToServiceProtocolObject;
 import net.swofty.proxyapi.ProxyPlayer;
 import net.swofty.proxyapi.ProxyService;
-import net.swofty.type.generic.data.DataHandler;
 import net.swofty.type.generic.data.HypixelDataHandler;
 import net.swofty.type.generic.user.HypixelPlayer;
 import net.swofty.type.generic.user.categories.Rank;
diff --git a/type.generic/src/main/java/net/swofty/type/generic/redis/RedisStaffChatBroadcast.java b/type.generic/src/main/java/net/swofty/type/generic/redis/RedisStaffChatBroadcast.java
index 9a8c6f05c..c4d05f92c 100644
--- a/type.generic/src/main/java/net/swofty/type/generic/redis/RedisStaffChatBroadcast.java
+++ b/type.generic/src/main/java/net/swofty/type/generic/redis/RedisStaffChatBroadcast.java
@@ -7,7 +7,6 @@
 import net.swofty.type.generic.data.HypixelDataHandler;
 import net.swofty.type.generic.data.datapoints.DatapointRank;
 import net.swofty.type.generic.data.datapoints.DatapointString;
-import net.swofty.type.generic.user.HypixelPlayer;
 import net.swofty.type.generic.user.categories.Rank;
 import org.json.JSONObject;
 
@@ -68,7 +67,7 @@ private void sendToLocalStaff(String message, UUID senderUuid) {
         HypixelGenericLoader.getLoadedPlayers().stream()
                 .filter(player -> player.getRank().isStaff())
                 .filter(player -> ChatCommand.isStaffViewEnabled(player.getUuid()) ||
-                        (senderUuid != null && player.getUuid().equals(senderUuid)))
+                        (player.getUuid().equals(senderUuid)))
                 .forEach(player -> player.sendMessage(message));
     }
 }
diff --git a/type.generic/src/main/java/net/swofty/type/generic/tab/EmptyTabModule.java b/type.generic/src/main/java/net/swofty/type/generic/tab/EmptyTabModule.java
index 016d53e18..0c1101a71 100644
--- a/type.generic/src/main/java/net/swofty/type/generic/tab/EmptyTabModule.java
+++ b/type.generic/src/main/java/net/swofty/type/generic/tab/EmptyTabModule.java
@@ -1,12 +1,7 @@
 package net.swofty.type.generic.tab;
 
-import net.swofty.type.generic.HypixelGenericLoader;
-import net.swofty.type.generic.data.HypixelDataHandler;
-import net.swofty.type.generic.data.datapoints.DatapointRank;
 import net.swofty.type.generic.user.HypixelPlayer;
 
-import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 
 public class EmptyTabModule extends TablistModule {
diff --git a/type.generic/src/main/java/net/swofty/type/generic/tab/TablistManager.java b/type.generic/src/main/java/net/swofty/type/generic/tab/TablistManager.java
index cf7021394..5762a885d 100644
--- a/type.generic/src/main/java/net/swofty/type/generic/tab/TablistManager.java
+++ b/type.generic/src/main/java/net/swofty/type/generic/tab/TablistManager.java
@@ -13,7 +13,15 @@
 import net.swofty.type.generic.user.HypixelPlayer;
 
 import java.nio.charset.StandardCharsets;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.EnumSet;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -81,7 +89,7 @@ public void runScheduler(Scheduler scheduler) {
                                 player.sendPacket(teamPacket);
                             }
 
-                            UUID uuid = UUID.nameUUIDFromBytes((player.getUuid().toString() + "#tab#" + slotIndex)
+                            UUID uuid = UUID.nameUUIDFromBytes((player.getUuid() + "#tab#" + slotIndex)
                                 .getBytes(StandardCharsets.UTF_8));
                             cache.tabEntries.add(uuid);
 
diff --git a/type.generic/src/main/java/net/swofty/type/generic/user/HypixelPlayer.java b/type.generic/src/main/java/net/swofty/type/generic/user/HypixelPlayer.java
index 29d1b14be..9a3f7c801 100644
--- a/type.generic/src/main/java/net/swofty/type/generic/user/HypixelPlayer.java
+++ b/type.generic/src/main/java/net/swofty/type/generic/user/HypixelPlayer.java
@@ -7,19 +7,23 @@
 import net.minestom.server.entity.PlayerSkin;
 import net.minestom.server.network.player.GameProfile;
 import net.minestom.server.network.player.PlayerConnection;
-import net.swofty.commons.MinecraftVersion;
 import net.swofty.commons.ServerType;
 import net.swofty.proxyapi.ProxyPlayer;
 import net.swofty.type.generic.HypixelConst;
 import net.swofty.type.generic.HypixelGenericLoader;
+import net.swofty.type.generic.achievement.PlayerAchievementHandler;
 import net.swofty.type.generic.data.HypixelDataHandler;
 import net.swofty.type.generic.data.datapoints.DatapointChatType;
 import net.swofty.type.generic.data.datapoints.DatapointRank;
 import net.swofty.type.generic.data.datapoints.DatapointString;
 import net.swofty.type.generic.data.datapoints.DatapointToggles;
-import net.swofty.type.generic.achievement.PlayerAchievementHandler;
 import net.swofty.type.generic.experience.PlayerExperienceHandler;
-import net.swofty.type.generic.gui.v2.*;
+import net.swofty.type.generic.gui.v2.StatefulPaginatedView;
+import net.swofty.type.generic.gui.v2.StatefulView;
+import net.swofty.type.generic.gui.v2.StatelessView;
+import net.swofty.type.generic.gui.v2.View;
+import net.swofty.type.generic.gui.v2.ViewNavigator;
+import net.swofty.type.generic.gui.v2.ViewSession;
 import net.swofty.type.generic.quest.PlayerQuestHandler;
 import net.swofty.type.generic.user.categories.Rank;
 import org.jetbrains.annotations.NotNull;
diff --git a/type.goldmine/src/main/java/net/swofty/type/goldmine/npcs/NPCIronForger.java b/type.goldmine/src/main/java/net/swofty/type/goldmine/npcs/NPCIronForger.java
index a94cabb9d..151c42ee8 100644
--- a/type.goldmine/src/main/java/net/swofty/type/goldmine/npcs/NPCIronForger.java
+++ b/type.goldmine/src/main/java/net/swofty/type/goldmine/npcs/NPCIronForger.java
@@ -4,13 +4,11 @@
 import net.swofty.type.generic.data.datapoints.DatapointToggles;
 import net.swofty.type.generic.entity.npc.HypixelNPC;
 import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration;
+import net.swofty.type.generic.event.custom.NPCInteractEvent;
 import net.swofty.type.generic.user.HypixelPlayer;
-import net.swofty.type.goldmine.gui.GUIShopGoldForger;
 import net.swofty.type.goldmine.gui.GUIShopIronForger;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 
-import net.swofty.type.generic.event.custom.NPCInteractEvent;
-
 public class NPCIronForger extends HypixelNPC {
 
 	public NPCIronForger() {
diff --git a/type.hub/src/main/java/net/swofty/type/hub/gui/GUIHubSelector.java b/type.hub/src/main/java/net/swofty/type/hub/gui/GUIHubSelector.java
index 9a67413ed..bb5464676 100644
--- a/type.hub/src/main/java/net/swofty/type/hub/gui/GUIHubSelector.java
+++ b/type.hub/src/main/java/net/swofty/type/hub/gui/GUIHubSelector.java
@@ -3,7 +3,6 @@
 import net.minestom.server.event.inventory.InventoryPreClickEvent;
 import net.minestom.server.inventory.InventoryType;
 import net.minestom.server.inventory.click.Click;
-import net.minestom.server.inventory.click.ClickType;
 import net.minestom.server.item.ItemStack;
 import net.minestom.server.item.Material;
 import net.swofty.commons.ServerType;
@@ -11,19 +10,19 @@
 import net.swofty.proxyapi.ProxyInformation;
 import net.swofty.proxyapi.ProxyPlayer;
 import net.swofty.type.generic.HypixelConst;
-import net.swofty.type.skyblockgeneric.SkyBlockGenericLoader;
+import net.swofty.type.generic.gui.inventory.HypixelPaginatedGUI;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
 import net.swofty.type.generic.gui.inventory.RefreshingGUI;
-import net.swofty.type.generic.gui.inventory.HypixelPaginatedGUI;
 import net.swofty.type.generic.gui.inventory.item.GUIClickableItem;
-import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
+import net.swofty.type.generic.user.HypixelPlayer;
 import net.swofty.type.generic.utility.PaginationList;
+import net.swofty.type.skyblockgeneric.SkyBlockGenericLoader;
+import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 
 import java.util.Comparator;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
-import net.swofty.type.generic.user.HypixelPlayer;
 
 public class GUIHubSelector extends HypixelPaginatedGUI implements RefreshingGUI {
     private final ProxyInformation information;
@@ -115,7 +114,7 @@ public void run(InventoryPreClickEvent e, HypixelPlayer p) {
 
             @Override
             public ItemStack.Builder getItem(HypixelPlayer p) {
-                SkyBlockPlayer player = (SkyBlockPlayer) p; 
+                SkyBlockPlayer player = (SkyBlockPlayer) p;
                 return ItemStackCreator.getStack(
                         "§aRandom Hub",
                         Material.COMPASS, 1,
@@ -158,7 +157,7 @@ protected GUIClickableItem createItemFor(UnderstandableProxyServer server, int s
 
             @Override
             public ItemStack.Builder getItem(HypixelPlayer p) {
-                SkyBlockPlayer player = (SkyBlockPlayer) p; 
+                SkyBlockPlayer player = (SkyBlockPlayer) p;
                 counter++;
                 counterAtThisMoment = counter;
                 return ItemStackCreator.getStack(
@@ -174,7 +173,7 @@ public ItemStack.Builder getItem(HypixelPlayer p) {
 
             @Override
             public void run(InventoryPreClickEvent e, HypixelPlayer p) {
-                SkyBlockPlayer player = (SkyBlockPlayer) p; 
+                SkyBlockPlayer player = (SkyBlockPlayer) p;
                 if (isThisServer) {
                     player.sendMessage("§cYou are already on this server!");
                     player.closeInventory();
diff --git a/type.hub/src/main/java/net/swofty/type/hub/gui/GUIShopWoolWeaverVibrant.java b/type.hub/src/main/java/net/swofty/type/hub/gui/GUIShopWoolWeaverVibrant.java
index 212a51651..47caf2c3b 100644
--- a/type.hub/src/main/java/net/swofty/type/hub/gui/GUIShopWoolWeaverVibrant.java
+++ b/type.hub/src/main/java/net/swofty/type/hub/gui/GUIShopWoolWeaverVibrant.java
@@ -1,17 +1,12 @@
 package net.swofty.type.hub.gui;
 
-import net.minestom.server.event.inventory.InventoryPreClickEvent;
-import net.minestom.server.item.ItemStack;
 import net.minestom.server.item.Material;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
-import net.swofty.type.generic.gui.inventory.item.GUIClickableItem;
 import net.swofty.type.generic.gui.v2.ViewLayout;
 import net.swofty.type.generic.gui.v2.context.ViewContext;
 import net.swofty.type.skyblockgeneric.gui.ShopView;
 import net.swofty.type.skyblockgeneric.item.SkyBlockItem;
 import net.swofty.type.skyblockgeneric.shop.type.CoinShopPrice;
-import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
-import net.swofty.type.generic.user.HypixelPlayer;
 
 public class GUIShopWoolWeaverVibrant extends ShopView {
     public GUIShopWoolWeaverVibrant() {
diff --git a/type.hub/src/main/java/net/swofty/type/hub/npcs/NPCBaker.java b/type.hub/src/main/java/net/swofty/type/hub/npcs/NPCBaker.java
index 7f7d35825..3cbb5d8eb 100644
--- a/type.hub/src/main/java/net/swofty/type/hub/npcs/NPCBaker.java
+++ b/type.hub/src/main/java/net/swofty/type/hub/npcs/NPCBaker.java
@@ -5,9 +5,9 @@
 import net.swofty.type.generic.data.datapoints.DatapointInteger;
 import net.swofty.type.generic.entity.npc.HypixelNPC;
 import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration;
+import net.swofty.type.generic.event.custom.NPCInteractEvent;
 import net.swofty.type.generic.user.HypixelPlayer;
 import net.swofty.type.hub.gui.GUIBakerShop;
-import net.swofty.type.hub.gui.GUIShopLumberMerchant;
 import net.swofty.type.skyblockgeneric.calendar.CalendarEvent;
 import net.swofty.type.skyblockgeneric.calendar.SkyBlockCalendar;
 import net.swofty.type.skyblockgeneric.data.SkyBlockDataHandler;
@@ -20,8 +20,6 @@
 import java.util.List;
 import java.util.stream.Stream;
 
-import net.swofty.type.generic.event.custom.NPCInteractEvent;
-
 public class NPCBaker extends HypixelNPC {
 
     public NPCBaker() {
@@ -32,7 +30,6 @@ public String[] holograms(HypixelPlayer player) {
                 if (!events.contains(CalendarEvent.NEW_YEAR)) {
                     return new String[]{""};
                 }
-                ;
                 return new String[]{"§fBaker", "§e§lCLICK"};
             }
 
@@ -52,7 +49,6 @@ public Pos position(HypixelPlayer player) {
                 if (!events.contains(CalendarEvent.NEW_YEAR)) {
                     return new Pos(-6.5, 0, -47.5, 180, 0);
                 }
-                ;
                 return new Pos(-6.5, 70, -47.5, 180, 0);
             }
 
diff --git a/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCSherry.java b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCSherry.java
index 3f4aa086e..d4b4c88f7 100644
--- a/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCSherry.java
+++ b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCSherry.java
@@ -4,7 +4,6 @@
 import net.minestom.server.entity.EntityType;
 import net.swofty.type.generic.entity.npc.HypixelNPC;
 import net.swofty.type.generic.entity.npc.configuration.AnimalConfiguration;
-import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration;
 import net.swofty.type.generic.event.custom.NPCInteractEvent;
 import net.swofty.type.generic.user.HypixelPlayer;
 
diff --git a/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCTerry.java b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCTerry.java
index e22e7dde1..bbe780f09 100644
--- a/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCTerry.java
+++ b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/npcs/NPCTerry.java
@@ -3,7 +3,6 @@
 import net.minestom.server.coordinate.Pos;
 import net.swofty.type.generic.entity.npc.HypixelNPC;
 import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration;
-import net.swofty.type.generic.entity.npc.configuration.NPCConfiguration;
 import net.swofty.type.generic.event.custom.NPCInteractEvent;
 import net.swofty.type.generic.user.HypixelPlayer;
 
diff --git a/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/present/Present.java b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/present/Present.java
index 8db7a45ae..8aba28286 100644
--- a/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/present/Present.java
+++ b/type.jerrysworkshop/src/main/java/net/swofty/type/jerrysworkshop/present/Present.java
@@ -5,7 +5,6 @@
 import net.kyori.adventure.nbt.ListBinaryTag;
 import net.minestom.server.coordinate.BlockVec;
 import net.minestom.server.coordinate.Point;
-import net.minestom.server.coordinate.Pos;
 import net.minestom.server.instance.Instance;
 import net.minestom.server.instance.block.Block;
 import net.minestom.server.tag.Tag;
diff --git a/type.lobby/src/main/java/net/swofty/type/lobby/commands/ParkourCommand.java b/type.lobby/src/main/java/net/swofty/type/lobby/commands/ParkourCommand.java
index cbe91be18..8166918aa 100644
--- a/type.lobby/src/main/java/net/swofty/type/lobby/commands/ParkourCommand.java
+++ b/type.lobby/src/main/java/net/swofty/type/lobby/commands/ParkourCommand.java
@@ -1,7 +1,6 @@
 package net.swofty.type.lobby.commands;
 
 import net.minestom.server.command.builder.arguments.ArgumentLiteral;
-import net.minestom.server.entity.Player;
 import net.swofty.type.generic.HypixelConst;
 import net.swofty.type.generic.command.CommandParameters;
 import net.swofty.type.generic.command.HypixelCommand;
diff --git a/type.lobby/src/main/java/net/swofty/type/lobby/gui/GUITieredAchievements.java b/type.lobby/src/main/java/net/swofty/type/lobby/gui/GUITieredAchievements.java
index 7eab9c2be..b8918abb2 100644
--- a/type.lobby/src/main/java/net/swofty/type/lobby/gui/GUITieredAchievements.java
+++ b/type.lobby/src/main/java/net/swofty/type/lobby/gui/GUITieredAchievements.java
@@ -4,7 +4,13 @@
 import net.minestom.server.inventory.InventoryType;
 import net.minestom.server.item.ItemStack;
 import net.minestom.server.item.Material;
-import net.swofty.type.generic.achievement.*;
+import net.swofty.type.generic.achievement.AchievementCategory;
+import net.swofty.type.generic.achievement.AchievementDefinition;
+import net.swofty.type.generic.achievement.AchievementRegistry;
+import net.swofty.type.generic.achievement.AchievementStatisticsService;
+import net.swofty.type.generic.achievement.AchievementTier;
+import net.swofty.type.generic.achievement.AchievementType;
+import net.swofty.type.generic.achievement.PlayerAchievementHandler;
 import net.swofty.type.generic.gui.inventory.HypixelInventoryGUI;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
 import net.swofty.type.generic.gui.inventory.item.GUIClickableItem;
@@ -234,11 +240,11 @@ public ItemStack.Builder getItem(HypixelPlayer player) {
                 if (unlocked) {
                     lore.add("§7Progress: §aDONE! §7(§a" + String.format("%,d", currentProgress) + "§7)");
                 } else {
-                    lore.add("§7Progress: §a" + String.format("%,d", currentProgress) + "§7/§a" + String.format("%,d", tier.getGoal()));
+                    lore.add("§7Progress: §a" + String.format("%,d", currentProgress) + "§7/§a" + String.format("%,d", tier.goal()));
                 }
 
                 lore.add("§7Reward:");
-                lore.add("§8+§e" + tier.getPoints() + " §7Achievement Points");
+                lore.add("§8+§e" + tier.points() + " §7Achievement Points");
                 lore.add("");
 
                 if (unlocked) {
diff --git a/type.lobby/src/main/java/net/swofty/type/lobby/item/impl/LastCheckpoint.java b/type.lobby/src/main/java/net/swofty/type/lobby/item/impl/LastCheckpoint.java
index 5e852c14d..67bb20672 100644
--- a/type.lobby/src/main/java/net/swofty/type/lobby/item/impl/LastCheckpoint.java
+++ b/type.lobby/src/main/java/net/swofty/type/lobby/item/impl/LastCheckpoint.java
@@ -1,6 +1,5 @@
 package net.swofty.type.lobby.item.impl;
 
-import net.minestom.server.coordinate.CoordConversion;
 import net.minestom.server.event.trait.CancellableEvent;
 import net.minestom.server.event.trait.PlayerInstanceEvent;
 import net.minestom.server.item.ItemStack;
diff --git a/type.lobby/src/main/java/net/swofty/type/lobby/parkour/LobbyParkourManager.java b/type.lobby/src/main/java/net/swofty/type/lobby/parkour/LobbyParkourManager.java
index e5da094e5..ff8a76e00 100644
--- a/type.lobby/src/main/java/net/swofty/type/lobby/parkour/LobbyParkourManager.java
+++ b/type.lobby/src/main/java/net/swofty/type/lobby/parkour/LobbyParkourManager.java
@@ -3,7 +3,6 @@
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 import net.minestom.server.coordinate.Point;
-import net.minestom.server.coordinate.Pos;
 import net.minestom.server.instance.Instance;
 import net.swofty.type.generic.HypixelConst;
 import net.swofty.type.generic.data.HypixelDataHandler;
diff --git a/type.murdermysterygame/src/main/java/net/swofty/type/murdermysterygame/TypeMurderMysteryGameLoader.java b/type.murdermysterygame/src/main/java/net/swofty/type/murdermysterygame/TypeMurderMysteryGameLoader.java
index 21fd9c3df..1e9dce4a1 100644
--- a/type.murdermysterygame/src/main/java/net/swofty/type/murdermysterygame/TypeMurderMysteryGameLoader.java
+++ b/type.murdermysterygame/src/main/java/net/swofty/type/murdermysterygame/TypeMurderMysteryGameLoader.java
@@ -17,32 +17,22 @@
 import net.minestom.server.timer.TaskSchedule;
 import net.minestom.server.utils.time.TimeUnit;
 import net.minestom.server.world.DimensionType;
-import net.swofty.commons.murdermystery.MurderMysteryGameType;
 import net.swofty.commons.CustomWorlds;
 import net.swofty.commons.ServerType;
 import net.swofty.commons.ServiceType;
+import net.swofty.commons.murdermystery.MurderMysteryGameType;
+import net.swofty.commons.murdermystery.map.MurderMysteryMapsConfig;
 import net.swofty.commons.protocol.objects.orchestrator.GameHeartbeatProtocolObject;
 import net.swofty.proxyapi.ProxyService;
 import net.swofty.proxyapi.redis.ProxyToClient;
 import net.swofty.proxyapi.redis.ServiceToClient;
 import net.swofty.pvp.MinestomPvP;
-import net.swofty.pvp.feature.CombatFeatureSet;
-import net.swofty.pvp.feature.CombatFeatures;
-import net.swofty.pvp.feature.FeatureType;
-import net.swofty.pvp.utils.CombatVersion;
-import net.swofty.type.murdermysterygame.game.Game;
-import net.swofty.type.murdermysterygame.item.SimpleInteractableItem;
-import net.swofty.type.murdermysterygame.item.SimpleInteractableItemHandler;
-import net.swofty.type.murdermysterygame.maphandler.MapHandler;
-import net.swofty.type.murdermysterygame.maphandler.MapHandlerRegistry;
-import net.swofty.type.murdermysterygame.user.MurderMysteryPlayer;
-import net.swofty.commons.murdermystery.map.MurderMysteryMapsConfig;
 import net.swofty.type.generic.HypixelConst;
-import net.swofty.type.generic.data.GameDataHandler;
-import net.swofty.type.generic.data.handlers.MurderMysteryDataHandler;
 import net.swofty.type.generic.HypixelGenericLoader;
 import net.swofty.type.generic.HypixelTypeLoader;
 import net.swofty.type.generic.command.HypixelCommand;
+import net.swofty.type.generic.data.GameDataHandler;
+import net.swofty.type.generic.data.handlers.MurderMysteryDataHandler;
 import net.swofty.type.generic.entity.npc.HypixelNPC;
 import net.swofty.type.generic.event.HypixelEventClass;
 import net.swofty.type.generic.redis.RedisOriginServer;
@@ -50,6 +40,12 @@
 import net.swofty.type.generic.tab.TablistManager;
 import net.swofty.type.generic.tab.TablistModule;
 import net.swofty.type.generic.user.HypixelPlayer;
+import net.swofty.type.murdermysterygame.game.Game;
+import net.swofty.type.murdermysterygame.item.SimpleInteractableItem;
+import net.swofty.type.murdermysterygame.item.SimpleInteractableItemHandler;
+import net.swofty.type.murdermysterygame.maphandler.MapHandler;
+import net.swofty.type.murdermysterygame.maphandler.MapHandlerRegistry;
+import net.swofty.type.murdermysterygame.user.MurderMysteryPlayer;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 import org.tinylog.Logger;
@@ -64,7 +60,6 @@
 import java.util.List;
 import java.util.UUID;
 
-import static net.swofty.pvp.feature.CombatFeatures.*;
 import static net.swofty.type.generic.HypixelGenericLoader.getLoadedPlayers;
 
 public class TypeMurderMysteryGameLoader implements HypixelTypeLoader {
diff --git a/type.murdermysterygame/src/main/java/net/swofty/type/murdermysterygame/events/ActionArrowHit.java b/type.murdermysterygame/src/main/java/net/swofty/type/murdermysterygame/events/ActionArrowHit.java
index 11db6d4dd..7be28340f 100644
--- a/type.murdermysterygame/src/main/java/net/swofty/type/murdermysterygame/events/ActionArrowHit.java
+++ b/type.murdermysterygame/src/main/java/net/swofty/type/murdermysterygame/events/ActionArrowHit.java
@@ -1,18 +1,17 @@
 package net.swofty.type.murdermysterygame.events;
 
 import net.minestom.server.entity.Entity;
-import net.minestom.server.entity.Player;
 import net.minestom.server.event.entity.projectile.ProjectileCollideWithEntityEvent;
 import net.swofty.pvp.projectile.AbstractProjectile;
 import net.swofty.type.generic.achievement.PlayerAchievementHandler;
+import net.swofty.type.generic.event.EventNodes;
+import net.swofty.type.generic.event.HypixelEvent;
+import net.swofty.type.generic.event.HypixelEventClass;
 import net.swofty.type.murdermysterygame.TypeMurderMysteryGameLoader;
 import net.swofty.type.murdermysterygame.game.Game;
 import net.swofty.type.murdermysterygame.game.GameStatus;
 import net.swofty.type.murdermysterygame.role.GameRole;
 import net.swofty.type.murdermysterygame.user.MurderMysteryPlayer;
-import net.swofty.type.generic.event.EventNodes;
-import net.swofty.type.generic.event.HypixelEvent;
-import net.swofty.type.generic.event.HypixelEventClass;
 
 public class ActionArrowHit implements HypixelEventClass {
 
diff --git a/type.murdermysterygame/src/main/java/net/swofty/type/murdermysterygame/events/ActionPlayerChat.java b/type.murdermysterygame/src/main/java/net/swofty/type/murdermysterygame/events/ActionPlayerChat.java
index a78530429..a4daaafe5 100644
--- a/type.murdermysterygame/src/main/java/net/swofty/type/murdermysterygame/events/ActionPlayerChat.java
+++ b/type.murdermysterygame/src/main/java/net/swofty/type/murdermysterygame/events/ActionPlayerChat.java
@@ -13,7 +13,6 @@
 import net.swofty.type.murdermysterygame.TypeMurderMysteryGameLoader;
 import net.swofty.type.murdermysterygame.game.Game;
 import net.swofty.type.murdermysterygame.game.GameStatus;
-import net.swofty.type.murdermysterygame.role.GameRole;
 import net.swofty.type.murdermysterygame.user.MurderMysteryPlayer;
 
 public class ActionPlayerChat implements HypixelEventClass {
diff --git a/type.murdermysterygame/src/main/java/net/swofty/type/murdermysterygame/game/Game.java b/type.murdermysterygame/src/main/java/net/swofty/type/murdermysterygame/game/Game.java
index ed10fdb12..9b697041c 100644
--- a/type.murdermysterygame/src/main/java/net/swofty/type/murdermysterygame/game/Game.java
+++ b/type.murdermysterygame/src/main/java/net/swofty/type/murdermysterygame/game/Game.java
@@ -6,11 +6,18 @@
 import net.kyori.adventure.audience.Audience;
 import net.kyori.adventure.text.Component;
 import net.kyori.adventure.text.format.NamedTextColor;
+import net.kyori.adventure.text.format.TextDecoration;
 import net.kyori.adventure.title.Title;
 import net.minestom.server.MinecraftServer;
 import net.minestom.server.coordinate.Pos;
+import net.minestom.server.entity.Entity;
+import net.minestom.server.entity.EntityType;
 import net.minestom.server.entity.GameMode;
+import net.minestom.server.entity.Player;
+import net.minestom.server.entity.metadata.item.ItemEntityMeta;
 import net.minestom.server.instance.InstanceContainer;
+import net.minestom.server.item.ItemStack;
+import net.minestom.server.item.Material;
 import net.minestom.server.network.packet.server.play.TeamsPacket;
 import net.minestom.server.tag.Tag;
 import net.minestom.server.timer.TaskSchedule;
@@ -18,10 +25,10 @@
 import net.swofty.commons.murdermystery.MurderMysteryGameType;
 import net.swofty.commons.murdermystery.MurderMysteryLeaderboardMode;
 import net.swofty.commons.murdermystery.map.MurderMysteryMapsConfig;
+import net.swofty.type.generic.achievement.PlayerAchievementHandler;
 import net.swofty.type.generic.data.datapoints.DatapointMurderMysteryModeStats;
 import net.swofty.type.generic.data.handlers.MurderMysteryDataHandler;
 import net.swofty.type.generic.experience.PlayerExperienceHandler;
-import net.kyori.adventure.text.format.TextDecoration;
 import net.swofty.type.murdermysterygame.TypeMurderMysteryGameLoader;
 import net.swofty.type.murdermysterygame.gold.GoldManager;
 import net.swofty.type.murdermysterygame.role.GameRole;
@@ -31,17 +38,15 @@
 
 import java.io.File;
 import java.time.Duration;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
 import java.util.concurrent.ThreadLocalRandom;
 
-import net.minestom.server.entity.Entity;
-import net.minestom.server.entity.EntityType;
-import net.minestom.server.entity.Player;
-import net.minestom.server.entity.metadata.item.ItemEntityMeta;
-import net.minestom.server.item.ItemStack;
-import net.minestom.server.item.Material;
-import net.swofty.type.generic.achievement.PlayerAchievementHandler;
-
 @Getter
 public class Game {
     public static final Tag ELIMINATED_TAG = Tag.Boolean("eliminated");
@@ -1025,9 +1030,7 @@ private void resetInstance() {
         instanceContainer.setChunkLoader(loader);
 
         // Unload all chunks so they reload fresh from the polar file
-        instanceContainer.getChunks().forEach(chunk -> {
-            instanceContainer.unloadChunk(chunk);
-        });
+        instanceContainer.getChunks().forEach(instanceContainer::unloadChunk);
     }
 
     private enum WinCondition {
diff --git a/type.murdermysterylobby/src/main/java/net/swofty/type/murdermysterylobby/TypeMurderMysteryLobbyLoader.java b/type.murdermysterylobby/src/main/java/net/swofty/type/murdermysterylobby/TypeMurderMysteryLobbyLoader.java
index 414a1a001..78684de34 100644
--- a/type.murdermysterylobby/src/main/java/net/swofty/type/murdermysterylobby/TypeMurderMysteryLobbyLoader.java
+++ b/type.murdermysterylobby/src/main/java/net/swofty/type/murdermysterylobby/TypeMurderMysteryLobbyLoader.java
@@ -11,19 +11,21 @@
 import net.swofty.proxyapi.redis.ServiceToClient;
 import net.swofty.type.generic.HypixelConst;
 import net.swofty.type.generic.HypixelGenericLoader;
+import net.swofty.type.generic.command.HypixelCommand;
 import net.swofty.type.generic.data.GameDataHandler;
 import net.swofty.type.generic.data.handlers.MurderMysteryDataHandler;
-import net.swofty.type.generic.command.HypixelCommand;
 import net.swofty.type.generic.entity.hologram.PlayerHolograms;
-import net.swofty.type.lobby.events.*;
-import net.swofty.type.murdermysterylobby.hologram.LeaderboardHologramManager;
 import net.swofty.type.generic.entity.npc.HypixelNPC;
 import net.swofty.type.generic.event.HypixelEventClass;
 import net.swofty.type.generic.tab.TablistManager;
 import net.swofty.type.generic.tab.TablistModule;
-import net.swofty.type.murdermysterylobby.tab.MurderMysteryPlayersOnlineModule;
-import net.swofty.type.murdermysterylobby.util.MurderMysteryLobbyMap;
 import net.swofty.type.lobby.LobbyTypeLoader;
+import net.swofty.type.lobby.events.LobbyBlockBreak;
+import net.swofty.type.lobby.events.LobbyItemEvents;
+import net.swofty.type.lobby.events.LobbyLaunchPadEvents;
+import net.swofty.type.lobby.events.LobbyParkourEvents;
+import net.swofty.type.lobby.events.LobbyPlayerJoinEvents;
+import net.swofty.type.lobby.events.LobbyPlayerMove;
 import net.swofty.type.lobby.item.LobbyItem;
 import net.swofty.type.lobby.item.LobbyItemHandler;
 import net.swofty.type.lobby.item.impl.HidePlayers;
@@ -33,7 +35,9 @@
 import net.swofty.type.lobby.launchpad.LaunchPad;
 import net.swofty.type.lobby.parkour.LobbyParkourManager;
 import net.swofty.type.lobby.parkour.Parkour;
+import net.swofty.type.murdermysterylobby.hologram.LeaderboardHologramManager;
 import net.swofty.type.murdermysterylobby.parkour.MurderMysteryLobbyParkour;
+import net.swofty.type.murdermysterylobby.util.MurderMysteryLobbyMap;
 import org.jetbrains.annotations.Nullable;
 import org.tinylog.Logger;
 
diff --git a/type.murdermysterylobby/src/main/java/net/swofty/type/murdermysterylobby/gui/GUIPlayMurderMystery.java b/type.murdermysterylobby/src/main/java/net/swofty/type/murdermysterylobby/gui/GUIPlayMurderMystery.java
index d6e0d7414..7d5171a08 100644
--- a/type.murdermysterylobby/src/main/java/net/swofty/type/murdermysterylobby/gui/GUIPlayMurderMystery.java
+++ b/type.murdermysterylobby/src/main/java/net/swofty/type/murdermysterylobby/gui/GUIPlayMurderMystery.java
@@ -4,18 +4,17 @@
 import net.minestom.server.inventory.InventoryType;
 import net.minestom.server.item.ItemStack;
 import net.minestom.server.item.Material;
-import net.swofty.commons.murdermystery.MurderMysteryGameType;
 import net.swofty.commons.ServerType;
 import net.swofty.commons.StringUtility;
+import net.swofty.commons.murdermystery.MurderMysteryGameType;
+import net.swofty.commons.party.FullParty;
 import net.swofty.type.generic.gui.inventory.HypixelInventoryGUI;
-import net.swofty.type.lobby.LobbyOrchestratorConnector;
-import net.swofty.type.generic.utility.GameCountCache;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
 import net.swofty.type.generic.gui.inventory.item.GUIClickableItem;
-import net.swofty.type.generic.gui.inventory.item.GUIItem;
-import net.swofty.type.generic.user.HypixelPlayer;
 import net.swofty.type.generic.party.PartyManager;
-import net.swofty.commons.party.FullParty;
+import net.swofty.type.generic.user.HypixelPlayer;
+import net.swofty.type.generic.utility.GameCountCache;
+import net.swofty.type.lobby.LobbyOrchestratorConnector;
 
 public class GUIPlayMurderMystery extends HypixelInventoryGUI {
 
diff --git a/type.murdermysterylobby/src/main/java/net/swofty/type/murdermysterylobby/hologram/MurderMysteryLeaderboardHologram.java b/type.murdermysterylobby/src/main/java/net/swofty/type/murdermysterylobby/hologram/MurderMysteryLeaderboardHologram.java
index 449873893..3e955fd30 100644
--- a/type.murdermysterylobby/src/main/java/net/swofty/type/murdermysterylobby/hologram/MurderMysteryLeaderboardHologram.java
+++ b/type.murdermysterylobby/src/main/java/net/swofty/type/murdermysterylobby/hologram/MurderMysteryLeaderboardHologram.java
@@ -2,19 +2,26 @@
 
 import lombok.Getter;
 import net.minestom.server.coordinate.Pos;
-import net.swofty.commons.murdermystery.*;
-import net.swofty.type.generic.data.HypixelDataHandler;
-import net.swofty.type.murdermysterylobby.hologram.LeaderboardHologramManager.PlayerLeaderboardState;
+import net.swofty.commons.murdermystery.MurderMysteryLeaderboardMode;
+import net.swofty.commons.murdermystery.MurderMysteryLeaderboardPeriod;
+import net.swofty.commons.murdermystery.MurderMysteryLeaderboardView;
+import net.swofty.commons.murdermystery.MurderMysteryStatType;
+import net.swofty.commons.murdermystery.MurderMysteryTextAlignment;
 import net.swofty.type.generic.HypixelGenericLoader;
 import net.swofty.type.generic.leaderboard.LeaderboardService;
 import net.swofty.type.generic.user.HypixelPlayer;
+import net.swofty.type.murdermysterylobby.hologram.LeaderboardHologramManager.PlayerLeaderboardState;
 
 import java.text.NumberFormat;
-import java.time.*;
+import java.time.DayOfWeek;
+import java.time.Duration;
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
 import java.time.temporal.TemporalAdjusters;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
+import java.util.Objects;
 
 @Getter
 public enum MurderMysteryLeaderboardHologram {
@@ -107,12 +114,8 @@ private List getPlayersInLobby(HypixelPlaye
                     lobbyPlayer.getInstance().equals(viewer.getInstance())) {
                 LeaderboardService.LeaderboardEntry entry =
                         LeaderboardService.getPlayerRankEntry(leaderboardKey, lobbyPlayer.getUuid());
-                if (entry != null) {
-                    lobbyEntries.add(entry);
-                } else {
-                    lobbyEntries.add(new LeaderboardService.LeaderboardEntry(
-                            lobbyPlayer.getUuid(), -1, 0));
-                }
+                lobbyEntries.add(Objects.requireNonNullElseGet(entry, () -> new LeaderboardService.LeaderboardEntry(
+                    lobbyPlayer.getUuid(), -1, 0)));
             }
         }
 
diff --git a/type.prototypelobby/src/main/java/net/swofty/type/prototypelobby/TypePrototypeLobbyLoader.java b/type.prototypelobby/src/main/java/net/swofty/type/prototypelobby/TypePrototypeLobbyLoader.java
index 7733fbb3e..d725d5f49 100644
--- a/type.prototypelobby/src/main/java/net/swofty/type/prototypelobby/TypePrototypeLobbyLoader.java
+++ b/type.prototypelobby/src/main/java/net/swofty/type/prototypelobby/TypePrototypeLobbyLoader.java
@@ -1,6 +1,5 @@
 package net.swofty.type.prototypelobby;
 
-import io.sentry.Sentry;
 import net.minestom.server.MinecraftServer;
 import net.minestom.server.coordinate.Pos;
 import net.swofty.commons.CustomWorlds;
@@ -18,7 +17,11 @@
 import net.swofty.type.generic.tab.TablistManager;
 import net.swofty.type.generic.tab.TablistModule;
 import net.swofty.type.lobby.LobbyTypeLoader;
-import net.swofty.type.lobby.events.*;
+import net.swofty.type.lobby.events.LobbyBlockBreak;
+import net.swofty.type.lobby.events.LobbyItemEvents;
+import net.swofty.type.lobby.events.LobbyParkourEvents;
+import net.swofty.type.lobby.events.LobbyPlayerJoinEvents;
+import net.swofty.type.lobby.events.LobbyPlayerMove;
 import net.swofty.type.lobby.item.LobbyItem;
 import net.swofty.type.lobby.item.LobbyItemHandler;
 import net.swofty.type.lobby.item.impl.HidePlayers;
diff --git a/type.ravengardgeneric/src/main/java/net/swofty/type/ravengardgeneric/data/RavengardDataHandler.java b/type.ravengardgeneric/src/main/java/net/swofty/type/ravengardgeneric/data/RavengardDataHandler.java
index 87a4992a5..30ef9f674 100644
--- a/type.ravengardgeneric/src/main/java/net/swofty/type/ravengardgeneric/data/RavengardDataHandler.java
+++ b/type.ravengardgeneric/src/main/java/net/swofty/type/ravengardgeneric/data/RavengardDataHandler.java
@@ -100,7 +100,6 @@ public Datapoint get(Data datapoint) {
         return datapointValue != null ? datapointValue : datapoint.defaultDatapoint;
     }
 
-    @SuppressWarnings("unchecked")
     public > R get(Data datapoint, Class type) {
         Datapoint datapointValue = this.datapoints.get(datapoint.key);
         return (R) (datapointValue != null ? type.cast(datapointValue) : type.cast(datapoint.defaultDatapoint));
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/abiphone/AbiphoneNPC.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/abiphone/AbiphoneNPC.java
index 947d5d563..447f97716 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/abiphone/AbiphoneNPC.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/abiphone/AbiphoneNPC.java
@@ -6,7 +6,6 @@
 import net.minestom.server.item.ItemStack;
 import net.swofty.type.generic.user.HypixelPlayer;
 import net.swofty.type.skyblockgeneric.item.components.AbiphoneComponent;
-import net.swofty.type.skyblockgeneric.item.updater.PlayerItemOrigin;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 
 @Getter
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/abiphone/impl/AbiphoneAlda.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/abiphone/impl/AbiphoneAlda.java
index ac704efd7..e8819d02d 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/abiphone/impl/AbiphoneAlda.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/abiphone/impl/AbiphoneAlda.java
@@ -2,7 +2,6 @@
 
 import net.minestom.server.item.ItemStack;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
-import net.swofty.type.generic.gui.v2.ViewNavigator;
 import net.swofty.type.generic.user.HypixelPlayer;
 import net.swofty.type.skyblockgeneric.abiphone.AbiphoneNPC;
 import net.swofty.type.skyblockgeneric.gui.inventories.shop.GUIShopAlda;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/block/SkyBlockBlock.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/block/SkyBlockBlock.java
index e2189d411..43c76b8ba 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/block/SkyBlockBlock.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/block/SkyBlockBlock.java
@@ -2,17 +2,18 @@
 
 import net.minestom.server.instance.block.Block;
 import net.minestom.server.tag.Tag;
-import org.tinylog.Logger;
 import net.swofty.type.skyblockgeneric.block.attribute.BlockAttribute;
 import net.swofty.type.skyblockgeneric.block.attribute.BlockAttributeHandler;
 import net.swofty.type.skyblockgeneric.block.attribute.attributes.BlockAttributeType;
 import net.swofty.type.skyblockgeneric.block.impl.CustomSkyBlockBlock;
+import org.tinylog.Logger;
 
+import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
 import java.util.List;
 
 public class SkyBlockBlock {
-    public List attributes = new ArrayList<>();
+    public List> attributes = new ArrayList<>();
     public Class clazz;
     public CustomSkyBlockBlock instance = null;
 
@@ -43,8 +44,8 @@ public SkyBlockBlock(Block block) {
         }
 
         try {
-            instance = clazz.newInstance();
-        } catch (InstantiationException | IllegalAccessException e) {
+            instance = clazz.getDeclaredConstructor().newInstance();
+        } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
             Logger.error(e, "Failed to instantiate CustomSkyBlockBlock from block: {}", clazz.getSimpleName());
         }
     }
@@ -56,7 +57,7 @@ public BlockAttributeHandler getAttributeHandler() {
     public Block toBlock() {
         Block block = instance.getDisplayMaterial();
 
-        for (BlockAttribute attribute : attributes) {
+        for (BlockAttribute attribute : attributes) {
             block = block.withTag(Tag.String(attribute.getKey()), attribute.saveIntoString());
         }
 
@@ -68,9 +69,9 @@ public Object getGenericInstance() {
             return instance;
 
         try {
-            instance = clazz.newInstance();
+            instance = clazz.getDeclaredConstructor().newInstance();
             return instance;
-        } catch (Exception e) {}
+        } catch (Exception _) {}
         return null;
     }
 
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/block/attribute/BlockAttribute.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/block/attribute/BlockAttribute.java
index 5b00b445e..6d6e2dfa3 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/block/attribute/BlockAttribute.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/block/attribute/BlockAttribute.java
@@ -1,5 +1,7 @@
 package net.swofty.type.skyblockgeneric.block.attribute;
 
+import lombok.Getter;
+import lombok.Setter;
 import net.swofty.type.skyblockgeneric.SkyBlockGenericLoader;
 import net.swofty.type.skyblockgeneric.block.impl.CustomSkyBlockBlock;
 import org.jetbrains.annotations.Nullable;
@@ -7,8 +9,10 @@
 import java.util.ArrayList;
 import java.util.Collection;
 
+@Setter
+@Getter
 public abstract class BlockAttribute {
-    private static final ArrayList attributes = new ArrayList<>();
+    private static final ArrayList> attributes = new ArrayList<>();
 
     public T value;
 
@@ -24,22 +28,14 @@ public BlockAttribute() {
 
     public abstract String saveIntoString();
 
-    public T getValue() {
-        return value;
-    }
-
-    public void setValue(T value) {
-        this.value = value;
-    }
-
     public static void registerBlockAttributes() {
         SkyBlockGenericLoader.loopThroughPackage(
                 "net.swofty.type.skyblockgeneric.block.attribute.attributes", BlockAttribute.class
         ).forEach(attributes::add);
     }
 
-    public static Collection getPossibleAttributes() {
-        return (Collection) attributes.stream().map(attributeClass -> {
+    public static Collection> getPossibleAttributes() {
+        return (Collection>) attributes.stream().map(attributeClass -> {
             try {
                 return attributeClass.getClass().newInstance();
             } catch (InstantiationException | IllegalAccessException e) {
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/block/impl/CustomSkyBlockBlock.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/block/impl/CustomSkyBlockBlock.java
index 03a8e242c..f54de393f 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/block/impl/CustomSkyBlockBlock.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/block/impl/CustomSkyBlockBlock.java
@@ -5,7 +5,12 @@
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 
 public interface CustomSkyBlockBlock {
-    @NonNull Block getDisplayMaterial();
-    @NonNull Boolean shouldPlace(SkyBlockPlayer player);
-    @NonNull Boolean shouldDestroy(SkyBlockPlayer player);
+    @NonNull
+    Block getDisplayMaterial();
+
+    @NonNull
+    Boolean shouldPlace(SkyBlockPlayer player);
+
+    @NonNull
+    Boolean shouldDestroy(SkyBlockPlayer player);
 }
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/collection/CollectionLoader.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/collection/CollectionLoader.java
index 676755a41..2ba37a978 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/collection/CollectionLoader.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/collection/CollectionLoader.java
@@ -1,22 +1,22 @@
 package net.swofty.type.skyblockgeneric.collection;
 
 import lombok.Data;
-import net.swofty.type.skyblockgeneric.item.components.EnchantedComponent;
-import org.tinylog.Logger;
 import net.minestom.server.item.Material;
 import net.swofty.commons.YamlFileUtils;
 import net.swofty.commons.skyblock.item.ItemType;
 import net.swofty.type.skyblockgeneric.item.SkyBlockItem;
-import net.swofty.type.skyblockgeneric.item.components.CraftableComponent;
+import net.swofty.type.skyblockgeneric.item.components.EnchantedComponent;
 import net.swofty.type.skyblockgeneric.item.crafting.SkyBlockRecipe;
-import net.swofty.type.skyblockgeneric.utility.RecipeParser;
 import org.jetbrains.annotations.Nullable;
+import org.tinylog.Logger;
 import org.yaml.snakeyaml.Yaml;
 
 import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
 
 @Data
 public class CollectionLoader {
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/commands/ViewRecipeCommand.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/commands/ViewRecipeCommand.java
index b27a3e806..08f108e3c 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/commands/ViewRecipeCommand.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/commands/ViewRecipeCommand.java
@@ -5,10 +5,9 @@
 import net.swofty.commons.skyblock.item.ItemType;
 import net.swofty.type.generic.command.CommandParameters;
 import net.swofty.type.generic.command.HypixelCommand;
-import net.swofty.type.skyblockgeneric.gui.inventories.sbmenu.GUISkyBlockProfile;
+import net.swofty.type.generic.user.categories.Rank;
 import net.swofty.type.skyblockgeneric.gui.inventories.sbmenu.recipe.GUIRecipe;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
-import net.swofty.type.generic.user.categories.Rank;
 
 @CommandParameters(description = "Opens up a recipe GUI",
         usage = "/viewrecipe ",
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/data/SkyBlockDataHandler.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/data/SkyBlockDataHandler.java
index 4b01c28b0..5c8323245 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/data/SkyBlockDataHandler.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/data/SkyBlockDataHandler.java
@@ -11,7 +11,14 @@
 import net.swofty.commons.skyblock.item.ItemType;
 import net.swofty.type.generic.data.DataHandler;
 import net.swofty.type.generic.data.Datapoint;
-import net.swofty.type.generic.data.datapoints.*;
+import net.swofty.type.generic.data.datapoints.DatapointBoolean;
+import net.swofty.type.generic.data.datapoints.DatapointDouble;
+import net.swofty.type.generic.data.datapoints.DatapointInteger;
+import net.swofty.type.generic.data.datapoints.DatapointLong;
+import net.swofty.type.generic.data.datapoints.DatapointMapStringLong;
+import net.swofty.type.generic.data.datapoints.DatapointPresentYear;
+import net.swofty.type.generic.data.datapoints.DatapointString;
+import net.swofty.type.generic.data.datapoints.DatapointStringList;
 import net.swofty.type.generic.data.mongodb.ProfilesDatabase;
 import net.swofty.type.generic.data.mongodb.UserDatabase;
 import net.swofty.type.generic.user.HypixelPlayer;
@@ -30,7 +37,11 @@
 import org.tinylog.Logger;
 import tools.jackson.core.JacksonException;
 
-import java.util.*;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.UUID;
 import java.util.function.BiConsumer;
 import java.util.function.Function;
 
@@ -154,7 +165,6 @@ public Datapoint get(Data datapoint) {
     }
 
     /** Optionally typed getter (casts to the class you pass). */
-    @SuppressWarnings("unchecked")
     public > R get(Data datapoint, Class type) {
         Datapoint dp = datapoints.get(datapoint.key);
         return (R) (dp != null ? type.cast(dp) : type.cast(datapoint.defaultDatapoint));
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/data/datapoints/DatapointAuctionStatistics.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/data/datapoints/DatapointAuctionStatistics.java
index fc29b13c4..b50128f99 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/data/datapoints/DatapointAuctionStatistics.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/data/datapoints/DatapointAuctionStatistics.java
@@ -108,7 +108,6 @@ public enum AuctionStat {
             MYTHIC_BOUGHT,
             SPECIAL_BOUGHT,
             ULTIMATE_BOUGHT,
-            ;
         }
     }
 }
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/data/datapoints/DatapointCollectedMobTypeRewards.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/data/datapoints/DatapointCollectedMobTypeRewards.java
index af75360ab..0c4b3ad1f 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/data/datapoints/DatapointCollectedMobTypeRewards.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/data/datapoints/DatapointCollectedMobTypeRewards.java
@@ -5,7 +5,6 @@
 import net.swofty.commons.protocol.Serializer;
 import net.swofty.type.skyblockgeneric.data.SkyBlockDatapoint;
 import org.json.JSONArray;
-import org.json.JSONObject;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/enchantment/impl/EnchantmentEnderSlayer.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/enchantment/impl/EnchantmentEnderSlayer.java
index 014198913..0fb245a4e 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/enchantment/impl/EnchantmentEnderSlayer.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/enchantment/impl/EnchantmentEnderSlayer.java
@@ -54,7 +54,7 @@ public ItemStatistics getStatisticsOnDamage(SkyBlockPlayer causer, LivingEntity
         }
 
         return ItemStatistics.empty();
-    };
+    }
 
     @Override
     public TableLevels getLevelsFromTableToApply(@NotNull SkyBlockPlayer player) {
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/enchantment/impl/EnchantmentSmite.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/enchantment/impl/EnchantmentSmite.java
index 5153bd90f..b1e3c5ee0 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/enchantment/impl/EnchantmentSmite.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/enchantment/impl/EnchantmentSmite.java
@@ -62,7 +62,7 @@ public ItemStatistics getStatisticsOnDamage(SkyBlockPlayer causer, LivingEntity
         }
 
         return ItemStatistics.empty();
-    };
+    }
 
     @Override
     public TableLevels getLevelsFromTableToApply(@NotNull SkyBlockPlayer player) {
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/MobRegistry.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/MobRegistry.java
index b1f792459..3c4f44366 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/MobRegistry.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/MobRegistry.java
@@ -1,24 +1,17 @@
 package net.swofty.type.skyblockgeneric.entity.mob;
 
 import lombok.Getter;
-import org.tinylog.Logger;
 import net.minestom.server.entity.EntityType;
-import org.tinylog.Logger;
 import net.swofty.type.skyblockgeneric.entity.mob.impl.RegionPopulator;
 import org.tinylog.Logger;
 
 import java.lang.reflect.InvocationTargetException;
-import org.tinylog.Logger;
 import java.util.ArrayList;
-import org.tinylog.Logger;
-import java.util.Arrays;
-import org.tinylog.Logger;
 import java.util.List;
-import org.tinylog.Logger;
 
 @Getter
 public class MobRegistry {
-    public static final List REGISTERED_MOBS = new ArrayList<>(Arrays.asList());
+    public static final List REGISTERED_MOBS = new ArrayList<>(List.of());
 
     private final EntityType entityType;
     private final Class clazz;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/dwarvenmines/DiamondGoblin.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/dwarvenmines/DiamondGoblin.java
index 10f4c961a..f2bfc0b37 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/dwarvenmines/DiamondGoblin.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/dwarvenmines/DiamondGoblin.java
@@ -5,25 +5,16 @@
 import net.minestom.server.entity.ai.GoalSelector;
 import net.minestom.server.entity.ai.TargetSelector;
 import net.minestom.server.entity.ai.goal.RandomStrollGoal;
-import net.minestom.server.entity.ai.target.LastEntityDamagerTarget;
-import net.minestom.server.item.Material;
-import net.minestom.server.utils.time.TimeUnit;
 import net.swofty.commons.skyblock.item.ItemType;
 import net.swofty.commons.skyblock.statistics.ItemStatistic;
 import net.swofty.commons.skyblock.statistics.ItemStatistics;
 import net.swofty.type.generic.gui.inventory.item.GUIMaterial;
 import net.swofty.type.skyblockgeneric.entity.mob.BestiaryMob;
 import net.swofty.type.skyblockgeneric.entity.mob.MobType;
-import net.swofty.type.skyblockgeneric.entity.mob.ai.ClosestEntityRegionTarget;
-import net.swofty.type.skyblockgeneric.entity.mob.ai.MeleeAttackWithinRegionGoal;
-import net.swofty.type.skyblockgeneric.entity.mob.ai.RandomRegionStrollGoal;
-import net.swofty.type.skyblockgeneric.entity.mob.impl.RegionPopulator;
 import net.swofty.type.skyblockgeneric.item.SkyBlockItem;
 import net.swofty.type.skyblockgeneric.loottable.OtherLoot;
 import net.swofty.type.skyblockgeneric.loottable.SkyBlockLootTable;
-import net.swofty.type.skyblockgeneric.region.RegionType;
 import net.swofty.type.skyblockgeneric.skill.SkillCategories;
-import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/dwarvenmines/GoldenGoblin.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/dwarvenmines/GoldenGoblin.java
index e984c5295..6553aaeb0 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/dwarvenmines/GoldenGoblin.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/dwarvenmines/GoldenGoblin.java
@@ -5,24 +5,16 @@
 import net.minestom.server.entity.ai.GoalSelector;
 import net.minestom.server.entity.ai.TargetSelector;
 import net.minestom.server.entity.ai.goal.RandomStrollGoal;
-import net.minestom.server.entity.ai.target.LastEntityDamagerTarget;
-import net.minestom.server.item.Material;
-import net.minestom.server.utils.time.TimeUnit;
 import net.swofty.commons.skyblock.item.ItemType;
 import net.swofty.commons.skyblock.statistics.ItemStatistic;
 import net.swofty.commons.skyblock.statistics.ItemStatistics;
 import net.swofty.type.generic.gui.inventory.item.GUIMaterial;
 import net.swofty.type.skyblockgeneric.entity.mob.BestiaryMob;
 import net.swofty.type.skyblockgeneric.entity.mob.MobType;
-import net.swofty.type.skyblockgeneric.entity.mob.ai.ClosestEntityRegionTarget;
-import net.swofty.type.skyblockgeneric.entity.mob.ai.MeleeAttackWithinRegionGoal;
-import net.swofty.type.skyblockgeneric.entity.mob.ai.RandomRegionStrollGoal;
 import net.swofty.type.skyblockgeneric.item.SkyBlockItem;
 import net.swofty.type.skyblockgeneric.loottable.OtherLoot;
 import net.swofty.type.skyblockgeneric.loottable.SkyBlockLootTable;
-import net.swofty.type.skyblockgeneric.region.RegionType;
 import net.swofty.type.skyblockgeneric.skill.SkillCategories;
-import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/dwarvenmines/goblin/MobGoblinFlamethrower.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/dwarvenmines/goblin/MobGoblinFlamethrower.java
index f6bd9e405..70165abd0 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/dwarvenmines/goblin/MobGoblinFlamethrower.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/dwarvenmines/goblin/MobGoblinFlamethrower.java
@@ -1,28 +1,11 @@
 package net.swofty.type.skyblockgeneric.entity.mob.mobs.dwarvenmines.goblin;
 
 import lombok.NonNull;
-import net.minestom.server.entity.EntityType;
-import net.minestom.server.entity.ai.GoalSelector;
-import net.minestom.server.entity.ai.TargetSelector;
-import net.minestom.server.entity.ai.target.LastEntityDamagerTarget;
-import net.minestom.server.item.Material;
-import net.minestom.server.utils.time.TimeUnit;
 import net.swofty.commons.skyblock.item.ItemType;
 import net.swofty.commons.skyblock.statistics.ItemStatistic;
 import net.swofty.commons.skyblock.statistics.ItemStatistics;
-import net.swofty.type.generic.gui.inventory.item.GUIMaterial;
-import net.swofty.type.skyblockgeneric.entity.mob.BestiaryMob;
-import net.swofty.type.skyblockgeneric.entity.mob.MobType;
-import net.swofty.type.skyblockgeneric.entity.mob.ai.ClosestEntityRegionTarget;
-import net.swofty.type.skyblockgeneric.entity.mob.ai.MeleeAttackWithinRegionGoal;
-import net.swofty.type.skyblockgeneric.entity.mob.ai.RandomRegionStrollGoal;
-import net.swofty.type.skyblockgeneric.entity.mob.impl.RegionPopulator;
-import net.swofty.type.skyblockgeneric.item.SkyBlockItem;
 import net.swofty.type.skyblockgeneric.loottable.OtherLoot;
 import net.swofty.type.skyblockgeneric.loottable.SkyBlockLootTable;
-import net.swofty.type.skyblockgeneric.region.RegionType;
-import net.swofty.type.skyblockgeneric.skill.SkillCategories;
-import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobGraveyardZombie.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobGraveyardZombie.java
index d6a4b7e92..376406c4d 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobGraveyardZombie.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobGraveyardZombie.java
@@ -25,7 +25,6 @@
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
-import java.util.Arrays;
 import java.util.List;
 
 public class MobGraveyardZombie extends BestiaryMob implements RegionPopulator {
@@ -133,8 +132,8 @@ public GUIMaterial getGuiMaterial() {
 
     @Override
     public List getPopulators() {
-        return Arrays.asList(
-                new Populator(RegionType.GRAVEYARD, 20)
+        return List.of(
+            new Populator(RegionType.GRAVEYARD, 20)
         );
     }
 }
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobGraveyardZombieVillager.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobGraveyardZombieVillager.java
index ad3e3f497..65d1aec8f 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobGraveyardZombieVillager.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobGraveyardZombieVillager.java
@@ -24,7 +24,6 @@
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
-import java.util.Arrays;
 import java.util.List;
 
 public class MobGraveyardZombieVillager extends BestiaryMob implements RegionPopulator {
@@ -134,8 +133,8 @@ public GUIMaterial getGuiMaterial() {
 
 	@Override
 	public List getPopulators() {
-		return Arrays.asList(
-				new Populator(RegionType.GRAVEYARD, 5)
-		);
+		return List.of(
+            new Populator(RegionType.GRAVEYARD, 5)
+        );
 	}
 }
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobRuinsOldWolf.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobRuinsOldWolf.java
index 8aeab60c5..264cbba00 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobRuinsOldWolf.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobRuinsOldWolf.java
@@ -23,7 +23,6 @@
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 import org.jetbrains.annotations.Nullable;
 
-import java.util.Arrays;
 import java.util.List;
 
 public class MobRuinsOldWolf extends BestiaryMob implements RegionPopulator {
@@ -103,8 +102,8 @@ public long damageCooldown() {
 
     @Override
     public List getPopulators() {
-        return Arrays.asList(
-                new Populator(RegionType.RUINS, 2)
+        return List.of(
+            new Populator(RegionType.RUINS, 2)
         );
     }
 
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobRuinsWolf.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobRuinsWolf.java
index ff9fa2b30..6e9e7d6f4 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobRuinsWolf.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/hub/MobRuinsWolf.java
@@ -24,7 +24,6 @@
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
-import java.util.Arrays;
 import java.util.List;
 
 public class MobRuinsWolf extends BestiaryMob implements RegionPopulator {
@@ -104,8 +103,8 @@ public long damageCooldown() {
 
     @Override
     public List getPopulators() {
-        return Arrays.asList(
-                new Populator(RegionType.RUINS, 20)
+        return List.of(
+            new Populator(RegionType.RUINS, 20)
         );
     }
 
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/island/MobZombie_01.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/island/MobZombie_01.java
index eec2df599..2d1b33826 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/island/MobZombie_01.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/entity/mob/mobs/island/MobZombie_01.java
@@ -23,7 +23,6 @@
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
-import java.util.Arrays;
 import java.util.List;
 
 public class MobZombie_01 extends BestiaryMob implements RegionPopulator {
@@ -127,8 +126,8 @@ public GUIMaterial getGuiMaterial() {
 
     @Override
     public List getPopulators() {
-        return Arrays.asList(
-                new Populator(RegionType.PRIVATE_ISLAND, 20)
+        return List.of(
+            new Populator(RegionType.PRIVATE_ISLAND, 20)
         );
     }
 }
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/custom/ActionPlayerDamageBlock.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/custom/ActionPlayerDamageBlock.java
index 523b5adc7..a565f83ca 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/custom/ActionPlayerDamageBlock.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/custom/ActionPlayerDamageBlock.java
@@ -1,7 +1,6 @@
 package net.swofty.type.skyblockgeneric.event.actions.custom;
 
 import net.minestom.server.MinecraftServer;
-import net.minestom.server.coordinate.Pos;
 import net.minestom.server.entity.GameMode;
 import net.minestom.server.item.Material;
 import net.minestom.server.network.packet.client.play.ClientPlayerActionPacket;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/item/ActionItemAbilityBlockLeftUse.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/item/ActionItemAbilityBlockLeftUse.java
index 2b39efd9d..f2fa68b11 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/item/ActionItemAbilityBlockLeftUse.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/item/ActionItemAbilityBlockLeftUse.java
@@ -42,7 +42,7 @@ public void run(PlayerBlockBreakEvent event) {
                 abilityHandler.startAbilityCooldown(item);
                 if(ability.execute(player, item, event.getBlockPosition(), event.getBlockFace())){
                     abilityHandler.startAbilityCooldown(item);
-                };
+                }
             }
         }
     }
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/item/ActionItemRightUse.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/item/ActionItemRightUse.java
index c0629ecf5..964cf87f1 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/item/ActionItemRightUse.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/item/ActionItemRightUse.java
@@ -2,7 +2,6 @@
 
 import lombok.SneakyThrows;
 import net.minestom.server.event.player.PlayerUseItemEvent;
-import net.minestom.server.event.player.PlayerUseItemOnBlockEvent;
 import net.minestom.server.item.ItemStack;
 import net.swofty.type.generic.event.EventNodes;
 import net.swofty.type.generic.event.HypixelEvent;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/player/ActionPlayerLaunchPads.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/player/ActionPlayerLaunchPads.java
index 787dd7568..0c73772c6 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/player/ActionPlayerLaunchPads.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/player/ActionPlayerLaunchPads.java
@@ -1,9 +1,6 @@
 package net.swofty.type.skyblockgeneric.event.actions.player;
 
 import net.kyori.adventure.key.Key;
-import net.swofty.commons.StringUtility;
-import net.swofty.commons.UnderstandableProxyServer;
-import org.tinylog.Logger;
 import net.kyori.adventure.sound.Sound;
 import net.minestom.server.coordinate.Pos;
 import net.minestom.server.coordinate.Vec;
@@ -13,6 +10,8 @@
 import net.minestom.server.network.packet.server.play.ParticlePacket;
 import net.minestom.server.particle.Particle;
 import net.swofty.commons.ServerType;
+import net.swofty.commons.StringUtility;
+import net.swofty.commons.UnderstandableProxyServer;
 import net.swofty.proxyapi.ProxyInformation;
 import net.swofty.type.generic.event.EventNodes;
 import net.swofty.type.generic.event.HypixelEvent;
@@ -133,7 +132,7 @@ public void run(PlayerMoveEvent event) {
                         }
                         try {
                             armorStand.remove();
-                        } catch (Exception e) {
+                        } catch (Exception _) {
                         }
                     }, 2, TimeUnit.SECONDS);
                 } else {
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/player/blocks/ActionPlayerSetupMining.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/player/blocks/ActionPlayerSetupMining.java
index 20f529237..f523935a2 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/player/blocks/ActionPlayerSetupMining.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/player/blocks/ActionPlayerSetupMining.java
@@ -1,18 +1,11 @@
 package net.swofty.type.skyblockgeneric.event.actions.player.blocks;
 
 import net.minestom.server.entity.attribute.Attribute;
-import net.minestom.server.event.player.PlayerBlockInteractEvent;
 import net.minestom.server.event.player.PlayerSpawnEvent;
-import net.minestom.server.network.packet.server.play.EntityAttributesPacket;
-import net.minestom.server.network.packet.server.play.EntityEffectPacket;
-import net.minestom.server.potion.Potion;
-import net.minestom.server.potion.PotionEffect;
 import net.swofty.type.generic.HypixelConst;
 import net.swofty.type.generic.event.EventNodes;
 import net.swofty.type.generic.event.HypixelEvent;
 import net.swofty.type.generic.event.HypixelEventClass;
-import net.swofty.type.skyblockgeneric.block.SkyBlockBlock;
-import net.swofty.type.skyblockgeneric.block.impl.BlockInteractable;
 
 public class ActionPlayerSetupMining implements HypixelEventClass {
 
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/player/data/ActionPlayerSkyBlockDataSave.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/player/data/ActionPlayerSkyBlockDataSave.java
index 93f20e137..3d69e46fb 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/player/data/ActionPlayerSkyBlockDataSave.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/player/data/ActionPlayerSkyBlockDataSave.java
@@ -2,9 +2,7 @@
 
 import lombok.SneakyThrows;
 import net.minestom.server.event.player.PlayerDisconnectEvent;
-import net.swofty.type.generic.data.DataHandler;
 import net.swofty.type.generic.data.mongodb.ProfilesDatabase;
-import net.swofty.type.generic.data.mongodb.UserDatabase;
 import net.swofty.type.generic.event.EventNodes;
 import net.swofty.type.generic.event.HypixelEvent;
 import net.swofty.type.generic.event.HypixelEventClass;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/player/gui/ActionPlayerInteractWithCrafting.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/player/gui/ActionPlayerInteractWithCrafting.java
index e13d6d85b..277d537ac 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/player/gui/ActionPlayerInteractWithCrafting.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/player/gui/ActionPlayerInteractWithCrafting.java
@@ -2,13 +2,11 @@
 
 import net.minestom.server.event.inventory.InventoryPreClickEvent;
 import net.minestom.server.inventory.PlayerInventory;
-import net.minestom.server.inventory.click.Click;
 import net.minestom.server.item.ItemStack;
 import net.swofty.type.generic.event.EventNodes;
 import net.swofty.type.generic.event.HypixelEvent;
 import net.swofty.type.generic.event.HypixelEventClass;
 import net.swofty.type.skyblockgeneric.gui.inventories.sbmenu.GUICrafting;
-import net.swofty.type.skyblockgeneric.item.SkyBlockItem;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 
 public class ActionPlayerInteractWithCrafting implements HypixelEventClass {
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/custom/PlayerDamageSkyBlockBlockEvent.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/custom/PlayerDamageSkyBlockBlockEvent.java
index a30b5c8e3..1a2ff1b81 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/custom/PlayerDamageSkyBlockBlockEvent.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/custom/PlayerDamageSkyBlockBlockEvent.java
@@ -5,7 +5,6 @@
 import net.minestom.server.entity.Player;
 import net.minestom.server.event.trait.PlayerInstanceEvent;
 import net.minestom.server.network.packet.client.play.ClientPlayerActionPacket;
-import net.minestom.server.potion.PotionEffect;
 import org.jetbrains.annotations.NotNull;
 
 public class PlayerDamageSkyBlockBlockEvent implements PlayerInstanceEvent {
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gems/Gemstone.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gems/Gemstone.java
index 3c6ad33a5..3f4c17c19 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gems/Gemstone.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gems/Gemstone.java
@@ -69,7 +69,7 @@ public static Gemstone getFromItemType(ItemType item) {
             if (gemstone.getItem().contains(item)) {
                 return gemstone;
             }
-        };
+        }
         return null;
     }
 
@@ -121,7 +121,7 @@ public static Slots getFromGemstone(Gemstone gemstone) {
                 if (slots.getValidGemstones().contains(gemstone) && slots.getValidGemstones().size() == 1) {
                     return slots;
                 }
-            };
+            }
             return null;
         }
     }
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/GUIBrewingStand.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/GUIBrewingStand.java
index ab79836cb..30f92cc18 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/GUIBrewingStand.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/GUIBrewingStand.java
@@ -9,6 +9,9 @@
 import net.minestom.server.inventory.InventoryType;
 import net.minestom.server.item.ItemStack;
 import net.minestom.server.item.Material;
+import net.swofty.commons.skyblock.item.ItemType;
+import net.swofty.commons.skyblock.item.Rarity;
+import net.swofty.commons.skyblock.item.attribute.attributes.ItemAttributePotionData;
 import net.swofty.type.generic.gui.inventory.HypixelInventoryGUI;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
 import net.swofty.type.generic.gui.inventory.RefreshingGUI;
@@ -25,9 +28,6 @@
 import net.swofty.type.skyblockgeneric.potion.PotionModifier;
 import net.swofty.type.skyblockgeneric.skill.SkillCategories;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
-import net.swofty.commons.skyblock.item.ItemType;
-import net.swofty.commons.skyblock.item.Rarity;
-import net.swofty.commons.skyblock.item.attribute.attributes.ItemAttributePotionData;
 
 import java.util.Map;
 
@@ -246,9 +246,7 @@ private void tryStartBrewing() {
         data.setIngredient(ingredientItem);
 
         SkyBlockItem[] potions = data.getPotionSlots();
-        for (int i = 0; i < potionItems.length; i++) {
-            potions[i] = potionItems[i];
-        }
+        System.arraycopy(potionItems, 0, potions, 0, potionItems.length);
 
         data.setBrewingStartTime(System.currentTimeMillis());
         data.setBrewingDurationSeconds(brewComp.getBrewingTimeSeconds());
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/GUIConsumeSoulflow.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/GUIConsumeSoulflow.java
index 7c3c1ce75..1526ed0bb 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/GUIConsumeSoulflow.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/GUIConsumeSoulflow.java
@@ -4,7 +4,10 @@
 import net.minestom.server.item.ItemStack;
 import net.swofty.type.generic.data.datapoints.DatapointInteger;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
-import net.swofty.type.generic.gui.v2.*;
+import net.swofty.type.generic.gui.v2.Components;
+import net.swofty.type.generic.gui.v2.View;
+import net.swofty.type.generic.gui.v2.ViewConfiguration;
+import net.swofty.type.generic.gui.v2.ViewLayout;
 import net.swofty.type.generic.gui.v2.context.ViewContext;
 import net.swofty.type.generic.i18n.I18n;
 import net.swofty.type.skyblockgeneric.data.SkyBlockDataHandler;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/GUIMinion.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/GUIMinion.java
index 4f8747a32..3abdb027c 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/GUIMinion.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/GUIMinion.java
@@ -20,7 +20,6 @@
 import net.swofty.type.skyblockgeneric.data.SkyBlockDataHandler;
 import net.swofty.type.skyblockgeneric.data.datapoints.DatapointMinionData;
 import net.swofty.type.skyblockgeneric.data.monogdb.CoopDatabase;
-import net.swofty.type.skyblockgeneric.gui.inventories.sbmenu.recipe.GUIMinionRecipes;
 import net.swofty.type.skyblockgeneric.item.ItemQuantifiable;
 import net.swofty.type.skyblockgeneric.item.SkyBlockItem;
 import net.swofty.type.skyblockgeneric.item.components.MinionComponent;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/abiphone/GUIContactManagement.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/abiphone/GUIContactManagement.java
index e81d3cc50..239ce8566 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/abiphone/GUIContactManagement.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/abiphone/GUIContactManagement.java
@@ -4,7 +4,6 @@
 import net.minestom.server.component.DataComponents;
 import net.minestom.server.event.inventory.InventoryPreClickEvent;
 import net.minestom.server.inventory.InventoryType;
-import net.minestom.server.inventory.click.Click;
 import net.minestom.server.item.ItemStack;
 import net.minestom.server.item.Material;
 import net.swofty.type.generic.gui.inventory.HypixelInventoryGUI;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/GUICrafting.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/GUICrafting.java
index 3c20b442d..25aaa3853 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/GUICrafting.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/GUICrafting.java
@@ -11,7 +11,12 @@
 import net.swofty.commons.skyblock.item.ItemType;
 import net.swofty.type.generic.event.HypixelEventHandler;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
-import net.swofty.type.generic.gui.v2.*;
+import net.swofty.type.generic.gui.v2.Components;
+import net.swofty.type.generic.gui.v2.Layouts;
+import net.swofty.type.generic.gui.v2.StatefulView;
+import net.swofty.type.generic.gui.v2.ViewConfiguration;
+import net.swofty.type.generic.gui.v2.ViewLayout;
+import net.swofty.type.generic.gui.v2.ViewSession;
 import net.swofty.type.generic.gui.v2.context.ClickContext;
 import net.swofty.type.generic.gui.v2.context.ViewContext;
 import net.swofty.type.generic.i18n.I18n;
@@ -20,7 +25,6 @@
 import net.swofty.type.skyblockgeneric.item.crafting.SkyBlockRecipe;
 import net.swofty.type.skyblockgeneric.item.updater.PlayerItemUpdater;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
-import org.tinylog.Logger;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/GUISkyBlockMenu.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/GUISkyBlockMenu.java
index fcaa201f2..0567a5c78 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/GUISkyBlockMenu.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/GUISkyBlockMenu.java
@@ -6,7 +6,11 @@
 import net.swofty.commons.ServerType;
 import net.swofty.commons.StringUtility;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
-import net.swofty.type.generic.gui.v2.*;
+import net.swofty.type.generic.gui.v2.Components;
+import net.swofty.type.generic.gui.v2.DefaultState;
+import net.swofty.type.generic.gui.v2.StatelessView;
+import net.swofty.type.generic.gui.v2.ViewConfiguration;
+import net.swofty.type.generic.gui.v2.ViewLayout;
 import net.swofty.type.generic.gui.v2.context.ViewContext;
 import net.swofty.type.generic.i18n.I18n;
 import net.swofty.type.generic.user.HypixelPlayer;
@@ -19,7 +23,6 @@
 import net.swofty.type.skyblockgeneric.gui.inventories.sbmenu.levels.GUISkyBlockLevels;
 import net.swofty.type.skyblockgeneric.gui.inventories.sbmenu.profiles.GUIProfileManagement;
 import net.swofty.type.skyblockgeneric.gui.inventories.sbmenu.questlog.GUIMissionLog;
-import net.swofty.type.skyblockgeneric.gui.inventories.sbmenu.recipe.GUIRecipe;
 import net.swofty.type.skyblockgeneric.gui.inventories.sbmenu.recipe.GUIRecipeBook;
 import net.swofty.type.skyblockgeneric.gui.inventories.sbmenu.skills.GUISkills;
 import net.swofty.type.skyblockgeneric.gui.inventories.sbmenu.storage.GUIStorage;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/GUISkyBlockProfile.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/GUISkyBlockProfile.java
index 4bb338036..2eeb22674 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/GUISkyBlockProfile.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/GUISkyBlockProfile.java
@@ -6,7 +6,11 @@
 import net.swofty.commons.StringUtility;
 import net.swofty.commons.skyblock.statistics.ItemStatistic;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
-import net.swofty.type.generic.gui.v2.*;
+import net.swofty.type.generic.gui.v2.Components;
+import net.swofty.type.generic.gui.v2.DefaultState;
+import net.swofty.type.generic.gui.v2.StatelessView;
+import net.swofty.type.generic.gui.v2.ViewConfiguration;
+import net.swofty.type.generic.gui.v2.ViewLayout;
 import net.swofty.type.generic.gui.v2.context.ViewContext;
 import net.swofty.type.generic.i18n.I18n;
 import net.swofty.type.skyblockgeneric.gui.inventories.sbmenu.stats.GUICombatStats;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/bags/GUIYourBags.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/bags/GUIYourBags.java
index cc60244eb..399d48745 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/bags/GUIYourBags.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/bags/GUIYourBags.java
@@ -4,11 +4,14 @@
 import net.minestom.server.item.Material;
 import net.swofty.commons.StringUtility;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
-import net.swofty.type.generic.gui.v2.*;
+import net.swofty.type.generic.gui.v2.Components;
+import net.swofty.type.generic.gui.v2.DefaultState;
+import net.swofty.type.generic.gui.v2.StatelessView;
+import net.swofty.type.generic.gui.v2.ViewConfiguration;
+import net.swofty.type.generic.gui.v2.ViewLayout;
 import net.swofty.type.generic.gui.v2.context.ViewContext;
 import net.swofty.type.generic.i18n.I18n;
 import net.swofty.type.skyblockgeneric.collection.CustomCollectionAward;
-import net.swofty.type.skyblockgeneric.gui.inventories.sbmenu.GUISkyBlockMenu;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 
 import java.util.Map;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/calendar/GUICalendar.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/calendar/GUICalendar.java
index cc507c748..55cd73d93 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/calendar/GUICalendar.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/calendar/GUICalendar.java
@@ -3,14 +3,15 @@
 import net.kyori.adventure.text.Component;
 import net.minestom.server.component.DataComponents;
 import net.minestom.server.inventory.InventoryType;
-import net.minestom.server.item.Material;
 import net.swofty.commons.StringUtility;
-import net.swofty.type.generic.gui.inventory.ItemStackCreator;
-import net.swofty.type.generic.gui.v2.*;
+import net.swofty.type.generic.gui.v2.Components;
+import net.swofty.type.generic.gui.v2.DefaultState;
+import net.swofty.type.generic.gui.v2.StatelessView;
+import net.swofty.type.generic.gui.v2.ViewConfiguration;
+import net.swofty.type.generic.gui.v2.ViewLayout;
 import net.swofty.type.generic.gui.v2.context.ViewContext;
 import net.swofty.type.skyblockgeneric.calendar.CalendarEvent;
 import net.swofty.type.skyblockgeneric.calendar.SkyBlockCalendar;
-import net.swofty.type.skyblockgeneric.gui.inventories.sbmenu.GUISkyBlockMenu;
 
 import java.util.List;
 import java.util.Map;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/collection/GUICollectionCategory.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/collection/GUICollectionCategory.java
index 15b18827d..8f9df60a1 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/collection/GUICollectionCategory.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/collection/GUICollectionCategory.java
@@ -3,14 +3,17 @@
 import net.minestom.server.inventory.InventoryType;
 import net.minestom.server.item.Material;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
-import net.swofty.type.generic.gui.v2.*;
+import net.swofty.type.generic.gui.v2.Components;
+import net.swofty.type.generic.gui.v2.DefaultState;
+import net.swofty.type.generic.gui.v2.StatelessView;
+import net.swofty.type.generic.gui.v2.ViewConfiguration;
+import net.swofty.type.generic.gui.v2.ViewLayout;
 import net.swofty.type.generic.gui.v2.context.ViewContext;
 import net.swofty.type.skyblockgeneric.collection.CollectionCategory;
 import net.swofty.type.skyblockgeneric.data.datapoints.DatapointCollection;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
 public class GUICollectionCategory extends StatelessView {
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/collection/GUICollectionReward.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/collection/GUICollectionReward.java
index e23056e65..bf1060991 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/collection/GUICollectionReward.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/collection/GUICollectionReward.java
@@ -1,11 +1,14 @@
 package net.swofty.type.skyblockgeneric.gui.inventories.sbmenu.collection;
 
 import net.minestom.server.inventory.InventoryType;
-import net.minestom.server.item.Material;
 import net.swofty.commons.StringUtility;
 import net.swofty.commons.skyblock.item.ItemType;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
-import net.swofty.type.generic.gui.v2.*;
+import net.swofty.type.generic.gui.v2.Components;
+import net.swofty.type.generic.gui.v2.DefaultState;
+import net.swofty.type.generic.gui.v2.StatelessView;
+import net.swofty.type.generic.gui.v2.ViewConfiguration;
+import net.swofty.type.generic.gui.v2.ViewLayout;
 import net.swofty.type.generic.gui.v2.context.ViewContext;
 import net.swofty.type.skyblockgeneric.collection.CollectionCategories;
 import net.swofty.type.skyblockgeneric.collection.CollectionCategory;
@@ -15,7 +18,11 @@
 import net.swofty.type.skyblockgeneric.item.components.MinionComponent;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 public class GUICollectionReward extends StatelessView {
     private static final Map SLOTS = new HashMap<>(Map.of(
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/collection/GUICollections.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/collection/GUICollections.java
index 7c57eba68..7e6cdb883 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/collection/GUICollections.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/collection/GUICollections.java
@@ -3,11 +3,14 @@
 import net.minestom.server.inventory.InventoryType;
 import net.minestom.server.item.Material;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
-import net.swofty.type.generic.gui.v2.*;
+import net.swofty.type.generic.gui.v2.Components;
+import net.swofty.type.generic.gui.v2.DefaultState;
+import net.swofty.type.generic.gui.v2.StatelessView;
+import net.swofty.type.generic.gui.v2.ViewConfiguration;
+import net.swofty.type.generic.gui.v2.ViewLayout;
 import net.swofty.type.generic.gui.v2.context.ViewContext;
 import net.swofty.type.skyblockgeneric.collection.CollectionCategories;
 import net.swofty.type.skyblockgeneric.collection.CollectionCategory;
-import net.swofty.type.skyblockgeneric.gui.inventories.sbmenu.GUISkyBlockMenu;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 
 import java.util.ArrayList;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/fasttravel/GUIFastTravel.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/fasttravel/GUIFastTravel.java
index 134ccf07d..44c450d44 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/fasttravel/GUIFastTravel.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/fasttravel/GUIFastTravel.java
@@ -7,10 +7,13 @@
 import net.swofty.type.generic.data.datapoints.DatapointStringList;
 import net.swofty.type.generic.data.datapoints.DatapointToggles;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
-import net.swofty.type.generic.gui.v2.*;
+import net.swofty.type.generic.gui.v2.Components;
+import net.swofty.type.generic.gui.v2.DefaultState;
+import net.swofty.type.generic.gui.v2.StatelessView;
+import net.swofty.type.generic.gui.v2.ViewConfiguration;
+import net.swofty.type.generic.gui.v2.ViewLayout;
 import net.swofty.type.generic.gui.v2.context.ViewContext;
 import net.swofty.type.skyblockgeneric.data.SkyBlockDataHandler;
-import net.swofty.type.skyblockgeneric.gui.inventories.sbmenu.GUISkyBlockMenu;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 import net.swofty.type.skyblockgeneric.warps.TravelScrollIslands;
 
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/profiles/GUIProfileSelectMode.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/profiles/GUIProfileSelectMode.java
index d7cf14688..80b96371a 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/profiles/GUIProfileSelectMode.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/profiles/GUIProfileSelectMode.java
@@ -3,10 +3,13 @@
 import net.minestom.server.inventory.InventoryType;
 import net.minestom.server.item.Material;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
-import net.swofty.type.generic.gui.v2.*;
+import net.swofty.type.generic.gui.v2.Components;
+import net.swofty.type.generic.gui.v2.DefaultState;
+import net.swofty.type.generic.gui.v2.StatelessView;
+import net.swofty.type.generic.gui.v2.ViewConfiguration;
+import net.swofty.type.generic.gui.v2.ViewLayout;
 import net.swofty.type.generic.gui.v2.context.ViewContext;
 import net.swofty.type.generic.i18n.I18n;
-import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 
 public class GUIProfileSelectMode extends StatelessView {
 
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/questlog/GUIFairySoulsGuide.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/questlog/GUIFairySoulsGuide.java
index 7ad8ff3ff..7270d7166 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/questlog/GUIFairySoulsGuide.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/questlog/GUIFairySoulsGuide.java
@@ -1,12 +1,14 @@
 package net.swofty.type.skyblockgeneric.gui.inventories.sbmenu.questlog;
 
 import net.minestom.server.inventory.InventoryType;
-import net.minestom.server.item.Material;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
-import net.swofty.type.generic.gui.v2.*;
+import net.swofty.type.generic.gui.v2.Components;
+import net.swofty.type.generic.gui.v2.DefaultState;
+import net.swofty.type.generic.gui.v2.StatelessView;
+import net.swofty.type.generic.gui.v2.ViewConfiguration;
+import net.swofty.type.generic.gui.v2.ViewLayout;
 import net.swofty.type.generic.gui.v2.context.ViewContext;
 import net.swofty.type.generic.i18n.I18n;
-import net.swofty.type.skyblockgeneric.data.monogdb.FairySoulDatabase;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 import net.swofty.type.skyblockgeneric.user.fairysouls.FairySoulZone;
 
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/questlog/GUIMissionLog.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/questlog/GUIMissionLog.java
index aea9e0dbc..ab9f50c30 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/questlog/GUIMissionLog.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/questlog/GUIMissionLog.java
@@ -5,12 +5,15 @@
 import net.minestom.server.item.Material;
 import net.swofty.commons.StringUtility;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
-import net.swofty.type.generic.gui.v2.*;
+import net.swofty.type.generic.gui.v2.Components;
+import net.swofty.type.generic.gui.v2.DefaultState;
+import net.swofty.type.generic.gui.v2.StatelessView;
+import net.swofty.type.generic.gui.v2.ViewConfiguration;
+import net.swofty.type.generic.gui.v2.ViewLayout;
 import net.swofty.type.generic.gui.v2.context.ViewContext;
 import net.swofty.type.generic.i18n.I18n;
 import net.swofty.type.skyblockgeneric.calendar.SkyBlockCalendar;
 import net.swofty.type.skyblockgeneric.data.monogdb.FairySoulDatabase;
-import net.swofty.type.skyblockgeneric.gui.inventories.sbmenu.GUISkyBlockMenu;
 import net.swofty.type.skyblockgeneric.mission.MissionData;
 import net.swofty.type.skyblockgeneric.mission.MissionSet;
 import net.swofty.type.skyblockgeneric.mission.SkyBlockMission;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/recipe/GUIMinionRecipes.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/recipe/GUIMinionRecipes.java
index 6075aad97..95218361f 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/recipe/GUIMinionRecipes.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/recipe/GUIMinionRecipes.java
@@ -1,17 +1,19 @@
 package net.swofty.type.skyblockgeneric.gui.inventories.sbmenu.recipe;
 
 import net.minestom.server.inventory.InventoryType;
-import net.minestom.server.item.Material;
 import net.swofty.commons.StringUtility;
 import net.swofty.commons.skyblock.item.attribute.attributes.ItemAttributeMinionData;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
-import net.swofty.type.generic.gui.v2.*;
+import net.swofty.type.generic.gui.v2.Components;
+import net.swofty.type.generic.gui.v2.DefaultState;
+import net.swofty.type.generic.gui.v2.StatelessView;
+import net.swofty.type.generic.gui.v2.ViewConfiguration;
+import net.swofty.type.generic.gui.v2.ViewLayout;
 import net.swofty.type.generic.gui.v2.context.ViewContext;
 import net.swofty.type.generic.i18n.I18n;
 import net.swofty.type.skyblockgeneric.item.SkyBlockItem;
 import net.swofty.type.skyblockgeneric.minion.MinionRegistry;
 import net.swofty.type.skyblockgeneric.minion.SkyBlockMinion;
-import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 
 import java.util.ArrayList;
 import java.util.HashMap;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/recipe/GUIRecipeCategory.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/recipe/GUIRecipeCategory.java
index 6023ced02..ed9cd28b0 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/recipe/GUIRecipeCategory.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/recipe/GUIRecipeCategory.java
@@ -9,7 +9,10 @@
 import net.swofty.commons.StringUtility;
 import net.swofty.commons.skyblock.item.ItemType;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
-import net.swofty.type.generic.gui.v2.*;
+import net.swofty.type.generic.gui.v2.Components;
+import net.swofty.type.generic.gui.v2.PaginatedView;
+import net.swofty.type.generic.gui.v2.ViewConfiguration;
+import net.swofty.type.generic.gui.v2.ViewLayout;
 import net.swofty.type.generic.gui.v2.context.ClickContext;
 import net.swofty.type.generic.gui.v2.context.ViewContext;
 import net.swofty.type.generic.i18n.I18n;
@@ -17,7 +20,6 @@
 import net.swofty.type.skyblockgeneric.item.crafting.ShapedRecipe;
 import net.swofty.type.skyblockgeneric.item.crafting.ShapelessRecipe;
 import net.swofty.type.skyblockgeneric.item.crafting.SkyBlockRecipe;
-import net.swofty.type.skyblockgeneric.item.updater.NonPlayerItemUpdater;
 import net.swofty.type.skyblockgeneric.item.updater.PlayerItemUpdater;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/recipe/GUIRecipeSlayers.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/recipe/GUIRecipeSlayers.java
index 538a21fe8..a081949f6 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/recipe/GUIRecipeSlayers.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/recipe/GUIRecipeSlayers.java
@@ -1,10 +1,13 @@
 package net.swofty.type.skyblockgeneric.gui.inventories.sbmenu.recipe;
 
 import net.minestom.server.inventory.InventoryType;
-import net.minestom.server.item.Material;
 import net.swofty.commons.StringUtility;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
-import net.swofty.type.generic.gui.v2.*;
+import net.swofty.type.generic.gui.v2.Components;
+import net.swofty.type.generic.gui.v2.DefaultState;
+import net.swofty.type.generic.gui.v2.StatelessView;
+import net.swofty.type.generic.gui.v2.ViewConfiguration;
+import net.swofty.type.generic.gui.v2.ViewLayout;
 import net.swofty.type.generic.gui.v2.context.ViewContext;
 import net.swofty.type.generic.i18n.I18n;
 import net.swofty.type.skyblockgeneric.item.crafting.ShapedRecipe;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/ItemAttributeHandler.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/ItemAttributeHandler.java
index 1b92de105..da84784c6 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/ItemAttributeHandler.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/ItemAttributeHandler.java
@@ -2,20 +2,27 @@
 
 import net.minestom.server.color.Color;
 import net.swofty.commons.ServiceType;
+import net.swofty.commons.protocol.objects.itemtracker.TrackedItemUpdateProtocolObject;
 import net.swofty.commons.skyblock.item.ItemType;
 import net.swofty.commons.skyblock.item.Rarity;
 import net.swofty.commons.skyblock.item.attribute.attributes.*;
-import net.swofty.commons.skyblock.item.attribute.attributes.ItemAttributeExtraDynamicStatistics;
 import net.swofty.commons.skyblock.item.reforge.Reforge;
 import net.swofty.commons.skyblock.item.reforge.ReforgeLoader;
-import net.swofty.commons.protocol.objects.itemtracker.TrackedItemUpdateProtocolObject;
 import net.swofty.commons.skyblock.statistics.ItemStatistics;
 import net.swofty.proxyapi.ProxyService;
 import net.swofty.type.skyblockgeneric.abiphone.AbiphoneNPC;
 import net.swofty.type.skyblockgeneric.abiphone.AbiphoneRegistry;
 import net.swofty.type.skyblockgeneric.enchantment.EnchantmentType;
 import net.swofty.type.skyblockgeneric.enchantment.SkyBlockEnchantment;
-import net.swofty.type.skyblockgeneric.item.components.*;
+import net.swofty.type.skyblockgeneric.item.components.BackpackComponent;
+import net.swofty.type.skyblockgeneric.item.components.DefaultSoulboundComponent;
+import net.swofty.type.skyblockgeneric.item.components.EnchantedComponent;
+import net.swofty.type.skyblockgeneric.item.components.GemstoneComponent;
+import net.swofty.type.skyblockgeneric.item.components.LeatherColorComponent;
+import net.swofty.type.skyblockgeneric.item.components.MinionComponent;
+import net.swofty.type.skyblockgeneric.item.components.PetComponent;
+import net.swofty.type.skyblockgeneric.item.components.PetItemComponent;
+import net.swofty.type.skyblockgeneric.item.components.RuneableComponent;
 import net.swofty.type.skyblockgeneric.minion.MinionRegistry;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 import org.jetbrains.annotations.Nullable;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/SkyBlockItem.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/SkyBlockItem.java
index a823d800d..14aeaca44 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/SkyBlockItem.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/SkyBlockItem.java
@@ -270,7 +270,6 @@ public  boolean hasComponent(Class component
 		return config.hasComponent(componentClass);
 	}
 
-	@SuppressWarnings("unchecked")
 	public  T getComponent(Class componentClass) {
 		return config.getComponent(componentClass);
 	}
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/components/AbiphoneComponent.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/components/AbiphoneComponent.java
index bb45d79ca..811de3d65 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/components/AbiphoneComponent.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/components/AbiphoneComponent.java
@@ -1,10 +1,7 @@
 package net.swofty.type.skyblockgeneric.item.components;
 
-import net.kyori.adventure.text.Component;
-import net.kyori.adventure.text.event.ClickEvent;
 import net.swofty.commons.StringUtility;
 import net.swofty.type.skyblockgeneric.gui.inventories.abiphone.AbiphoneView;
-import net.swofty.type.skyblockgeneric.gui.inventories.abiphone.GUIAbiphone;
 import net.swofty.type.skyblockgeneric.item.SkyBlockItemComponent;
 
 import java.util.ArrayList;
@@ -37,9 +34,7 @@ public AbiphoneComponent(int maxContacts, int maxDiscs, List fe
 
 		addInheritedComponent(new LoreUpdateComponent(lore, false));
 		addInheritedComponent(new InteractableComponent(
-				(player, item) -> {
-					player.openView(new AbiphoneView(), new AbiphoneView.State(item));
-				},
+				(player, item) -> player.openView(new AbiphoneView(), new AbiphoneView.State(item)),
 				null,
 				null
 		));
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/components/MinionSkinComponent.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/components/MinionSkinComponent.java
index 665460ed7..c9b4dd102 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/components/MinionSkinComponent.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/components/MinionSkinComponent.java
@@ -5,7 +5,6 @@
 import net.minestom.server.component.DataComponents;
 import net.minestom.server.item.ItemStack;
 import net.minestom.server.item.Material;
-import net.minestom.server.utils.Unit;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
 import net.swofty.type.skyblockgeneric.item.SkyBlockItemComponent;
 import org.jetbrains.annotations.Nullable;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/handlers/bow/BowHandler.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/handlers/bow/BowHandler.java
index a7b30a50a..72a552735 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/handlers/bow/BowHandler.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/handlers/bow/BowHandler.java
@@ -1,6 +1,5 @@
 package net.swofty.type.skyblockgeneric.item.handlers.bow;
 
-import lombok.Builder;
 import net.swofty.type.skyblockgeneric.item.SkyBlockItem;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/handlers/place/PlaceEventRegistry.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/handlers/place/PlaceEventRegistry.java
index 03c644132..e59fcf52f 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/handlers/place/PlaceEventRegistry.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/handlers/place/PlaceEventRegistry.java
@@ -1,15 +1,12 @@
 package net.swofty.type.skyblockgeneric.item.handlers.place;
 
 import net.minestom.server.coordinate.Pos;
-import net.minestom.server.event.player.PlayerBlockPlaceEvent;
 import net.minestom.server.instance.block.Block;
 import net.swofty.type.generic.HypixelConst;
 import net.swofty.type.skyblockgeneric.data.SkyBlockDataHandler;
 import net.swofty.type.skyblockgeneric.data.datapoints.DatapointMinionData;
-import net.swofty.type.skyblockgeneric.item.SkyBlockItem;
 import net.swofty.type.skyblockgeneric.item.components.MinionComponent;
 import net.swofty.type.skyblockgeneric.minion.IslandMinionData;
-import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/CheapTuxedoSet.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/CheapTuxedoSet.java
index 1538a4c99..b1b8ca5f1 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/CheapTuxedoSet.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/CheapTuxedoSet.java
@@ -8,7 +8,6 @@
 import net.swofty.type.skyblockgeneric.item.set.impl.ArmorSet;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
 public class CheapTuxedoSet extends SkyBlockValueEvent implements ArmorSet {
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/ElegantTuxedoSet.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/ElegantTuxedoSet.java
index b592cb429..7268c946c 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/ElegantTuxedoSet.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/ElegantTuxedoSet.java
@@ -8,7 +8,6 @@
 import net.swofty.type.skyblockgeneric.item.set.impl.ArmorSet;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
 public class ElegantTuxedoSet extends SkyBlockValueEvent implements ArmorSet {
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/FancyTuxedoSet.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/FancyTuxedoSet.java
index 237c63b87..8ff5410e7 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/FancyTuxedoSet.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/FancyTuxedoSet.java
@@ -8,7 +8,6 @@
 import net.swofty.type.skyblockgeneric.item.set.impl.ArmorSet;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
 public class FancyTuxedoSet extends SkyBlockValueEvent implements ArmorSet {
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/LeafletSet.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/LeafletSet.java
index adc1bde21..cb9bf4bbe 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/LeafletSet.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/LeafletSet.java
@@ -8,7 +8,6 @@
 import net.swofty.type.skyblockgeneric.region.SkyBlockRegion;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
 public class LeafletSet extends SkyBlockValueEvent implements ArmorSet {
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/MinerOutfitSet.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/MinerOutfitSet.java
index 8f68704aa..1207f0fc4 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/MinerOutfitSet.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/MinerOutfitSet.java
@@ -8,7 +8,6 @@
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
 public class MinerOutfitSet implements ArmorSet, SetEvents, MuseumableSet {
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/MushroomSet.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/MushroomSet.java
index 0c3d977d1..7d03d27df 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/MushroomSet.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/MushroomSet.java
@@ -7,7 +7,6 @@
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
 public class MushroomSet implements ArmorSet, SetEvents {
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/PumpkinSet.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/PumpkinSet.java
index fbdc0419a..631f031b9 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/PumpkinSet.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/set/sets/PumpkinSet.java
@@ -8,7 +8,6 @@
 import net.swofty.type.skyblockgeneric.item.set.impl.ArmorSet;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
 public class PumpkinSet extends SkyBlockValueEvent implements ArmorSet {
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/lumber/MissionBreakOaklog.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/lumber/MissionBreakOaklog.java
index 610dbb85e..25c85720d 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/lumber/MissionBreakOaklog.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/lumber/MissionBreakOaklog.java
@@ -4,7 +4,6 @@
 import net.minestom.server.item.Material;
 import net.swofty.type.generic.event.EventNodes;
 import net.swofty.type.generic.event.HypixelEvent;
-import net.swofty.type.skyblockgeneric.event.custom.CustomBlockBreakEvent;
 import net.swofty.type.skyblockgeneric.item.SkyBlockItem;
 import net.swofty.type.skyblockgeneric.levels.SkyBlockLevelCause;
 import net.swofty.type.skyblockgeneric.mission.MissionData;
@@ -12,7 +11,12 @@
 import net.swofty.type.skyblockgeneric.region.RegionType;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
 
 public class MissionBreakOaklog extends SkyBlockProgressMission {
     private final Map testTimes = new HashMap<>();
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/lumber/MissionTalkToLumberjackAgain.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/lumber/MissionTalkToLumberjackAgain.java
index e14da08f1..9ea74e3fe 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/lumber/MissionTalkToLumberjackAgain.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/lumber/MissionTalkToLumberjackAgain.java
@@ -1,6 +1,5 @@
 package net.swofty.type.skyblockgeneric.mission.missions.lumber;
 
-import net.swofty.commons.skyblock.item.ItemType;
 import net.swofty.type.skyblockgeneric.mission.MissionData;
 import net.swofty.type.skyblockgeneric.mission.SkyBlockMission;
 import net.swofty.type.skyblockgeneric.mission.missions.thepark.birchpark.MissionTravelToThePark;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/darkthicket/MissionCollectDarkOakLogs.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/darkthicket/MissionCollectDarkOakLogs.java
index 4300c8261..029d757d2 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/darkthicket/MissionCollectDarkOakLogs.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/darkthicket/MissionCollectDarkOakLogs.java
@@ -1,14 +1,11 @@
 package net.swofty.type.skyblockgeneric.mission.missions.thepark.darkthicket;
 
-import net.minestom.server.event.player.PlayerTickEndEvent;
 import net.minestom.server.event.player.PlayerTickEvent;
 import net.minestom.server.item.Material;
 import net.swofty.type.generic.event.EventNodes;
 import net.swofty.type.generic.event.HypixelEvent;
-import net.swofty.type.skyblockgeneric.event.custom.CustomBlockBreakEvent;
 import net.swofty.type.skyblockgeneric.item.SkyBlockItem;
 import net.swofty.type.skyblockgeneric.mission.MissionData;
-import net.swofty.type.skyblockgeneric.mission.SkyBlockMission;
 import net.swofty.type.skyblockgeneric.mission.SkyBlockProgressMission;
 import net.swofty.type.skyblockgeneric.region.RegionType;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/darkthicket/MissionCompleteTrialOfFireOne.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/darkthicket/MissionCompleteTrialOfFireOne.java
index 4873f6436..5a1a4345b 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/darkthicket/MissionCompleteTrialOfFireOne.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/darkthicket/MissionCompleteTrialOfFireOne.java
@@ -1,21 +1,14 @@
 package net.swofty.type.skyblockgeneric.mission.missions.thepark.darkthicket;
 
 import net.minestom.server.coordinate.Pos;
-import net.minestom.server.event.player.PlayerTickEvent;
-import net.minestom.server.instance.block.Block;
-import net.swofty.type.generic.data.datapoints.DatapointInteger;
-import net.swofty.type.generic.entity.npc.HypixelNPC;
-import net.swofty.type.generic.event.EventNodes;
-import net.swofty.type.generic.event.HypixelEvent;
-import net.swofty.type.skyblockgeneric.data.SkyBlockDataHandler;
 import net.swofty.type.skyblockgeneric.mission.LocationAssociatedMission;
 import net.swofty.type.skyblockgeneric.mission.MissionData;
 import net.swofty.type.skyblockgeneric.mission.SkyBlockMission;
-import net.swofty.type.skyblockgeneric.mission.missions.thepark.savanna.MissionTravelToTheSavannaWoodland;
 import net.swofty.type.skyblockgeneric.region.RegionType;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 
-import java.util.*;
+import java.util.Map;
+import java.util.Set;
 
 public class MissionCompleteTrialOfFireOne extends SkyBlockMission implements LocationAssociatedMission {
 
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/jungle/MissionCollectJungleLogs.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/jungle/MissionCollectJungleLogs.java
index 35050355a..c3d3743a7 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/jungle/MissionCollectJungleLogs.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/jungle/MissionCollectJungleLogs.java
@@ -7,7 +7,6 @@
 import net.swofty.type.skyblockgeneric.item.SkyBlockItem;
 import net.swofty.type.skyblockgeneric.mission.MissionData;
 import net.swofty.type.skyblockgeneric.mission.SkyBlockProgressMission;
-import net.swofty.type.skyblockgeneric.mission.missions.thepark.darkthicket.MissionGiveRyanDarkOakLogs;
 import net.swofty.type.skyblockgeneric.region.RegionType;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/savanna/MissionCollectAcaciaLogs.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/savanna/MissionCollectAcaciaLogs.java
index bd74049c6..49d5d9c66 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/savanna/MissionCollectAcaciaLogs.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/savanna/MissionCollectAcaciaLogs.java
@@ -7,7 +7,6 @@
 import net.swofty.type.skyblockgeneric.item.SkyBlockItem;
 import net.swofty.type.skyblockgeneric.mission.MissionData;
 import net.swofty.type.skyblockgeneric.mission.SkyBlockProgressMission;
-import net.swofty.type.skyblockgeneric.mission.missions.thepark.darkthicket.MissionGiveRyanDarkOakLogs;
 import net.swofty.type.skyblockgeneric.region.RegionType;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/spruce/MissionCollectSpruceLogs.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/spruce/MissionCollectSpruceLogs.java
index 3c0f5aa98..b80487da8 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/spruce/MissionCollectSpruceLogs.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/spruce/MissionCollectSpruceLogs.java
@@ -4,10 +4,8 @@
 import net.minestom.server.item.Material;
 import net.swofty.type.generic.event.EventNodes;
 import net.swofty.type.generic.event.HypixelEvent;
-import net.swofty.type.skyblockgeneric.event.custom.CustomBlockBreakEvent;
 import net.swofty.type.skyblockgeneric.item.SkyBlockItem;
 import net.swofty.type.skyblockgeneric.mission.MissionData;
-import net.swofty.type.skyblockgeneric.mission.SkyBlockMission;
 import net.swofty.type.skyblockgeneric.mission.SkyBlockProgressMission;
 import net.swofty.type.skyblockgeneric.region.RegionType;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/spruce/race/MissionCompleteTheRaceOneMinute.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/spruce/race/MissionCompleteTheRaceOneMinute.java
index aa32ea7d5..c347cc729 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/spruce/race/MissionCompleteTheRaceOneMinute.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/spruce/race/MissionCompleteTheRaceOneMinute.java
@@ -1,7 +1,5 @@
 package net.swofty.type.skyblockgeneric.mission.missions.thepark.spruce.race;
 
-import net.minestom.server.coordinate.Pos;
-import net.swofty.type.skyblockgeneric.mission.LocationAssociatedMission;
 import net.swofty.type.skyblockgeneric.mission.MissionData;
 import net.swofty.type.skyblockgeneric.mission.SkyBlockMission;
 import net.swofty.type.skyblockgeneric.region.RegionType;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/spruce/race/MissionCompleteTheRaceTwoMinutes.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/spruce/race/MissionCompleteTheRaceTwoMinutes.java
index 23e3b2acd..8c09f0709 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/spruce/race/MissionCompleteTheRaceTwoMinutes.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/spruce/race/MissionCompleteTheRaceTwoMinutes.java
@@ -1,7 +1,5 @@
 package net.swofty.type.skyblockgeneric.mission.missions.thepark.spruce.race;
 
-import net.minestom.server.coordinate.Pos;
-import net.swofty.type.skyblockgeneric.mission.LocationAssociatedMission;
 import net.swofty.type.skyblockgeneric.mission.MissionData;
 import net.swofty.type.skyblockgeneric.mission.SkyBlockMission;
 import net.swofty.type.skyblockgeneric.region.RegionType;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/trials/MissionCompleteTrials.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/trials/MissionCompleteTrials.java
index fac23e890..4288832f3 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/trials/MissionCompleteTrials.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/mission/missions/thepark/trials/MissionCompleteTrials.java
@@ -1,7 +1,6 @@
 package net.swofty.type.skyblockgeneric.mission.missions.thepark.trials;
 
 import net.swofty.type.skyblockgeneric.mission.MissionData;
-import net.swofty.type.skyblockgeneric.mission.SkyBlockMission;
 import net.swofty.type.skyblockgeneric.mission.SkyBlockProgressMission;
 import net.swofty.type.skyblockgeneric.region.RegionType;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/redis/service/RedisSkyBlockPropagatePartyEvent.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/redis/service/RedisSkyBlockPropagatePartyEvent.java
index 85f3dcf86..1420c822e 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/redis/service/RedisSkyBlockPropagatePartyEvent.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/redis/service/RedisSkyBlockPropagatePartyEvent.java
@@ -2,7 +2,6 @@
 
 import net.kyori.adventure.text.Component;
 import net.kyori.adventure.text.TextComponent;
-import net.kyori.adventure.text.event.ClickEvent;
 import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
 import net.swofty.commons.ServerType;
 import net.swofty.commons.UnderstandableProxyServer;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/region/mining/BreakingTask.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/region/mining/BreakingTask.java
index d9f9de33e..9320c99b7 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/region/mining/BreakingTask.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/region/mining/BreakingTask.java
@@ -7,9 +7,7 @@
 import net.minestom.server.instance.block.Block;
 import net.minestom.server.instance.block.BlockFace;
 import net.minestom.server.network.packet.client.play.ClientPlayerActionPacket;
-import net.minestom.server.network.packet.server.play.*;
-import net.minestom.server.potion.Potion;
-import net.minestom.server.potion.PotionEffect;
+import net.minestom.server.network.packet.server.play.BlockBreakAnimationPacket;
 import net.minestom.server.timer.TaskSchedule;
 import net.swofty.type.generic.event.HypixelEventHandler;
 import net.swofty.type.skyblockgeneric.event.custom.PlayerDamageSkyBlockBlockEvent;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/server/eventcaller/PlayerValues.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/server/eventcaller/PlayerValues.java
index 3dc247358..669fb395c 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/server/eventcaller/PlayerValues.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/server/eventcaller/PlayerValues.java
@@ -66,7 +66,6 @@ public enum Value {
                 throw new RuntimeException(e);
             }
         });
-        ;
 
         private final Class type;
         private final Function function;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/targetpractice/PracticeTargets.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/targetpractice/PracticeTargets.java
index e3aeeb7bb..e765427a4 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/targetpractice/PracticeTargets.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/targetpractice/PracticeTargets.java
@@ -1,9 +1,11 @@
 package net.swofty.type.skyblockgeneric.targetpractice;
 
+import lombok.Getter;
 import net.minestom.server.coordinate.Pos;
 
 import javax.annotation.Nullable;
 
+@Getter
 public enum PracticeTargets {
     TARGET_1(new Pos(7, 63, -141)),
     TARGET_2(new Pos(7, 62, -145)),
@@ -24,16 +26,12 @@ public enum PracticeTargets {
     ;
 
     private static final PracticeTargets[] VALUES = values();
-    private Pos location;
+    private final Pos location;
 
     PracticeTargets(Pos location) {
         this.location = location;
     }
 
-    public Pos getLocation() {
-        return location;
-    }
-
     public static @Nullable PracticeTargets getFromPosition(Pos pos) {
         for (PracticeTargets target : VALUES) {
             if (target.getLocation().equals(pos)) {
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/user/PlayerEnchantmentHandler.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/user/PlayerEnchantmentHandler.java
index a351bbc02..5d8ebfeec 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/user/PlayerEnchantmentHandler.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/user/PlayerEnchantmentHandler.java
@@ -51,7 +51,7 @@ public enum EnchantedItemSource {
         INVENTORY(player -> Arrays.stream(player.getAllInventoryItems()).toList()),
         ;
 
-        private Function> items;
+        private final Function> items;
 
         EnchantedItemSource(Function> items) {
             this.items = items;
diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/utility/ServiceAvailabilityChecker.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/utility/ServiceAvailabilityChecker.java
index 9244740f9..1be857fa6 100644
--- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/utility/ServiceAvailabilityChecker.java
+++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/utility/ServiceAvailabilityChecker.java
@@ -6,7 +6,6 @@
 import org.tinylog.Logger;
 
 import java.util.concurrent.CompletableFuture;
-import java.util.function.Consumer;
 import java.util.function.Supplier;
 
 /**
diff --git a/type.skywarsconfigurator/src/main/java/net/swofty/type/skywarsconfigurator/TypeSkywarsConfiguratorLoader.java b/type.skywarsconfigurator/src/main/java/net/swofty/type/skywarsconfigurator/TypeSkyWarsConfiguratorLoader.java
similarity index 90%
rename from type.skywarsconfigurator/src/main/java/net/swofty/type/skywarsconfigurator/TypeSkywarsConfiguratorLoader.java
rename to type.skywarsconfigurator/src/main/java/net/swofty/type/skywarsconfigurator/TypeSkyWarsConfiguratorLoader.java
index 1878e119e..3edf21a80 100644
--- a/type.skywarsconfigurator/src/main/java/net/swofty/type/skywarsconfigurator/TypeSkywarsConfiguratorLoader.java
+++ b/type.skywarsconfigurator/src/main/java/net/swofty/type/skywarsconfigurator/TypeSkyWarsConfiguratorLoader.java
@@ -5,8 +5,6 @@
 import net.minestom.server.MinecraftServer;
 import net.minestom.server.coordinate.Pos;
 import net.minestom.server.entity.GameMode;
-import net.minestom.server.instance.InstanceContainer;
-import net.minestom.server.instance.InstanceManager;
 import net.minestom.server.network.player.GameProfile;
 import net.minestom.server.network.player.PlayerConnection;
 import net.swofty.commons.CustomWorlds;
@@ -17,7 +15,6 @@
 import net.swofty.type.generic.HypixelGenericLoader;
 import net.swofty.type.generic.HypixelTypeLoader;
 import net.swofty.type.generic.command.HypixelCommand;
-import net.swofty.type.generic.data.GameDataHandler;
 import net.swofty.type.generic.entity.npc.HypixelNPC;
 import net.swofty.type.generic.event.HypixelEventClass;
 import net.swofty.type.generic.redis.RedisOriginServer;
@@ -31,9 +28,7 @@
 import java.util.List;
 import java.util.UUID;
 
-public class TypeSkywarsConfiguratorLoader implements HypixelTypeLoader {
-    @Getter
-    private static InstanceContainer mainInstance;
+public class TypeSkyWarsConfiguratorLoader implements HypixelTypeLoader {
 
     @Setter
     @Getter
@@ -46,9 +41,6 @@ public ServerType getType() {
 
     @Override
     public void onInitialize(MinecraftServer server) {
-        InstanceManager instanceManager = MinecraftServer.getInstanceManager();
-        mainInstance = instanceManager.createInstanceContainer();
-
         MinecraftServer.getConnectionManager().setPlayerProvider((PlayerConnection playerConnection, GameProfile gameProfile) -> {
             HypixelPlayer player = new HypixelPlayer(playerConnection, gameProfile);
 
diff --git a/type.skywarsconfigurator/src/main/java/net/swofty/type/skywarsconfigurator/commands/ChooseMapCommand.java b/type.skywarsconfigurator/src/main/java/net/swofty/type/skywarsconfigurator/commands/ChooseMapCommand.java
index 404e3332f..9378461f9 100644
--- a/type.skywarsconfigurator/src/main/java/net/swofty/type/skywarsconfigurator/commands/ChooseMapCommand.java
+++ b/type.skywarsconfigurator/src/main/java/net/swofty/type/skywarsconfigurator/commands/ChooseMapCommand.java
@@ -14,7 +14,7 @@
 import net.swofty.type.generic.command.HypixelCommand;
 import net.swofty.type.generic.user.categories.Rank;
 import net.swofty.type.skywarsconfigurator.MapConfigurationSession;
-import net.swofty.type.skywarsconfigurator.TypeSkywarsConfiguratorLoader;
+import net.swofty.type.skywarsconfigurator.TypeSkyWarsConfiguratorLoader;
 import org.tinylog.Logger;
 
 import java.io.File;
@@ -22,7 +22,10 @@
 import java.io.RandomAccessFile;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
 
 @CommandParameters(aliases = "choose choosemap selectmap select",
         description = "Choose a SkyWars map to configure",
@@ -115,7 +118,7 @@ public void registerUsage(MinestomCommand command) {
 
             // Create a new configuration session
             MapConfigurationSession session = new MapConfigurationSession(mapId, mapId);
-            TypeSkywarsConfiguratorLoader.setCurrentSession(session);
+            TypeSkyWarsConfiguratorLoader.setCurrentSession(session);
 
             player.sendMessage(Component.text("§aLoaded map: §f" + mapId));
             player.sendMessage(Component.text("§7Use §b/swconfig §7to configure the map."));
diff --git a/type.skywarsconfigurator/src/main/java/net/swofty/type/skywarsconfigurator/commands/SkywarsConfigCommand.java b/type.skywarsconfigurator/src/main/java/net/swofty/type/skywarsconfigurator/commands/SkyWarsConfigCommand.java
similarity index 93%
rename from type.skywarsconfigurator/src/main/java/net/swofty/type/skywarsconfigurator/commands/SkywarsConfigCommand.java
rename to type.skywarsconfigurator/src/main/java/net/swofty/type/skywarsconfigurator/commands/SkyWarsConfigCommand.java
index 054b391cf..1b90da20a 100644
--- a/type.skywarsconfigurator/src/main/java/net/swofty/type/skywarsconfigurator/commands/SkywarsConfigCommand.java
+++ b/type.skywarsconfigurator/src/main/java/net/swofty/type/skywarsconfigurator/commands/SkyWarsConfigCommand.java
@@ -9,7 +9,7 @@
 import net.swofty.type.generic.user.HypixelPlayer;
 import net.swofty.type.generic.user.categories.Rank;
 import net.swofty.type.skywarsconfigurator.MapConfigurationSession;
-import net.swofty.type.skywarsconfigurator.TypeSkywarsConfiguratorLoader;
+import net.swofty.type.skywarsconfigurator.TypeSkyWarsConfiguratorLoader;
 
 import java.util.stream.Collectors;
 
@@ -23,7 +23,7 @@
         permission = Rank.STAFF,
         allowsConsole = false
 )
-public class SkywarsConfigCommand extends HypixelCommand {
+public class SkyWarsConfigCommand extends HypixelCommand {
 
     @Override
     public void registerUsage(MinestomCommand command) {
@@ -50,7 +50,7 @@ public void registerUsage(MinestomCommand command) {
             String id = context.get(idArg);
             String name = context.get(nameArg);
             MapConfigurationSession session = new MapConfigurationSession(id, name);
-            TypeSkywarsConfiguratorLoader.setCurrentSession(session);
+            TypeSkyWarsConfiguratorLoader.setCurrentSession(session);
             sender.sendMessage("§aStarted new configuration session for map: " + name + " (id: " + id + ")");
         }, newLit, idArg, nameArg);
 
@@ -64,7 +64,7 @@ public void registerUsage(MinestomCommand command) {
         });
         command.addSyntax((sender, context) -> {
             if (!permissionCheck(sender)) return;
-            MapConfigurationSession session = TypeSkywarsConfiguratorLoader.getCurrentSession();
+            MapConfigurationSession session = TypeSkyWarsConfiguratorLoader.getCurrentSession();
             if (session == null) {
                 sender.sendMessage("§cNo active session!");
                 return;
@@ -91,7 +91,7 @@ public void registerUsage(MinestomCommand command) {
         command.addSyntax((sender, context) -> {
             if (!permissionCheck(sender)) return;
             if (!(sender instanceof HypixelPlayer player)) return;
-            MapConfigurationSession session = TypeSkywarsConfiguratorLoader.getCurrentSession();
+            MapConfigurationSession session = TypeSkyWarsConfiguratorLoader.getCurrentSession();
             if (session == null) {
                 sender.sendMessage("§cNo active session! Use /swconfig new   first.");
                 return;
@@ -106,7 +106,7 @@ public void registerUsage(MinestomCommand command) {
         var yArg = ArgumentType.Integer("y");
         command.addSyntax((sender, context) -> {
             if (!permissionCheck(sender)) return;
-            MapConfigurationSession session = TypeSkywarsConfiguratorLoader.getCurrentSession();
+            MapConfigurationSession session = TypeSkyWarsConfiguratorLoader.getCurrentSession();
             if (session == null) {
                 sender.sendMessage("§cNo active session!");
                 return;
@@ -124,7 +124,7 @@ public void registerUsage(MinestomCommand command) {
         var maxZArg = ArgumentType.Integer("maxZ");
         command.addSyntax((sender, context) -> {
             if (!permissionCheck(sender)) return;
-            MapConfigurationSession session = TypeSkywarsConfiguratorLoader.getCurrentSession();
+            MapConfigurationSession session = TypeSkyWarsConfiguratorLoader.getCurrentSession();
             if (session == null) {
                 sender.sendMessage("§cNo active session!");
                 return;
@@ -142,7 +142,7 @@ public void registerUsage(MinestomCommand command) {
         command.addSyntax((sender, context) -> {
             if (!permissionCheck(sender)) return;
             if (!(sender instanceof HypixelPlayer player)) return;
-            MapConfigurationSession session = TypeSkywarsConfiguratorLoader.getCurrentSession();
+            MapConfigurationSession session = TypeSkyWarsConfiguratorLoader.getCurrentSession();
             if (session == null) {
                 sender.sendMessage("§cNo active session!");
                 return;
@@ -156,7 +156,7 @@ public void registerUsage(MinestomCommand command) {
         var saveLit = ArgumentType.Literal("save");
         command.addSyntax((sender, context) -> {
             if (!permissionCheck(sender)) return;
-            MapConfigurationSession session = TypeSkywarsConfiguratorLoader.getCurrentSession();
+            MapConfigurationSession session = TypeSkyWarsConfiguratorLoader.getCurrentSession();
             if (session == null) {
                 sender.sendMessage("§cNo active session!");
                 return;
@@ -169,7 +169,7 @@ public void registerUsage(MinestomCommand command) {
         var statusLit = ArgumentType.Literal("status");
         command.addSyntax((sender, context) -> {
             if (!permissionCheck(sender)) return;
-            MapConfigurationSession session = TypeSkywarsConfiguratorLoader.getCurrentSession();
+            MapConfigurationSession session = TypeSkyWarsConfiguratorLoader.getCurrentSession();
             if (session == null) {
                 sender.sendMessage("§cNo active session!");
                 return;
diff --git a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/events/ActionArrowStats.java b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/events/ActionArrowStats.java
index dda65fd29..4753ea9b5 100644
--- a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/events/ActionArrowStats.java
+++ b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/events/ActionArrowStats.java
@@ -4,13 +4,12 @@
 import net.minestom.server.entity.LivingEntity;
 import net.minestom.server.entity.damage.DamageType;
 import net.minestom.server.event.entity.EntityDamageEvent;
-import net.minestom.server.event.entity.projectile.ProjectileCollideWithEntityEvent;
 import net.minestom.server.event.player.PlayerUseItemEvent;
 import net.minestom.server.item.Material;
 import net.swofty.commons.skywars.SkywarsLeaderboardMode;
+import net.swofty.commons.skywars.SkywarsModeStats;
 import net.swofty.type.generic.data.datapoints.DatapointSkywarsKitStats;
 import net.swofty.type.generic.data.datapoints.DatapointSkywarsModeStats;
-import net.swofty.commons.skywars.SkywarsModeStats;
 import net.swofty.type.generic.data.handlers.SkywarsDataHandler;
 import net.swofty.type.generic.event.EventNodes;
 import net.swofty.type.generic.event.HypixelEvent;
diff --git a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/events/ActionMobAttack.java b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/events/ActionMobAttack.java
index 2b9362a6d..f1406c66f 100644
--- a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/events/ActionMobAttack.java
+++ b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/events/ActionMobAttack.java
@@ -3,8 +3,6 @@
 import net.minestom.server.entity.Entity;
 import net.minestom.server.entity.EntityCreature;
 import net.minestom.server.entity.EntityType;
-import net.minestom.server.entity.LivingEntity;
-import net.minestom.server.entity.attribute.Attribute;
 import net.minestom.server.entity.damage.Damage;
 import net.minestom.server.entity.damage.DamageType;
 import net.minestom.server.event.entity.EntityAttackEvent;
diff --git a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/events/ActionPlayerChat.java b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/events/ActionPlayerChat.java
index 92b695c6d..4309089a8 100644
--- a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/events/ActionPlayerChat.java
+++ b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/events/ActionPlayerChat.java
@@ -2,8 +2,7 @@
 
 import net.minestom.server.event.player.PlayerChatEvent;
 import net.swofty.commons.StringUtility;
-import net.swofty.commons.skywars.SkywarsLevelColor;
-import net.swofty.type.skywarslobby.level.SkywarsLevelRegistry;
+import net.swofty.commons.skywars.SkyWarsLevelColor;
 import net.swofty.type.generic.chat.StaffChat;
 import net.swofty.type.generic.data.datapoints.DatapointBoolean;
 import net.swofty.type.generic.data.datapoints.DatapointChatType;
@@ -13,11 +12,11 @@
 import net.swofty.type.generic.event.HypixelEvent;
 import net.swofty.type.generic.event.HypixelEventClass;
 import net.swofty.type.generic.party.PartyManager;
-import net.swofty.type.generic.user.HypixelPlayer;
 import net.swofty.type.generic.user.categories.Rank;
 import net.swofty.type.skywarsgame.TypeSkywarsGameLoader;
 import net.swofty.type.skywarsgame.game.SkywarsGame;
 import net.swofty.type.skywarsgame.user.SkywarsPlayer;
+import net.swofty.type.skywarslobby.level.SkywarsLevelRegistry;
 
 public class ActionPlayerChat implements HypixelEventClass {
 
@@ -73,7 +72,7 @@ public void run(PlayerChatEvent event) {
             int level = SkywarsLevelRegistry.calculateLevel(
                     skywarsDataHandler.get(SkywarsDataHandler.Data.EXPERIENCE, DatapointLong.class).getValue()
             );
-            levelPrefix = SkywarsLevelColor.getLevelDisplay(level) + " ";
+            levelPrefix = SkyWarsLevelColor.getLevelDisplay(level) + " ";
         } else {
             levelPrefix = "";
         }
diff --git a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/events/ActionPlayerCombat.java b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/events/ActionPlayerCombat.java
index 251277cf3..284522537 100644
--- a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/events/ActionPlayerCombat.java
+++ b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/events/ActionPlayerCombat.java
@@ -1,6 +1,5 @@
 package net.swofty.type.skywarsgame.events;
 
-import net.minestom.server.entity.damage.Damage;
 import net.minestom.server.entity.damage.DamageType;
 import net.minestom.server.event.entity.EntityDamageEvent;
 import net.swofty.type.generic.event.EventNodes;
diff --git a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/gui/GUICageKitSelector.java b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/gui/GUICageKitSelector.java
index 01e6a60ee..0905bf272 100644
--- a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/gui/GUICageKitSelector.java
+++ b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/gui/GUICageKitSelector.java
@@ -11,7 +11,6 @@
 import net.swofty.type.generic.gui.inventory.HypixelInventoryGUI;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
 import net.swofty.type.generic.gui.inventory.item.GUIClickableItem;
-import net.swofty.type.generic.gui.inventory.item.GUIItem;
 import net.swofty.type.generic.user.HypixelPlayer;
 import net.swofty.type.skywarsgame.game.SkywarsGame;
 import net.swofty.type.skywarslobby.gui.GUIKitBreakdown;
@@ -270,9 +269,7 @@ public ItemStack.Builder getItem(HypixelPlayer player) {
                 boolean owned = unlocks.hasKit(kit.getId());
                 boolean selected = unlocks.getSelectedKitForMode(mode).equals(kit.getId());
 
-                List lore = new ArrayList<>();
-                lore.addAll(kit.getItemsLore(mode));
-
+                List lore = new ArrayList<>(kit.getItemsLore(mode));
                 if (selected) {
                     lore.add("§aSELECTED");
                 } else if (owned) {
diff --git a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/LuckyBlockLootTable.java b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/LuckyBlockLootTable.java
index b81f8295e..e7507e3d6 100644
--- a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/LuckyBlockLootTable.java
+++ b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/LuckyBlockLootTable.java
@@ -8,10 +8,20 @@
 import net.minestom.server.potion.Potion;
 import net.minestom.server.potion.PotionEffect;
 import net.swofty.type.skywarsgame.luckyblock.effects.LuckyBlockEnvironmentEffect;
-import net.swofty.type.skywarsgame.luckyblock.items.*;
 import net.swofty.type.skywarsgame.luckyblock.items.armor.*;
-import net.swofty.type.skywarsgame.luckyblock.items.consumables.*;
-import net.swofty.type.skywarsgame.luckyblock.items.usables.*;
+import net.swofty.type.skywarsgame.luckyblock.items.consumables.AbsorptionHearts;
+import net.swofty.type.skywarsgame.luckyblock.items.consumables.Cornucopia;
+import net.swofty.type.skywarsgame.luckyblock.items.consumables.OneUpMushroom;
+import net.swofty.type.skywarsgame.luckyblock.items.consumables.PlusHealthItem;
+import net.swofty.type.skywarsgame.luckyblock.items.consumables.SuperStar;
+import net.swofty.type.skywarsgame.luckyblock.items.usables.BridgeEggs;
+import net.swofty.type.skywarsgame.luckyblock.items.usables.DevilsContract;
+import net.swofty.type.skywarsgame.luckyblock.items.usables.Fireball;
+import net.swofty.type.skywarsgame.luckyblock.items.usables.JediForce;
+import net.swofty.type.skywarsgame.luckyblock.items.usables.SuperDie;
+import net.swofty.type.skywarsgame.luckyblock.items.usables.ThrowableTNT;
+import net.swofty.type.skywarsgame.luckyblock.items.usables.VoidCharm;
+import net.swofty.type.skywarsgame.luckyblock.items.usables.WaterBalloon;
 import net.swofty.type.skywarsgame.luckyblock.items.weapons.*;
 
 import java.util.Random;
diff --git a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/effects/LuckyBlockEnvironmentEffect.java b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/effects/LuckyBlockEnvironmentEffect.java
index ff6cebcac..ca8786b08 100644
--- a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/effects/LuckyBlockEnvironmentEffect.java
+++ b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/effects/LuckyBlockEnvironmentEffect.java
@@ -4,17 +4,18 @@
 import net.kyori.adventure.text.Component;
 import net.kyori.adventure.text.format.NamedTextColor;
 import net.minestom.server.coordinate.Pos;
-import net.minestom.server.entity.*;
+import net.minestom.server.coordinate.Vec;
+import net.minestom.server.entity.Entity;
+import net.minestom.server.entity.EntityProjectile;
+import net.minestom.server.entity.EntityType;
 import net.minestom.server.entity.damage.Damage;
 import net.minestom.server.instance.Instance;
 import net.minestom.server.instance.block.Block;
 import net.minestom.server.potion.Potion;
 import net.minestom.server.potion.PotionEffect;
-import net.minestom.server.timer.TaskSchedule;
 import net.swofty.type.skywarsgame.TypeSkywarsGameLoader;
 import net.swofty.type.skywarsgame.game.SkywarsGame;
 import net.swofty.type.skywarsgame.user.SkywarsPlayer;
-import net.minestom.server.coordinate.Vec;
 
 import java.time.Duration;
 import java.util.List;
diff --git a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/items/usables/BerserkersRock.java b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/items/usables/BerserkersRock.java
index ec678c4f4..07199a5ae 100644
--- a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/items/usables/BerserkersRock.java
+++ b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/items/usables/BerserkersRock.java
@@ -5,7 +5,6 @@
 import net.kyori.adventure.text.format.TextDecoration;
 import net.minestom.server.coordinate.Pos;
 import net.minestom.server.coordinate.Vec;
-import net.minestom.server.entity.Entity;
 import net.minestom.server.entity.damage.Damage;
 import net.minestom.server.instance.Instance;
 import net.minestom.server.item.ItemStack;
diff --git a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/items/usables/JediForce.java b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/items/usables/JediForce.java
index 5972d9846..4601862fb 100644
--- a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/items/usables/JediForce.java
+++ b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/items/usables/JediForce.java
@@ -4,7 +4,6 @@
 import net.kyori.adventure.text.format.NamedTextColor;
 import net.kyori.adventure.text.format.TextDecoration;
 import net.minestom.server.coordinate.Vec;
-import net.minestom.server.entity.Player;
 import net.minestom.server.item.ItemStack;
 import net.minestom.server.item.Material;
 import net.swofty.type.skywarsgame.TypeSkywarsGameLoader;
diff --git a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/items/usables/TNTLaunchPad.java b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/items/usables/TNTLaunchPad.java
index b07829da8..f86801fc0 100644
--- a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/items/usables/TNTLaunchPad.java
+++ b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/items/usables/TNTLaunchPad.java
@@ -19,7 +19,6 @@
 import net.swofty.type.skywarsgame.user.SkywarsPlayer;
 
 import java.util.List;
-import java.util.UUID;
 
 public class TNTLaunchPad implements LuckyBlockConsumable {
 
diff --git a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/items/weapons/MagicToyStick.java b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/items/weapons/MagicToyStick.java
index 2c5d0655a..70b967437 100644
--- a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/items/weapons/MagicToyStick.java
+++ b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/items/weapons/MagicToyStick.java
@@ -4,15 +4,12 @@
 import net.kyori.adventure.text.format.NamedTextColor;
 import net.kyori.adventure.text.format.TextDecoration;
 import net.minestom.server.coordinate.Point;
-import net.minestom.server.coordinate.Pos;
 import net.minestom.server.coordinate.Vec;
 import net.minestom.server.entity.Entity;
-import net.minestom.server.entity.EntityType;
 import net.minestom.server.entity.Player;
 import net.minestom.server.instance.Instance;
 import net.minestom.server.item.ItemStack;
 import net.minestom.server.item.Material;
-import net.minestom.server.timer.TaskSchedule;
 import net.swofty.pvp.entity.projectile.Snowball;
 import net.swofty.type.skywarsgame.luckyblock.items.LuckyBlockItemRegistry;
 import net.swofty.type.skywarsgame.luckyblock.items.LuckyBlockWeapon;
diff --git a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/items/weapons/Shotgun.java b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/items/weapons/Shotgun.java
index 62aa4b43e..c4f4d42ce 100644
--- a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/items/weapons/Shotgun.java
+++ b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/items/weapons/Shotgun.java
@@ -4,9 +4,7 @@
 import net.kyori.adventure.text.format.NamedTextColor;
 import net.kyori.adventure.text.format.TextDecoration;
 import net.minestom.server.coordinate.Pos;
-import net.minestom.server.coordinate.Vec;
 import net.minestom.server.entity.Entity;
-import net.minestom.server.entity.EntityType;
 import net.minestom.server.instance.Instance;
 import net.minestom.server.item.ItemStack;
 import net.minestom.server.item.Material;
diff --git a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/spawns/RidingBlaze.java b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/spawns/RidingBlaze.java
index b011a4a60..6d33e770c 100644
--- a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/spawns/RidingBlaze.java
+++ b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/luckyblock/spawns/RidingBlaze.java
@@ -1,7 +1,6 @@
 package net.swofty.type.skywarsgame.luckyblock.spawns;
 
 import net.minestom.server.coordinate.Vec;
-import net.minestom.server.entity.Entity;
 import net.minestom.server.entity.EntityProjectile;
 import net.minestom.server.entity.EntityType;
 import net.minestom.server.instance.Instance;
diff --git a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/manager/CageManager.java b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/manager/CageManager.java
index 32dc8ecce..9fc240202 100644
--- a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/manager/CageManager.java
+++ b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/manager/CageManager.java
@@ -1,10 +1,8 @@
 package net.swofty.type.skywarsgame.manager;
 
-import net.minestom.server.MinecraftServer;
 import net.minestom.server.coordinate.Pos;
 import net.minestom.server.instance.Instance;
 import net.minestom.server.instance.block.Block;
-import net.minestom.server.timer.TaskSchedule;
 import net.swofty.type.skywarsgame.user.SkywarsPlayer;
 
 import java.util.ArrayList;
diff --git a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/redis/service/RedisSkywarsGamePropagatePartyEvent.java b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/redis/service/RedisSkywarsGamePropagatePartyEvent.java
index 5571128c9..dcec34ca3 100644
--- a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/redis/service/RedisSkywarsGamePropagatePartyEvent.java
+++ b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/redis/service/RedisSkywarsGamePropagatePartyEvent.java
@@ -5,7 +5,6 @@
 import net.kyori.adventure.text.event.ClickEvent;
 import net.kyori.adventure.text.format.NamedTextColor;
 import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
-import net.minestom.server.entity.EntityType;
 import net.swofty.commons.ServerType;
 import net.swofty.commons.UnderstandableProxyServer;
 import net.swofty.commons.party.FullParty;
@@ -25,7 +24,11 @@
 import org.json.JSONObject;
 import org.tinylog.Logger;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
 import java.util.concurrent.TimeUnit;
 
 public class RedisSkywarsGamePropagatePartyEvent implements ServiceToClient {
diff --git a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/user/SkywarsPlayer.java b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/user/SkywarsPlayer.java
index dab69e81b..500491533 100644
--- a/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/user/SkywarsPlayer.java
+++ b/type.skywarsgame/src/main/java/net/swofty/type/skywarsgame/user/SkywarsPlayer.java
@@ -4,9 +4,6 @@
 import lombok.Setter;
 import net.minestom.server.coordinate.Pos;
 import net.minestom.server.entity.GameMode;
-import net.minestom.server.entity.Player;
-import net.minestom.server.event.player.PlayerSpawnEvent;
-import net.minestom.server.network.ConnectionState;
 import net.minestom.server.network.player.GameProfile;
 import net.minestom.server.network.player.PlayerConnection;
 import net.swofty.type.generic.user.HypixelPlayer;
diff --git a/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/SkywarsLobbyScoreboard.java b/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/SkywarsLobbyScoreboard.java
index c350d172a..7429825f2 100644
--- a/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/SkywarsLobbyScoreboard.java
+++ b/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/SkywarsLobbyScoreboard.java
@@ -4,10 +4,9 @@
 import net.minestom.server.entity.Player;
 import net.minestom.server.timer.Scheduler;
 import net.minestom.server.timer.TaskSchedule;
+import net.swofty.commons.skywars.SkyWarsLevelColor;
 import net.swofty.commons.skywars.SkywarsLeaderboardMode;
 import net.swofty.commons.skywars.SkywarsLeaderboardPeriod;
-import net.swofty.commons.skywars.SkywarsLevelColor;
-import net.swofty.type.skywarslobby.level.SkywarsLevelRegistry;
 import net.swofty.commons.skywars.SkywarsModeStats;
 import net.swofty.type.generic.HypixelConst;
 import net.swofty.type.generic.HypixelGenericLoader;
@@ -17,6 +16,7 @@
 import net.swofty.type.generic.i18n.I18n;
 import net.swofty.type.generic.scoreboard.HypixelScoreboard;
 import net.swofty.type.generic.user.HypixelPlayer;
+import net.swofty.type.skywarslobby.level.SkywarsLevelRegistry;
 
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -63,7 +63,7 @@ public static void start() {
 				List lines = new ArrayList<>();
 				lines.add("§7" + new SimpleDateFormat(I18n.string("scoreboard.common.date_format")).format(new Date()) + " §8" + HypixelConst.getServerName());
 				lines.add("§7 ");
-				lines.add(I18n.string("scoreboard.skywars_lobby.your_level_label") + " " + SkywarsLevelColor.getLevelDisplay(level));
+				lines.add(I18n.string("scoreboard.skywars_lobby.your_level_label") + " " + SkyWarsLevelColor.getLevelDisplay(level));
 				lines.add("§7 ");
 				lines.add(I18n.string("scoreboard.skywars_lobby.solo_kills_label") + soloKills);
 				lines.add(I18n.string("scoreboard.skywars_lobby.solo_wins_label") + soloWins);
diff --git a/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/events/ActionPlayerChat.java b/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/events/ActionPlayerChat.java
index 142607592..b9e92be93 100644
--- a/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/events/ActionPlayerChat.java
+++ b/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/events/ActionPlayerChat.java
@@ -2,8 +2,7 @@
 
 import net.minestom.server.event.player.PlayerChatEvent;
 import net.swofty.commons.StringUtility;
-import net.swofty.commons.skywars.SkywarsLevelColor;
-import net.swofty.type.skywarslobby.level.SkywarsLevelRegistry;
+import net.swofty.commons.skywars.SkyWarsLevelColor;
 import net.swofty.type.generic.HypixelGenericLoader;
 import net.swofty.type.generic.chat.StaffChat;
 import net.swofty.type.generic.data.HypixelDataHandler;
@@ -17,6 +16,7 @@
 import net.swofty.type.generic.party.PartyManager;
 import net.swofty.type.generic.user.HypixelPlayer;
 import net.swofty.type.generic.user.categories.Rank;
+import net.swofty.type.skywarslobby.level.SkywarsLevelRegistry;
 
 import java.util.List;
 
@@ -75,7 +75,7 @@ public void run(PlayerChatEvent event) {
             int level = SkywarsLevelRegistry.calculateLevel(
                     skywarsDataHandler.get(SkywarsDataHandler.Data.EXPERIENCE, DatapointLong.class).getValue()
             );
-            levelPrefix = SkywarsLevelColor.getLevelDisplay(level) + " ";
+            levelPrefix = SkyWarsLevelColor.getLevelDisplay(level) + " ";
         } else {
             levelPrefix = "";
         }
diff --git a/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/gui/GUIKitSelector.java b/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/gui/GUIKitSelector.java
index 9788d0a19..40674518e 100644
--- a/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/gui/GUIKitSelector.java
+++ b/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/gui/GUIKitSelector.java
@@ -17,9 +17,7 @@
 import net.swofty.type.skywarslobby.kit.SkywarsKitRegistry;
 
 import java.util.ArrayList;
-import java.util.Comparator;
 import java.util.List;
-import java.util.Set;
 
 /**
  * Kit selector GUI for a specific game mode.
@@ -215,10 +213,8 @@ public ItemStack.Builder getItem(HypixelPlayer player) {
                 boolean owned = unlocks.hasKit(kit.getId());
                 boolean selected = unlocks.getSelectedKitForMode(mode).equals(kit.getId());
 
-                List lore = new ArrayList<>();
-
                 // Items preview
-                lore.addAll(kit.getItemsLore(mode));
+                List lore = new ArrayList<>(kit.getItemsLore(mode));
                 lore.add("");
 
                 // Rarity
diff --git a/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/gui/GUIKitStats.java b/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/gui/GUIKitStats.java
index 31bc5f9ee..9bf069129 100644
--- a/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/gui/GUIKitStats.java
+++ b/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/gui/GUIKitStats.java
@@ -50,8 +50,7 @@ public void onOpen(InventoryGUIOpenEvent e) {
         set(new GUIItem(13) {
             @Override
             public ItemStack.Builder getItem(HypixelPlayer player) {
-                List lore = new ArrayList<>();
-                lore.addAll(kit.getItemsLore(mode));
+                List lore = new ArrayList<>(kit.getItemsLore(mode));
 
                 String name = "§a" + kit.getName();
                 if (kit.hasCustomTexture()) {
diff --git a/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/gui/GUISelectPerk.java b/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/gui/GUISelectPerk.java
index f37eb60f4..49284f93b 100644
--- a/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/gui/GUISelectPerk.java
+++ b/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/gui/GUISelectPerk.java
@@ -10,7 +10,6 @@
 import net.swofty.type.generic.gui.inventory.HypixelPaginatedGUI;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
 import net.swofty.type.generic.gui.inventory.item.GUIClickableItem;
-import net.swofty.type.generic.gui.inventory.item.GUIItem;
 import net.swofty.type.generic.user.HypixelPlayer;
 import net.swofty.type.generic.utility.PaginationList;
 import net.swofty.type.skywarslobby.perk.SkywarsPerk;
@@ -45,9 +44,7 @@ protected int[] getPaginatedSlots() {
     @Override
     protected PaginationList fillPaged(HypixelPlayer player, PaginationList paged) {
         List perks = SkywarsPerkRegistry.getSelectablePerksSortedByRarity(MODE, true);
-        for (SkywarsPerk perk : perks) {
-            paged.add(perk);
-        }
+        paged.addAll(perks);
         return paged;
     }
 
diff --git a/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/gui/GUISoulWell.java b/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/gui/GUISoulWell.java
index 76c901f85..5f475a6ef 100644
--- a/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/gui/GUISoulWell.java
+++ b/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/gui/GUISoulWell.java
@@ -8,8 +8,11 @@
 import net.swofty.type.generic.data.datapoints.DatapointSoulWellUpgrades;
 import net.swofty.type.generic.data.handlers.SkywarsDataHandler;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
+import net.swofty.type.generic.gui.v2.Components;
 import net.swofty.type.generic.gui.v2.DefaultState;
-import net.swofty.type.generic.gui.v2.*;
+import net.swofty.type.generic.gui.v2.StatelessView;
+import net.swofty.type.generic.gui.v2.ViewConfiguration;
+import net.swofty.type.generic.gui.v2.ViewLayout;
 import net.swofty.type.generic.gui.v2.context.ViewContext;
 import net.swofty.type.skywarslobby.soulwell.SoulWellMessages;
 import net.swofty.type.skywarslobby.soulwell.SoulWellUpgrade;
diff --git a/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/gui/GUIToggleInsanePerks.java b/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/gui/GUIToggleInsanePerks.java
index a2d2be06d..0dce47aaf 100644
--- a/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/gui/GUIToggleInsanePerks.java
+++ b/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/gui/GUIToggleInsanePerks.java
@@ -10,7 +10,6 @@
 import net.swofty.type.generic.gui.inventory.HypixelPaginatedGUI;
 import net.swofty.type.generic.gui.inventory.ItemStackCreator;
 import net.swofty.type.generic.gui.inventory.item.GUIClickableItem;
-import net.swofty.type.generic.gui.inventory.item.GUIItem;
 import net.swofty.type.generic.user.HypixelPlayer;
 import net.swofty.type.generic.utility.PaginationList;
 import net.swofty.type.skywarslobby.perk.SkywarsPerk;
@@ -45,9 +44,7 @@ protected int[] getPaginatedSlots() {
     protected PaginationList fillPaged(HypixelPlayer player, PaginationList paged) {
         // Show all selectable perks (owned + unowned)
         List perks = SkywarsPerkRegistry.getSelectablePerksSortedByRarity(MODE, true);
-        for (SkywarsPerk perk : perks) {
-            paged.add(perk);
-        }
+        paged.addAll(perks);
         return paged;
     }
 
diff --git a/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/hologram/SkywarsLeaderboardHologram.java b/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/hologram/SkywarsLeaderboardHologram.java
index c78105725..fa7559e29 100644
--- a/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/hologram/SkywarsLeaderboardHologram.java
+++ b/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/hologram/SkywarsLeaderboardHologram.java
@@ -2,18 +2,26 @@
 
 import lombok.Getter;
 import net.minestom.server.coordinate.Pos;
-import net.swofty.commons.skywars.*;
+import net.swofty.commons.skywars.SkywarsLeaderboardMode;
+import net.swofty.commons.skywars.SkywarsLeaderboardPeriod;
+import net.swofty.commons.skywars.SkywarsLeaderboardView;
+import net.swofty.commons.skywars.SkywarsStatType;
+import net.swofty.commons.skywars.SkywarsTextAlignment;
 import net.swofty.type.generic.HypixelGenericLoader;
 import net.swofty.type.generic.leaderboard.LeaderboardService;
 import net.swofty.type.generic.user.HypixelPlayer;
 import net.swofty.type.skywarslobby.hologram.LeaderboardHologramManager.PlayerLeaderboardState;
 
 import java.text.NumberFormat;
-import java.time.*;
+import java.time.DayOfWeek;
+import java.time.Duration;
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
 import java.time.temporal.TemporalAdjusters;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
+import java.util.Objects;
 
 @Getter
 public enum SkywarsLeaderboardHologram {
@@ -112,12 +120,8 @@ private List getPlayersInLobby(HypixelPlaye
                     lobbyPlayer.getInstance().equals(viewer.getInstance())) {
                 LeaderboardService.LeaderboardEntry entry =
                         LeaderboardService.getPlayerRankEntry(leaderboardKey, lobbyPlayer.getUuid());
-                if (entry != null) {
-                    lobbyEntries.add(entry);
-                } else {
-                    lobbyEntries.add(new LeaderboardService.LeaderboardEntry(
-                            lobbyPlayer.getUuid(), -1, 0));
-                }
+                lobbyEntries.add(Objects.requireNonNullElseGet(entry, () -> new LeaderboardService.LeaderboardEntry(
+                    lobbyPlayer.getUuid(), -1, 0)));
             }
         }
 
diff --git a/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/npcs/NPCSkywarsStats.java b/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/npcs/NPCSkywarsStats.java
index affe6d51f..210cc6d47 100644
--- a/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/npcs/NPCSkywarsStats.java
+++ b/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/npcs/NPCSkywarsStats.java
@@ -1,9 +1,8 @@
 package net.swofty.type.skywarslobby.npcs;
 
 import net.minestom.server.coordinate.Pos;
+import net.swofty.commons.skywars.SkyWarsLevelColor;
 import net.swofty.commons.skywars.SkywarsLeaderboardPeriod;
-import net.swofty.commons.skywars.SkywarsLevelColor;
-import net.swofty.type.skywarslobby.level.SkywarsLevelRegistry;
 import net.swofty.commons.skywars.SkywarsModeStats;
 import net.swofty.type.generic.achievement.AchievementCategory;
 import net.swofty.type.generic.achievement.AchievementRegistry;
@@ -16,6 +15,7 @@
 import net.swofty.type.generic.event.custom.NPCInteractEvent;
 import net.swofty.type.generic.user.HypixelPlayer;
 import net.swofty.type.skywarslobby.gui.GUISkywarsStatistics;
+import net.swofty.type.skywarslobby.level.SkywarsLevelRegistry;
 
 import java.text.DecimalFormat;
 
@@ -46,7 +46,7 @@ public String[] holograms(HypixelPlayer player) {
 
                 return new String[]{
                         "§6§lYour SkyWars Profile",
-                        "§fYour Level: " + SkywarsLevelColor.getLevelDisplay(level),
+                        "§fYour Level: " + SkyWarsLevelColor.getLevelDisplay(level),
                         "§fProgress: " + SkywarsLevelRegistry.formatXPDisplay(experience),
                         "§fTotal Wins: §a" + NUMBER_FORMAT.format(totalWins),
                         "§fTotal Kills: §a" + NUMBER_FORMAT.format(totalKills),
diff --git a/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/soulwell/SoulWellMessages.java b/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/soulwell/SoulWellMessages.java
index ac598eeba..323c03453 100644
--- a/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/soulwell/SoulWellMessages.java
+++ b/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/soulwell/SoulWellMessages.java
@@ -59,7 +59,7 @@ public static String centerMessage(String message) {
             compensated += spaceLength;
         }
 
-        return sb.toString() + message;
+        return sb + message;
     }
 
     /**
diff --git a/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/soulwell/SoulWellParticleManager.java b/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/soulwell/SoulWellParticleManager.java
index 6116488f8..b46220d65 100644
--- a/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/soulwell/SoulWellParticleManager.java
+++ b/type.skywarslobby/src/main/java/net/swofty/type/skywarslobby/soulwell/SoulWellParticleManager.java
@@ -2,7 +2,6 @@
 
 import net.minestom.server.MinecraftServer;
 import net.minestom.server.color.Color;
-import net.minestom.server.coordinate.Pos;
 import net.minestom.server.instance.Instance;
 import net.minestom.server.network.packet.server.play.ParticlePacket;
 import net.minestom.server.particle.Particle;
diff --git a/type.spidersden/src/main/java/net/swofty/type/spidersden/gui/GUICollectedMobTypes.java b/type.spidersden/src/main/java/net/swofty/type/spidersden/gui/GUICollectedMobTypes.java
index d296a8481..995579cb8 100644
--- a/type.spidersden/src/main/java/net/swofty/type/spidersden/gui/GUICollectedMobTypes.java
+++ b/type.spidersden/src/main/java/net/swofty/type/spidersden/gui/GUICollectedMobTypes.java
@@ -18,8 +18,6 @@
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicBoolean;
 
 public class GUICollectedMobTypes extends HypixelInventoryGUI {
 
diff --git a/type.spidersden/src/main/java/net/swofty/type/spidersden/npcs/NPCBramassBeastslayer.java b/type.spidersden/src/main/java/net/swofty/type/spidersden/npcs/NPCBramassBeastslayer.java
index d737ac150..817195165 100644
--- a/type.spidersden/src/main/java/net/swofty/type/spidersden/npcs/NPCBramassBeastslayer.java
+++ b/type.spidersden/src/main/java/net/swofty/type/spidersden/npcs/NPCBramassBeastslayer.java
@@ -8,7 +8,6 @@
 import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration;
 import net.swofty.type.generic.event.custom.NPCInteractEvent;
 import net.swofty.type.generic.user.HypixelPlayer;
-import net.swofty.type.skyblockgeneric.gui.inventories.GUIReforge;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 
 public class NPCBramassBeastslayer extends HypixelNPC {
diff --git a/type.spidersden/src/main/java/net/swofty/type/spidersden/npcs/NPCMichael.java b/type.spidersden/src/main/java/net/swofty/type/spidersden/npcs/NPCMichael.java
index 95d056894..9b76649f5 100644
--- a/type.spidersden/src/main/java/net/swofty/type/spidersden/npcs/NPCMichael.java
+++ b/type.spidersden/src/main/java/net/swofty/type/spidersden/npcs/NPCMichael.java
@@ -1,20 +1,15 @@
 package net.swofty.type.spidersden.npcs;
 
-import net.kyori.adventure.text.Component;
 import net.kyori.adventure.text.format.NamedTextColor;
-import net.kyori.adventure.text.format.TextColor;
 import net.minestom.server.coordinate.Pos;
 import net.swofty.commons.ChatColor;
-import net.swofty.type.generic.data.datapoints.DatapointToggles;
 import net.swofty.type.generic.entity.npc.HypixelNPC;
 import net.swofty.type.generic.entity.npc.NPCOption;
 import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration;
 import net.swofty.type.generic.event.custom.NPCInteractEvent;
 import net.swofty.type.generic.user.HypixelPlayer;
-import net.swofty.type.skyblockgeneric.mission.missions.spidersden.MissionTheFlintBros;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 
-import java.util.Collections;
 import java.util.List;
 
 public class NPCMichael extends HypixelNPC {
diff --git a/type.thepark/src/main/java/net/swofty/type/thepark/TrialOfFire.java b/type.thepark/src/main/java/net/swofty/type/thepark/TrialOfFire.java
index b4e1f3495..7b6fc494a 100644
--- a/type.thepark/src/main/java/net/swofty/type/thepark/TrialOfFire.java
+++ b/type.thepark/src/main/java/net/swofty/type/thepark/TrialOfFire.java
@@ -10,21 +10,18 @@
 import net.minestom.server.entity.damage.DamageType;
 import net.minestom.server.instance.block.Block;
 import net.minestom.server.timer.ExecutionType;
-import net.minestom.server.timer.Task;
 import net.minestom.server.timer.TaskSchedule;
-import net.swofty.type.generic.HypixelConst;
 import net.swofty.type.generic.data.datapoints.DatapointInteger;
-import net.swofty.type.generic.entity.npc.HypixelNPC;
 import net.swofty.type.skyblockgeneric.SkyBlockGenericLoader;
 import net.swofty.type.skyblockgeneric.data.SkyBlockDataHandler;
 import net.swofty.type.skyblockgeneric.mission.missions.thepark.darkthicket.MissionCompleteTrialOfFireOne;
-import net.swofty.type.skyblockgeneric.mission.missions.thepark.savanna.MissionTravelToTheSavannaWoodland;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
-import net.swofty.type.thepark.npcs.NPCRyan;
-import org.tinylog.Logger;
 
 import java.time.Duration;
-import java.util.*;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
 
 public class TrialOfFire {
 
diff --git a/type.thepark/src/main/java/net/swofty/type/thepark/WoodsRacing.java b/type.thepark/src/main/java/net/swofty/type/thepark/WoodsRacing.java
index ff4e4d673..584a245cb 100644
--- a/type.thepark/src/main/java/net/swofty/type/thepark/WoodsRacing.java
+++ b/type.thepark/src/main/java/net/swofty/type/thepark/WoodsRacing.java
@@ -2,10 +2,12 @@
 
 import net.minestom.server.coordinate.Point;
 import net.minestom.server.coordinate.Pos;
-import net.swofty.type.generic.data.datapoints.DatapointMapStringLong;
-import net.swofty.type.skyblockgeneric.data.SkyBlockDataHandler;
 import net.swofty.type.skyblockgeneric.mission.MissionData;
-import net.swofty.type.skyblockgeneric.mission.missions.thepark.spruce.race.*;
+import net.swofty.type.skyblockgeneric.mission.missions.thepark.spruce.race.MissionCompleteTheRaceFourth;
+import net.swofty.type.skyblockgeneric.mission.missions.thepark.spruce.race.MissionCompleteTheRaceOneMinute;
+import net.swofty.type.skyblockgeneric.mission.missions.thepark.spruce.race.MissionCompleteTheRaceThird;
+import net.swofty.type.skyblockgeneric.mission.missions.thepark.spruce.race.MissionCompleteTheRaceTwoMinutes;
+import net.swofty.type.skyblockgeneric.mission.missions.thepark.spruce.race.MissionTalkToGustave;
 import net.swofty.type.skyblockgeneric.race.Race;
 import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
 
diff --git a/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCVanessa.java b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCVanessa.java
index 24e4ead8e..de25c646a 100644
--- a/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCVanessa.java
+++ b/type.thepark/src/main/java/net/swofty/type/thepark/npcs/NPCVanessa.java
@@ -3,7 +3,6 @@
 import net.minestom.server.coordinate.Pos;
 import net.swofty.type.generic.entity.npc.HypixelNPC;
 import net.swofty.type.generic.entity.npc.configuration.HumanConfiguration;
-import net.swofty.type.generic.entity.npc.configuration.NPCConfiguration;
 import net.swofty.type.generic.event.custom.NPCInteractEvent;
 import net.swofty.type.generic.user.HypixelPlayer;
 
diff --git a/velocity.extension/src/main/java/net/swofty/velocity/SkyBlockVelocity.java b/velocity.extension/src/main/java/net/swofty/velocity/SkyBlockVelocity.java
index b8f5d4033..5f4da8ffb 100644
--- a/velocity.extension/src/main/java/net/swofty/velocity/SkyBlockVelocity.java
+++ b/velocity.extension/src/main/java/net/swofty/velocity/SkyBlockVelocity.java
@@ -401,16 +401,14 @@ public void onPing(ProxyPingEvent event) {
 	public void onPlayerConnect(ServerPostConnectEvent event) {
 		Player player = event.getPlayer();
 		if (!(player.getProtocolVersion().getProtocol() >= ProtocolVersion.MAXIMUM_VERSION.getProtocol())) {
-			StringBuilder message = new StringBuilder();
-
-			message.append("\n");
-			message.append("§6§l----------- §cServer Notice §6§l-----------\n");
-			message.append("§cAlthough we do support versions prior to §6" + ProtocolVersion.MAXIMUM_VERSION.getVersionIntroducedIn() + "§c, the experience may be degraded.\n");
-			message.append("§cIf you experience any issues, please test if it also occurs on §6" + ProtocolVersion.MAXIMUM_VERSION.getVersionIntroducedIn() + "§c before reporting it.\n");
-			message.append("§6§l---------------------------------\n");
-			message.append("\n");
-
-			player.sendMessage(Component.text(message.toString()));
+            String message = "\n" +
+                "§6§l----------- §cServer Notice §6§l-----------\n" +
+                "§cAlthough we do support versions prior to §6" + ProtocolVersion.MAXIMUM_VERSION.getVersionIntroducedIn() + "§c, the experience may be degraded.\n" +
+                "§cIf you experience any issues, please test if it also occurs on §6" + ProtocolVersion.MAXIMUM_VERSION.getVersionIntroducedIn() + "§c before reporting it.\n" +
+                "§6§l---------------------------------\n" +
+                "\n";
+
+			player.sendMessage(Component.text(message));
 		}
 
 		player.getCurrentServer().ifPresent(connection -> {
diff --git a/velocity.extension/src/main/java/net/swofty/velocity/gamemanager/BalanceConfigurations.java b/velocity.extension/src/main/java/net/swofty/velocity/gamemanager/BalanceConfigurations.java
index 14b991b71..1d213ec82 100644
--- a/velocity.extension/src/main/java/net/swofty/velocity/gamemanager/BalanceConfigurations.java
+++ b/velocity.extension/src/main/java/net/swofty/velocity/gamemanager/BalanceConfigurations.java
@@ -7,7 +7,6 @@
 import net.swofty.velocity.gamemanager.balanceconfigurations.ReadyGames;
 import net.swofty.velocity.testflow.TestFlowManager;
 import org.jetbrains.annotations.Nullable;
-import org.tinylog.Logger;
 
 import java.util.HashMap;
 import java.util.List;
diff --git a/velocity.extension/src/main/java/net/swofty/velocity/presence/PresencePublisher.java b/velocity.extension/src/main/java/net/swofty/velocity/presence/PresencePublisher.java
index 1916ae413..6d8a8c9a3 100644
--- a/velocity.extension/src/main/java/net/swofty/velocity/presence/PresencePublisher.java
+++ b/velocity.extension/src/main/java/net/swofty/velocity/presence/PresencePublisher.java
@@ -2,7 +2,6 @@
 
 import com.velocitypowered.api.proxy.Player;
 import com.velocitypowered.api.proxy.server.RegisteredServer;
-import net.swofty.commons.ServiceType;
 import net.swofty.commons.presence.PresenceInfo;
 import net.swofty.commons.protocol.objects.presence.UpdatePresenceProtocolObject;
 import net.swofty.proxyapi.redis.ServerOutboundMessage;
diff --git a/velocity.extension/src/main/java/net/swofty/velocity/redis/RedisListener.java b/velocity.extension/src/main/java/net/swofty/velocity/redis/RedisListener.java
index 2e295648c..98391b531 100644
--- a/velocity.extension/src/main/java/net/swofty/velocity/redis/RedisListener.java
+++ b/velocity.extension/src/main/java/net/swofty/velocity/redis/RedisListener.java
@@ -1,14 +1,11 @@
 package net.swofty.velocity.redis;
 
 import net.swofty.redisapi.api.ChannelRegistry;
-import org.tinylog.Logger;
 import net.swofty.redisapi.api.RedisAPI;
-import org.tinylog.Logger;
 import org.json.JSONObject;
 import org.tinylog.Logger;
 
 import java.util.UUID;
-import org.tinylog.Logger;
 
 public abstract class RedisListener {
 
diff --git a/velocity.extension/src/main/java/net/swofty/velocity/testflow/TestFlowManager.java b/velocity.extension/src/main/java/net/swofty/velocity/testflow/TestFlowManager.java
index c6a9b5fb5..ccd9c2de2 100644
--- a/velocity.extension/src/main/java/net/swofty/velocity/testflow/TestFlowManager.java
+++ b/velocity.extension/src/main/java/net/swofty/velocity/testflow/TestFlowManager.java
@@ -5,7 +5,12 @@
 import net.swofty.velocity.gamemanager.GameManager;
 
 import java.lang.reflect.Constructor;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
@@ -181,7 +186,6 @@ public static void handlePlayerLeave(String playerName) {
     /**
      * Loads and instantiates a test flow handler
      */
-    @SuppressWarnings("unchecked")
     private static void loadTestFlowHandler(ProxyTestFlowInstance instance) {
         try {
             String handlerName = instance.getHandlerClassName();
diff --git a/velocity.extension/src/main/java/net/swofty/velocity/viaversion/injector/SkyBlockViaInjector.java b/velocity.extension/src/main/java/net/swofty/velocity/viaversion/injector/SkyBlockViaInjector.java
index d95d51e8c..c171274c7 100644
--- a/velocity.extension/src/main/java/net/swofty/velocity/viaversion/injector/SkyBlockViaInjector.java
+++ b/velocity.extension/src/main/java/net/swofty/velocity/viaversion/injector/SkyBlockViaInjector.java
@@ -7,14 +7,14 @@
 import com.viaversion.viaversion.util.ReflectionUtil;
 import io.netty.channel.ChannelInitializer;
 import it.unimi.dsi.fastutil.objects.ObjectLinkedOpenHashSet;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.SortedSet;
-
 import net.swofty.velocity.SkyBlockVelocity;
 import net.swofty.velocity.packet.PlayerChannelInitializer;
 import org.jetbrains.annotations.Nullable;
 
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.SortedSet;
+
 public class SkyBlockViaInjector implements ViaInjector {
     public static final Method GET_PLAYER_INFO_FORWARDING_MODE = getPlayerInfoForwardingModeMethod();
 
@@ -94,7 +94,7 @@ public JsonObject getDump() {
         JsonObject data = new JsonObject();
         try {
             data.addProperty("currentInitializer", getInitializer().getClass().getName());
-        } catch (Exception e) {
+        } catch (Exception _) {
         }
         return data;
     }