Punishment Object
Punishment object and how to use it
The Punishment interface defines the structure and behavior of a punishment entity. It includes methods to access punishment details, check conditions, and compute properties such as its remaining duration or global applicability.
Default Implementation: PunishmentImpl 🔗
The PunishmentImpl
class provides a concrete implementation of the Punishment interface. It represents a punishment applied to an offline player and includes details about the player, moderator, reason, and scope of the punishment.
Key Features 🔗
- Builder Pattern: Uses Lombok's @Builder annotation for convenient instantiation.
- Immutable Data: Defined with Lombok's @Value for immutabilsity.
- Default Values: Provides default values for fields like startTimestamp, removalInformation, and notes.
Fields 🔗
- playerId (UUID): The UUID of the punished player.
- moderatorId (UUID): The UUID of the moderator who issued the punishment.
- startTimestamp (Instant): The timestamp when the punishment was applied (default: current time).
- applicableProjects (
Set<String>
): The set of projects the punishment applies to. - punishmentReason (PunishmentReason): The reason for the punishment.
- removalInformation (PunishmentRemoval): Information about the removal of the punishment (default: null).
- identifier (UUID): The unique identifier of the punishment (default: null).
- notes (String): Additional notes or comments about the punishment (default: null).
Usage Example: 🔗
final PunishmentImpl punishment = PunishmentImpl.builder()
.playerId(UUID.fromString("123e4567-e89b-12d3-a456-426614174000"))
.moderatorId(UUID.fromString("223e4567-e89b-12d3-a456-426614174000"))
.startTimestamp(Instant.now())
.applicableProjects(Set.of(Objects.requireNonNull(System.getenv("MINEPLEX_PROJECT_ID"))))
.punishmentReason(BuiltInReason.HACKING_ESCALATION)
.notes("https://evidence.com")
.build();
Method Overview 🔗
Identification Methods 🔗
hasIdentifier()
🔗
- Checks if the punishment has a unique identifier.
- Returns:
true
if the identifier exists, otherwisefalse
.
getIdentifier()
🔗
- Retrieves the unique identifier for the punishment.
- Returns:
Optional<UUID>
containing the identifier if available.
Player and Moderator Information 🔗
getPlayerId()
🔗
- Retrieves the UUID of the punished player.
- Returns: UUID of the player.
hasModeratorId()
🔗
- Checks if the punishment has a moderator ID.
- Returns: true if a moderator ID exists, otherwise false.
getModeratorId()
🔗
- Retrieves the UUID of the moderator who issued the punishment.
- Returns:
Optional<UUID>
containing the moderator ID if available.
Timing Information 🔗
getStartTimestamp()
🔗
- Retrieves the timestamp when the punishment was issued or should begin.
- Returns: Instant representing the start time.
getRemainingDuration()
🔗
- Computes the remaining duration of the punishment.
- Returns: Duration of the remaining time.
Important Note:
If a punishment is permanent, you will receive Duration.ZERO
in return from this method
Applicability and Scope 🔗
getApplicableProjects()
🔗
- Retrieves the set of project IDs where the punishment applies.
- Returns:
Set<String>
containing applicable project IDs.
appliesTo(String projectIdentifier)
🔗
Checks if the punishment applies to a specific project.
Parameters:
-
projectIdentifier: The project ID to check.
-
Returns: true if applicable, otherwise false.
isGlobal()
🔗
- Determines if the punishment is global (applicable to all projects).
- Returns: true if global, otherwise false.
Punishment Reason 🔗
getPunishmentReason()
🔗
- Retrieves the reason for the punishment.
- Returns: PunishmentReason containing the reason details.
Notes and Additional Information 🔗
hasNotes()
🔗
- Checks if the punishment has associated notes.
- Returns: true if notes exist, otherwise false.
getNotes()
🔗
- Retrieves notes or comments about the punishment.
- Returns:
Optional<String>
containing the notes if available.
Removal Information 🔗
hasRemovalInformation()
🔗
- Checks if the punishment has been removed.
- Returns: true if removal information exists, otherwise false.
getRemovalInformation()
🔗
- Retrieves removal details if the punishment has been removed.
- Returns:
Optional<PunishmentRemoval>
containing the removal information.
isRemoved()
🔗
- Checks if the punishment has been removed.
- Returns: true if removed, otherwise false.