From 13b25272dc8a8889126fea1eb2bb8a8b01b15a66 Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 <3597346+EpicKnarvik97@users.noreply.github.com> Date: Wed, 26 Nov 2025 15:39:19 +0100 Subject: [PATCH] Cleans up some nullability annotations --- .../minigames/arena/ArenaHandler.java | 44 ++++----- .../minigames/arena/ArenaRecordsRegistry.java | 26 +++--- .../minigames/arena/dropper/DropperArena.java | 50 +++++++---- .../arena/dropper/DropperArenaData.java | 3 +- .../dropper/DropperArenaEditableProperty.java | 15 ++-- .../arena/dropper/DropperArenaGameMode.java | 9 +- .../arena/dropper/DropperArenaGroup.java | 3 +- .../arena/dropper/DropperArenaHandler.java | 3 +- .../dropper/DropperArenaPlayerRegistry.java | 2 + .../dropper/DropperArenaRecordsRegistry.java | 3 +- .../arena/dropper/DropperArenaSession.java | 25 ++++-- .../arena/dropper/DropperArenaStorageKey.java | 6 +- .../dropper/DropperPlayerEntryState.java | 4 +- .../minigames/arena/parkour/ParkourArena.java | 89 ++++++++++++------- .../arena/parkour/ParkourArenaData.java | 3 +- .../parkour/ParkourArenaEditableProperty.java | 16 ++-- .../arena/parkour/ParkourArenaGameMode.java | 9 +- .../arena/parkour/ParkourArenaGroup.java | 3 +- .../arena/parkour/ParkourArenaHandler.java | 3 +- .../parkour/ParkourArenaPlayerRegistry.java | 2 + .../parkour/ParkourArenaRecordsRegistry.java | 3 +- .../arena/parkour/ParkourArenaSession.java | 31 ++++--- .../arena/parkour/ParkourArenaStorageKey.java | 3 +- .../parkour/ParkourPlayerEntryState.java | 9 +- .../minigames/arena/record/ArenaRecord.java | 15 ++-- .../minigames/arena/record/IntegerRecord.java | 12 ++- .../minigames/arena/record/LongRecord.java | 12 ++- .../arena/record/SummableArenaRecord.java | 11 ++- .../minigames/arena/reward/CommandReward.java | 7 +- .../minigames/arena/reward/EconomyReward.java | 6 +- .../minigames/arena/reward/ItemReward.java | 8 +- .../arena/reward/PermissionReward.java | 6 +- .../arena/reward/RewardCondition.java | 6 +- .../minigames/arena/reward/RewardType.java | 2 + 34 files changed, 292 insertions(+), 157 deletions(-) diff --git a/src/main/java/net/knarcraft/minigames/arena/ArenaHandler.java b/src/main/java/net/knarcraft/minigames/arena/ArenaHandler.java index f55338b..5b539ca 100644 --- a/src/main/java/net/knarcraft/minigames/arena/ArenaHandler.java +++ b/src/main/java/net/knarcraft/minigames/arena/ArenaHandler.java @@ -15,22 +15,22 @@ import java.util.logging.Level; /** * An interface describing a generic arena handler * - * @param

The type of arena stored

- * @param

The type of arena group stored

+ * @param

The type of arena stored

+ * @param

The type of arena group stored

*/ -public abstract class ArenaHandler> { +public abstract class ArenaHandler> { - protected Map arenas = new HashMap<>(); - protected Map arenaGroups = new HashMap<>(); + protected Map arenas = new HashMap<>(); + protected Map arenaGroups = new HashMap<>(); protected Map arenaNameLookup = new HashMap<>(); - private final ArenaPlayerRegistry playerRegistry; + private final ArenaPlayerRegistry playerRegistry; /** * Instantiates a new arena handler * * @param playerRegistry

The registry keeping track of player sessions

*/ - public ArenaHandler(ArenaPlayerRegistry playerRegistry) { + public ArenaHandler(@NotNull ArenaPlayerRegistry playerRegistry) { this.playerRegistry = playerRegistry; } @@ -39,8 +39,8 @@ public abstract class ArenaHandler> * * @return

All arenas in a group

*/ - public @NotNull Set getArenasInAGroup() { - Set arenas = new HashSet<>(); + public @NotNull Set getArenasInAGroup() { + Set arenas = new HashSet<>(); for (UUID arenaId : arenaGroups.keySet()) { arenas.add(this.arenas.get(arenaId)); } @@ -52,7 +52,7 @@ public abstract class ArenaHandler> * * @return

All arena groups

*/ - public Set getAllGroups() { + public Set getAllGroups() { return new HashSet<>(arenaGroups.values()); } @@ -62,7 +62,7 @@ public abstract class ArenaHandler> * @param arenaId

The id of the arena to get the group of

* @return

The group the arena belongs to, or null if not in a group

*/ - public @Nullable S getGroup(@NotNull UUID arenaId) { + public @Nullable GroupType getGroup(@NotNull UUID arenaId) { return this.arenaGroups.get(arenaId); } @@ -72,7 +72,7 @@ public abstract class ArenaHandler> * @param arenaId

The id of the arena to change

* @param arenaGroup

The group to add the arena to, or null to remove the current group

*/ - public void setGroup(@NotNull UUID arenaId, @Nullable S arenaGroup) { + public void setGroup(@NotNull UUID arenaId, @Nullable GroupType arenaGroup) { if (arenaGroup == null) { // No need to remove something non-existing if (!this.arenaGroups.containsKey(arenaId)) { @@ -80,7 +80,7 @@ public abstract class ArenaHandler> } // Remove the existing group - S oldGroup = this.arenaGroups.remove(arenaId); + GroupType oldGroup = this.arenaGroups.remove(arenaId); oldGroup.removeArena(arenaId); } else { // Make sure to remove the arena from the old group's internal tracking @@ -100,9 +100,9 @@ public abstract class ArenaHandler> * @param groupName

The name of the group to get

* @return

The group, or null if not found

*/ - public @Nullable S getGroup(String groupName) { + public @Nullable GroupType getGroup(@NotNull String groupName) { String sanitized = StringSanitizer.sanitizeArenaName(groupName); - for (S arenaGroup : this.arenaGroups.values()) { + for (GroupType arenaGroup : this.arenaGroups.values()) { if (arenaGroup.getGroupNameSanitized().equals(sanitized)) { return arenaGroup; } @@ -128,7 +128,7 @@ public abstract class ArenaHandler> * * @param arena

The arena to add

*/ - public void addArena(@NotNull K arena) { + public void addArena(@NotNull ArenaType arena) { this.arenas.put(arena.getArenaId(), arena); this.arenaNameLookup.put(arena.getArenaNameSanitized(), arena.getArenaId()); this.saveArenas(); @@ -140,7 +140,7 @@ public abstract class ArenaHandler> * @param arenaId

The id of the arena to get

* @return

The arena, or null if no arena could be found

*/ - public @Nullable K getArena(@NotNull UUID arenaId) { + public @Nullable ArenaType getArena(@NotNull UUID arenaId) { return this.arenas.get(arenaId); } @@ -150,7 +150,7 @@ public abstract class ArenaHandler> * @param arenaName

The arena to get

* @return

The arena with the given name, or null if not found

*/ - public @Nullable K getArena(@NotNull String arenaName) { + public @Nullable ArenaType getArena(@NotNull String arenaName) { try { return this.arenas.get(UUID.fromString(arenaName)); } catch (IllegalArgumentException exception) { @@ -163,7 +163,7 @@ public abstract class ArenaHandler> * * @return

All known arenas

*/ - public @NotNull Map getArenas() { + public @NotNull Map getArenas() { return new HashMap<>(this.arenas); } @@ -172,7 +172,7 @@ public abstract class ArenaHandler> * * @param arena

The arena to remove

*/ - public void removeArena(@NotNull K arena) { + public void removeArena(@NotNull ArenaType arena) { UUID arenaId = arena.getArenaId(); this.playerRegistry.removeForArena(arena, false); this.arenas.remove(arenaId); @@ -190,8 +190,8 @@ public abstract class ArenaHandler> * * @param arenaId

The id of the arena whose data should be saved

*/ - public void saveData(UUID arenaId) { - K arena = getArena(arenaId); + public void saveData(@NotNull UUID arenaId) { + ArenaType arena = getArena(arenaId); if (arena != null) { if (!arena.saveData()) { MiniGames.log(Level.WARNING, "Unable to save data for arena with id " + arenaId + diff --git a/src/main/java/net/knarcraft/minigames/arena/ArenaRecordsRegistry.java b/src/main/java/net/knarcraft/minigames/arena/ArenaRecordsRegistry.java index e1ed506..bd2c6e0 100644 --- a/src/main/java/net/knarcraft/minigames/arena/ArenaRecordsRegistry.java +++ b/src/main/java/net/knarcraft/minigames/arena/ArenaRecordsRegistry.java @@ -54,6 +54,7 @@ public abstract class ArenaRecordsRegistry implements ConfigurationSerializable * * @return

Existing death records

*/ + @NotNull public Set> getLeastDeathsRecords() { return new HashSet<>(this.leastDeaths); } @@ -63,6 +64,7 @@ public abstract class ArenaRecordsRegistry implements ConfigurationSerializable * * @return

Existing time records

*/ + @NotNull public Set> getShortestTimeMilliSecondsRecords() { return new HashSet<>(this.shortestTimeMilliSeconds); } @@ -74,7 +76,8 @@ public abstract class ArenaRecordsRegistry implements ConfigurationSerializable * @param deaths

The number of deaths suffered before the player finished the arena

* @return

The result explaining what type of record was achieved

*/ - public @NotNull RecordResult registerDeathRecord(@NotNull UUID playerId, int deaths) { + @NotNull + public RecordResult registerDeathRecord(@NotNull UUID playerId, int deaths) { Consumer consumer = (value) -> { leastDeaths.removeIf((item) -> item.getUserId().equals(playerId)); leastDeaths.add(new IntegerRecord(playerId, value)); @@ -89,7 +92,8 @@ public abstract class ArenaRecordsRegistry implements ConfigurationSerializable * @param milliseconds

The number of milliseconds it took the player to finish the dropper arena

* @return

The result explaining what type of record was achieved

*/ - public @NotNull RecordResult registerTimeRecord(@NotNull UUID playerId, long milliseconds) { + @NotNull + public RecordResult registerTimeRecord(@NotNull UUID playerId, long milliseconds) { Consumer consumer = (value) -> { shortestTimeMilliSeconds.removeIf((item) -> item.getUserId().equals(playerId)); shortestTimeMilliSeconds.add(new LongRecord(playerId, value)); @@ -111,9 +115,10 @@ public abstract class ArenaRecordsRegistry implements ConfigurationSerializable * @param amount

The amount of whatever the player achieved

* @return

The result of the player's record attempt

*/ - private > @NotNull RecordResult registerRecord(@NotNull Set> existingRecords, - @NotNull Consumer recordSetter, - @NotNull UUID playerId, T amount) { + @NotNull + private > RecordResult registerRecord(@NotNull Set> existingRecords, + @NotNull Consumer recordSetter, + @NotNull UUID playerId, RecordType amount) { RecordResult result; if (existingRecords.stream().allMatch((entry) -> amount.compareTo(entry.getRecord()) < 0)) { // If the given value is less than all other values, that's a world record! @@ -123,7 +128,7 @@ public abstract class ArenaRecordsRegistry implements ConfigurationSerializable return result; } - ArenaRecord playerRecord = getRecord(existingRecords, playerId); + ArenaRecord playerRecord = getRecord(existingRecords, playerId); if (playerRecord != null && amount.compareTo(playerRecord.getRecord()) < 0) { // If the given value is less than the player's previous value, that's a personal best! result = RecordResult.PERSONAL_BEST; @@ -146,12 +151,13 @@ public abstract class ArenaRecordsRegistry implements ConfigurationSerializable * * @param existingRecords

The existing records to look through

* @param playerId

The id of the player to look for

- * @param

The type of the stored record

+ * @param

The type of the stored record

* @return

The record, or null if not found

*/ - private > @Nullable ArenaRecord getRecord(@NotNull Set> existingRecords, - @NotNull UUID playerId) { - AtomicReference> record = new AtomicReference<>(); + @Nullable + private > ArenaRecord getRecord(@NotNull Set> existingRecords, + @NotNull UUID playerId) { + AtomicReference> record = new AtomicReference<>(); existingRecords.forEach((item) -> { if (item.getUserId().equals(playerId)) { record.set(item); diff --git a/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArena.java b/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArena.java index cdb250f..d095c1a 100644 --- a/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArena.java +++ b/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArena.java @@ -35,23 +35,27 @@ public class DropperArena implements Arena { /** * An unique and persistent identifier for this arena */ + @NotNull private final UUID arenaId; /** * A name used when listing and storing this arena. */ - private @NotNull String arenaName; + @NotNull + private String arenaName; /** * The location players are teleported to when joining this arena. */ - private @NotNull Location spawnLocation; + @NotNull + private Location spawnLocation; /** * The location players will be sent to when they win or lose the arena. If not set, their entry location should be * used instead. */ - private @Nullable Location exitLocation; + @Nullable + private Location exitLocation; /** * The velocity in the y-direction to apply to all players in this arena. @@ -73,27 +77,34 @@ public class DropperArena implements Arena { /** * Types of damage that won't be blocked in this arena */ + @NotNull private Set allowedDamageCauses; /** * Types of damage that will trigger a loss in this arena */ + @NotNull private Set lossTriggerDamageCauses; /** * The material of the block players have to hit to win this dropper arena */ - private @NotNull Material winBlockType; + @NotNull + private Material winBlockType; /** * The arena data for this arena */ + @NotNull private final DropperArenaData dropperArenaData; + @NotNull private final DropperArenaHandler dropperArenaHandler; + @NotNull private Map> rewards = new HashMap<>(); + @NotNull private static final DropperConfiguration dropperConfiguration = MiniGames.getInstance().getDropperConfiguration(); /** @@ -168,27 +179,32 @@ public class DropperArena implements Arena { } @Override - public @NotNull DropperArenaData getData() { + @NotNull + public DropperArenaData getData() { return this.dropperArenaData; } @Override - public @NotNull UUID getArenaId() { + @NotNull + public UUID getArenaId() { return this.arenaId; } @Override - public @NotNull String getArenaName() { + @NotNull + public String getArenaName() { return this.arenaName; } @Override - public @NotNull Location getSpawnLocation() { + @NotNull + public Location getSpawnLocation() { return this.spawnLocation.clone(); } @Override - public @Nullable Location getExitLocation() { + @Nullable + public Location getExitLocation() { return this.exitLocation != null ? this.exitLocation.clone() : null; } @@ -206,7 +222,8 @@ public class DropperArena implements Arena { } @Override - public @NotNull Set getRewards(RewardCondition rewardCondition) { + @NotNull + public Set getRewards(@NotNull RewardCondition rewardCondition) { if (this.rewards.containsKey(rewardCondition) && this.rewards.get(rewardCondition) != null) { return this.rewards.get(rewardCondition); } else { @@ -231,12 +248,14 @@ public class DropperArena implements Arena { } @Override - public @NotNull Set getAllowedDamageCauses() { + @NotNull + public Set getAllowedDamageCauses() { return this.allowedDamageCauses; } @Override - public @NotNull Set getLossTriggerDamageCauses() { + @NotNull + public Set getLossTriggerDamageCauses() { return this.lossTriggerDamageCauses; } @@ -414,11 +433,8 @@ public class DropperArena implements Arena { } @Override - public boolean equals(Object other) { - if (!(other instanceof DropperArena otherArena)) { - return false; - } - return this.getArenaNameSanitized().equals(otherArena.getArenaNameSanitized()); + public boolean equals(@Nullable Object other) { + return other instanceof DropperArena otherArena && this.getArenaNameSanitized().equals(otherArena.getArenaNameSanitized()); } } diff --git a/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaData.java b/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaData.java index c6aa6cb..3051e95 100644 --- a/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaData.java +++ b/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaData.java @@ -44,7 +44,8 @@ public class DropperArenaData extends ArenaData { * @return

The deserialized dropper arena data

*/ @SuppressWarnings({"unused", "unchecked"}) - public static @NotNull DropperArenaData deserialize(@NotNull Map data) { + @NotNull + public static DropperArenaData deserialize(@NotNull Map data) { SerializableUUID serializableUUID = (SerializableUUID) data.get("arenaId"); Map recordsRegistry = (Map) data.get("recordsRegistry"); diff --git a/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaEditableProperty.java b/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaEditableProperty.java index 7dee509..65ff9c0 100644 --- a/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaEditableProperty.java +++ b/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaEditableProperty.java @@ -77,8 +77,9 @@ public enum DropperArenaEditableProperty { * * @param argumentString

The argument string used to specify this property

*/ - DropperArenaEditableProperty(@NotNull String argumentString, Function currentValueProvider, - EditablePropertyType propertyType) { + DropperArenaEditableProperty(@NotNull String argumentString, + @NotNull Function currentValueProvider, + @NotNull EditablePropertyType propertyType) { this.argumentString = argumentString; this.currentValueProvider = currentValueProvider; this.propertyType = propertyType; @@ -89,6 +90,7 @@ public enum DropperArenaEditableProperty { * * @return

The type of this property

*/ + @NotNull public EditablePropertyType getPropertyType() { return this.propertyType; } @@ -99,7 +101,8 @@ public enum DropperArenaEditableProperty { * @param arena

The arena to check the value for

* @return

The current value as a string

*/ - public String getCurrentValueAsString(DropperArena arena) { + @NotNull + public String getCurrentValueAsString(@NotNull DropperArena arena) { return this.currentValueProvider.apply(arena); } @@ -108,7 +111,8 @@ public enum DropperArenaEditableProperty { * * @return

The argument string

*/ - public @NotNull String getArgumentString() { + @NotNull + public String getArgumentString() { return this.argumentString; } @@ -118,7 +122,8 @@ public enum DropperArenaEditableProperty { * @param argumentString

The argument string used to specify an editable property

* @return

The corresponding editable property, or null if not found

*/ - public static @Nullable DropperArenaEditableProperty getFromArgumentString(String argumentString) { + @Nullable + public static DropperArenaEditableProperty getFromArgumentString(@NotNull String argumentString) { for (DropperArenaEditableProperty property : DropperArenaEditableProperty.values()) { if (property.argumentString.equalsIgnoreCase(argumentString)) { return property; diff --git a/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaGameMode.java b/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaGameMode.java index 1a60463..cdef49e 100644 --- a/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaGameMode.java +++ b/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaGameMode.java @@ -34,7 +34,8 @@ public enum DropperArenaGameMode implements ConfigurationSerializable, ArenaGame * @param gameMode

The game-mode string to match

* @return

The specified arena game-mode

*/ - public static @NotNull DropperArenaGameMode matchGameMode(@NotNull String gameMode) { + @NotNull + public static DropperArenaGameMode matchGameMode(@NotNull String gameMode) { String sanitized = gameMode.trim().toLowerCase(); if (sanitized.matches("(invert(ed)?|inverse)")) { return DropperArenaGameMode.INVERTED; @@ -60,12 +61,14 @@ public enum DropperArenaGameMode implements ConfigurationSerializable, ArenaGame * @return

The deserialized arena game-mode

*/ @SuppressWarnings("unused") - public static DropperArenaGameMode deserialize(Map data) { + @NotNull + public static DropperArenaGameMode deserialize(@NotNull Map data) { return DropperArenaGameMode.valueOf((String) data.get("name")); } @Override - public @NotNull DropperArenaGameMode[] getValues() { + @NotNull + public DropperArenaGameMode[] getValues() { return DropperArenaGameMode.values(); } diff --git a/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaGroup.java b/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaGroup.java index 4ed2236..817b03d 100644 --- a/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaGroup.java +++ b/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaGroup.java @@ -43,7 +43,8 @@ public class DropperArenaGroup extends ArenaGroupThe deserialized arena group

*/ @SuppressWarnings({"unused", "unchecked"}) - public static @NotNull DropperArenaGroup deserialize(@NotNull Map data) { + @NotNull + public static DropperArenaGroup deserialize(@NotNull Map data) { UUID id = ((SerializableUUID) data.get("groupId")).getRawValue(); String name = (String) data.get("groupName"); List serializableArenas = (List) data.get("arenas"); diff --git a/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaHandler.java b/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaHandler.java index 1bb3f5b..9e98984 100644 --- a/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaHandler.java +++ b/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaHandler.java @@ -5,6 +5,7 @@ import net.knarcraft.minigames.arena.ArenaHandler; import net.knarcraft.minigames.arena.ArenaPlayerRegistry; import net.knarcraft.minigames.config.MiniGameMessage; import net.knarcraft.minigames.util.DropperArenaStorageHelper; +import org.jetbrains.annotations.NotNull; import java.io.IOException; import java.util.HashMap; @@ -24,7 +25,7 @@ public class DropperArenaHandler extends ArenaHandlerThe registry keeping track of player sessions

*/ - public DropperArenaHandler(ArenaPlayerRegistry playerRegistry) { + public DropperArenaHandler(@NotNull ArenaPlayerRegistry playerRegistry) { super(playerRegistry); } diff --git a/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaPlayerRegistry.java b/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaPlayerRegistry.java index 8e82940..0ed7660 100644 --- a/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaPlayerRegistry.java +++ b/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaPlayerRegistry.java @@ -1,6 +1,7 @@ package net.knarcraft.minigames.arena.dropper; import net.knarcraft.minigames.arena.AbstractArenaPlayerRegistry; +import org.jetbrains.annotations.NotNull; /** * A registry to keep track of which players are playing in which arenas @@ -8,6 +9,7 @@ import net.knarcraft.minigames.arena.AbstractArenaPlayerRegistry; public class DropperArenaPlayerRegistry extends AbstractArenaPlayerRegistry { @Override + @NotNull protected String getEntryStateStorageKey() { return "dropper"; } diff --git a/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaRecordsRegistry.java b/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaRecordsRegistry.java index b23266b..8324afd 100644 --- a/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaRecordsRegistry.java +++ b/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaRecordsRegistry.java @@ -50,7 +50,8 @@ public class DropperArenaRecordsRegistry extends ArenaRecordsRegistry { * @return

The deserialized records registry

*/ @SuppressWarnings({"unused", "unchecked"}) - public static DropperArenaRecordsRegistry deserialize(Map data) { + @NotNull + public static DropperArenaRecordsRegistry deserialize(@NotNull Map data) { UUID arenaId = ((SerializableUUID) data.get("arenaId")).getRawValue(); Set leastDeaths = (Set) data.getOrDefault("leastDeaths", new HashMap<>()); diff --git a/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaSession.java b/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaSession.java index 0bc0588..0e38901 100644 --- a/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaSession.java +++ b/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaSession.java @@ -23,9 +23,12 @@ import java.util.logging.Level; */ public class DropperArenaSession extends AbstractArenaSession { - private final @NotNull DropperArena arena; - private final @NotNull Player player; - private final @NotNull DropperArenaGameMode gameMode; + @NotNull + private final DropperArena arena; + @NotNull + private final Player player; + @NotNull + private final DropperArenaGameMode gameMode; private boolean startedMoving = false; /** @@ -67,7 +70,8 @@ public class DropperArenaSession extends AbstractArenaSession { * * @return

This session's player

*/ - public @NotNull Player getPlayer() { + @NotNull + public Player getPlayer() { return this.player; } @@ -76,12 +80,14 @@ public class DropperArenaSession extends AbstractArenaSession { * * @return

The game-mode for this session

*/ - public @NotNull DropperArenaGameMode getGameMode() { + @NotNull + public DropperArenaGameMode getGameMode() { return this.gameMode; } @Override - public @NotNull PlayerEntryState getEntryState() { + @NotNull + public PlayerEntryState getEntryState() { return this.entryState; } @@ -120,12 +126,14 @@ public class DropperArenaSession extends AbstractArenaSession { } @Override - public @NotNull DropperArena getArena() { + @NotNull + public DropperArena getArena() { return this.arena; } @Override - public @NotNull ArenaGUI getGUI() { + @NotNull + public ArenaGUI getGUI() { if (GeyserHelper.isGeyserPlayer(this.player)) { return new DropperGUIBedrock(this.player); } else { @@ -151,6 +159,7 @@ public class DropperArenaSession extends AbstractArenaSession { } @Override + @NotNull protected String getGameModeString() { return switch (this.gameMode) { case DEFAULT -> "default"; diff --git a/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaStorageKey.java b/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaStorageKey.java index 033edd7..d8065e8 100644 --- a/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaStorageKey.java +++ b/src/main/java/net/knarcraft/minigames/arena/dropper/DropperArenaStorageKey.java @@ -69,7 +69,8 @@ public enum DropperArenaStorageKey implements StorageKey { LOSS_TRIGGER_DAMAGE_CAUSES("lossTriggerDamageCauses"), ; - private final @NotNull String key; + @NotNull + private final String key; /** * Instantiates a new arena storage key @@ -81,7 +82,8 @@ public enum DropperArenaStorageKey implements StorageKey { } @Override - public @NotNull String getKey() { + @NotNull + public String getKey() { return this.key; } diff --git a/src/main/java/net/knarcraft/minigames/arena/dropper/DropperPlayerEntryState.java b/src/main/java/net/knarcraft/minigames/arena/dropper/DropperPlayerEntryState.java index e02e0c7..ee4284f 100644 --- a/src/main/java/net/knarcraft/minigames/arena/dropper/DropperPlayerEntryState.java +++ b/src/main/java/net/knarcraft/minigames/arena/dropper/DropperPlayerEntryState.java @@ -20,6 +20,7 @@ public class DropperPlayerEntryState extends AbstractPlayerEntryState { private final float originalFlySpeed; private final float horizontalVelocity; + @NotNull private final DropperArenaGameMode arenaGameMode; /** @@ -118,7 +119,8 @@ public class DropperPlayerEntryState extends AbstractPlayerEntryState { * @return

The data to deserialize

*/ @SuppressWarnings({"unused", "unchecked"}) - public static DropperPlayerEntryState deserialize(Map data) { + @NotNull + public static DropperPlayerEntryState deserialize(@NotNull Map data) { UUID playerId = ((SerializableUUID) data.get("playerId")).getRawValue(); Location entryLocation = (Location) data.get("entryLocation"); boolean originalIsFlying = getBoolean(data, "originalIsFlying"); diff --git a/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArena.java b/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArena.java index a7bab58..ea5e776 100644 --- a/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArena.java +++ b/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArena.java @@ -38,53 +38,63 @@ public class ParkourArena implements Arena { /** * An unique and persistent identifier for this arena */ - private final @NotNull UUID arenaId; + @NotNull + private final UUID arenaId; /** * A name used when listing and storing this arena. */ - private @NotNull String arenaName; + @NotNull + private String arenaName; /** * The location players are teleported to when joining this arena. */ - private @NotNull Location spawnLocation; + @NotNull + private Location spawnLocation; /** * The location players will be sent to when they win or lose the arena. If not set, their entry location should be * used instead. */ - private @Nullable Location exitLocation; + @Nullable + private Location exitLocation; /** * The material of the block players have to hit to win this parkour arena */ - private @NotNull Material winBlockType; + @NotNull + private Material winBlockType; /** * The location the player has to reach to win. If not set, winBlockType is used instead */ - private @Nullable Location winLocation; + @Nullable + private Location winLocation; /** * The names of the block types constituting this arena's kill plane */ - private @Nullable Set killPlaneBlockNames; + @Nullable + private Set killPlaneBlockNames; /** * The block types constituting this arena's kill plane */ - private @Nullable Set killPlaneBlocks; + @Nullable + private Set killPlaneBlocks; /** * The names of the block types serving as obstacles for this arena */ - private @Nullable Set obstacleBlockNames; + @Nullable + private Set obstacleBlockNames; /** * The block types serving as obstacles for this arena */ - private @Nullable Set obstacleBlocks; + @Nullable + private Set obstacleBlocks; /** * The maximum amount of players able to join this arena at any time @@ -94,25 +104,31 @@ public class ParkourArena implements Arena { /** * Types of damage that won't be blocked in this arena */ + @NotNull private Set allowedDamageCauses; /** * Types of damage that will trigger a loss in this arena */ + @NotNull private Set lossTriggerDamageCauses; /** * The checkpoints for this arena. Entering a checkpoint overrides the player's spawn location. */ - private final @NotNull List checkpoints; + @NotNull + private final List checkpoints; /** * The arena data for this arena */ - private final @NotNull ParkourArenaData parkourArenaData; + @NotNull + private final ParkourArenaData parkourArenaData; - private final @NotNull ParkourArenaHandler parkourArenaHandler; + @NotNull + private final ParkourArenaHandler parkourArenaHandler; + @NotNull private Map> rewards = new HashMap<>(); /** @@ -198,27 +214,32 @@ public class ParkourArena implements Arena { } @Override - public @NotNull ParkourArenaData getData() { + @NotNull + public ParkourArenaData getData() { return this.parkourArenaData; } @Override - public @NotNull UUID getArenaId() { + @NotNull + public UUID getArenaId() { return this.arenaId; } @Override - public @NotNull String getArenaName() { + @NotNull + public String getArenaName() { return this.arenaName; } @Override - public @NotNull Location getSpawnLocation() { + @NotNull + public Location getSpawnLocation() { return this.spawnLocation; } @Override - public @Nullable Location getExitLocation() { + @Nullable + public Location getExitLocation() { return this.exitLocation; } @@ -236,7 +257,8 @@ public class ParkourArena implements Arena { } @Override - public @NotNull Set getRewards(RewardCondition rewardCondition) { + @NotNull + public Set getRewards(@NotNull RewardCondition rewardCondition) { if (this.rewards.containsKey(rewardCondition)) { return this.rewards.get(rewardCondition); } else { @@ -261,12 +283,14 @@ public class ParkourArena implements Arena { } @Override - public @NotNull Set getAllowedDamageCauses() { + @NotNull + public Set getAllowedDamageCauses() { return this.allowedDamageCauses; } @Override - public @NotNull Set getLossTriggerDamageCauses() { + @NotNull + public Set getLossTriggerDamageCauses() { return this.lossTriggerDamageCauses; } @@ -297,7 +321,8 @@ public class ParkourArena implements Arena { * * @return

The win trigger's location

*/ - public @Nullable Location getWinLocation() { + @Nullable + public Location getWinLocation() { return this.winLocation != null ? this.winLocation.clone() : null; } @@ -306,7 +331,8 @@ public class ParkourArena implements Arena { * * @return

The types of blocks that cause a loss

*/ - public @NotNull Set getKillPlaneBlocks() { + @NotNull + public Set getKillPlaneBlocks() { if (this.killPlaneBlocks != null) { return new HashSet<>(this.killPlaneBlocks); } else { @@ -319,7 +345,8 @@ public class ParkourArena implements Arena { * * @return

The names of the types of blocks that cause a loss

*/ - public @Nullable Set getKillPlaneBlockNames() { + @Nullable + public Set getKillPlaneBlockNames() { return this.killPlaneBlockNames; } @@ -328,7 +355,8 @@ public class ParkourArena implements Arena { * * @return

The types of blocks used as obstacles

*/ - public @NotNull Set getObstacleBlocks() { + @NotNull + public Set getObstacleBlocks() { if (this.obstacleBlocks != null) { return new HashSet<>(this.obstacleBlocks); } else { @@ -341,7 +369,8 @@ public class ParkourArena implements Arena { * * @return

The names of the blocks used as this arena's obstacle blocks

*/ - public @Nullable Set getObstacleBlockNames() { + @Nullable + public Set getObstacleBlockNames() { return this.obstacleBlockNames; } @@ -350,6 +379,7 @@ public class ParkourArena implements Arena { * * @return

All checkpoint locations for this arena

*/ + @NotNull public List getCheckpoints() { List copy = new ArrayList<>(this.checkpoints.size()); for (Location location : this.checkpoints) { @@ -569,11 +599,8 @@ public class ParkourArena implements Arena { } @Override - public boolean equals(Object other) { - if (!(other instanceof ParkourArena otherArena)) { - return false; - } - return this.getArenaNameSanitized().equals(otherArena.getArenaNameSanitized()); + public boolean equals(@Nullable Object other) { + return other instanceof ParkourArena otherArena && this.getArenaNameSanitized().equals(otherArena.getArenaNameSanitized()); } } diff --git a/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaData.java b/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaData.java index 3b5db09..aa5c9c9 100644 --- a/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaData.java +++ b/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaData.java @@ -44,7 +44,8 @@ public class ParkourArenaData extends ArenaData { * @return

The deserialized parkour arena data

*/ @SuppressWarnings({"unused", "unchecked"}) - public static @NotNull ParkourArenaData deserialize(@NotNull Map data) { + @NotNull + public static ParkourArenaData deserialize(@NotNull Map data) { SerializableUUID serializableUUID = (SerializableUUID) data.get("arenaId"); Map recordsRegistry = (Map) data.get("recordsRegistry"); diff --git a/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaEditableProperty.java b/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaEditableProperty.java index 7aad2de..fe260e7 100644 --- a/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaEditableProperty.java +++ b/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaEditableProperty.java @@ -91,8 +91,11 @@ public enum ParkourArenaEditableProperty { EditablePropertyType.DAMAGE_CAUSE_LIST), ; - private final @NotNull String argumentString; + @NotNull + private final String argumentString; + @NotNull private final Function currentValueProvider; + @NotNull private final EditablePropertyType propertyType; /** @@ -100,8 +103,8 @@ public enum ParkourArenaEditableProperty { * * @param argumentString

The argument string used to specify this property

*/ - ParkourArenaEditableProperty(@NotNull String argumentString, Function currentValueProvider, - EditablePropertyType propertyType) { + ParkourArenaEditableProperty(@NotNull String argumentString, @NotNull Function currentValueProvider, + @NotNull EditablePropertyType propertyType) { this.argumentString = argumentString; this.currentValueProvider = currentValueProvider; this.propertyType = propertyType; @@ -112,6 +115,7 @@ public enum ParkourArenaEditableProperty { * * @return

The type of this property

*/ + @NotNull public EditablePropertyType getPropertyType() { return this.propertyType; } @@ -122,7 +126,8 @@ public enum ParkourArenaEditableProperty { * @param arena

The arena to check the value for

* @return

The current value as a string

*/ - public String getCurrentValueAsString(ParkourArena arena) { + @NotNull + public String getCurrentValueAsString(@NotNull ParkourArena arena) { return this.currentValueProvider.apply(arena); } @@ -141,7 +146,8 @@ public enum ParkourArenaEditableProperty { * @param argumentString

The argument string used to specify an editable property

* @return

The corresponding editable property, or null if not found

*/ - public static @Nullable ParkourArenaEditableProperty getFromArgumentString(String argumentString) { + @Nullable + public static ParkourArenaEditableProperty getFromArgumentString(@NotNull String argumentString) { for (ParkourArenaEditableProperty property : ParkourArenaEditableProperty.values()) { if (property.argumentString.equalsIgnoreCase(argumentString)) { return property; diff --git a/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaGameMode.java b/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaGameMode.java index 1f0aceb..cb6cd11 100644 --- a/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaGameMode.java +++ b/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaGameMode.java @@ -29,7 +29,8 @@ public enum ParkourArenaGameMode implements ConfigurationSerializable, ArenaGame * @param gameMode

The game-mode string to match

* @return

The specified arena game-mode

*/ - public static @NotNull ParkourArenaGameMode matchGameMode(@NotNull String gameMode) { + @NotNull + public static ParkourArenaGameMode matchGameMode(@NotNull String gameMode) { try { return ParkourArenaGameMode.valueOf(gameMode.toUpperCase()); } catch (IllegalArgumentException exception) { @@ -52,12 +53,14 @@ public enum ParkourArenaGameMode implements ConfigurationSerializable, ArenaGame * @return

The deserialized arena game-mode

*/ @SuppressWarnings("unused") - public static ParkourArenaGameMode deserialize(Map data) { + @NotNull + public static ParkourArenaGameMode deserialize(@NotNull Map data) { return ParkourArenaGameMode.valueOf((String) data.get("name")); } @Override - public @NotNull ParkourArenaGameMode[] getValues() { + @NotNull + public ParkourArenaGameMode[] getValues() { return ParkourArenaGameMode.values(); } diff --git a/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaGroup.java b/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaGroup.java index e21babd..fe4898a 100644 --- a/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaGroup.java +++ b/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaGroup.java @@ -42,7 +42,8 @@ public class ParkourArenaGroup extends ArenaGroupThe deserialized arena group

*/ @SuppressWarnings({"unused", "unchecked"}) - public static @NotNull ParkourArenaGroup deserialize(@NotNull Map data) { + @NotNull + public static ParkourArenaGroup deserialize(@NotNull Map data) { UUID id = ((SerializableUUID) data.get("groupId")).getRawValue(); String name = (String) data.get("groupName"); List serializableArenas = (List) data.get("arenas"); diff --git a/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaHandler.java b/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaHandler.java index ba769da..8396a2a 100644 --- a/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaHandler.java +++ b/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaHandler.java @@ -5,6 +5,7 @@ import net.knarcraft.minigames.arena.ArenaHandler; import net.knarcraft.minigames.arena.ArenaPlayerRegistry; import net.knarcraft.minigames.config.MiniGameMessage; import net.knarcraft.minigames.util.ParkourArenaStorageHelper; +import org.jetbrains.annotations.NotNull; import java.io.IOException; import java.util.HashMap; @@ -24,7 +25,7 @@ public class ParkourArenaHandler extends ArenaHandlerThe registry keeping track of player sessions

*/ - public ParkourArenaHandler(ArenaPlayerRegistry playerRegistry) { + public ParkourArenaHandler(@NotNull ArenaPlayerRegistry playerRegistry) { super(playerRegistry); } diff --git a/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaPlayerRegistry.java b/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaPlayerRegistry.java index f863e18..3819e66 100644 --- a/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaPlayerRegistry.java +++ b/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaPlayerRegistry.java @@ -1,6 +1,7 @@ package net.knarcraft.minigames.arena.parkour; import net.knarcraft.minigames.arena.AbstractArenaPlayerRegistry; +import org.jetbrains.annotations.NotNull; /** * A registry to keep track of which players are playing in which arenas @@ -8,6 +9,7 @@ import net.knarcraft.minigames.arena.AbstractArenaPlayerRegistry; public class ParkourArenaPlayerRegistry extends AbstractArenaPlayerRegistry { @Override + @NotNull protected String getEntryStateStorageKey() { return "parkour"; } diff --git a/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaRecordsRegistry.java b/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaRecordsRegistry.java index c6027c5..c95f2f9 100644 --- a/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaRecordsRegistry.java +++ b/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaRecordsRegistry.java @@ -51,7 +51,8 @@ public class ParkourArenaRecordsRegistry extends ArenaRecordsRegistry { * @return

The deserialized records registry

*/ @SuppressWarnings({"unused", "unchecked"}) - public static ParkourArenaRecordsRegistry deserialize(Map data) { + @NotNull + public static ParkourArenaRecordsRegistry deserialize(@NotNull Map data) { UUID arenaId = ((SerializableUUID) data.get("arenaId")).getRawValue(); Set leastDeaths = (Set) data.getOrDefault("leastDeaths", new HashMap<>()); diff --git a/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaSession.java b/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaSession.java index 615ec7d..5da7a40 100644 --- a/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaSession.java +++ b/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaSession.java @@ -33,11 +33,16 @@ import java.util.logging.Level; */ public class ParkourArenaSession extends AbstractArenaSession { - private static final @NotNull Map> changedLevers = new HashMap<>(); - private final @NotNull ParkourArena arena; - private final @NotNull Player player; - private final @NotNull ParkourArenaGameMode gameMode; - private @Nullable Location reachedCheckpoint = null; + @NotNull + private static final Map> changedLevers = new HashMap<>(); + @NotNull + private final ParkourArena arena; + @NotNull + private final Player player; + @NotNull + private final ParkourArenaGameMode gameMode; + @Nullable + private Location reachedCheckpoint = null; /** * Instantiates a new parkour arena session @@ -62,7 +67,8 @@ public class ParkourArenaSession extends AbstractArenaSession { * * @return

The game-mode for this session

*/ - public @NotNull ParkourArenaGameMode getGameMode() { + @NotNull + public ParkourArenaGameMode getGameMode() { return this.gameMode; } @@ -90,12 +96,14 @@ public class ParkourArenaSession extends AbstractArenaSession { * * @return

The registered checkpoint, or null if not set

*/ - public @Nullable Location getRegisteredCheckpoint() { + @Nullable + public Location getRegisteredCheckpoint() { return this.reachedCheckpoint; } @Override - public @NotNull PlayerEntryState getEntryState() { + @NotNull + public PlayerEntryState getEntryState() { return this.entryState; } @@ -139,12 +147,14 @@ public class ParkourArenaSession extends AbstractArenaSession { } @Override - public @NotNull ParkourArena getArena() { + @NotNull + public ParkourArena getArena() { return this.arena; } @Override - public @NotNull ArenaGUI getGUI() { + @NotNull + public ArenaGUI getGUI() { if (GeyserHelper.isGeyserPlayer(this.player)) { return new ParkourGUIBedrock(this.player); } else { @@ -173,6 +183,7 @@ public class ParkourArenaSession extends AbstractArenaSession { } @Override + @NotNull protected String getGameModeString() { return switch (this.gameMode) { case DEFAULT -> "default"; diff --git a/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaStorageKey.java b/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaStorageKey.java index d744ed9..66fa8dd 100644 --- a/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaStorageKey.java +++ b/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourArenaStorageKey.java @@ -91,7 +91,8 @@ public enum ParkourArenaStorageKey implements StorageKey { } @Override - public @NotNull String getKey() { + @NotNull + public String getKey() { return this.key; } diff --git a/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourPlayerEntryState.java b/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourPlayerEntryState.java index 61d54e0..271f80a 100644 --- a/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourPlayerEntryState.java +++ b/src/main/java/net/knarcraft/minigames/arena/parkour/ParkourPlayerEntryState.java @@ -42,10 +42,10 @@ public class ParkourPlayerEntryState extends AbstractPlayerEntryState { * @param originalHealth

The health of the player when joining the arena

* @param originalSaturation

The saturation of the player when joining the arena

*/ - public ParkourPlayerEntryState(@NotNull UUID playerId, Location entryLocation, - boolean originalIsFlying, GameMode originalGameMode, boolean originalAllowFlight, + public ParkourPlayerEntryState(@NotNull UUID playerId, @NotNull Location entryLocation, + boolean originalIsFlying, @NotNull GameMode originalGameMode, boolean originalAllowFlight, boolean originalInvulnerable, boolean originalIsSwimming, - boolean originalCollideAble, Collection originalPotionEffects, + boolean originalCollideAble, @NotNull Collection originalPotionEffects, double originalHealth, float originalSaturation) { super(playerId, entryLocation, originalIsFlying, originalGameMode, originalAllowFlight, originalInvulnerable, originalIsSwimming, originalCollideAble, originalPotionEffects, originalHealth, @@ -70,7 +70,8 @@ public class ParkourPlayerEntryState extends AbstractPlayerEntryState { * @return

The data to deserialize

*/ @SuppressWarnings({"unused", "unchecked"}) - public static ParkourPlayerEntryState deserialize(Map data) { + @NotNull + public static ParkourPlayerEntryState deserialize(@NotNull Map data) { UUID playerId = ((SerializableUUID) data.get("playerId")).getRawValue(); Location entryLocation = (Location) data.get("entryLocation"); boolean originalIsFlying = getBoolean(data, "originalIsFlying"); diff --git a/src/main/java/net/knarcraft/minigames/arena/record/ArenaRecord.java b/src/main/java/net/knarcraft/minigames/arena/record/ArenaRecord.java index 942c68f..935f8d5 100644 --- a/src/main/java/net/knarcraft/minigames/arena/record/ArenaRecord.java +++ b/src/main/java/net/knarcraft/minigames/arena/record/ArenaRecord.java @@ -3,6 +3,7 @@ package net.knarcraft.minigames.arena.record; import net.knarcraft.minigames.container.SerializableUUID; import org.bukkit.configuration.serialization.ConfigurationSerializable; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.HashMap; import java.util.Map; @@ -12,16 +13,16 @@ import java.util.UUID; /** * A record stored for an arena */ -public abstract class ArenaRecord> implements Comparable>, ConfigurationSerializable { +public abstract class ArenaRecord> implements Comparable>, ConfigurationSerializable { private final UUID userId; - private final K record; + private final RecordType record; /** * @param userId

The id of the player that achieved the record

* @param record

The record achieved

*/ - public ArenaRecord(UUID userId, K record) { + public ArenaRecord(@NotNull UUID userId, @NotNull RecordType record) { this.userId = userId; this.record = record; } @@ -31,6 +32,7 @@ public abstract class ArenaRecord> implements Comparable * * @return

The record's achiever

*/ + @NotNull public UUID getUserId() { return userId; } @@ -40,7 +42,8 @@ public abstract class ArenaRecord> implements Comparable * * @return

The record value

*/ - public K getRecord() { + @NotNull + public RecordType getRecord() { return record; } @@ -52,12 +55,12 @@ public abstract class ArenaRecord> implements Comparable public abstract String getAsString(); @Override - public boolean equals(Object other) { + public boolean equals(@Nullable Object other) { return other instanceof ArenaRecord && userId.equals(((ArenaRecord) other).userId); } @Override - public int compareTo(@NotNull ArenaRecord other) { + public int compareTo(@NotNull ArenaRecord other) { return record.compareTo(other.record); } diff --git a/src/main/java/net/knarcraft/minigames/arena/record/IntegerRecord.java b/src/main/java/net/knarcraft/minigames/arena/record/IntegerRecord.java index ba7bb6e..76a422d 100644 --- a/src/main/java/net/knarcraft/minigames/arena/record/IntegerRecord.java +++ b/src/main/java/net/knarcraft/minigames/arena/record/IntegerRecord.java @@ -2,6 +2,7 @@ package net.knarcraft.minigames.arena.record; import net.knarcraft.minigames.container.SerializableUUID; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Map; import java.util.UUID; @@ -12,25 +13,29 @@ import java.util.UUID; public class IntegerRecord extends SummableArenaRecord { /** + * Instantiates a new integer record + * * @param userId

The id of the player that achieved the record

* @param record

The record achieved

*/ - public IntegerRecord(UUID userId, Integer record) { + public IntegerRecord(@NotNull UUID userId, @NotNull Integer record) { super(userId, record); } @Override + @NotNull public String getAsString() { return String.valueOf(this.getRecord()); } @Override - public SummableArenaRecord sum(Integer value) { + @NotNull + public SummableArenaRecord sum(@NotNull Integer value) { return new IntegerRecord(this.getUserId(), this.getRecord() + value); } @Override - public boolean equals(Object other) { + public boolean equals(@Nullable Object other) { return other instanceof IntegerRecord && this.getUserId().equals(((IntegerRecord) other).getUserId()); } @@ -41,6 +46,7 @@ public class IntegerRecord extends SummableArenaRecord { * @return

The deserialized data

*/ @SuppressWarnings("unused") + @NotNull public static IntegerRecord deserialize(@NotNull Map data) { return new IntegerRecord(((SerializableUUID) data.get("userId")).getRawValue(), (Integer) data.get("record")); } diff --git a/src/main/java/net/knarcraft/minigames/arena/record/LongRecord.java b/src/main/java/net/knarcraft/minigames/arena/record/LongRecord.java index 547a2fd..44edd29 100644 --- a/src/main/java/net/knarcraft/minigames/arena/record/LongRecord.java +++ b/src/main/java/net/knarcraft/minigames/arena/record/LongRecord.java @@ -2,6 +2,7 @@ package net.knarcraft.minigames.arena.record; import net.knarcraft.minigames.container.SerializableUUID; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Map; import java.util.UUID; @@ -12,24 +13,28 @@ import java.util.UUID; public class LongRecord extends SummableArenaRecord { /** + * Instantiates a new long record + * * @param userId

The id of the player that achieved the record

* @param record

The record achieved

*/ - public LongRecord(UUID userId, Long record) { + public LongRecord(@NotNull UUID userId, @NotNull Long record) { super(userId, record); } @Override - public boolean equals(Object other) { + public boolean equals(@Nullable Object other) { return other instanceof LongRecord && this.getUserId().equals(((LongRecord) other).getUserId()); } @Override - public SummableArenaRecord sum(Long value) { + @NotNull + public SummableArenaRecord sum(@NotNull Long value) { return new LongRecord(this.getUserId(), this.getRecord() + value); } @Override + @NotNull public String getAsString() { double seconds = getRecord() / 1000.0; double minutes = 0; @@ -52,6 +57,7 @@ public class LongRecord extends SummableArenaRecord { * @return

The deserialized data

*/ @SuppressWarnings("unused") + @NotNull public static LongRecord deserialize(@NotNull Map data) { return new LongRecord(((SerializableUUID) data.get("userId")).getRawValue(), ((Number) data.get("record")).longValue()); diff --git a/src/main/java/net/knarcraft/minigames/arena/record/SummableArenaRecord.java b/src/main/java/net/knarcraft/minigames/arena/record/SummableArenaRecord.java index 9c0ead6..7bebb17 100644 --- a/src/main/java/net/knarcraft/minigames/arena/record/SummableArenaRecord.java +++ b/src/main/java/net/knarcraft/minigames/arena/record/SummableArenaRecord.java @@ -1,19 +1,21 @@ package net.knarcraft.minigames.arena.record; +import org.jetbrains.annotations.NotNull; + import java.util.UUID; /** * A type of arena record which can be summed together * - * @param

The type of the stored value

+ * @param

The type of the stored value

*/ -public abstract class SummableArenaRecord> extends ArenaRecord { +public abstract class SummableArenaRecord> extends ArenaRecord { /** * @param userId

The id of the player that achieved the record

* @param record

The record achieved

*/ - public SummableArenaRecord(UUID userId, K record) { + public SummableArenaRecord(@NotNull UUID userId, @NotNull RecordType record) { super(userId, record); } @@ -23,6 +25,7 @@ public abstract class SummableArenaRecord> extends Arena * @param value

The value to add to the existing value

* @return

A record with the sum of this record and the given value

*/ - public abstract SummableArenaRecord sum(K value); + @NotNull + public abstract SummableArenaRecord sum(@NotNull RecordType value); } diff --git a/src/main/java/net/knarcraft/minigames/arena/reward/CommandReward.java b/src/main/java/net/knarcraft/minigames/arena/reward/CommandReward.java index bfa3d70..0538753 100644 --- a/src/main/java/net/knarcraft/minigames/arena/reward/CommandReward.java +++ b/src/main/java/net/knarcraft/minigames/arena/reward/CommandReward.java @@ -31,7 +31,8 @@ public class CommandReward implements Reward { } @Override - public @NotNull FormatBuilder getGrantMessage() { + @NotNull + public FormatBuilder getGrantMessage() { return new FormatBuilder(MiniGameMessage.SUCCESS_COMMAND_REWARDED).replace("{command}", command); } @@ -50,6 +51,7 @@ public class CommandReward implements Reward { * @param input

The input containing a name placeholder

* @return

The input with the placeholder replaced

*/ + @NotNull private String replaceNamePlaceholder(@NotNull Player player, @NotNull String input) { return input.replaceAll("[<%(\\[{]player[_\\-]?(name)?[>%)\\]}]", player.getName()); } @@ -61,7 +63,8 @@ public class CommandReward implements Reward { * @return

The deserialized data

*/ @SuppressWarnings("unused") - public static CommandReward deserialize(Map data) { + @NotNull + public static CommandReward deserialize(@NotNull Map data) { return new CommandReward((String) data.get("command")); } diff --git a/src/main/java/net/knarcraft/minigames/arena/reward/EconomyReward.java b/src/main/java/net/knarcraft/minigames/arena/reward/EconomyReward.java index 193d0dc..e001764 100644 --- a/src/main/java/net/knarcraft/minigames/arena/reward/EconomyReward.java +++ b/src/main/java/net/knarcraft/minigames/arena/reward/EconomyReward.java @@ -39,7 +39,8 @@ public class EconomyReward implements Reward { } @Override - public @NotNull FormatBuilder getGrantMessage() { + @NotNull + public FormatBuilder getGrantMessage() { return new FormatBuilder(MiniGameMessage.SUCCESS_ECONOMY_REWARDED).replace("{currency}", EconomyManager.format(amount)); } @@ -59,7 +60,8 @@ public class EconomyReward implements Reward { * @return

The deserialized data

*/ @SuppressWarnings("unused") - public static EconomyReward deserialize(Map data) { + @NotNull + public static EconomyReward deserialize(@NotNull Map data) { return new EconomyReward((Double) data.get("amount")); } diff --git a/src/main/java/net/knarcraft/minigames/arena/reward/ItemReward.java b/src/main/java/net/knarcraft/minigames/arena/reward/ItemReward.java index 3ea5f8a..bfc6cf7 100644 --- a/src/main/java/net/knarcraft/minigames/arena/reward/ItemReward.java +++ b/src/main/java/net/knarcraft/minigames/arena/reward/ItemReward.java @@ -43,7 +43,8 @@ public class ItemReward implements Reward { } @Override - public @NotNull FormatBuilder getGrantMessage() { + @NotNull + public FormatBuilder getGrantMessage() { NamespacedKey key = item.getType().getKeyOrNull(); String name = key == null ? "Unnamed item" : key.getKey().replace("_", " "); return new FormatBuilder(MiniGameMessage.SUCCESS_ITEM_REWARDED). @@ -65,7 +66,8 @@ public class ItemReward implements Reward { * @return

The deserialized data

*/ @SuppressWarnings("unused") - public static ItemReward deserialize(Map data) { + @NotNull + public static ItemReward deserialize(@NotNull Map data) { return new ItemReward((ItemStack) data.get("item")); } @@ -75,7 +77,7 @@ public class ItemReward implements Reward { * @param inventory

The inventory to check

* @return

True if the inventory can fit the item

*/ - private boolean canFitItem(Inventory inventory) { + private boolean canFitItem(@NotNull Inventory inventory) { // If a slot is available, there is no problem if (inventory.firstEmpty() != -1) { return true; diff --git a/src/main/java/net/knarcraft/minigames/arena/reward/PermissionReward.java b/src/main/java/net/knarcraft/minigames/arena/reward/PermissionReward.java index 095a5ab..51bd5b0 100644 --- a/src/main/java/net/knarcraft/minigames/arena/reward/PermissionReward.java +++ b/src/main/java/net/knarcraft/minigames/arena/reward/PermissionReward.java @@ -48,7 +48,8 @@ public class PermissionReward implements Reward { } @Override - public @NotNull FormatBuilder getGrantMessage() { + @NotNull + public FormatBuilder getGrantMessage() { if (world == null) { return new FormatBuilder(MiniGameMessage.SUCCESS_PERMISSION_REWARDED).replace("{permission}", permission); @@ -76,7 +77,8 @@ public class PermissionReward implements Reward { * @return

The deserialized data

*/ @SuppressWarnings("unused") - public static PermissionReward deserialize(Map data) { + @NotNull + public static PermissionReward deserialize(@NotNull Map data) { World world = (World) data.getOrDefault("world", null); String permission = (String) data.get("permission"); return new PermissionReward(world, permission); diff --git a/src/main/java/net/knarcraft/minigames/arena/reward/RewardCondition.java b/src/main/java/net/knarcraft/minigames/arena/reward/RewardCondition.java index 4c8693e..9916a44 100644 --- a/src/main/java/net/knarcraft/minigames/arena/reward/RewardCondition.java +++ b/src/main/java/net/knarcraft/minigames/arena/reward/RewardCondition.java @@ -50,7 +50,8 @@ public enum RewardCondition implements ConfigurationSerializable { * @param condition

The string specifying a reward condition

* @return

The matching reward condition, or null if not found

*/ - public static @Nullable RewardCondition getFromString(@NotNull String condition) { + @Nullable + public static RewardCondition getFromString(@NotNull String condition) { for (RewardCondition rewardCondition : RewardCondition.values()) { if (rewardCondition.name().equalsIgnoreCase(condition.replace("-", "_"))) { return rewardCondition; @@ -75,7 +76,8 @@ public enum RewardCondition implements ConfigurationSerializable { * @return

The deserialized reward condition

*/ @SuppressWarnings({"unused"}) - public static @NotNull RewardCondition deserialize(@NotNull Map data) { + @NotNull + public static RewardCondition deserialize(@NotNull Map data) { RewardCondition rewardCondition = getFromString(String.valueOf(data.get("condition"))); return Objects.requireNonNullElse(rewardCondition, RewardCondition.FIRST_WIN); } diff --git a/src/main/java/net/knarcraft/minigames/arena/reward/RewardType.java b/src/main/java/net/knarcraft/minigames/arena/reward/RewardType.java index c3778ca..acdac1d 100644 --- a/src/main/java/net/knarcraft/minigames/arena/reward/RewardType.java +++ b/src/main/java/net/knarcraft/minigames/arena/reward/RewardType.java @@ -1,6 +1,7 @@ package net.knarcraft.minigames.arena.reward; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** * The type of a specific reward @@ -34,6 +35,7 @@ public enum RewardType { * @param condition

The string specifying a reward type

* @return

The matching reward type, or null if not found

*/ + @Nullable public static RewardType getFromString(@NotNull String condition) { for (RewardType rewardType : RewardType.values()) { if (rewardType.name().equalsIgnoreCase(condition.replace("-", "_"))) {