SixTwentyDOCS

Punishment Object

Punishment object and how to use it

This is an archived Mineplex-era document, kept for reference during the transition. It may contain outdated branding and is not part of the core SixTwenty documentation.
View the Java SDK reference

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, otherwise false.

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.