From e838d3dcc92c6770e71db1f59600bd700441531b Mon Sep 17 00:00:00 2001 From: OhACD Date: Thu, 25 Dec 2025 00:56:16 +0200 Subject: [PATCH 1/4] docs(api): publish generated API Javadoc to gh-pages --- .gh-pages/.nojekyll | 0 .gh-pages/allclasses-index.html | 198 +++ .gh-pages/allpackages-index.html | 70 + .../ohacd/matchbox/api/ApiGameSession.html | 584 ++++++++ .../ApiValidationHelper.ValidationResult.html | 211 +++ .../matchbox/api/ApiValidationHelper.html | 322 +++++ .../com/ohacd/matchbox/api/ChatChannel.html | 257 ++++ .../com/ohacd/matchbox/api/ChatMessage.html | 483 +++++++ .../ChatProcessor.ChatProcessingResult.html | 353 +++++ .../com/ohacd/matchbox/api/ChatProcessor.html | 195 +++ .../com/ohacd/matchbox/api/ChatResult.html | 257 ++++ .../matchbox/api/GameConfig.Builder.html | 339 +++++ .../com/ohacd/matchbox/api/GameConfig.html | 336 +++++ .../com/ohacd/matchbox/api/MatchboxAPI.html | 437 ++++++ .../com/ohacd/matchbox/api/MatchboxEvent.html | 250 ++++ .../matchbox/api/MatchboxEventListener.html | 336 +++++ .../ohacd/matchbox/api/PhaseController.html | 312 ++++ .../ohacd/matchbox/api/SessionBuilder.html | 456 ++++++ .../api/SessionCreationResult.ErrorType.html | 324 +++++ .../matchbox/api/SessionCreationResult.html | 367 +++++ .../matchbox/api/annotation/Experimental.html | 103 ++ .../matchbox/api/annotation/Internal.html | 103 ++ .../api/annotation/package-summary.html | 112 ++ .../matchbox/api/annotation/package-tree.html | 68 + .../events/AbilityUseEvent.AbilityType.html | 286 ++++ .../matchbox/api/events/AbilityUseEvent.html | 302 ++++ .../ohacd/matchbox/api/events/CureEvent.html | 280 ++++ .../api/events/GameEndEvent.EndReason.html | 275 ++++ .../matchbox/api/events/GameEndEvent.html | 321 +++++ .../matchbox/api/events/GameStartEvent.html | 264 ++++ .../matchbox/api/events/PhaseChangeEvent.html | 283 ++++ ...layerEliminateEvent.EliminationReason.html | 275 ++++ .../api/events/PlayerEliminateEvent.html | 337 +++++ .../matchbox/api/events/PlayerJoinEvent.html | 243 ++++ .../events/PlayerLeaveEvent.LeaveReason.html | 275 ++++ .../matchbox/api/events/PlayerLeaveEvent.html | 281 ++++ .../matchbox/api/events/PlayerVoteEvent.html | 264 ++++ .../ohacd/matchbox/api/events/SwipeEvent.html | 283 ++++ .../matchbox/api/events/package-summary.html | 162 +++ .../matchbox/api/events/package-tree.html | 101 ++ .../ohacd/matchbox/api/package-summary.html | 189 +++ .../com/ohacd/matchbox/api/package-tree.html | 118 ++ .gh-pages/copy.svg | 33 + .gh-pages/deprecated-list.html | 102 ++ .gh-pages/element-list | 3 + .gh-pages/help-doc.html | 188 +++ .gh-pages/index-all.html | 1234 ++++++++++++++++ .gh-pages/index.html | 72 + .gh-pages/legal/COPYRIGHT | 1 + .gh-pages/legal/LICENSE | 1 + .gh-pages/legal/jquery.md | 26 + .gh-pages/legal/jqueryUI.md | 49 + .gh-pages/link.svg | 31 + .gh-pages/member-search-index.js | 1 + .gh-pages/module-search-index.js | 1 + .gh-pages/overview-summary.html | 25 + .gh-pages/overview-tree.html | 144 ++ .gh-pages/package-search-index.js | 1 + .gh-pages/resources/glass.png | Bin 0 -> 499 bytes .gh-pages/resources/x.png | Bin 0 -> 394 bytes .gh-pages/script-dir/jquery-3.7.1.min.js | 2 + .gh-pages/script-dir/jquery-ui.min.css | 6 + .gh-pages/script-dir/jquery-ui.min.js | 6 + .gh-pages/script.js | 253 ++++ .gh-pages/search-page.js | 284 ++++ .gh-pages/search.html | 72 + .gh-pages/search.js | 458 ++++++ .gh-pages/stylesheet.css | 1272 +++++++++++++++++ .gh-pages/tag-search-index.js | 1 + .gh-pages/type-search-index.js | 1 + .github/workflows/publish-docs.yml | 46 + 71 files changed, 15325 insertions(+) create mode 100644 .gh-pages/.nojekyll create mode 100644 .gh-pages/allclasses-index.html create mode 100644 .gh-pages/allpackages-index.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/ApiGameSession.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/ApiValidationHelper.ValidationResult.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/ApiValidationHelper.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/ChatChannel.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/ChatMessage.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/ChatProcessor.ChatProcessingResult.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/ChatProcessor.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/ChatResult.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/GameConfig.Builder.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/GameConfig.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/MatchboxAPI.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/MatchboxEvent.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/MatchboxEventListener.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/PhaseController.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/SessionBuilder.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/SessionCreationResult.ErrorType.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/SessionCreationResult.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/annotation/Experimental.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/annotation/Internal.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/annotation/package-summary.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/annotation/package-tree.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/events/AbilityUseEvent.AbilityType.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/events/AbilityUseEvent.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/events/CureEvent.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/events/GameEndEvent.EndReason.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/events/GameEndEvent.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/events/GameStartEvent.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/events/PhaseChangeEvent.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/events/PlayerEliminateEvent.EliminationReason.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/events/PlayerEliminateEvent.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/events/PlayerJoinEvent.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/events/PlayerLeaveEvent.LeaveReason.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/events/PlayerLeaveEvent.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/events/PlayerVoteEvent.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/events/SwipeEvent.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/events/package-summary.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/events/package-tree.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/package-summary.html create mode 100644 .gh-pages/com/ohacd/matchbox/api/package-tree.html create mode 100644 .gh-pages/copy.svg create mode 100644 .gh-pages/deprecated-list.html create mode 100644 .gh-pages/element-list create mode 100644 .gh-pages/help-doc.html create mode 100644 .gh-pages/index-all.html create mode 100644 .gh-pages/index.html create mode 100644 .gh-pages/legal/COPYRIGHT create mode 100644 .gh-pages/legal/LICENSE create mode 100644 .gh-pages/legal/jquery.md create mode 100644 .gh-pages/legal/jqueryUI.md create mode 100644 .gh-pages/link.svg create mode 100644 .gh-pages/member-search-index.js create mode 100644 .gh-pages/module-search-index.js create mode 100644 .gh-pages/overview-summary.html create mode 100644 .gh-pages/overview-tree.html create mode 100644 .gh-pages/package-search-index.js create mode 100644 .gh-pages/resources/glass.png create mode 100644 .gh-pages/resources/x.png create mode 100644 .gh-pages/script-dir/jquery-3.7.1.min.js create mode 100644 .gh-pages/script-dir/jquery-ui.min.css create mode 100644 .gh-pages/script-dir/jquery-ui.min.js create mode 100644 .gh-pages/script.js create mode 100644 .gh-pages/search-page.js create mode 100644 .gh-pages/search.html create mode 100644 .gh-pages/search.js create mode 100644 .gh-pages/stylesheet.css create mode 100644 .gh-pages/tag-search-index.js create mode 100644 .gh-pages/type-search-index.js create mode 100644 .github/workflows/publish-docs.yml diff --git a/.gh-pages/.nojekyll b/.gh-pages/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/.gh-pages/allclasses-index.html b/.gh-pages/allclasses-index.html new file mode 100644 index 0000000..c849616 --- /dev/null +++ b/.gh-pages/allclasses-index.html @@ -0,0 +1,198 @@ + + + + +All Classes and Interfaces (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+
+

All Classes and Interfaces

+
+
+
+
+
+
Class
+
Description
+ +
+
Event fired when a player uses a special ability.
+
+ +
+
Types of abilities that can be used.
+
+ +
+
API wrapper for GameSession that provides a clean interface for external integration.
+
+ +
+
Utility class for validating common API inputs and providing helpful error messages.
+
+ +
+
Simple result class for validation operations.
+
+ +
+
Represents different chat channels in the Matchbox chat system.
+
+ +
+
Immutable representation of a chat message with all metadata needed for routing.
+
+ +
+
Interface for custom chat processors that can modify, filter, or reroute chat messages.
+
+ +
+
Result of chat processing with optional modified message.
+
+ +
+
Result of processing a chat message through the pipeline.
+
+ +
+
Event fired when a cure action is performed (Medic cures an infected player).
+
+ +
+
Marks APIs that are experimental and may change in future releases.
+
+ +
+
Configuration class for game sessions.
+
+ +
+
Builder class for creating GameConfig instances.
+
+ +
+
Event fired when a game ends (either by win condition or manual termination).
+
+ +
+
Reasons why a game can end.
+
+ +
+
Event fired when a new game starts.
+
+ +
+
Marks APIs that are internal to the implementation and not intended for public consumption.
+
+ +
+
Main API class for interacting with the Matchbox plugin.
+
+ +
+
Base class for all Matchbox events.
+
+ +
+
Interface for listening to Matchbox game events.
+
+ +
+
Event fired when the game phase changes.
+
+ +
+
Utility class for managing game phases with simplified operations.
+
+ +
+
Event fired when a player is eliminated from the game.
+
+ +
+
Reasons why a player can be eliminated.
+
+ +
+
Event fired when a player joins a game session.
+
+ +
+
Event fired when a player leaves a game session.
+
+ +
+
Reasons why a player can leave a session.
+
+ +
+
Event fired when a player casts a vote during the voting phase.
+
+ +
+
Builder class for creating and configuring game sessions.
+
+ +
+
Result object for session creation operations that provides detailed success/failure information.
+
+ +
+
Enumeration of possible error types during session creation.
+
+ +
+
Event fired when the swipe action is performed (Spark attacks another player).
+
+
+
+
+
+
+
+ + diff --git a/.gh-pages/allpackages-index.html b/.gh-pages/allpackages-index.html new file mode 100644 index 0000000..a8b556c --- /dev/null +++ b/.gh-pages/allpackages-index.html @@ -0,0 +1,70 @@ + + + + +All Packages (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+
+

All Packages

+
+
Package Summary
+
+
Package
+
Description
+ +
+
Public API for Matchbox.
+
+ +
 
+ +
 
+
+
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/ApiGameSession.html b/.gh-pages/com/ohacd/matchbox/api/ApiGameSession.html new file mode 100644 index 0000000..6c1217f --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/ApiGameSession.html @@ -0,0 +1,584 @@ + + + + +ApiGameSession (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class ApiGameSession

+
+
java.lang.Object +
com.ohacd.matchbox.api.ApiGameSession
+
+
+
+
public class ApiGameSession +extends Object
+
API wrapper for GameSession that provides a clean interface for external integration. + +

This class wraps the internal GameSession class and provides methods for + managing game state, players, and phases without exposing internal implementation details.

+ +

All methods are thread-safe and handle null inputs gracefully.

+
+
Since:
+
0.9.5
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ApiGameSession

      +
      public ApiGameSession(@NotNull + @NotNull com.ohacd.matchbox.game.session.GameSession session)
      +
      Creates a new API game session wrapper.
      +
      +
      Parameters:
      +
      session - the internal game session to wrap
      +
      Throws:
      +
      IllegalArgumentException - if session is null
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getName

      +
      @NotNull +public @NotNull String getName()
      +
      Gets the name of this session.
      +
      +
      Returns:
      +
      the session name, never null
      +
      +
      +
    • +
    • +
      +

      isActive

      +
      public boolean isActive()
      +
      Gets whether this session is currently active.
      +
      +
      Returns:
      +
      true if the session is active
      +
      +
      +
    • +
    • +
      +

      getCurrentPhase

      +
      @Nullable +public @Nullable com.ohacd.matchbox.game.utils.GamePhase getCurrentPhase()
      +
      Gets the current game phase.
      +
      +
      Returns:
      +
      the current phase, or null if no game is active
      +
      +
      +
    • +
    • +
      +

      getCurrentRound

      +
      public int getCurrentRound()
      +
      Gets the current round number.
      +
      +
      Returns:
      +
      the current round number, or -1 if no game is active
      +
      +
      +
    • +
    • +
      +

      getPlayers

      +
      @NotNull +public @NotNull Collection<org.bukkit.entity.Player> getPlayers()
      +
      Gets all players in this session.
      +
      +
      Returns:
      +
      an unmodifiable collection of all players in the session
      +
      +
      +
    • +
    • +
      +

      getAlivePlayers

      +
      @NotNull +public @NotNull Collection<org.bukkit.entity.Player> getAlivePlayers()
      +
      Gets all currently alive players in this session.
      +
      +
      Returns:
      +
      an unmodifiable collection of alive players
      +
      +
      +
    • +
    • +
      +

      getPlayerRole

      +
      @NotNull +public @NotNull Optional<com.ohacd.matchbox.game.utils.Role> getPlayerRole(@Nullable + @Nullable org.bukkit.entity.Player player)
      +
      Gets the role of a player in this session.
      +
      +
      Parameters:
      +
      player - the player to check
      +
      Returns:
      +
      optional containing the player's role, empty if not found or not in game
      +
      +
      +
    • +
    • +
      +

      startGame

      +
      public boolean startGame()
      +
      Starts the game for this session.
      +
      +
      Returns:
      +
      true if the game was started successfully
      +
      +
      +
    • +
    • +
      +

      endGame

      +
      public boolean endGame()
      +
      Ends the game for this session.
      +
      +
      Returns:
      +
      true if the game was ended successfully
      +
      +
      +
    • +
    • +
      +

      addPlayer

      +
      public boolean addPlayer(@Nullable + @Nullable org.bukkit.entity.Player player)
      +
      Adds a player to this session.
      +
      +
      Parameters:
      +
      player - the player to add
      +
      Returns:
      +
      true if the player was added successfully
      +
      +
      +
    • +
    • +
      +

      removePlayer

      +
      public boolean removePlayer(@Nullable + @Nullable org.bukkit.entity.Player player)
      +
      Removes a player from this session.
      +
      +
      Parameters:
      +
      player - the player to remove
      +
      Returns:
      +
      true if the player was removed successfully
      +
      +
      +
    • +
    • +
      +

      getPhaseController

      +
      @NotNull +public @NotNull PhaseController getPhaseController()
      +
      Gets the phase controller for this session.
      +
      +
      Returns:
      +
      a phase controller instance for managing game phases
      +
      +
      +
    • +
    • +
      +

      skipToNextPhase

      +
      @Deprecated +public boolean skipToNextPhase()
      +
      Deprecated. + +
      +
      Skips to the next phase in the game.
      +
      +
      Returns:
      +
      true if the phase was skipped successfully
      +
      +
      +
    • +
    • +
      +

      forcePhase

      +
      @Deprecated +public boolean forcePhase(@Nullable + @Nullable com.ohacd.matchbox.game.utils.GamePhase phase)
      +
      Deprecated. + +
      +
      Forces the game to a specific phase.
      +
      +
      Parameters:
      +
      phase - the phase to force
      +
      Returns:
      +
      true if the phase was forced successfully
      +
      +
      +
    • +
    • +
      +

      isPlayerAlive

      +
      public boolean isPlayerAlive(@Nullable + @Nullable org.bukkit.entity.Player player)
      +
      Checks if a specific player is alive in this session.
      +
      +
      Parameters:
      +
      player - the player to check
      +
      Returns:
      +
      true if the player is alive, false if dead or not in session
      +
      +
      +
    • +
    • +
      +

      getAlivePlayerCount

      +
      public int getAlivePlayerCount()
      +
      Gets the number of alive players in this session.
      +
      +
      Returns:
      +
      the count of alive players
      +
      +
      +
    • +
    • +
      +

      getTotalPlayerCount

      +
      public int getTotalPlayerCount()
      +
      Gets the total number of players in this session.
      +
      +
      Returns:
      +
      the total player count
      +
      +
      +
    • +
    • +
      +

      isInGamePhase

      +
      public boolean isInGamePhase()
      +
      Checks if the session is currently in an active game phase.
      +
      +
      Returns:
      +
      true if in a game phase, false if not started or ended
      +
      +
      +
    • +
    • +
      +

      getStatusDescription

      +
      @NotNull +public @NotNull String getStatusDescription()
      +
      Gets a human-readable status description of the session.
      +
      +
      Returns:
      +
      a descriptive status string
      +
      +
      +
    • +
    • +
      +

      getInternalSession

      +
      @Internal +@Deprecated +public com.ohacd.matchbox.game.session.GameSession getInternalSession()
      +
      Deprecated. +
      This method exposes internal implementation details. Use the provided API methods instead.
      +
      +
      Gets the internal GameSession object. + This method is for internal use only and should not be used by external plugins.
      +
      +
      Returns:
      +
      the wrapped GameSession
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public boolean equals(Object obj)
      +
      +
      Overrides:
      +
      equals in class Object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public int hashCode()
      +
      +
      Overrides:
      +
      hashCode in class Object
      +
      +
      +
    • +
    • +
      +

      toString

      +
      public String toString()
      +
      +
      Overrides:
      +
      toString in class Object
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/ApiValidationHelper.ValidationResult.html b/.gh-pages/com/ohacd/matchbox/api/ApiValidationHelper.ValidationResult.html new file mode 100644 index 0000000..05f6c1a --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/ApiValidationHelper.ValidationResult.html @@ -0,0 +1,211 @@ + + + + +ApiValidationHelper.ValidationResult (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class ApiValidationHelper.ValidationResult

+
+
java.lang.Object +
com.ohacd.matchbox.api.ApiValidationHelper.ValidationResult
+
+
+
+
Enclosing class:
+
ApiValidationHelper
+
+
+
public static final class ApiValidationHelper.ValidationResult +extends Object
+
Simple result class for validation operations.
+
+
+ +
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      success

      +
      @NotNull +public static @NotNull ApiValidationHelper.ValidationResult success()
      +
      Creates a successful validation result.
      +
      +
      Returns:
      +
      a successful result
      +
      +
      +
    • +
    • +
      +

      error

      +
      @NotNull +public static @NotNull ApiValidationHelper.ValidationResult error(@NotNull + @NotNull String errorMessage)
      +
      Creates an error validation result.
      +
      +
      Parameters:
      +
      errorMessage - the error message
      +
      Returns:
      +
      an error result
      +
      +
      +
    • +
    • +
      +

      isValid

      +
      public boolean isValid()
      +
      Gets whether the validation was successful.
      +
      +
      Returns:
      +
      true if valid, false otherwise
      +
      +
      +
    • +
    • +
      +

      getErrorMessage

      +
      @Nullable +public @Nullable String getErrorMessage()
      +
      Gets the error message if validation failed.
      +
      +
      Returns:
      +
      error message, or null if validation succeeded
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/ApiValidationHelper.html b/.gh-pages/com/ohacd/matchbox/api/ApiValidationHelper.html new file mode 100644 index 0000000..5b4945c --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/ApiValidationHelper.html @@ -0,0 +1,322 @@ + + + + +ApiValidationHelper (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class ApiValidationHelper

+
+
java.lang.Object +
com.ohacd.matchbox.api.ApiValidationHelper
+
+
+
+
public final class ApiValidationHelper +extends Object
+
Utility class for validating common API inputs and providing helpful error messages. + +

This class contains static methods to validate common configurations and provide + detailed feedback about what went wrong during validation failures.

+
+
Since:
+
0.9.5
+
+
+
+ +
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      validatePlayers

      +
      @NotNull +public static @NotNull ApiValidationHelper.ValidationResult validatePlayers(@Nullable + @Nullable Collection<org.bukkit.entity.Player> players)
      +
      Validates a collection of players for session creation.
      +
      +
      Parameters:
      +
      players - the players to validate
      +
      Returns:
      +
      ValidationResult containing validation outcome
      +
      +
      +
    • +
    • +
      +

      validateSpawnPoints

      +
      @NotNull +public static @NotNull ApiValidationHelper.ValidationResult validateSpawnPoints(@Nullable + @Nullable Collection<org.bukkit.Location> spawnPoints)
      +
      Validates a collection of spawn locations for session creation.
      +
      +
      Parameters:
      +
      spawnPoints - the spawn locations to validate
      +
      Returns:
      +
      ValidationResult containing validation outcome
      +
      +
      +
    • +
    • +
      +

      validateDiscussionLocation

      +
      @NotNull +public static @NotNull ApiValidationHelper.ValidationResult validateDiscussionLocation(@Nullable + @Nullable org.bukkit.Location discussionLocation)
      +
      Validates a discussion location for session creation.
      +
      +
      Parameters:
      +
      discussionLocation - the discussion location to validate
      +
      Returns:
      +
      ValidationResult containing validation outcome
      +
      +
      +
    • +
    • +
      +

      validateSeatLocations

      +
      @NotNull +public static @NotNull ApiValidationHelper.ValidationResult validateSeatLocations(@Nullable + @Nullable Map<Integer,org.bukkit.Location> seatLocations)
      +
      Validates seat locations for session creation.
      +
      +
      Parameters:
      +
      seatLocations - the seat locations to validate
      +
      Returns:
      +
      ValidationResult containing validation outcome
      +
      +
      +
    • +
    • +
      +

      validateSessionName

      +
      @NotNull +public static @NotNull ApiValidationHelper.ValidationResult validateSessionName(@Nullable + @Nullable String sessionName)
      +
      Validates a session name.
      +
      +
      Parameters:
      +
      sessionName - the session name to validate
      +
      Returns:
      +
      ValidationResult containing validation outcome
      +
      +
      +
    • +
    • +
      +

      validatePlayerCount

      +
      @NotNull +public static @NotNull ApiValidationHelper.ValidationResult validatePlayerCount(int playerCount)
      +
      Validates that the number of players is sufficient for a game.
      +
      +
      Parameters:
      +
      playerCount - the number of players
      +
      Returns:
      +
      ValidationResult containing validation outcome
      +
      +
      +
    • +
    • +
      +

      validateSpawnCount

      +
      @NotNull +public static @NotNull ApiValidationHelper.ValidationResult validateSpawnCount(int spawnCount, + int playerCount)
      +
      Validates that the number of spawn points is sufficient for players.
      +
      +
      Parameters:
      +
      spawnCount - the number of spawn points
      +
      playerCount - the number of players
      +
      Returns:
      +
      ValidationResult containing validation outcome
      +
      +
      +
    • +
    • +
      +

      getValidationSummary

      +
      @NotNull +public static @NotNull String getValidationSummary(@NotNull + @NotNull ApiValidationHelper.ValidationResult... results)
      +
      Gets a summary of validation results.
      +
      +
      Parameters:
      +
      results - the validation results to summarize
      +
      Returns:
      +
      a human-readable summary
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/ChatChannel.html b/.gh-pages/com/ohacd/matchbox/api/ChatChannel.html new file mode 100644 index 0000000..d9f94cf --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/ChatChannel.html @@ -0,0 +1,257 @@ + + + + +ChatChannel (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Enum Class ChatChannel

+
+
java.lang.Object +
java.lang.Enum<ChatChannel> +
com.ohacd.matchbox.api.ChatChannel
+
+
+
+
+
All Implemented Interfaces:
+
Serializable, Comparable<ChatChannel>, Constable
+
+
+
public enum ChatChannel +extends Enum<ChatChannel>
+
Represents different chat channels in the Matchbox chat system. + Used to route messages to appropriate recipients based on player status and game state.
+
+
Since:
+
0.9.5
+
+
+
+
    + +
  • +
    +

    Nested Class Summary

    +
    +

    Nested classes/interfaces inherited from class java.lang.Enum

    +Enum.EnumDesc<E extends Enum<E>>
    +
    +
  • + +
  • +
    +

    Enum Constant Summary

    +
    Enum Constants
    +
    +
    Enum Constant
    +
    Description
    + +
    +
    Game chat channel - messages from alive players visible to alive players and spectators.
    +
    + +
    +
    Global chat channel - bypasses all game chat filtering and uses normal server chat.
    +
    + +
    +
    Spectator chat channel - messages from spectators visible only to other spectators in the same session.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    + + +
    +
    Returns the enum constant of this class with the specified name.
    +
    +
    static ChatChannel[]
    + +
    +
    Returns an array containing the constants of this enum class, in +the order they are declared.
    +
    +
    +
    +
    + +
    +

    Methods inherited from class java.lang.Object

    +getClass, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Enum Constant Details

    +
      +
    • +
      +

      GAME

      +
      public static final ChatChannel GAME
      +
      Game chat channel - messages from alive players visible to alive players and spectators. + Spectators cannot send to this channel.
      +
      +
    • +
    • +
      +

      SPECTATOR

      +
      public static final ChatChannel SPECTATOR
      +
      Spectator chat channel - messages from spectators visible only to other spectators in the same session. + Alive players cannot see or send to this channel.
      +
      +
    • +
    • +
      +

      GLOBAL

      +
      public static final ChatChannel GLOBAL
      +
      Global chat channel - bypasses all game chat filtering and uses normal server chat. + Used for administrative messages or when chat should not be filtered.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      values

      +
      public static ChatChannel[] values()
      +
      Returns an array containing the constants of this enum class, in +the order they are declared.
      +
      +
      Returns:
      +
      an array containing the constants of this enum class, in the order they are declared
      +
      +
      +
    • +
    • +
      +

      valueOf

      +
      public static ChatChannel valueOf(String name)
      +
      Returns the enum constant of this class with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this class. (Extraneous whitespace characters are +not permitted.)
      +
      +
      Parameters:
      +
      name - the name of the enum constant to be returned.
      +
      Returns:
      +
      the enum constant with the specified name
      +
      Throws:
      +
      IllegalArgumentException - if this enum class has no constant with the specified name
      +
      NullPointerException - if the argument is null
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/ChatMessage.html b/.gh-pages/com/ohacd/matchbox/api/ChatMessage.html new file mode 100644 index 0000000..4c3dda6 --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/ChatMessage.html @@ -0,0 +1,483 @@ + + + + +ChatMessage (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Record Class ChatMessage

+
+
java.lang.Object +
java.lang.Record +
com.ohacd.matchbox.api.ChatMessage
+
+
+
+
+
Record Components:
+
originalMessage - original message content (unmodified)
+
formattedMessage - formatted message used for display
+
sender - player who sent the message
+
senderId - UUID of the sender
+
channel - chat channel the message belongs to
+
sessionName - session name the message was sent in
+
isAlivePlayer - whether the sender is an alive player
+
timestamp - instant the message was recorded
+
+
+
public record ChatMessage(@NotNull net.kyori.adventure.text.Component originalMessage, @NotNull net.kyori.adventure.text.Component formattedMessage, @NotNull org.bukkit.entity.Player sender, @NotNull UUID senderId, @NotNull ChatChannel channel, @NotNull String sessionName, boolean isAlivePlayer, @NotNull Instant timestamp) +extends Record
+
Immutable representation of a chat message with all metadata needed for routing. + Used throughout the chat pipeline system.
+
+
Since:
+
0.9.5
+
+
+
+
    + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    ChatMessage(@NotNull net.kyori.adventure.text.Component originalMessage, + @NotNull net.kyori.adventure.text.Component formattedMessage, + @NotNull org.bukkit.entity.Player sender, + @NotNull ChatChannel channel, + @NotNull String sessionName, + boolean isAlivePlayer)
    +
    +
    Creates a new ChatMessage with the current timestamp.
    +
    +
    ChatMessage(@NotNull net.kyori.adventure.text.Component originalMessage, + @NotNull net.kyori.adventure.text.Component formattedMessage, + @NotNull org.bukkit.entity.Player sender, + @NotNull UUID senderId, + @NotNull ChatChannel channel, + @NotNull String sessionName, + boolean isAlivePlayer, + @NotNull Instant timestamp)
    +
    +
    Creates an instance of a ChatMessage record class.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    @NotNull ChatChannel
    + +
    +
    Returns the value of the channel record component.
    +
    +
    final boolean
    + +
    +
    Indicates whether some other object is "equal to" this one.
    +
    +
    @NotNull net.kyori.adventure.text.Component
    + +
    +
    Returns the value of the formattedMessage record component.
    +
    +
    final int
    + +
    +
    Returns a hash code value for this object.
    +
    +
    boolean
    + +
    +
    Returns the value of the isAlivePlayer record component.
    +
    +
    @NotNull net.kyori.adventure.text.Component
    + +
    +
    Returns the value of the originalMessage record component.
    +
    +
    @NotNull org.bukkit.entity.Player
    + +
    +
    Returns the value of the sender record component.
    +
    +
    @NotNull UUID
    + +
    +
    Returns the value of the senderId record component.
    +
    +
    @NotNull String
    + +
    +
    Returns the value of the sessionName record component.
    +
    +
    @NotNull Instant
    + +
    +
    Returns the value of the timestamp record component.
    +
    +
    final String
    + +
    +
    Returns a string representation of this record class.
    +
    + +
    withChannel(@NotNull ChatChannel newChannel)
    +
    +
    Creates a copy of this message with a modified channel.
    +
    + +
    withFormattedMessage(@NotNull net.kyori.adventure.text.Component newFormattedMessage)
    +
    +
    Creates a copy of this message with a modified formatted message.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ChatMessage

      +
      public ChatMessage(@NotNull + @NotNull net.kyori.adventure.text.Component originalMessage, + @NotNull + @NotNull net.kyori.adventure.text.Component formattedMessage, + @NotNull + @NotNull org.bukkit.entity.Player sender, + @NotNull + @NotNull ChatChannel channel, + @NotNull + @NotNull String sessionName, + boolean isAlivePlayer)
      +
      Creates a new ChatMessage with the current timestamp.
      +
      +
      Parameters:
      +
      originalMessage - original message content (unmodified)
      +
      formattedMessage - formatted message used for display
      +
      sender - sender player
      +
      channel - channel of message
      +
      sessionName - session name
      +
      isAlivePlayer - whether sender is alive
      +
      +
      +
    • +
    • +
      +

      ChatMessage

      +
      public ChatMessage(@NotNull + @NotNull net.kyori.adventure.text.Component originalMessage, + @NotNull + @NotNull net.kyori.adventure.text.Component formattedMessage, + @NotNull + @NotNull org.bukkit.entity.Player sender, + @NotNull + @NotNull UUID senderId, + @NotNull + @NotNull ChatChannel channel, + @NotNull + @NotNull String sessionName, + boolean isAlivePlayer, + @NotNull + @NotNull Instant timestamp)
      +
      Creates an instance of a ChatMessage record class.
      +
      +
      Parameters:
      +
      originalMessage - the value for the originalMessage record component
      +
      formattedMessage - the value for the formattedMessage record component
      +
      sender - the value for the sender record component
      +
      senderId - the value for the senderId record component
      +
      channel - the value for the channel record component
      +
      sessionName - the value for the sessionName record component
      +
      isAlivePlayer - the value for the isAlivePlayer record component
      +
      timestamp - the value for the timestamp record component
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      withFormattedMessage

      +
      public ChatMessage withFormattedMessage(@NotNull + @NotNull net.kyori.adventure.text.Component newFormattedMessage)
      +
      Creates a copy of this message with a modified formatted message. + Useful for processors that want to modify message content.
      +
      +
      Parameters:
      +
      newFormattedMessage - the updated formatted message component
      +
      Returns:
      +
      a new ChatMessage with the modified formatted message
      +
      +
      +
    • +
    • +
      +

      withChannel

      +
      public ChatMessage withChannel(@NotNull + @NotNull ChatChannel newChannel)
      +
      Creates a copy of this message with a modified channel. + Useful for processors that want to reroute messages.
      +
      +
      Parameters:
      +
      newChannel - new chat channel for the message
      +
      Returns:
      +
      a new ChatMessage routed to the provided channel
      +
      +
      +
    • +
    • +
      +

      toString

      +
      public final String toString()
      +
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      +
      +
      Specified by:
      +
      toString in class Record
      +
      Returns:
      +
      a string representation of this object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public final int hashCode()
      +
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      +
      +
      Specified by:
      +
      hashCode in class Record
      +
      Returns:
      +
      a hash code value for this object
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public final boolean equals(Object o)
      +
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. Reference components are compared with Objects::equals(Object,Object); primitive components are compared with '=='.
      +
      +
      Specified by:
      +
      equals in class Record
      +
      Parameters:
      +
      o - the object with which to compare
      +
      Returns:
      +
      true if this object is the same as the o argument; false otherwise.
      +
      +
      +
    • +
    • +
      +

      originalMessage

      +
      @NotNull +public @NotNull net.kyori.adventure.text.Component originalMessage()
      +
      Returns the value of the originalMessage record component.
      +
      +
      Returns:
      +
      the value of the originalMessage record component
      +
      +
      +
    • +
    • +
      +

      formattedMessage

      +
      @NotNull +public @NotNull net.kyori.adventure.text.Component formattedMessage()
      +
      Returns the value of the formattedMessage record component.
      +
      +
      Returns:
      +
      the value of the formattedMessage record component
      +
      +
      +
    • +
    • +
      +

      sender

      +
      @NotNull +public @NotNull org.bukkit.entity.Player sender()
      +
      Returns the value of the sender record component.
      +
      +
      Returns:
      +
      the value of the sender record component
      +
      +
      +
    • +
    • +
      +

      senderId

      +
      @NotNull +public @NotNull UUID senderId()
      +
      Returns the value of the senderId record component.
      +
      +
      Returns:
      +
      the value of the senderId record component
      +
      +
      +
    • +
    • +
      +

      channel

      +
      @NotNull +public @NotNull ChatChannel channel()
      +
      Returns the value of the channel record component.
      +
      +
      Returns:
      +
      the value of the channel record component
      +
      +
      +
    • +
    • +
      +

      sessionName

      +
      @NotNull +public @NotNull String sessionName()
      +
      Returns the value of the sessionName record component.
      +
      +
      Returns:
      +
      the value of the sessionName record component
      +
      +
      +
    • +
    • +
      +

      isAlivePlayer

      +
      public boolean isAlivePlayer()
      +
      Returns the value of the isAlivePlayer record component.
      +
      +
      Returns:
      +
      the value of the isAlivePlayer record component
      +
      +
      +
    • +
    • +
      +

      timestamp

      +
      @NotNull +public @NotNull Instant timestamp()
      +
      Returns the value of the timestamp record component.
      +
      +
      Returns:
      +
      the value of the timestamp record component
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/ChatProcessor.ChatProcessingResult.html b/.gh-pages/com/ohacd/matchbox/api/ChatProcessor.ChatProcessingResult.html new file mode 100644 index 0000000..ea995a7 --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/ChatProcessor.ChatProcessingResult.html @@ -0,0 +1,353 @@ + + + + +ChatProcessor.ChatProcessingResult (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Record Class ChatProcessor.ChatProcessingResult

+
+
java.lang.Object +
java.lang.Record +
com.ohacd.matchbox.api.ChatProcessor.ChatProcessingResult
+
+
+
+
+
Record Components:
+
result - the processing result enum
+
message - the (possibly modified) message
+
+
+
Enclosing interface:
+
ChatProcessor
+
+
+
public static record ChatProcessor.ChatProcessingResult(@NotNull ChatResult result, @NotNull ChatMessage message) +extends Record
+
Result of chat processing with optional modified message.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ChatProcessingResult

      +
      public ChatProcessingResult(@NotNull + @NotNull ChatResult result, + @NotNull + @NotNull ChatMessage message)
      +
      Creates an instance of a ChatProcessingResult record class.
      +
      +
      Parameters:
      +
      result - the value for the result record component
      +
      message - the value for the message record component
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      allow

      +
      public static ChatProcessor.ChatProcessingResult allow(@NotNull + @NotNull ChatMessage message)
      +
      Creates an ALLOW result with the original message.
      +
      +
      Parameters:
      +
      message - original chat message
      +
      Returns:
      +
      a ChatProcessingResult indicating ALLOW with the provided message
      +
      +
      +
    • +
    • +
      +

      allowModified

      +
      public static ChatProcessor.ChatProcessingResult allowModified(@NotNull + @NotNull ChatMessage modifiedMessage)
      +
      Creates an ALLOW result with a modified message.
      +
      +
      Parameters:
      +
      modifiedMessage - modified chat message
      +
      Returns:
      +
      a ChatProcessingResult indicating ALLOW with the modified message
      +
      +
      +
    • +
    • +
      +

      deny

      +
      public static ChatProcessor.ChatProcessingResult deny(@NotNull + @NotNull ChatMessage message)
      +
      Creates a DENY result.
      +
      +
      Parameters:
      +
      message - original chat message
      +
      Returns:
      +
      a ChatProcessingResult indicating DENY
      +
      +
      +
    • +
    • +
      +

      cancel

      +
      public static ChatProcessor.ChatProcessingResult cancel(@NotNull + @NotNull ChatMessage message)
      +
      Creates a CANCEL result.
      +
      +
      Parameters:
      +
      message - original chat message
      +
      Returns:
      +
      a ChatProcessingResult indicating CANCEL
      +
      +
      +
    • +
    • +
      +

      toString

      +
      public final String toString()
      +
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      +
      +
      Specified by:
      +
      toString in class Record
      +
      Returns:
      +
      a string representation of this object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public final int hashCode()
      +
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      +
      +
      Specified by:
      +
      hashCode in class Record
      +
      Returns:
      +
      a hash code value for this object
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public final boolean equals(Object o)
      +
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      +
      +
      Specified by:
      +
      equals in class Record
      +
      Parameters:
      +
      o - the object with which to compare
      +
      Returns:
      +
      true if this object is the same as the o argument; false otherwise.
      +
      +
      +
    • +
    • +
      +

      result

      +
      @NotNull +public @NotNull ChatResult result()
      +
      Returns the value of the result record component.
      +
      +
      Returns:
      +
      the value of the result record component
      +
      +
      +
    • +
    • +
      +

      message

      +
      @NotNull +public @NotNull ChatMessage message()
      +
      Returns the value of the message record component.
      +
      +
      Returns:
      +
      the value of the message record component
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/ChatProcessor.html b/.gh-pages/com/ohacd/matchbox/api/ChatProcessor.html new file mode 100644 index 0000000..9127392 --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/ChatProcessor.html @@ -0,0 +1,195 @@ + + + + +ChatProcessor (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Interface ChatProcessor

+
+
+
+
public interface ChatProcessor
+
Interface for custom chat processors that can modify, filter, or reroute chat messages. + Servers can implement this interface to add custom chat behavior for specific sessions. + +

Processors are called in registration order and can:

+
    +
  • Modify message content or formatting
  • +
  • Change the target channel
  • +
  • Filter messages (deny/cancel)
  • +
  • Add custom routing logic
  • +
+ +

Example usage:

+
+ public class CustomChatProcessor implements ChatProcessor {
+     public ChatProcessingResult process(ChatMessage message) {
+         // Add custom prefix for spectators
+         if (message.channel() == ChatChannel.SPECTATOR) {
+             Component newMessage = Component.text("[SPEC] ").append(message.formattedMessage());
+             return ChatProcessingResult.allowModified(message.withFormattedMessage(newMessage));
+         }
+         return ChatProcessingResult.allow(message);
+     }
+ }
+ 
+
+
Since:
+
0.9.5
+
+
+
+
    + +
  • +
    +

    Nested Class Summary

    +
    Nested Classes
    +
    +
    Modifier and Type
    +
    Interface
    +
    Description
    +
    static final record 
    + +
    +
    Result of chat processing with optional modified message.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    + +
    process(@NotNull ChatMessage message)
    +
    +
    Processes a chat message and returns the result.
    +
    +
    +
    +
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      process

      +
      @NotNull +@NotNull ChatProcessor.ChatProcessingResult process(@NotNull + @NotNull ChatMessage message)
      +
      Processes a chat message and returns the result. + This method is called for every message in the associated session.
      +
      +
      Parameters:
      +
      message - the chat message to process (immutable)
      +
      Returns:
      +
      the result of processing, including any modified message
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/ChatResult.html b/.gh-pages/com/ohacd/matchbox/api/ChatResult.html new file mode 100644 index 0000000..e17d3ec --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/ChatResult.html @@ -0,0 +1,257 @@ + + + + +ChatResult (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Enum Class ChatResult

+
+
java.lang.Object +
java.lang.Enum<ChatResult> +
com.ohacd.matchbox.api.ChatResult
+
+
+
+
+
All Implemented Interfaces:
+
Serializable, Comparable<ChatResult>, Constable
+
+
+
public enum ChatResult +extends Enum<ChatResult>
+
Result of processing a chat message through the pipeline. + Determines how the message should be handled after custom processing.
+
+
Since:
+
0.9.5
+
+
+
+ +
+
+
    + +
  • +
    +

    Enum Constant Details

    +
      +
    • +
      +

      ALLOW

      +
      public static final ChatResult ALLOW
      +
      Allow the message to proceed through the normal routing. + The message may have been modified by the processor.
      +
      +
    • +
    • +
      +

      DENY

      +
      public static final ChatResult DENY
      +
      Deny the message - it will not be sent to any recipients. + Useful for filtering spam, muted players, etc.
      +
      +
    • +
    • +
      +

      CANCEL

      +
      public static final ChatResult CANCEL
      +
      Cancel the message entirely - prevents any further processing. + Similar to DENY but stops the pipeline immediately.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      values

      +
      public static ChatResult[] values()
      +
      Returns an array containing the constants of this enum class, in +the order they are declared.
      +
      +
      Returns:
      +
      an array containing the constants of this enum class, in the order they are declared
      +
      +
      +
    • +
    • +
      +

      valueOf

      +
      public static ChatResult valueOf(String name)
      +
      Returns the enum constant of this class with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this class. (Extraneous whitespace characters are +not permitted.)
      +
      +
      Parameters:
      +
      name - the name of the enum constant to be returned.
      +
      Returns:
      +
      the enum constant with the specified name
      +
      Throws:
      +
      IllegalArgumentException - if this enum class has no constant with the specified name
      +
      NullPointerException - if the argument is null
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/GameConfig.Builder.html b/.gh-pages/com/ohacd/matchbox/api/GameConfig.Builder.html new file mode 100644 index 0000000..ee27b3c --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/GameConfig.Builder.html @@ -0,0 +1,339 @@ + + + + +GameConfig.Builder (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class GameConfig.Builder

+
+
java.lang.Object +
com.ohacd.matchbox.api.GameConfig.Builder
+
+
+
+
Enclosing class:
+
GameConfig
+
+
+
public static final class GameConfig.Builder +extends Object
+
Builder class for creating GameConfig instances. + +

Provides a fluent interface for building game configurations with validation + and sensible defaults.

+ +

Example usage:

+

+ GameConfig config = new GameConfig.Builder()
+     .swipeDuration(120)
+     .discussionDuration(60)
+     .votingDuration(30)
+     .sparkAbility("hunter_vision")
+     .medicAbility("healing_sight")
+     .randomSkins(true)
+     .steveSkins(false)
+     .build();
+ 
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Builder

      +
      public Builder()
      +
      Creates a new builder with default values.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      swipeDuration

      +
      public GameConfig.Builder swipeDuration(int seconds)
      +
      Sets the swipe phase duration.
      +
      +
      Parameters:
      +
      seconds - duration in seconds, must be positive
      +
      Returns:
      +
      this builder instance for method chaining
      +
      Throws:
      +
      IllegalArgumentException - if seconds is not positive
      +
      +
      +
    • +
    • +
      +

      discussionDuration

      +
      public GameConfig.Builder discussionDuration(int seconds)
      +
      Sets the discussion phase duration.
      +
      +
      Parameters:
      +
      seconds - duration in seconds, must be positive
      +
      Returns:
      +
      this builder instance for method chaining
      +
      Throws:
      +
      IllegalArgumentException - if seconds is not positive
      +
      +
      +
    • +
    • +
      +

      votingDuration

      +
      public GameConfig.Builder votingDuration(int seconds)
      +
      Sets the voting phase duration.
      +
      +
      Parameters:
      +
      seconds - duration in seconds, must be positive
      +
      Returns:
      +
      this builder instance for method chaining
      +
      Throws:
      +
      IllegalArgumentException - if seconds is not positive
      +
      +
      +
    • +
    • +
      +

      sparkAbility

      +
      public GameConfig.Builder sparkAbility(String ability)
      +
      Sets the Spark secondary ability.
      +
      +
      Parameters:
      +
      ability - the ability to use ("random", "hunter_vision", "spark_swap", "delusion")
      +
      Returns:
      +
      this builder instance for method chaining
      +
      Throws:
      +
      IllegalArgumentException - if ability is invalid
      +
      +
      +
    • +
    • +
      +

      medicAbility

      +
      public GameConfig.Builder medicAbility(String ability)
      +
      Sets the Medic secondary ability.
      +
      +
      Parameters:
      +
      ability - the ability to use ("random", "healing_sight")
      +
      Returns:
      +
      this builder instance for method chaining
      +
      Throws:
      +
      IllegalArgumentException - if ability is invalid
      +
      +
      +
    • +
    • +
      +

      randomSkins

      +
      public GameConfig.Builder randomSkins(boolean enabled)
      +
      Sets whether random skins are enabled.
      +
      +
      Parameters:
      +
      enabled - true to enable random skins
      +
      Returns:
      +
      this builder instance for method chaining
      +
      +
      +
    • +
    • +
      +

      steveSkins

      +
      public GameConfig.Builder steveSkins(boolean enabled)
      +
      Sets whether Steve skins are forced.
      +
      +
      Parameters:
      +
      enabled - true to force Steve skins
      +
      Returns:
      +
      this builder instance for method chaining
      +
      +
      +
    • +
    • +
      +

      build

      +
      public GameConfig build()
      +
      Builds the GameConfig instance.
      +
      +
      Returns:
      +
      the created configuration
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/GameConfig.html b/.gh-pages/com/ohacd/matchbox/api/GameConfig.html new file mode 100644 index 0000000..528b07e --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/GameConfig.html @@ -0,0 +1,336 @@ + + + + +GameConfig (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class GameConfig

+
+
java.lang.Object +
com.ohacd.matchbox.api.GameConfig
+
+
+
+
public final class GameConfig +extends Object
+
Configuration class for game sessions. + +

Provides customizable settings for game duration, abilities, cosmetics, and other + game behavior. Use the Builder class to create custom configurations.

+ +

Example usage:

+

+ GameConfig config = new GameConfig.Builder()
+     .swipeDuration(120) // 2 minutes
+     .sparkAbility("hunter_vision") // Force specific ability
+     .randomSkins(true)
+     .build();
+ 
+
+
Since:
+
0.9.5
+
+
+
+
    + +
  • +
    +

    Nested Class Summary

    +
    Nested Classes
    +
    +
    Modifier and Type
    +
    Class
    +
    Description
    +
    static final class 
    + +
    +
    Builder class for creating GameConfig instances.
    +
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    GameConfig(int swipeDuration, + int discussionDuration, + int votingDuration, + String sparkSecondaryAbility, + String medicSecondaryAbility, + boolean randomSkinsEnabled, + boolean useSteveSkins)
    +
    +
    Creates a new game configuration.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    int
    + +
    +
    Gets the discussion phase duration in seconds.
    +
    +
    @Nullable String
    + +
    +
    Gets the Medic secondary ability setting.
    +
    +
    @Nullable String
    + +
    +
    Gets the Spark secondary ability setting.
    +
    +
    int
    + +
    +
    Gets the swipe phase duration in seconds.
    +
    +
    int
    + +
    +
    Gets the voting phase duration in seconds.
    +
    +
    boolean
    + +
    +
    Gets whether random skins are enabled.
    +
    +
    boolean
    + +
    +
    Gets whether Steve skins are forced.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GameConfig

      +
      public GameConfig(int swipeDuration, + int discussionDuration, + int votingDuration, + String sparkSecondaryAbility, + String medicSecondaryAbility, + boolean randomSkinsEnabled, + boolean useSteveSkins)
      +
      Creates a new game configuration.
      +
      +
      Parameters:
      +
      swipeDuration - duration of swipe phase in seconds
      +
      discussionDuration - duration of discussion phase in seconds
      +
      votingDuration - duration of voting phase in seconds
      +
      sparkSecondaryAbility - Spark's secondary ability setting
      +
      medicSecondaryAbility - Medic's secondary ability setting
      +
      randomSkinsEnabled - whether to use random skins
      +
      useSteveSkins - whether to force Steve skins
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getSwipeDuration

      +
      public int getSwipeDuration()
      +
      Gets the swipe phase duration in seconds.
      +
      +
      Returns:
      +
      swipe duration, must be positive
      +
      +
      +
    • +
    • +
      +

      getDiscussionDuration

      +
      public int getDiscussionDuration()
      +
      Gets the discussion phase duration in seconds.
      +
      +
      Returns:
      +
      discussion duration, must be positive
      +
      +
      +
    • +
    • +
      +

      getVotingDuration

      +
      public int getVotingDuration()
      +
      Gets the voting phase duration in seconds.
      +
      +
      Returns:
      +
      voting duration, must be positive
      +
      +
      +
    • +
    • +
      +

      getSparkSecondaryAbility

      +
      @Nullable +public @Nullable String getSparkSecondaryAbility()
      +
      Gets the Spark secondary ability setting.
      +
      +
      Returns:
      +
      spark ability setting ("random", "hunter_vision", "spark_swap", "delusion")
      +
      +
      +
    • +
    • +
      +

      getMedicSecondaryAbility

      +
      @Nullable +public @Nullable String getMedicSecondaryAbility()
      +
      Gets the Medic secondary ability setting.
      +
      +
      Returns:
      +
      medic ability setting ("random", "healing_sight") or null if unset
      +
      +
      +
    • +
    • +
      +

      isRandomSkinsEnabled

      +
      public boolean isRandomSkinsEnabled()
      +
      Gets whether random skins are enabled.
      +
      +
      Returns:
      +
      true if random skins are enabled
      +
      +
      +
    • +
    • +
      +

      isUseSteveSkins

      +
      public boolean isUseSteveSkins()
      +
      Gets whether Steve skins are forced.
      +
      +
      Returns:
      +
      true if Steve skins are forced
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/MatchboxAPI.html b/.gh-pages/com/ohacd/matchbox/api/MatchboxAPI.html new file mode 100644 index 0000000..ff7b477 --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/MatchboxAPI.html @@ -0,0 +1,437 @@ + + + + +MatchboxAPI (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class MatchboxAPI

+
+
java.lang.Object +
com.ohacd.matchbox.api.MatchboxAPI
+
+
+
+
public final class MatchboxAPI +extends Object
+
Main API class for interacting with the Matchbox plugin. + +

This class provides static methods for managing game sessions, players, + and event listeners. It serves as the primary entry point for external plugins + to interact with Matchbox functionality.

+ +

All methods are thread-safe and handle null inputs gracefully.

+
+
Since:
+
0.9.5
+
+
+
+ +
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      createSessionBuilder

      +
      @NotNull +public static @NotNull SessionBuilder createSessionBuilder(@NotNull + @NotNull String name)
      +
      Creates a new session builder for the specified session name.
      +
      +
      Parameters:
      +
      name - the unique name for the session
      +
      Returns:
      +
      a new SessionBuilder instance
      +
      Throws:
      +
      IllegalArgumentException - if name is null or empty
      +
      +
      +
    • +
    • +
      +

      getSession

      +
      @NotNull +public static @NotNull Optional<ApiGameSession> getSession(@Nullable + @Nullable String name)
      +
      Gets an existing game session by name.
      +
      +
      Parameters:
      +
      name - the session name (case-insensitive)
      +
      Returns:
      +
      Optional containing the session if found, empty otherwise
      +
      +
      +
    • +
    • +
      +

      getAllSessions

      +
      @NotNull +public static @NotNull Collection<ApiGameSession> getAllSessions()
      +
      Gets all active game sessions.
      +
      +
      Returns:
      +
      a collection of all active sessions
      +
      +
      +
    • +
    • +
      +

      endSession

      +
      public static boolean endSession(@Nullable + @Nullable String name)
      +
      Ends a game session gracefully.
      +
      +
      Parameters:
      +
      name - the session name to end
      +
      Returns:
      +
      true if the session was found and ended, false otherwise
      +
      +
      +
    • +
    • +
      +

      endAllSessions

      +
      public static int endAllSessions()
      +
      Ends all active game sessions gracefully.
      +
      +
      Returns:
      +
      the number of sessions that were ended
      +
      +
      +
    • +
    • +
      +

      getPlayerSession

      +
      @NotNull +public static @NotNull Optional<ApiGameSession> getPlayerSession(@Nullable + @Nullable org.bukkit.entity.Player player)
      +
      Gets the session a player is currently in.
      +
      +
      Parameters:
      +
      player - the player to check
      +
      Returns:
      +
      Optional containing the session if the player is in one, empty otherwise
      +
      +
      +
    • +
    • +
      +

      getPlayerRole

      +
      @NotNull +public static @NotNull Optional<com.ohacd.matchbox.game.utils.Role> getPlayerRole(@Nullable + @Nullable org.bukkit.entity.Player player)
      +
      Gets the current role of a player if they are in an active game.
      +
      +
      Parameters:
      +
      player - the player to check
      +
      Returns:
      +
      Optional containing the player's role if in a game, empty otherwise
      +
      +
      +
    • +
    • +
      +

      getCurrentPhase

      +
      @NotNull +public static @NotNull Optional<com.ohacd.matchbox.game.utils.GamePhase> getCurrentPhase(@Nullable + @Nullable String sessionName)
      +
      Gets the current game phase for a session.
      +
      +
      Parameters:
      +
      sessionName - the session name
      +
      Returns:
      +
      Optional containing the current phase if session exists, empty otherwise
      +
      +
      +
    • +
    • +
      +

      addEventListener

      +
      public static void addEventListener(@NotNull + @NotNull MatchboxEventListener listener)
      +
      Adds an event listener to receive game events.
      +
      +
      Parameters:
      +
      listener - the listener to add
      +
      Throws:
      +
      IllegalArgumentException - if listener is null
      +
      +
      +
    • +
    • +
      +

      removeEventListener

      +
      public static boolean removeEventListener(@Nullable + @Nullable MatchboxEventListener listener)
      +
      Removes an event listener.
      +
      +
      Parameters:
      +
      listener - the listener to remove
      +
      Returns:
      +
      true if the listener was removed, false if it wasn't found
      +
      +
      +
    • +
    • +
      +

      getListeners

      +
      @NotNull +public static @NotNull Set<MatchboxEventListener> getListeners()
      +
      Gets all registered event listeners.
      +
      +
      Returns:
      +
      an unmodifiable copy of all registered listeners
      +
      +
      +
    • +
    • +
      +

      registerChatProcessor

      +
      @Experimental +public static boolean registerChatProcessor(@NotNull + @NotNull String sessionName, + @NotNull + @NotNull ChatProcessor processor)
      +
      Registers a custom chat processor for a specific session. + The processor will be called for all chat messages in that session.
      +
      +
      Parameters:
      +
      sessionName - the session name to register the processor for
      +
      processor - the chat processor to register
      +
      Returns:
      +
      true if the processor was registered, false if session not found
      +
      Throws:
      +
      IllegalArgumentException - if sessionName or processor is null
      +
      Since:
      +
      0.9.5
      +
      +
      +
    • +
    • +
      +

      unregisterChatProcessor

      +
      @Experimental +public static boolean unregisterChatProcessor(@NotNull + @NotNull String sessionName, + @NotNull + @NotNull ChatProcessor processor)
      +
      Unregisters a custom chat processor from a specific session.
      +
      +
      Parameters:
      +
      sessionName - the session name to unregister the processor from
      +
      processor - the chat processor to unregister
      +
      Returns:
      +
      true if the processor was unregistered, false if not found
      +
      Throws:
      +
      IllegalArgumentException - if sessionName or processor is null
      +
      Since:
      +
      0.9.5
      +
      +
      +
    • +
    • +
      +

      clearChatProcessors

      +
      @Experimental +public static boolean clearChatProcessors(@NotNull + @NotNull String sessionName)
      +
      Unregisters all custom chat processors from a specific session.
      +
      +
      Parameters:
      +
      sessionName - the session name to clear processors from
      +
      Returns:
      +
      true if processors were cleared, false if session not found
      +
      Throws:
      +
      IllegalArgumentException - if sessionName is null
      +
      Since:
      +
      0.9.5
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/MatchboxEvent.html b/.gh-pages/com/ohacd/matchbox/api/MatchboxEvent.html new file mode 100644 index 0000000..02a03be --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/MatchboxEvent.html @@ -0,0 +1,250 @@ + + + + +MatchboxEvent (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class MatchboxEvent

+
+
java.lang.Object +
com.ohacd.matchbox.api.MatchboxEvent
+
+
+
+
Direct Known Subclasses:
+
AbilityUseEvent, CureEvent, GameEndEvent, GameStartEvent, PhaseChangeEvent, PlayerEliminateEvent, PlayerJoinEvent, PlayerLeaveEvent, PlayerVoteEvent, SwipeEvent
+
+
+
public abstract class MatchboxEvent +extends Object
+
Base class for all Matchbox events. + +

All events extend this class and implement dispatch(MatchboxEventListener) + method to call the appropriate method on the listener.

+ +

This follows the visitor pattern for type-safe event handling.

+
+
Since:
+
0.9.5
+
+
+
+
    + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Modifier
    +
    Constructor
    +
    Description
    +
    protected
    + +
    +
    Creates a new MatchboxEvent with the current timestamp.
    +
    +
    protected
    +
    MatchboxEvent(long timestamp)
    +
    +
    Creates a new MatchboxEvent with a specific timestamp.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    abstract void
    +
    dispatch(@NotNull MatchboxEventListener listener)
    +
    +
    Dispatches this event to the appropriate listener method.
    +
    +
    long
    + +
    +
    Gets the timestamp when this event was created.
    +
    + + +
     
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      MatchboxEvent

      +
      protected MatchboxEvent()
      +
      Creates a new MatchboxEvent with the current timestamp.
      +
      +
    • +
    • +
      +

      MatchboxEvent

      +
      protected MatchboxEvent(long timestamp)
      +
      Creates a new MatchboxEvent with a specific timestamp.
      +
      +
      Parameters:
      +
      timestamp - the event timestamp in milliseconds
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      dispatch

      +
      public abstract void dispatch(@NotNull + @NotNull MatchboxEventListener listener)
      +
      Dispatches this event to the appropriate listener method. + +

      This method uses the visitor pattern to call the correct handler + method based on the concrete event type. Implementing classes should + call super.dispatch(listener) as the first line.

      +
      +
      Parameters:
      +
      listener - the listener to dispatch to
      +
      Throws:
      +
      IllegalArgumentException - if listener is null
      +
      +
      +
    • +
    • +
      +

      getTimestamp

      +
      public long getTimestamp()
      +
      Gets the timestamp when this event was created.
      +
      +
      Returns:
      +
      event timestamp in milliseconds since epoch
      +
      +
      +
    • +
    • +
      +

      toString

      +
      public String toString()
      +
      +
      Overrides:
      +
      toString in class Object
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/MatchboxEventListener.html b/.gh-pages/com/ohacd/matchbox/api/MatchboxEventListener.html new file mode 100644 index 0000000..6826c0d --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/MatchboxEventListener.html @@ -0,0 +1,336 @@ + + + + +MatchboxEventListener (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Interface MatchboxEventListener

+
+
+
+
public interface MatchboxEventListener
+
Interface for listening to Matchbox game events. + +

Implement this interface and register it using MatchboxAPI.addEventListener(MatchboxEventListener) + to receive notifications about game state changes, player actions, and other significant events.

+ +

All methods have default empty implementations, so you only need to override the events + you're interested in. This follows the interface segregation principle.

+ +

Example usage:

+

+ MatchboxAPI.addEventListener(new MatchboxEventListener() {
+     @Override
+     public void onGameStart(GameStartEvent event) {
+         getLogger().info("Game started in session: " + event.getSessionName());
+         // Handle game start - initialize UI, start timers, etc.
+     }
+     
+     @Override
+     public void onPlayerEliminate(PlayerEliminateEvent event) {
+         // Handle player elimination - update scores, send messages, etc.
+         Player eliminated = event.getPlayer();
+         scoreboardManager.updatePlayerScore(eliminated, -10);
+         getLogger().info("Player " + eliminated.getName() + " was eliminated");
+     }
+ });
+ 
+ +

Important Notes:

+
    +
  • All event handlers are executed on the main server thread. Avoid long-running operations.
  • +
  • Exceptions in event handlers will be caught and logged, but won't stop other listeners.
  • +
  • Event objects contain contextual information - use them instead of querying global state.
  • +
+
+
Since:
+
0.9.5
+
+
+
+ +
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      onGameStart

      +
      default void onGameStart(@NotNull + @NotNull GameStartEvent event)
      +
      Called when a new game starts.
      +
      +
      Parameters:
      +
      event - the game start event containing session information
      +
      +
      +
    • +
    • +
      +

      onPhaseChange

      +
      default void onPhaseChange(@NotNull + @NotNull PhaseChangeEvent event)
      +
      Called when a game phase changes.
      +
      +
      Parameters:
      +
      event - the phase change event containing old and new phases
      +
      +
      +
    • +
    • +
      +

      onPlayerEliminate

      +
      default void onPlayerEliminate(@NotNull + @NotNull PlayerEliminateEvent event)
      +
      Called when a player is eliminated from the game.
      +
      +
      Parameters:
      +
      event - the player elimination event containing player and elimination details
      +
      +
      +
    • +
    • +
      +

      onPlayerVote

      +
      default void onPlayerVote(@NotNull + @NotNull PlayerVoteEvent event)
      +
      Called when a player casts a vote during the voting phase.
      +
      +
      Parameters:
      +
      event - the player vote event containing voter, target, and vote details
      +
      +
      +
    • +
    • +
      +

      onAbilityUse

      +
      default void onAbilityUse(@NotNull + @NotNull AbilityUseEvent event)
      +
      Called when a player uses a special ability.
      +
      +
      Parameters:
      +
      event - the ability use event containing player, ability type, and usage details
      +
      +
      +
    • +
    • +
      +

      onGameEnd

      +
      default void onGameEnd(@NotNull + @NotNull GameEndEvent event)
      +
      Called when a game ends (either by win condition or manual termination).
      +
      +
      Parameters:
      +
      event - the game end event containing session, winner, and end reason
      +
      +
      +
    • +
    • +
      +

      onPlayerJoin

      +
      default void onPlayerJoin(@NotNull + @NotNull PlayerJoinEvent event)
      +
      Called when a player joins a game session.
      +
      +
      Parameters:
      +
      event - the player join event containing player and session information
      +
      +
      +
    • +
    • +
      +

      onPlayerLeave

      +
      default void onPlayerLeave(@NotNull + @NotNull PlayerLeaveEvent event)
      +
      Called when a player leaves a game session.
      +
      +
      Parameters:
      +
      event - the player leave event containing player, session, and leave reason
      +
      +
      +
    • +
    • +
      +

      onSwipe

      +
      default void onSwipe(@NotNull + @NotNull SwipeEvent event)
      +
      Called when a swipe action is performed.
      +
      +
      Parameters:
      +
      event - the swipe event containing attacker, target, and swipe details
      +
      +
      +
    • +
    • +
      +

      onCure

      +
      default void onCure(@NotNull + @NotNull CureEvent event)
      +
      Called when a cure action is performed.
      +
      +
      Parameters:
      +
      event - the cure event containing medic, target, and cure details
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/PhaseController.html b/.gh-pages/com/ohacd/matchbox/api/PhaseController.html new file mode 100644 index 0000000..077b436 --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/PhaseController.html @@ -0,0 +1,312 @@ + + + + +PhaseController (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class PhaseController

+
+
java.lang.Object +
com.ohacd.matchbox.api.PhaseController
+
+
+
+
public final class PhaseController +extends Object
+
Utility class for managing game phases with simplified operations. + +

This class provides a clean interface for phase control operations, + abstracting away the complexity of direct phase manipulation.

+ +

Example usage:

+

+ PhaseController controller = new PhaseController(session);
+ 
+ // Skip to next phase
+ boolean success = controller.skipToNextPhase();
+ 
+ // Force specific phase
+ success = controller.forcePhase(GamePhase.DISCUSSION);
+ 
+ // Check if phase transition is valid
+ boolean canTransition = controller.canTransitionTo(GamePhase.VOTING);
+ 
+
+
Since:
+
0.9.5
+
+
+
+
    + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    PhaseController(@NotNull com.ohacd.matchbox.game.session.GameSession session)
    +
    +
    Creates a new phase controller for the specified session.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    boolean
    +
    canTransitionTo(@NotNull com.ohacd.matchbox.game.utils.GamePhase targetPhase)
    +
    +
    Checks if transitioning to a specific phase is valid.
    +
    +
    boolean
    +
    forcePhase(@NotNull com.ohacd.matchbox.game.utils.GamePhase targetPhase)
    +
    +
    Forces the game to a specific phase.
    +
    +
    @Nullable com.ohacd.matchbox.game.utils.GamePhase
    + +
    +
    Gets the current game phase.
    +
    +
    @NotNull String
    + +
    +
    Gets a description of the current phase state.
    +
    +
    long
    + +
    +
    Gets the estimated time remaining in the current phase.
    +
    +
    boolean
    + +
    +
    Skips to the next phase in the natural progression.
    +
    + + +
     
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      PhaseController

      +
      public PhaseController(@NotNull + @NotNull com.ohacd.matchbox.game.session.GameSession session)
      +
      Creates a new phase controller for the specified session.
      +
      +
      Parameters:
      +
      session - the game session to control
      +
      Throws:
      +
      IllegalArgumentException - if session is null
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getCurrentPhase

      +
      @Nullable +public @Nullable com.ohacd.matchbox.game.utils.GamePhase getCurrentPhase()
      +
      Gets the current game phase.
      +
      +
      Returns:
      +
      the current phase, or null if not available
      +
      +
      +
    • +
    • +
      +

      skipToNextPhase

      +
      public boolean skipToNextPhase()
      +
      Skips to the next phase in the natural progression.
      +
      +
      Returns:
      +
      true if the phase was skipped successfully
      +
      +
      +
    • +
    • +
      +

      forcePhase

      +
      public boolean forcePhase(@NotNull + @NotNull com.ohacd.matchbox.game.utils.GamePhase targetPhase)
      +
      Forces the game to a specific phase.
      +
      +
      Parameters:
      +
      targetPhase - the phase to force
      +
      Returns:
      +
      true if the phase was forced successfully
      +
      +
      +
    • +
    • +
      +

      canTransitionTo

      +
      public boolean canTransitionTo(@NotNull + @NotNull com.ohacd.matchbox.game.utils.GamePhase targetPhase)
      +
      Checks if transitioning to a specific phase is valid.
      +
      +
      Parameters:
      +
      targetPhase - the phase to check
      +
      Returns:
      +
      true if the transition is valid
      +
      +
      +
    • +
    • +
      +

      getPhaseDescription

      +
      @NotNull +public @NotNull String getPhaseDescription()
      +
      Gets a description of the current phase state.
      +
      +
      Returns:
      +
      human-readable phase description
      +
      +
      +
    • +
    • +
      +

      getTimeRemaining

      +
      public long getTimeRemaining()
      +
      Gets the estimated time remaining in the current phase.
      +
      +
      Returns:
      +
      estimated seconds remaining, or -1 if not available
      +
      +
      +
    • +
    • +
      +

      toString

      +
      public String toString()
      +
      +
      Overrides:
      +
      toString in class Object
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/SessionBuilder.html b/.gh-pages/com/ohacd/matchbox/api/SessionBuilder.html new file mode 100644 index 0000000..44c810f --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/SessionBuilder.html @@ -0,0 +1,456 @@ + + + + +SessionBuilder (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class SessionBuilder

+
+
java.lang.Object +
com.ohacd.matchbox.api.SessionBuilder
+
+
+
+
public class SessionBuilder +extends Object
+
Builder class for creating and configuring game sessions. + +

Provides a fluent interface for setting up game sessions with custom configurations, + players, spawn points, and other settings.

+ +

Example usage:

+

+ // Enhanced error handling
+ SessionCreationResult result = MatchboxAPI.createSessionBuilder("arena1")
+     .withPlayers(arena.getPlayers())
+     .withSpawnPoints(arena.getSpawnPoints())
+     .withDiscussionLocation(arena.getDiscussionArea())
+     .withSeatLocations(seatMap)
+     .startWithResult();
+ 
+ if (result.isSuccess()) {
+     ApiGameSession session = result.getSession().get();
+     // Use session
+ } else {
+     logger.warning("Failed to create session: " + result.getErrorMessage());
+ }
+ 
+ // Legacy approach
+ ApiGameSession session = MatchboxAPI.createSessionBuilder("arena1")
+     .withPlayers(arena.getPlayers())
+     .withSpawnPoints(arena.getSpawnPoints())
+     .start()
+     .orElseThrow(() -> new RuntimeException("Failed to create session"));
+ 
+
+
Since:
+
0.9.5
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      SessionBuilder

      +
      public SessionBuilder(@NotNull + @NotNull String sessionName)
      +
      Creates a new session builder with the specified session name.
      +
      +
      Parameters:
      +
      sessionName - the unique name for the session
      +
      Throws:
      +
      IllegalArgumentException - if sessionName is null or empty
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      withPlayers

      +
      @NotNull +public @NotNull SessionBuilder withPlayers(@Nullable + @Nullable Collection<org.bukkit.entity.Player> players)
      +
      Sets the players for this session.
      +
      +
      Parameters:
      +
      players - the players to include in the session
      +
      Returns:
      +
      this builder instance for method chaining
      +
      +
      +
    • +
    • +
      +

      withPlayers

      +
      @NotNull +public @NotNull SessionBuilder withPlayers(@Nullable + @Nullable org.bukkit.entity.Player... players)
      +
      Sets the players for this session.
      +
      +
      Parameters:
      +
      players - the players to include in the session
      +
      Returns:
      +
      this builder instance for method chaining
      +
      +
      +
    • +
    • +
      +

      withSpawnPoints

      +
      @NotNull +public @NotNull SessionBuilder withSpawnPoints(@Nullable + @Nullable List<org.bukkit.Location> spawnPoints)
      +
      Sets the spawn points for players.
      +
      +
      Parameters:
      +
      spawnPoints - list of spawn locations
      +
      Returns:
      +
      this builder instance for method chaining
      +
      +
      +
    • +
    • +
      +

      withSpawnPoints

      +
      @NotNull +public @NotNull SessionBuilder withSpawnPoints(@Nullable + @Nullable org.bukkit.Location... spawnPoints)
      +
      Sets the spawn points for players.
      +
      +
      Parameters:
      +
      spawnPoints - array of spawn locations
      +
      Returns:
      +
      this builder instance for method chaining
      +
      +
      +
    • +
    • +
      +

      withDiscussionLocation

      +
      @NotNull +public @NotNull SessionBuilder withDiscussionLocation(@Nullable + @Nullable org.bukkit.Location discussionLocation)
      +
      Sets the discussion location for the session.
      +
      +
      Parameters:
      +
      discussionLocation - the location where discussions take place
      +
      Returns:
      +
      this builder instance for method chaining
      +
      +
      +
    • +
    • +
      +

      withSeatLocations

      +
      @NotNull +public @NotNull SessionBuilder withSeatLocations(@Nullable + @Nullable Map<Integer,org.bukkit.Location> seatLocations)
      +
      Sets the seat locations for the discussion phase.
      +
      +
      Parameters:
      +
      seatLocations - map of seat numbers to locations
      +
      Returns:
      +
      this builder instance for method chaining
      +
      +
      +
    • +
    • +
      +

      withCustomConfig

      +
      @NotNull +public @NotNull SessionBuilder withCustomConfig(@Nullable + @Nullable GameConfig gameConfig)
      +
      Sets custom game configuration for the session.
      +
      +
      Parameters:
      +
      gameConfig - the game configuration to use
      +
      Returns:
      +
      this builder instance for method chaining
      +
      +
      +
    • +
    • +
      +

      withConfig

      +
      @NotNull +public @NotNull SessionBuilder withConfig(@Nullable + @Nullable GameConfig gameConfig)
      +
      Sets custom game configuration for the session.
      +
      +
      Parameters:
      +
      gameConfig - the game configuration to use
      +
      Returns:
      +
      this builder instance for method chaining
      +
      +
      +
    • +
    • +
      +

      validate

      +
      @NotNull +public @NotNull Optional<String> validate()
      +
      Validates the current builder configuration.
      +
      +
      Returns:
      +
      Optional containing validation error, empty if valid
      +
      +
      +
    • +
    • +
      +

      start

      +
      @NotNull +public @NotNull Optional<ApiGameSession> start()
      +
      Creates and starts the game session with the configured settings.
      +
      +
      Returns:
      +
      Optional containing the created session, empty if creation failed
      +
      +
      +
    • +
    • +
      +

      createSessionOnly

      +
      @NotNull +@Experimental +public @NotNull Optional<ApiGameSession> createSessionOnly()
      +
      Creates the game session without starting the game. + This is useful for testing scenarios where you need a configured session + but don't want to trigger full game initialization.
      +
      +
      Returns:
      +
      Optional containing the created session, empty if creation failed
      +
      Since:
      +
      0.9.5 (experimental)
      +
      +
      +
    • +
    • +
      +

      startWithResult

      +
      @NotNull +public @NotNull SessionCreationResult startWithResult()
      +
      Creates and starts the game session with detailed error reporting.
      +
      +
      Returns:
      +
      SessionCreationResult containing success/failure information
      +
      +
      +
    • +
    • +
      +

      configBuilder

      +
      @NotNull +public static GameConfig.Builder configBuilder()
      +
      Creates a GameConfig builder for this session.
      +
      +
      Returns:
      +
      a new GameConfig.Builder instance
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/SessionCreationResult.ErrorType.html b/.gh-pages/com/ohacd/matchbox/api/SessionCreationResult.ErrorType.html new file mode 100644 index 0000000..bb4407c --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/SessionCreationResult.ErrorType.html @@ -0,0 +1,324 @@ + + + + +SessionCreationResult.ErrorType (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Enum Class SessionCreationResult.ErrorType

+
+
java.lang.Object +
java.lang.Enum<SessionCreationResult.ErrorType> +
com.ohacd.matchbox.api.SessionCreationResult.ErrorType
+
+
+
+
+
All Implemented Interfaces:
+
Serializable, Comparable<SessionCreationResult.ErrorType>, Constable
+
+
+
Enclosing class:
+
SessionCreationResult
+
+
+
public static enum SessionCreationResult.ErrorType +extends Enum<SessionCreationResult.ErrorType>
+
Enumeration of possible error types during session creation.
+
+
+ +
+
+
    + +
  • +
    +

    Enum Constant Details

    + +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      values

      +
      public static SessionCreationResult.ErrorType[] values()
      +
      Returns an array containing the constants of this enum class, in +the order they are declared.
      +
      +
      Returns:
      +
      an array containing the constants of this enum class, in the order they are declared
      +
      +
      +
    • +
    • +
      +

      valueOf

      +
      public static SessionCreationResult.ErrorType valueOf(String name)
      +
      Returns the enum constant of this class with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this class. (Extraneous whitespace characters are +not permitted.)
      +
      +
      Parameters:
      +
      name - the name of the enum constant to be returned.
      +
      Returns:
      +
      the enum constant with the specified name
      +
      Throws:
      +
      IllegalArgumentException - if this enum class has no constant with the specified name
      +
      NullPointerException - if the argument is null
      +
      +
      +
    • +
    • +
      +

      getDefaultMessage

      +
      public String getDefaultMessage()
      +
      Gets the default human-readable message associated with this error type.
      +
      +
      Returns:
      +
      default error message suitable for logging or display
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/SessionCreationResult.html b/.gh-pages/com/ohacd/matchbox/api/SessionCreationResult.html new file mode 100644 index 0000000..bbb2866 --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/SessionCreationResult.html @@ -0,0 +1,367 @@ + + + + +SessionCreationResult (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class SessionCreationResult

+
+
java.lang.Object +
com.ohacd.matchbox.api.SessionCreationResult
+
+
+
+
public final class SessionCreationResult +extends Object
+
Result object for session creation operations that provides detailed success/failure information. + +

This class enhances error reporting compared to simple Optional returns, + allowing developers to understand exactly why a session creation failed.

+ +

Example usage:

+

+ SessionCreationResult result = MatchboxAPI.createSessionBuilder("arena1")
+     .withPlayers(players)
+     .withSpawnPoints(spawns)
+     .startWithResult();
+ 
+ if (result.isSuccess()) {
+     ApiGameSession session = result.getSession();
+     // Use session
+ } else {
+     SessionCreationResult.ErrorType error = result.getErrorType();
+     String message = result.getErrorMessage();
+     logger.warning("Failed to create session: " + error + " - " + message);
+ }
+ 
+
+
Since:
+
0.9.5
+
+
+
+ +
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      success

      +
      @NotNull +public static @NotNull SessionCreationResult success(@NotNull + @NotNull ApiGameSession session)
      +
      Creates a successful result.
      +
      +
      Parameters:
      +
      session - the created session
      +
      Returns:
      +
      a successful result
      +
      +
      +
    • +
    • +
      +

      failure

      +
      @NotNull +public static @NotNull SessionCreationResult failure(@NotNull + @NotNull SessionCreationResult.ErrorType errorType, + @Nullable + @Nullable String errorMessage)
      +
      Creates a failure result.
      +
      +
      Parameters:
      +
      errorType - the type of error that occurred
      +
      errorMessage - detailed error message (can be null for default message)
      +
      Returns:
      +
      a failure result
      +
      +
      +
    • +
    • +
      +

      isSuccess

      +
      public boolean isSuccess()
      +
      Gets whether the session creation was successful.
      +
      +
      Returns:
      +
      true if successful, false otherwise
      +
      +
      +
    • +
    • +
      +

      isFailure

      +
      public boolean isFailure()
      +
      Gets whether the session creation failed.
      +
      +
      Returns:
      +
      true if failed, false otherwise
      +
      +
      +
    • +
    • +
      +

      getSession

      +
      @NotNull +public @NotNull Optional<ApiGameSession> getSession()
      +
      Gets the created session if successful.
      +
      +
      Returns:
      +
      Optional containing the session if successful, empty otherwise
      +
      +
      +
    • +
    • +
      +

      getErrorType

      +
      @NotNull +public @NotNull Optional<SessionCreationResult.ErrorType> getErrorType()
      +
      Gets the error type if the creation failed.
      +
      +
      Returns:
      +
      Optional containing the error type if failed, empty otherwise
      +
      +
      +
    • +
    • +
      +

      getErrorMessage

      +
      @NotNull +public @NotNull Optional<String> getErrorMessage()
      +
      Gets the error message if the creation failed.
      +
      +
      Returns:
      +
      Optional containing the error message if failed, empty otherwise
      +
      +
      +
    • +
    • +
      +

      toOptional

      +
      @Deprecated +@NotNull +public @NotNull Optional<ApiGameSession> toOptional()
      +
      Deprecated. +
      Use getSession() for more detailed information
      +
      +
      Converts this result to the legacy Optional format for backward compatibility.
      +
      +
      Returns:
      +
      Optional containing the session if successful, empty otherwise
      +
      +
      +
    • +
    • +
      +

      equals

      +
      public boolean equals(Object obj)
      +
      +
      Overrides:
      +
      equals in class Object
      +
      +
      +
    • +
    • +
      +

      hashCode

      +
      public int hashCode()
      +
      +
      Overrides:
      +
      hashCode in class Object
      +
      +
      +
    • +
    • +
      +

      toString

      +
      public String toString()
      +
      +
      Overrides:
      +
      toString in class Object
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/annotation/Experimental.html b/.gh-pages/com/ohacd/matchbox/api/annotation/Experimental.html new file mode 100644 index 0000000..1888eeb --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/annotation/Experimental.html @@ -0,0 +1,103 @@ + + + + +Experimental (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Annotation Interface Experimental

+
+
+
+
@Documented +@Retention(CLASS) +@Target({TYPE,METHOD,FIELD,PARAMETER,CONSTRUCTOR}) +public @interface Experimental
+
Marks APIs that are experimental and may change in future releases. + Use with caution; experimental APIs may be promoted to stable or removed.
+
+
Since:
+
0.9.5
+
+
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/annotation/Internal.html b/.gh-pages/com/ohacd/matchbox/api/annotation/Internal.html new file mode 100644 index 0000000..f9ecc82 --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/annotation/Internal.html @@ -0,0 +1,103 @@ + + + + +Internal (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Annotation Interface Internal

+
+
+
+ +
Marks APIs that are internal to the implementation and not intended for public consumption. + These APIs may change or be removed without notice.
+
+
Since:
+
0.9.5
+
+
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/annotation/package-summary.html b/.gh-pages/com/ohacd/matchbox/api/annotation/package-summary.html new file mode 100644 index 0000000..9aa25d4 --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/annotation/package-summary.html @@ -0,0 +1,112 @@ + + + + +com.ohacd.matchbox.api.annotation (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+
+

Package com.ohacd.matchbox.api.annotation

+
+
+
package com.ohacd.matchbox.api.annotation
+
+
    +
  • + +
  • +
  • +
    +
    Annotation Interfaces
    +
    +
    Class
    +
    Description
    + +
    +
    Marks APIs that are experimental and may change in future releases.
    +
    + +
    +
    Marks APIs that are internal to the implementation and not intended for public consumption.
    +
    +
    +
    +
  • +
+
+
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/annotation/package-tree.html b/.gh-pages/com/ohacd/matchbox/api/annotation/package-tree.html new file mode 100644 index 0000000..52d65cc --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/annotation/package-tree.html @@ -0,0 +1,68 @@ + + + + +com.ohacd.matchbox.api.annotation Class Hierarchy (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package com.ohacd.matchbox.api.annotation

+
+Package Hierarchies: + +
+

Annotation Interface Hierarchy

+ +
+
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/events/AbilityUseEvent.AbilityType.html b/.gh-pages/com/ohacd/matchbox/api/events/AbilityUseEvent.AbilityType.html new file mode 100644 index 0000000..69bfdb9 --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/events/AbilityUseEvent.AbilityType.html @@ -0,0 +1,286 @@ + + + + +AbilityUseEvent.AbilityType (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Enum Class AbilityUseEvent.AbilityType

+
+
java.lang.Object +
java.lang.Enum<AbilityUseEvent.AbilityType> +
com.ohacd.matchbox.api.events.AbilityUseEvent.AbilityType
+
+
+
+
+
All Implemented Interfaces:
+
Serializable, Comparable<AbilityUseEvent.AbilityType>, Constable
+
+
+
Enclosing class:
+
AbilityUseEvent
+
+
+
public static enum AbilityUseEvent.AbilityType +extends Enum<AbilityUseEvent.AbilityType>
+
Types of abilities that can be used.
+
+
+ +
+
+
    + +
  • +
    +

    Enum Constant Details

    + +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      values

      +
      public static AbilityUseEvent.AbilityType[] values()
      +
      Returns an array containing the constants of this enum class, in +the order they are declared.
      +
      +
      Returns:
      +
      an array containing the constants of this enum class, in the order they are declared
      +
      +
      +
    • +
    • +
      +

      valueOf

      +
      public static AbilityUseEvent.AbilityType valueOf(String name)
      +
      Returns the enum constant of this class with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this class. (Extraneous whitespace characters are +not permitted.)
      +
      +
      Parameters:
      +
      name - the name of the enum constant to be returned.
      +
      Returns:
      +
      the enum constant with the specified name
      +
      Throws:
      +
      IllegalArgumentException - if this enum class has no constant with the specified name
      +
      NullPointerException - if the argument is null
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/events/AbilityUseEvent.html b/.gh-pages/com/ohacd/matchbox/api/events/AbilityUseEvent.html new file mode 100644 index 0000000..3c69cac --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/events/AbilityUseEvent.html @@ -0,0 +1,302 @@ + + + + +AbilityUseEvent (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class AbilityUseEvent

+
+
java.lang.Object +
com.ohacd.matchbox.api.MatchboxEvent +
com.ohacd.matchbox.api.events.AbilityUseEvent
+
+
+
+
+
public class AbilityUseEvent +extends MatchboxEvent
+
Event fired when a player uses a special ability.
+
+
Since:
+
0.9.5
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      AbilityUseEvent

      +
      public AbilityUseEvent(@NotNull + @NotNull String sessionName, + @NotNull + @NotNull org.bukkit.entity.Player player, + @NotNull + @NotNull AbilityUseEvent.AbilityType ability, + @Nullable + @Nullable org.bukkit.entity.Player target)
      +
      Creates a new ability use event.
      +
      +
      Parameters:
      +
      sessionName - the session name
      +
      player - the player using the ability
      +
      ability - the type of ability used
      +
      target - the target player (may be null for self-targeted abilities)
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      dispatch

      +
      public void dispatch(@NotNull + @NotNull MatchboxEventListener listener)
      +
      Description copied from class: MatchboxEvent
      +
      Dispatches this event to the appropriate listener method. + +

      This method uses the visitor pattern to call the correct handler + method based on the concrete event type. Implementing classes should + call super.dispatch(listener) as the first line.

      +
      +
      Specified by:
      +
      dispatch in class MatchboxEvent
      +
      Parameters:
      +
      listener - the listener to dispatch to
      +
      +
      +
    • +
    • +
      +

      getSessionName

      +
      @NotNull +public @NotNull String getSessionName()
      +
      Gets the name of the session where the ability was used.
      +
      +
      Returns:
      +
      the session name
      +
      +
      +
    • +
    • +
      +

      getPlayer

      +
      @NotNull +public @NotNull org.bukkit.entity.Player getPlayer()
      +
      Gets the player who used the ability.
      +
      +
      Returns:
      +
      the player
      +
      +
      +
    • +
    • +
      +

      getAbility

      +
      @NotNull +public @NotNull AbilityUseEvent.AbilityType getAbility()
      +
      Gets the type of ability that was used.
      +
      +
      Returns:
      +
      the ability type
      +
      +
      +
    • +
    • +
      +

      getTarget

      +
      @Nullable +public @Nullable org.bukkit.entity.Player getTarget()
      +
      Gets the target player of the ability.
      +
      +
      Returns:
      +
      the target player, or null if the ability is self-targeted
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/events/CureEvent.html b/.gh-pages/com/ohacd/matchbox/api/events/CureEvent.html new file mode 100644 index 0000000..0e22225 --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/events/CureEvent.html @@ -0,0 +1,280 @@ + + + + +CureEvent (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class CureEvent

+
+
java.lang.Object +
com.ohacd.matchbox.api.MatchboxEvent +
com.ohacd.matchbox.api.events.CureEvent
+
+
+
+
+
public class CureEvent +extends MatchboxEvent
+
Event fired when a cure action is performed (Medic cures an infected player).
+
+
Since:
+
0.9.5
+
+
+
+
    + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    CureEvent(@NotNull String sessionName, + @NotNull org.bukkit.entity.Player medic, + @NotNull org.bukkit.entity.Player target, + boolean realInfection)
    +
    +
    Creates a new cure event.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    void
    +
    dispatch(@NotNull MatchboxEventListener listener)
    +
    +
    Dispatches this event to the appropriate listener method.
    +
    +
    org.bukkit.entity.Player
    + +
    +
    Gets the player who performed the cure.
    +
    + + +
    +
    Gets the name of the session where the cure occurred.
    +
    +
    org.bukkit.entity.Player
    + +
    +
    Gets the player who was cured.
    +
    +
    boolean
    + +
    +
    Gets whether the target had a real infection.
    +
    +
    +
    +
    +
    +

    Methods inherited from class com.ohacd.matchbox.api.MatchboxEvent

    +getTimestamp, toString
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      CureEvent

      +
      public CureEvent(@NotNull + @NotNull String sessionName, + @NotNull + @NotNull org.bukkit.entity.Player medic, + @NotNull + @NotNull org.bukkit.entity.Player target, + boolean realInfection)
      +
      Creates a new cure event.
      +
      +
      Parameters:
      +
      sessionName - the session name
      +
      medic - the player performing the cure
      +
      target - the player being cured
      +
      realInfection - whether the target had a real infection (false if it was delusion)
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      dispatch

      +
      public void dispatch(@NotNull + @NotNull MatchboxEventListener listener)
      +
      Description copied from class: MatchboxEvent
      +
      Dispatches this event to the appropriate listener method. + +

      This method uses the visitor pattern to call the correct handler + method based on the concrete event type. Implementing classes should + call super.dispatch(listener) as the first line.

      +
      +
      Specified by:
      +
      dispatch in class MatchboxEvent
      +
      Parameters:
      +
      listener - the listener to dispatch to
      +
      +
      +
    • +
    • +
      +

      getSessionName

      +
      public String getSessionName()
      +
      Gets the name of the session where the cure occurred.
      +
      +
      Returns:
      +
      the session name
      +
      +
      +
    • +
    • +
      +

      getMedic

      +
      public org.bukkit.entity.Player getMedic()
      +
      Gets the player who performed the cure.
      +
      +
      Returns:
      +
      the medic
      +
      +
      +
    • +
    • +
      +

      getTarget

      +
      public org.bukkit.entity.Player getTarget()
      +
      Gets the player who was cured.
      +
      +
      Returns:
      +
      the target
      +
      +
      +
    • +
    • +
      +

      isRealInfection

      +
      public boolean isRealInfection()
      +
      Gets whether the target had a real infection.
      +
      +
      Returns:
      +
      true if the target was actually infected, false if it was a delusion
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/events/GameEndEvent.EndReason.html b/.gh-pages/com/ohacd/matchbox/api/events/GameEndEvent.EndReason.html new file mode 100644 index 0000000..f1b13ab --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/events/GameEndEvent.EndReason.html @@ -0,0 +1,275 @@ + + + + +GameEndEvent.EndReason (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Enum Class GameEndEvent.EndReason

+
+
java.lang.Object +
java.lang.Enum<GameEndEvent.EndReason> +
com.ohacd.matchbox.api.events.GameEndEvent.EndReason
+
+
+
+
+
All Implemented Interfaces:
+
Serializable, Comparable<GameEndEvent.EndReason>, Constable
+
+
+
Enclosing class:
+
GameEndEvent
+
+
+
public static enum GameEndEvent.EndReason +extends Enum<GameEndEvent.EndReason>
+
Reasons why a game can end.
+
+
+ +
+
+
    + +
  • +
    +

    Enum Constant Details

    +
      +
    • +
      +

      SPARK_WIN

      +
      public static final GameEndEvent.EndReason SPARK_WIN
      +
      Spark won (all innocents eliminated)
      +
      +
    • +
    • +
      +

      INNOCENTS_WIN

      +
      public static final GameEndEvent.EndReason INNOCENTS_WIN
      +
      Innocents won (spark voted out)
      +
      +
    • +
    • +
      +

      MANUAL_END

      +
      public static final GameEndEvent.EndReason MANUAL_END
      +
      Game was ended manually by admin
      +
      +
    • +
    • +
      +

      INSUFFICIENT_PLAYERS

      +
      public static final GameEndEvent.EndReason INSUFFICIENT_PLAYERS
      +
      Game ended due to lack of players
      +
      +
    • +
    • +
      +

      OTHER

      +
      public static final GameEndEvent.EndReason OTHER
      +
      Other reasons
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      values

      +
      public static GameEndEvent.EndReason[] values()
      +
      Returns an array containing the constants of this enum class, in +the order they are declared.
      +
      +
      Returns:
      +
      an array containing the constants of this enum class, in the order they are declared
      +
      +
      +
    • +
    • +
      +

      valueOf

      +
      public static GameEndEvent.EndReason valueOf(String name)
      +
      Returns the enum constant of this class with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this class. (Extraneous whitespace characters are +not permitted.)
      +
      +
      Parameters:
      +
      name - the name of the enum constant to be returned.
      +
      Returns:
      +
      the enum constant with the specified name
      +
      Throws:
      +
      IllegalArgumentException - if this enum class has no constant with the specified name
      +
      NullPointerException - if the argument is null
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/events/GameEndEvent.html b/.gh-pages/com/ohacd/matchbox/api/events/GameEndEvent.html new file mode 100644 index 0000000..e2525ac --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/events/GameEndEvent.html @@ -0,0 +1,321 @@ + + + + +GameEndEvent (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class GameEndEvent

+
+
java.lang.Object +
com.ohacd.matchbox.api.MatchboxEvent +
com.ohacd.matchbox.api.events.GameEndEvent
+
+
+
+
+
public class GameEndEvent +extends MatchboxEvent
+
Event fired when a game ends (either by win condition or manual termination).
+
+
Since:
+
0.9.5
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GameEndEvent

      +
      public GameEndEvent(@NotNull + @NotNull String sessionName, + @NotNull + @NotNull GameEndEvent.EndReason reason, + @NotNull + @NotNull Collection<org.bukkit.entity.Player> remainingPlayers, + @NotNull + @NotNull Map<org.bukkit.entity.Player,com.ohacd.matchbox.game.utils.Role> finalRoles, + int totalRounds)
      +
      Creates a new game end event.
      +
      +
      Parameters:
      +
      sessionName - session name
      +
      reason - reason for game ending
      +
      remainingPlayers - players still in the game when it ended
      +
      finalRoles - mapping of players to their final roles
      +
      totalRounds - total number of rounds played
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      dispatch

      +
      public void dispatch(@NotNull + @NotNull MatchboxEventListener listener)
      +
      Description copied from class: MatchboxEvent
      +
      Dispatches this event to the appropriate listener method. + +

      This method uses the visitor pattern to call the correct handler + method based on the concrete event type. Implementing classes should + call super.dispatch(listener) as the first line.

      +
      +
      Specified by:
      +
      dispatch in class MatchboxEvent
      +
      Parameters:
      +
      listener - the listener to dispatch to
      +
      +
      +
    • +
    • +
      +

      getSessionName

      +
      @NotNull +public @NotNull String getSessionName()
      +
      Gets the name of the session that ended.
      +
      +
      Returns:
      +
      the session name
      +
      +
      +
    • +
    • +
      +

      getReason

      +
      @NotNull +public @NotNull GameEndEvent.EndReason getReason()
      +
      Gets the reason why the game ended.
      +
      +
      Returns:
      +
      the end reason
      +
      +
      +
    • +
    • +
      +

      getRemainingPlayers

      +
      @NotNull +public @NotNull Collection<org.bukkit.entity.Player> getRemainingPlayers()
      +
      Gets all players still in the game when it ended.
      +
      +
      Returns:
      +
      collection of remaining players
      +
      +
      +
    • +
    • +
      +

      getFinalRoles

      +
      @NotNull +public @NotNull Map<org.bukkit.entity.Player,com.ohacd.matchbox.game.utils.Role> getFinalRoles()
      +
      Gets the final roles of all players who participated.
      +
      +
      Returns:
      +
      mapping of players to their final roles
      +
      +
      +
    • +
    • +
      +

      getTotalRounds

      +
      public int getTotalRounds()
      +
      Gets the total number of rounds played.
      +
      +
      Returns:
      +
      total rounds
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/events/GameStartEvent.html b/.gh-pages/com/ohacd/matchbox/api/events/GameStartEvent.html new file mode 100644 index 0000000..c593ad0 --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/events/GameStartEvent.html @@ -0,0 +1,264 @@ + + + + +GameStartEvent (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class GameStartEvent

+
+
java.lang.Object +
com.ohacd.matchbox.api.MatchboxEvent +
com.ohacd.matchbox.api.events.GameStartEvent
+
+
+
+
+
public class GameStartEvent +extends MatchboxEvent
+
Event fired when a new game starts.
+
+
Since:
+
0.9.5
+
+
+
+
    + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    GameStartEvent(@NotNull String sessionName, + @NotNull Collection<org.bukkit.entity.Player> players, + @NotNull Map<org.bukkit.entity.Player,com.ohacd.matchbox.game.utils.Role> roleAssignments)
    +
    +
    Creates a new game start event.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    void
    +
    dispatch(@NotNull MatchboxEventListener listener)
    +
    +
    Dispatches this event to the appropriate listener method.
    +
    +
    @NotNull Collection<org.bukkit.entity.Player>
    + +
    +
    Gets all players participating in the game.
    +
    +
    @NotNull Map<org.bukkit.entity.Player,com.ohacd.matchbox.game.utils.Role>
    + +
    +
    Gets the role assignments for all players.
    +
    +
    @NotNull String
    + +
    +
    Gets the name of the session where the game started.
    +
    +
    +
    +
    +
    +

    Methods inherited from class com.ohacd.matchbox.api.MatchboxEvent

    +getTimestamp, toString
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GameStartEvent

      +
      public GameStartEvent(@NotNull + @NotNull String sessionName, + @NotNull + @NotNull Collection<org.bukkit.entity.Player> players, + @NotNull + @NotNull Map<org.bukkit.entity.Player,com.ohacd.matchbox.game.utils.Role> roleAssignments)
      +
      Creates a new game start event.
      +
      +
      Parameters:
      +
      sessionName - the session name
      +
      players - all players in the game
      +
      roleAssignments - mapping of players to their roles
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      dispatch

      +
      public void dispatch(@NotNull + @NotNull MatchboxEventListener listener)
      +
      Description copied from class: MatchboxEvent
      +
      Dispatches this event to the appropriate listener method. + +

      This method uses the visitor pattern to call the correct handler + method based on the concrete event type. Implementing classes should + call super.dispatch(listener) as the first line.

      +
      +
      Specified by:
      +
      dispatch in class MatchboxEvent
      +
      Parameters:
      +
      listener - the listener to dispatch to
      +
      +
      +
    • +
    • +
      +

      getSessionName

      +
      @NotNull +public @NotNull String getSessionName()
      +
      Gets the name of the session where the game started.
      +
      +
      Returns:
      +
      the session name
      +
      +
      +
    • +
    • +
      +

      getPlayers

      +
      @NotNull +public @NotNull Collection<org.bukkit.entity.Player> getPlayers()
      +
      Gets all players participating in the game.
      +
      +
      Returns:
      +
      collection of all players
      +
      +
      +
    • +
    • +
      +

      getRoleAssignments

      +
      @NotNull +public @NotNull Map<org.bukkit.entity.Player,com.ohacd.matchbox.game.utils.Role> getRoleAssignments()
      +
      Gets the role assignments for all players.
      +
      +
      Returns:
      +
      mapping of players to their assigned roles
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/events/PhaseChangeEvent.html b/.gh-pages/com/ohacd/matchbox/api/events/PhaseChangeEvent.html new file mode 100644 index 0000000..098e7be --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/events/PhaseChangeEvent.html @@ -0,0 +1,283 @@ + + + + +PhaseChangeEvent (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class PhaseChangeEvent

+
+
java.lang.Object +
com.ohacd.matchbox.api.MatchboxEvent +
com.ohacd.matchbox.api.events.PhaseChangeEvent
+
+
+
+
+
public class PhaseChangeEvent +extends MatchboxEvent
+
Event fired when the game phase changes.
+
+
Since:
+
0.9.5
+
+
+
+
    + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    PhaseChangeEvent(@NotNull String sessionName, + @NotNull com.ohacd.matchbox.game.utils.GamePhase fromPhase, + @NotNull com.ohacd.matchbox.game.utils.GamePhase toPhase, + int currentRound)
    +
    +
    Creates a new phase change event.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    void
    +
    dispatch(@NotNull MatchboxEventListener listener)
    +
    +
    Dispatches this event to the appropriate listener method.
    +
    +
    int
    + +
    +
    Gets the current round number.
    +
    +
    @NotNull com.ohacd.matchbox.game.utils.GamePhase
    + +
    +
    Gets the previous game phase.
    +
    +
    @NotNull String
    + +
    +
    Gets the name of the session where the phase changed.
    +
    +
    @NotNull com.ohacd.matchbox.game.utils.GamePhase
    + +
    +
    Gets the new game phase.
    +
    +
    +
    +
    +
    +

    Methods inherited from class com.ohacd.matchbox.api.MatchboxEvent

    +getTimestamp, toString
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      PhaseChangeEvent

      +
      public PhaseChangeEvent(@NotNull + @NotNull String sessionName, + @NotNull + @NotNull com.ohacd.matchbox.game.utils.GamePhase fromPhase, + @NotNull + @NotNull com.ohacd.matchbox.game.utils.GamePhase toPhase, + int currentRound)
      +
      Creates a new phase change event.
      +
      +
      Parameters:
      +
      sessionName - the session name
      +
      fromPhase - the previous phase
      +
      toPhase - the new phase
      +
      currentRound - the current round number
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      dispatch

      +
      public void dispatch(@NotNull + @NotNull MatchboxEventListener listener)
      +
      Description copied from class: MatchboxEvent
      +
      Dispatches this event to the appropriate listener method. + +

      This method uses the visitor pattern to call the correct handler + method based on the concrete event type. Implementing classes should + call super.dispatch(listener) as the first line.

      +
      +
      Specified by:
      +
      dispatch in class MatchboxEvent
      +
      Parameters:
      +
      listener - the listener to dispatch to
      +
      +
      +
    • +
    • +
      +

      getSessionName

      +
      @NotNull +public @NotNull String getSessionName()
      +
      Gets the name of the session where the phase changed.
      +
      +
      Returns:
      +
      the session name
      +
      +
      +
    • +
    • +
      +

      getFromPhase

      +
      @NotNull +public @NotNull com.ohacd.matchbox.game.utils.GamePhase getFromPhase()
      +
      Gets the previous game phase.
      +
      +
      Returns:
      +
      the previous phase
      +
      +
      +
    • +
    • +
      +

      getToPhase

      +
      @NotNull +public @NotNull com.ohacd.matchbox.game.utils.GamePhase getToPhase()
      +
      Gets the new game phase.
      +
      +
      Returns:
      +
      the new phase
      +
      +
      +
    • +
    • +
      +

      getCurrentRound

      +
      public int getCurrentRound()
      +
      Gets the current round number.
      +
      +
      Returns:
      +
      the current round
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/events/PlayerEliminateEvent.EliminationReason.html b/.gh-pages/com/ohacd/matchbox/api/events/PlayerEliminateEvent.EliminationReason.html new file mode 100644 index 0000000..b78995b --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/events/PlayerEliminateEvent.EliminationReason.html @@ -0,0 +1,275 @@ + + + + +PlayerEliminateEvent.EliminationReason (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Enum Class PlayerEliminateEvent.EliminationReason

+
+
java.lang.Object +
java.lang.Enum<PlayerEliminateEvent.EliminationReason> +
com.ohacd.matchbox.api.events.PlayerEliminateEvent.EliminationReason
+
+
+
+
+
All Implemented Interfaces:
+
Serializable, Comparable<PlayerEliminateEvent.EliminationReason>, Constable
+
+
+
Enclosing class:
+
PlayerEliminateEvent
+
+
+
public static enum PlayerEliminateEvent.EliminationReason +extends Enum<PlayerEliminateEvent.EliminationReason>
+
Reasons why a player can be eliminated.
+
+
+ +
+
+ +
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/events/PlayerEliminateEvent.html b/.gh-pages/com/ohacd/matchbox/api/events/PlayerEliminateEvent.html new file mode 100644 index 0000000..638faaa --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/events/PlayerEliminateEvent.html @@ -0,0 +1,337 @@ + + + + +PlayerEliminateEvent (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class PlayerEliminateEvent

+
+
java.lang.Object +
com.ohacd.matchbox.api.MatchboxEvent +
com.ohacd.matchbox.api.events.PlayerEliminateEvent
+
+
+
+
+
public class PlayerEliminateEvent +extends MatchboxEvent
+
Event fired when a player is eliminated from the game.
+
+
Since:
+
0.9.5
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      PlayerEliminateEvent

      +
      public PlayerEliminateEvent(String sessionName, + org.bukkit.entity.Player eliminatedPlayer, + com.ohacd.matchbox.game.utils.Role role, + PlayerEliminateEvent.EliminationReason reason)
      +
      Creates a new player elimination event.
      +
      +
      Parameters:
      +
      sessionName - the session where elimination occurred
      +
      eliminatedPlayer - the player who was eliminated
      +
      role - the role of the eliminated player
      +
      reason - the reason for elimination
      +
      +
      +
    • +
    • +
      +

      PlayerEliminateEvent

      +
      public PlayerEliminateEvent(String sessionName, + org.bukkit.entity.Player eliminatedPlayer, + com.ohacd.matchbox.game.utils.Role role, + PlayerEliminateEvent.EliminationReason reason, + long timestamp)
      +
      Creates a new player elimination event with explicit timestamp.
      +
      +
      Parameters:
      +
      sessionName - the session where elimination occurred
      +
      eliminatedPlayer - the player who was eliminated
      +
      role - the role of the eliminated player
      +
      reason - the reason for elimination
      +
      timestamp - epoch millis when the event occurred
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      dispatch

      +
      public void dispatch(MatchboxEventListener listener)
      +
      Description copied from class: MatchboxEvent
      +
      Dispatches this event to the appropriate listener method. + +

      This method uses the visitor pattern to call the correct handler + method based on the concrete event type. Implementing classes should + call super.dispatch(listener) as the first line.

      +
      +
      Specified by:
      +
      dispatch in class MatchboxEvent
      +
      Parameters:
      +
      listener - the listener to dispatch to
      +
      +
      +
    • +
    • +
      +

      getSessionName

      +
      @NotNull +public @NotNull String getSessionName()
      +
      Gets the name of the session where the elimination occurred.
      +
      +
      Returns:
      +
      the session name
      +
      +
      +
    • +
    • +
      +

      getPlayer

      +
      @NotNull +public @NotNull org.bukkit.entity.Player getPlayer()
      +
      Gets the player who was eliminated.
      +
      +
      Returns:
      +
      the eliminated player
      +
      +
      +
    • +
    • +
      +

      getRole

      +
      @NotNull +public @NotNull com.ohacd.matchbox.game.utils.Role getRole()
      +
      Gets the role of the eliminated player.
      +
      +
      Returns:
      +
      the player's role
      +
      +
      +
    • +
    • +
      +

      getReason

      +
      @NotNull +public @NotNull PlayerEliminateEvent.EliminationReason getReason()
      +
      Gets the reason for the elimination.
      +
      +
      Returns:
      +
      the elimination reason
      +
      +
      +
    • +
    • +
      +

      toString

      +
      public String toString()
      +
      +
      Overrides:
      +
      toString in class MatchboxEvent
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/events/PlayerJoinEvent.html b/.gh-pages/com/ohacd/matchbox/api/events/PlayerJoinEvent.html new file mode 100644 index 0000000..6723cc5 --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/events/PlayerJoinEvent.html @@ -0,0 +1,243 @@ + + + + +PlayerJoinEvent (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class PlayerJoinEvent

+
+
java.lang.Object +
com.ohacd.matchbox.api.MatchboxEvent +
com.ohacd.matchbox.api.events.PlayerJoinEvent
+
+
+
+
+
public class PlayerJoinEvent +extends MatchboxEvent
+
Event fired when a player joins a game session.
+
+
Since:
+
0.9.5
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      PlayerJoinEvent

      +
      public PlayerJoinEvent(@NotNull + @NotNull String sessionName, + @NotNull + @NotNull org.bukkit.entity.Player player)
      +
      Creates a new player join event.
      +
      +
      Parameters:
      +
      sessionName - the session name
      +
      player - the player who joined
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      dispatch

      +
      public void dispatch(@NotNull + @NotNull MatchboxEventListener listener)
      +
      Description copied from class: MatchboxEvent
      +
      Dispatches this event to the appropriate listener method. + +

      This method uses the visitor pattern to call the correct handler + method based on the concrete event type. Implementing classes should + call super.dispatch(listener) as the first line.

      +
      +
      Specified by:
      +
      dispatch in class MatchboxEvent
      +
      Parameters:
      +
      listener - the listener to dispatch to
      +
      +
      +
    • +
    • +
      +

      getSessionName

      +
      @NotNull +public @NotNull String getSessionName()
      +
      Gets the name of the session the player joined.
      +
      +
      Returns:
      +
      the session name
      +
      +
      +
    • +
    • +
      +

      getPlayer

      +
      @NotNull +public @NotNull org.bukkit.entity.Player getPlayer()
      +
      Gets the player who joined the session.
      +
      +
      Returns:
      +
      the player
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/events/PlayerLeaveEvent.LeaveReason.html b/.gh-pages/com/ohacd/matchbox/api/events/PlayerLeaveEvent.LeaveReason.html new file mode 100644 index 0000000..c540dbe --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/events/PlayerLeaveEvent.LeaveReason.html @@ -0,0 +1,275 @@ + + + + +PlayerLeaveEvent.LeaveReason (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Enum Class PlayerLeaveEvent.LeaveReason

+
+
java.lang.Object +
java.lang.Enum<PlayerLeaveEvent.LeaveReason> +
com.ohacd.matchbox.api.events.PlayerLeaveEvent.LeaveReason
+
+
+
+
+
All Implemented Interfaces:
+
Serializable, Comparable<PlayerLeaveEvent.LeaveReason>, Constable
+
+
+
Enclosing class:
+
PlayerLeaveEvent
+
+
+
public static enum PlayerLeaveEvent.LeaveReason +extends Enum<PlayerLeaveEvent.LeaveReason>
+
Reasons why a player can leave a session.
+
+
+ +
+
+
    + +
  • +
    +

    Enum Constant Details

    + +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      values

      +
      public static PlayerLeaveEvent.LeaveReason[] values()
      +
      Returns an array containing the constants of this enum class, in +the order they are declared.
      +
      +
      Returns:
      +
      an array containing the constants of this enum class, in the order they are declared
      +
      +
      +
    • +
    • +
      +

      valueOf

      +
      public static PlayerLeaveEvent.LeaveReason valueOf(String name)
      +
      Returns the enum constant of this class with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this class. (Extraneous whitespace characters are +not permitted.)
      +
      +
      Parameters:
      +
      name - the name of the enum constant to be returned.
      +
      Returns:
      +
      the enum constant with the specified name
      +
      Throws:
      +
      IllegalArgumentException - if this enum class has no constant with the specified name
      +
      NullPointerException - if the argument is null
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/events/PlayerLeaveEvent.html b/.gh-pages/com/ohacd/matchbox/api/events/PlayerLeaveEvent.html new file mode 100644 index 0000000..a36c4fb --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/events/PlayerLeaveEvent.html @@ -0,0 +1,281 @@ + + + + +PlayerLeaveEvent (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class PlayerLeaveEvent

+
+
java.lang.Object +
com.ohacd.matchbox.api.MatchboxEvent +
com.ohacd.matchbox.api.events.PlayerLeaveEvent
+
+
+
+
+
public class PlayerLeaveEvent +extends MatchboxEvent
+
Event fired when a player leaves a game session.
+
+
Since:
+
0.9.5
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      PlayerLeaveEvent

      +
      public PlayerLeaveEvent(@NotNull + @NotNull String sessionName, + @NotNull + @NotNull org.bukkit.entity.Player player, + @NotNull + @NotNull PlayerLeaveEvent.LeaveReason reason)
      +
      Creates a new player leave event.
      +
      +
      Parameters:
      +
      sessionName - the session name
      +
      player - the player who left
      +
      reason - the reason for leaving
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      dispatch

      +
      public void dispatch(@NotNull + @NotNull MatchboxEventListener listener)
      +
      Description copied from class: MatchboxEvent
      +
      Dispatches this event to the appropriate listener method. + +

      This method uses the visitor pattern to call the correct handler + method based on the concrete event type. Implementing classes should + call super.dispatch(listener) as the first line.

      +
      +
      Specified by:
      +
      dispatch in class MatchboxEvent
      +
      Parameters:
      +
      listener - the listener to dispatch to
      +
      +
      +
    • +
    • +
      +

      getSessionName

      +
      @NotNull +public @NotNull String getSessionName()
      +
      Gets the name of the session the player left.
      +
      +
      Returns:
      +
      the session name
      +
      +
      +
    • +
    • +
      +

      getPlayer

      +
      @NotNull +public @NotNull org.bukkit.entity.Player getPlayer()
      +
      Gets the player who left the session.
      +
      +
      Returns:
      +
      the player
      +
      +
      +
    • +
    • +
      +

      getReason

      +
      @NotNull +public @NotNull PlayerLeaveEvent.LeaveReason getReason()
      +
      Gets the reason why the player left.
      +
      +
      Returns:
      +
      the leave reason
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/events/PlayerVoteEvent.html b/.gh-pages/com/ohacd/matchbox/api/events/PlayerVoteEvent.html new file mode 100644 index 0000000..a67c028 --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/events/PlayerVoteEvent.html @@ -0,0 +1,264 @@ + + + + +PlayerVoteEvent (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class PlayerVoteEvent

+
+
java.lang.Object +
com.ohacd.matchbox.api.MatchboxEvent +
com.ohacd.matchbox.api.events.PlayerVoteEvent
+
+
+
+
+
public class PlayerVoteEvent +extends MatchboxEvent
+
Event fired when a player casts a vote during the voting phase.
+
+
Since:
+
0.9.5
+
+
+
+
    + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    PlayerVoteEvent(@NotNull String sessionName, + @NotNull org.bukkit.entity.Player voter, + @NotNull org.bukkit.entity.Player target)
    +
    +
    Creates a new player vote event.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    void
    +
    dispatch(@NotNull MatchboxEventListener listener)
    +
    +
    Dispatches this event to the appropriate listener method.
    +
    +
    @NotNull String
    + +
    +
    Gets the name of the session where the vote occurred.
    +
    +
    @NotNull org.bukkit.entity.Player
    + +
    +
    Gets the player who was voted for.
    +
    +
    @NotNull org.bukkit.entity.Player
    + +
    +
    Gets the player who cast the vote.
    +
    +
    +
    +
    +
    +

    Methods inherited from class com.ohacd.matchbox.api.MatchboxEvent

    +getTimestamp, toString
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      PlayerVoteEvent

      +
      public PlayerVoteEvent(@NotNull + @NotNull String sessionName, + @NotNull + @NotNull org.bukkit.entity.Player voter, + @NotNull + @NotNull org.bukkit.entity.Player target)
      +
      Creates a new player vote event.
      +
      +
      Parameters:
      +
      sessionName - the session name
      +
      voter - the player who voted
      +
      target - the player who was voted for
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      dispatch

      +
      public void dispatch(@NotNull + @NotNull MatchboxEventListener listener)
      +
      Description copied from class: MatchboxEvent
      +
      Dispatches this event to the appropriate listener method. + +

      This method uses the visitor pattern to call the correct handler + method based on the concrete event type. Implementing classes should + call super.dispatch(listener) as the first line.

      +
      +
      Specified by:
      +
      dispatch in class MatchboxEvent
      +
      Parameters:
      +
      listener - the listener to dispatch to
      +
      +
      +
    • +
    • +
      +

      getSessionName

      +
      @NotNull +public @NotNull String getSessionName()
      +
      Gets the name of the session where the vote occurred.
      +
      +
      Returns:
      +
      the session name
      +
      +
      +
    • +
    • +
      +

      getVoter

      +
      @NotNull +public @NotNull org.bukkit.entity.Player getVoter()
      +
      Gets the player who cast the vote.
      +
      +
      Returns:
      +
      the voter
      +
      +
      +
    • +
    • +
      +

      getTarget

      +
      @NotNull +public @NotNull org.bukkit.entity.Player getTarget()
      +
      Gets the player who was voted for.
      +
      +
      Returns:
      +
      the voted target
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/events/SwipeEvent.html b/.gh-pages/com/ohacd/matchbox/api/events/SwipeEvent.html new file mode 100644 index 0000000..6fb9275 --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/events/SwipeEvent.html @@ -0,0 +1,283 @@ + + + + +SwipeEvent (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class SwipeEvent

+
+
java.lang.Object +
com.ohacd.matchbox.api.MatchboxEvent +
com.ohacd.matchbox.api.events.SwipeEvent
+
+
+
+
+
public class SwipeEvent +extends MatchboxEvent
+
Event fired when the swipe action is performed (Spark attacks another player).
+
+
Since:
+
0.9.5
+
+
+
+
    + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    SwipeEvent(@NotNull String sessionName, + @NotNull org.bukkit.entity.Player attacker, + @NotNull org.bukkit.entity.Player victim, + boolean successful)
    +
    +
    Creates a new swipe event.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    void
    +
    dispatch(@NotNull MatchboxEventListener listener)
    +
    +
    Dispatches this event to the appropriate listener method.
    +
    +
    @NotNull org.bukkit.entity.Player
    + +
    +
    Gets the player who performed the swipe attack.
    +
    +
    @NotNull String
    + +
    +
    Gets the name of the session where the swipe occurred.
    +
    +
    @NotNull org.bukkit.entity.Player
    + +
    +
    Gets the player who was attacked.
    +
    +
    boolean
    + +
    +
    Gets whether the swipe was successful.
    +
    +
    +
    +
    +
    +

    Methods inherited from class com.ohacd.matchbox.api.MatchboxEvent

    +getTimestamp, toString
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      SwipeEvent

      +
      public SwipeEvent(@NotNull + @NotNull String sessionName, + @NotNull + @NotNull org.bukkit.entity.Player attacker, + @NotNull + @NotNull org.bukkit.entity.Player victim, + boolean successful)
      +
      Creates a new swipe event.
      +
      +
      Parameters:
      +
      sessionName - the session name
      +
      attacker - the player performing the swipe (should be Spark)
      +
      victim - the player being attacked
      +
      successful - whether the swipe was successful (not blocked/cured)
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      dispatch

      +
      public void dispatch(@NotNull + @NotNull MatchboxEventListener listener)
      +
      Description copied from class: MatchboxEvent
      +
      Dispatches this event to the appropriate listener method. + +

      This method uses the visitor pattern to call the correct handler + method based on the concrete event type. Implementing classes should + call super.dispatch(listener) as the first line.

      +
      +
      Specified by:
      +
      dispatch in class MatchboxEvent
      +
      Parameters:
      +
      listener - the listener to dispatch to
      +
      +
      +
    • +
    • +
      +

      getSessionName

      +
      @NotNull +public @NotNull String getSessionName()
      +
      Gets the name of the session where the swipe occurred.
      +
      +
      Returns:
      +
      the session name
      +
      +
      +
    • +
    • +
      +

      getAttacker

      +
      @NotNull +public @NotNull org.bukkit.entity.Player getAttacker()
      +
      Gets the player who performed the swipe attack.
      +
      +
      Returns:
      +
      the attacker
      +
      +
      +
    • +
    • +
      +

      getVictim

      +
      @NotNull +public @NotNull org.bukkit.entity.Player getVictim()
      +
      Gets the player who was attacked.
      +
      +
      Returns:
      +
      the victim
      +
      +
      +
    • +
    • +
      +

      isSuccessful

      +
      public boolean isSuccessful()
      +
      Gets whether the swipe was successful.
      +
      +
      Returns:
      +
      true if the swipe infected the target, false if it was blocked or cured
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/events/package-summary.html b/.gh-pages/com/ohacd/matchbox/api/events/package-summary.html new file mode 100644 index 0000000..5a2bc1f --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/events/package-summary.html @@ -0,0 +1,162 @@ + + + + +com.ohacd.matchbox.api.events (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+
+

Package com.ohacd.matchbox.api.events

+
+
+
package com.ohacd.matchbox.api.events
+
+ +
+
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/events/package-tree.html b/.gh-pages/com/ohacd/matchbox/api/events/package-tree.html new file mode 100644 index 0000000..29f39b8 --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/events/package-tree.html @@ -0,0 +1,101 @@ + + + + +com.ohacd.matchbox.api.events Class Hierarchy (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package com.ohacd.matchbox.api.events

+
+Package Hierarchies: + +
+

Class Hierarchy

+ +
+
+

Enum Class Hierarchy

+ +
+
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/package-summary.html b/.gh-pages/com/ohacd/matchbox/api/package-summary.html new file mode 100644 index 0000000..e32805f --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/package-summary.html @@ -0,0 +1,189 @@ + + + + +com.ohacd.matchbox.api (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+
+

Package com.ohacd.matchbox.api

+
+
+
package com.ohacd.matchbox.api
+
+
Public API for Matchbox. + +

API policy: +

    +
  • Use JetBrains annotations (`@NotNull` / `@Nullable`) for nullability on all public API surfaces.
  • +
  • Use Javadoc `@since` on public classes and when introducing new public methods.
  • +
  • Use `@Deprecated` (and Javadoc `@deprecated`) when removing or replacing behavior; supply a replacement if available.
  • +
  • Use `@com.ohacd.matchbox.api.annotation.Experimental` for unstable APIs and `@com.ohacd.matchbox.api.annotation.Internal` for internal-only APIs.
  • +
+ +

This package contains the public-facing API types and should remain stable across patch releases where possible.

+
+
Since:
+
0.9.5
+
+
+
+ +
+
+
+
+ + diff --git a/.gh-pages/com/ohacd/matchbox/api/package-tree.html b/.gh-pages/com/ohacd/matchbox/api/package-tree.html new file mode 100644 index 0000000..277a8ad --- /dev/null +++ b/.gh-pages/com/ohacd/matchbox/api/package-tree.html @@ -0,0 +1,118 @@ + + + + +com.ohacd.matchbox.api Class Hierarchy (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package com.ohacd.matchbox.api

+
+Package Hierarchies: + +
+

Class Hierarchy

+ +
+
+

Interface Hierarchy

+ +
+
+

Enum Class Hierarchy

+ +
+
+

Record Class Hierarchy

+ +
+
+
+
+ + diff --git a/.gh-pages/copy.svg b/.gh-pages/copy.svg new file mode 100644 index 0000000..d435f6c --- /dev/null +++ b/.gh-pages/copy.svg @@ -0,0 +1,33 @@ + + + + + + + + diff --git a/.gh-pages/deprecated-list.html b/.gh-pages/deprecated-list.html new file mode 100644 index 0000000..bc95016 --- /dev/null +++ b/.gh-pages/deprecated-list.html @@ -0,0 +1,102 @@ + + + + +Deprecated List (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+
+

Deprecated API

+
+

Contents

+ + + +
+
+
+ + diff --git a/.gh-pages/element-list b/.gh-pages/element-list new file mode 100644 index 0000000..51c2906 --- /dev/null +++ b/.gh-pages/element-list @@ -0,0 +1,3 @@ +com.ohacd.matchbox.api +com.ohacd.matchbox.api.annotation +com.ohacd.matchbox.api.events diff --git a/.gh-pages/help-doc.html b/.gh-pages/help-doc.html new file mode 100644 index 0000000..48c3dc3 --- /dev/null +++ b/.gh-pages/help-doc.html @@ -0,0 +1,188 @@ + + + + +API Help (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+

JavaDoc Help

+ +
+
+

Navigation

+Starting from the Overview page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The Index and Search box allow you to navigate to specific declarations and summary pages, including: All Packages, All Classes and Interfaces + +
+
+
+

Kinds of Pages

+The following sections describe the different kinds of pages in this collection. +
+

Overview

+

The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

+
+
+

Package

+

Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain the following categories:

+
    +
  • Interfaces
  • +
  • Classes
  • +
  • Enum Classes
  • +
  • Exception Classes
  • +
  • Annotation Interfaces
  • +
+
+
+

Class or Interface

+

Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a declaration and description, member summary tables, and detailed member descriptions. Entries in each of these sections are omitted if they are empty or not applicable.

+
    +
  • Class Inheritance Diagram
  • +
  • Direct Subclasses
  • +
  • All Known Subinterfaces
  • +
  • All Known Implementing Classes
  • +
  • Class or Interface Declaration
  • +
  • Class or Interface Description
  • +
+
+
    +
  • Nested Class Summary
  • +
  • Enum Constant Summary
  • +
  • Field Summary
  • +
  • Property Summary
  • +
  • Constructor Summary
  • +
  • Method Summary
  • +
  • Required Element Summary
  • +
  • Optional Element Summary
  • +
+
+
    +
  • Enum Constant Details
  • +
  • Field Details
  • +
  • Property Details
  • +
  • Constructor Details
  • +
  • Method Details
  • +
  • Element Details
  • +
+

Note: Annotation interfaces have required and optional elements, but not methods. Only enum classes have enum constants. The components of a record class are displayed as part of the declaration of the record class. Properties are a feature of JavaFX.

+

The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

+
+
+

Other Files

+

Packages and modules may contain pages with additional information related to the declarations nearby.

+
+
+

Tree (Class Hierarchy)

+

There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with java.lang.Object. Interfaces do not inherit from java.lang.Object.

+
    +
  • When viewing the Overview page, clicking on TREE displays the hierarchy for all packages.
  • +
  • When viewing a particular package, class or interface page, clicking on TREE displays the hierarchy for only that package.
  • +
+
+
+

Deprecated API

+

The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to shortcomings, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.

+
+
+

All Packages

+

The All Packages page contains an alphabetic index of all packages contained in the documentation.

+
+
+

All Classes and Interfaces

+

The All Classes and Interfaces page contains an alphabetic index of all classes and interfaces contained in the documentation, including annotation interfaces, enum classes, and record classes.

+
+
+

Index

+

The Index contains an alphabetic index of all classes, interfaces, constructors, methods, and fields in the documentation, as well as summary pages such as All Packages, All Classes and Interfaces.

+
+
+
+This help file applies to API documentation generated by the standard doclet.
+
+
+ + diff --git a/.gh-pages/index-all.html b/.gh-pages/index-all.html new file mode 100644 index 0000000..5b94c7f --- /dev/null +++ b/.gh-pages/index-all.html @@ -0,0 +1,1234 @@ + + + + +Index (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I K L M N O P R S T U V W 
All Classes and Interfaces|All Packages +

A

+
+
AbilityUseEvent - Class in com.ohacd.matchbox.api.events
+
+
Event fired when a player uses a special ability.
+
+
AbilityUseEvent(String, Player, AbilityUseEvent.AbilityType, Player) - Constructor for class com.ohacd.matchbox.api.events.AbilityUseEvent
+
+
Creates a new ability use event.
+
+
AbilityUseEvent.AbilityType - Enum Class in com.ohacd.matchbox.api.events
+
+
Types of abilities that can be used.
+
+
addEventListener(MatchboxEventListener) - Static method in class com.ohacd.matchbox.api.MatchboxAPI
+
+
Adds an event listener to receive game events.
+
+
addPlayer(Player) - Method in class com.ohacd.matchbox.api.ApiGameSession
+
+
Adds a player to this session.
+
+
allow(ChatMessage) - Static method in record class com.ohacd.matchbox.api.ChatProcessor.ChatProcessingResult
+
+
Creates an ALLOW result with the original message.
+
+
ALLOW - Enum constant in enum class com.ohacd.matchbox.api.ChatResult
+
+
Allow the message to proceed through the normal routing.
+
+
allowModified(ChatMessage) - Static method in record class com.ohacd.matchbox.api.ChatProcessor.ChatProcessingResult
+
+
Creates an ALLOW result with a modified message.
+
+
ApiGameSession - Class in com.ohacd.matchbox.api
+
+
API wrapper for GameSession that provides a clean interface for external integration.
+
+
ApiGameSession(GameSession) - Constructor for class com.ohacd.matchbox.api.ApiGameSession
+
+
Creates a new API game session wrapper.
+
+
ApiValidationHelper - Class in com.ohacd.matchbox.api
+
+
Utility class for validating common API inputs and providing helpful error messages.
+
+
ApiValidationHelper.ValidationResult - Class in com.ohacd.matchbox.api
+
+
Simple result class for validation operations.
+
+
+

B

+
+
build() - Method in class com.ohacd.matchbox.api.GameConfig.Builder
+
+
Builds the GameConfig instance.
+
+
Builder() - Constructor for class com.ohacd.matchbox.api.GameConfig.Builder
+
+
Creates a new builder with default values.
+
+
+

C

+
+
cancel(ChatMessage) - Static method in record class com.ohacd.matchbox.api.ChatProcessor.ChatProcessingResult
+
+
Creates a CANCEL result.
+
+
CANCEL - Enum constant in enum class com.ohacd.matchbox.api.ChatResult
+
+
Cancel the message entirely - prevents any further processing.
+
+
canTransitionTo(GamePhase) - Method in class com.ohacd.matchbox.api.PhaseController
+
+
Checks if transitioning to a specific phase is valid.
+
+
channel() - Method in record class com.ohacd.matchbox.api.ChatMessage
+
+
Returns the value of the channel record component.
+
+
ChatChannel - Enum Class in com.ohacd.matchbox.api
+
+
Represents different chat channels in the Matchbox chat system.
+
+
ChatMessage - Record Class in com.ohacd.matchbox.api
+
+
Immutable representation of a chat message with all metadata needed for routing.
+
+
ChatMessage(Component, Component, Player, ChatChannel, String, boolean) - Constructor for record class com.ohacd.matchbox.api.ChatMessage
+
+
Creates a new ChatMessage with the current timestamp.
+
+
ChatMessage(Component, Component, Player, UUID, ChatChannel, String, boolean, Instant) - Constructor for record class com.ohacd.matchbox.api.ChatMessage
+
+
Creates an instance of a ChatMessage record class.
+
+
ChatProcessingResult(ChatResult, ChatMessage) - Constructor for record class com.ohacd.matchbox.api.ChatProcessor.ChatProcessingResult
+
+
Creates an instance of a ChatProcessingResult record class.
+
+
ChatProcessor - Interface in com.ohacd.matchbox.api
+
+
Interface for custom chat processors that can modify, filter, or reroute chat messages.
+
+
ChatProcessor.ChatProcessingResult - Record Class in com.ohacd.matchbox.api
+
+
Result of chat processing with optional modified message.
+
+
ChatResult - Enum Class in com.ohacd.matchbox.api
+
+
Result of processing a chat message through the pipeline.
+
+
clearChatProcessors(String) - Static method in class com.ohacd.matchbox.api.MatchboxAPI
+
+
Unregisters all custom chat processors from a specific session.
+
+
com.ohacd.matchbox.api - package com.ohacd.matchbox.api
+
+
Public API for Matchbox.
+
+
com.ohacd.matchbox.api.annotation - package com.ohacd.matchbox.api.annotation
+
 
+
com.ohacd.matchbox.api.events - package com.ohacd.matchbox.api.events
+
 
+
configBuilder() - Static method in class com.ohacd.matchbox.api.SessionBuilder
+
+
Creates a GameConfig builder for this session.
+
+
createSessionBuilder(String) - Static method in class com.ohacd.matchbox.api.MatchboxAPI
+
+
Creates a new session builder for the specified session name.
+
+
createSessionOnly() - Method in class com.ohacd.matchbox.api.SessionBuilder
+
+
Creates the game session without starting the game.
+
+
CURE - Enum constant in enum class com.ohacd.matchbox.api.events.AbilityUseEvent.AbilityType
+
+
Medic cures an infected player
+
+
CureEvent - Class in com.ohacd.matchbox.api.events
+
+
Event fired when a cure action is performed (Medic cures an infected player).
+
+
CureEvent(String, Player, Player, boolean) - Constructor for class com.ohacd.matchbox.api.events.CureEvent
+
+
Creates a new cure event.
+
+
+

D

+
+
DELUSION - Enum constant in enum class com.ohacd.matchbox.api.events.AbilityUseEvent.AbilityType
+
+
Spark causes delusion (fake infection) on a player
+
+
deny(ChatMessage) - Static method in record class com.ohacd.matchbox.api.ChatProcessor.ChatProcessingResult
+
+
Creates a DENY result.
+
+
DENY - Enum constant in enum class com.ohacd.matchbox.api.ChatResult
+
+
Deny the message - it will not be sent to any recipients.
+
+
DISCONNECTED - Enum constant in enum class com.ohacd.matchbox.api.events.PlayerEliminateEvent.EliminationReason
+
+
Player was disconnected
+
+
DISCONNECTED - Enum constant in enum class com.ohacd.matchbox.api.events.PlayerLeaveEvent.LeaveReason
+
+
Player disconnected from the server
+
+
discussionDuration(int) - Method in class com.ohacd.matchbox.api.GameConfig.Builder
+
+
Sets the discussion phase duration.
+
+
dispatch(MatchboxEventListener) - Method in class com.ohacd.matchbox.api.events.AbilityUseEvent
+
 
+
dispatch(MatchboxEventListener) - Method in class com.ohacd.matchbox.api.events.CureEvent
+
 
+
dispatch(MatchboxEventListener) - Method in class com.ohacd.matchbox.api.events.GameEndEvent
+
 
+
dispatch(MatchboxEventListener) - Method in class com.ohacd.matchbox.api.events.GameStartEvent
+
 
+
dispatch(MatchboxEventListener) - Method in class com.ohacd.matchbox.api.events.PhaseChangeEvent
+
 
+
dispatch(MatchboxEventListener) - Method in class com.ohacd.matchbox.api.events.PlayerJoinEvent
+
 
+
dispatch(MatchboxEventListener) - Method in class com.ohacd.matchbox.api.events.PlayerLeaveEvent
+
 
+
dispatch(MatchboxEventListener) - Method in class com.ohacd.matchbox.api.events.PlayerVoteEvent
+
 
+
dispatch(MatchboxEventListener) - Method in class com.ohacd.matchbox.api.events.SwipeEvent
+
 
+
dispatch(MatchboxEventListener) - Method in class com.ohacd.matchbox.api.MatchboxEvent
+
+
Dispatches this event to the appropriate listener method.
+
+
dispatch(MatchboxEventListener) - Method in class com.ohacd.matchbox.api.events.PlayerEliminateEvent
+
 
+
+

E

+
+
ELIMINATED - Enum constant in enum class com.ohacd.matchbox.api.events.PlayerLeaveEvent.LeaveReason
+
+
Player was eliminated from the game
+
+
endAllSessions() - Static method in class com.ohacd.matchbox.api.MatchboxAPI
+
+
Ends all active game sessions gracefully.
+
+
endGame() - Method in class com.ohacd.matchbox.api.ApiGameSession
+
+
Ends the game for this session.
+
+
endSession(String) - Static method in class com.ohacd.matchbox.api.MatchboxAPI
+
+
Ends a game session gracefully.
+
+
equals(Object) - Method in class com.ohacd.matchbox.api.ApiGameSession
+
 
+
equals(Object) - Method in record class com.ohacd.matchbox.api.ChatMessage
+
+
Indicates whether some other object is "equal to" this one.
+
+
equals(Object) - Method in record class com.ohacd.matchbox.api.ChatProcessor.ChatProcessingResult
+
+
Indicates whether some other object is "equal to" this one.
+
+
equals(Object) - Method in class com.ohacd.matchbox.api.SessionCreationResult
+
 
+
error(String) - Static method in class com.ohacd.matchbox.api.ApiValidationHelper.ValidationResult
+
+
Creates an error validation result.
+
+
Experimental - Annotation Interface in com.ohacd.matchbox.api.annotation
+
+
Marks APIs that are experimental and may change in future releases.
+
+
+

F

+
+
failure(SessionCreationResult.ErrorType, String) - Static method in class com.ohacd.matchbox.api.SessionCreationResult
+
+
Creates a failure result.
+
+
forcePhase(GamePhase) - Method in class com.ohacd.matchbox.api.PhaseController
+
+
Forces the game to a specific phase.
+
+
forcePhase(GamePhase) - Method in class com.ohacd.matchbox.api.ApiGameSession
+
+
Deprecated. + +
+
+
formattedMessage() - Method in record class com.ohacd.matchbox.api.ChatMessage
+
+
Returns the value of the formattedMessage record component.
+
+
+

G

+
+
GAME - Enum constant in enum class com.ohacd.matchbox.api.ChatChannel
+
+
Game chat channel - messages from alive players visible to alive players and spectators.
+
+
GAME_MANAGER_NOT_AVAILABLE - Enum constant in enum class com.ohacd.matchbox.api.SessionCreationResult.ErrorType
+
+
Game manager is not available
+
+
GameConfig - Class in com.ohacd.matchbox.api
+
+
Configuration class for game sessions.
+
+
GameConfig(int, int, int, String, String, boolean, boolean) - Constructor for class com.ohacd.matchbox.api.GameConfig
+
+
Creates a new game configuration.
+
+
GameConfig.Builder - Class in com.ohacd.matchbox.api
+
+
Builder class for creating GameConfig instances.
+
+
GameEndEvent - Class in com.ohacd.matchbox.api.events
+
+
Event fired when a game ends (either by win condition or manual termination).
+
+
GameEndEvent(String, GameEndEvent.EndReason, Collection<Player>, Map<Player, Role>, int) - Constructor for class com.ohacd.matchbox.api.events.GameEndEvent
+
+
Creates a new game end event.
+
+
GameEndEvent.EndReason - Enum Class in com.ohacd.matchbox.api.events
+
+
Reasons why a game can end.
+
+
GameStartEvent - Class in com.ohacd.matchbox.api.events
+
+
Event fired when a new game starts.
+
+
GameStartEvent(String, Collection<Player>, Map<Player, Role>) - Constructor for class com.ohacd.matchbox.api.events.GameStartEvent
+
+
Creates a new game start event.
+
+
getAbility() - Method in class com.ohacd.matchbox.api.events.AbilityUseEvent
+
+
Gets the type of ability that was used.
+
+
getAlivePlayerCount() - Method in class com.ohacd.matchbox.api.ApiGameSession
+
+
Gets the number of alive players in this session.
+
+
getAlivePlayers() - Method in class com.ohacd.matchbox.api.ApiGameSession
+
+
Gets all currently alive players in this session.
+
+
getAllSessions() - Static method in class com.ohacd.matchbox.api.MatchboxAPI
+
+
Gets all active game sessions.
+
+
getAttacker() - Method in class com.ohacd.matchbox.api.events.SwipeEvent
+
+
Gets the player who performed the swipe attack.
+
+
getCurrentPhase() - Method in class com.ohacd.matchbox.api.ApiGameSession
+
+
Gets the current game phase.
+
+
getCurrentPhase() - Method in class com.ohacd.matchbox.api.PhaseController
+
+
Gets the current game phase.
+
+
getCurrentPhase(String) - Static method in class com.ohacd.matchbox.api.MatchboxAPI
+
+
Gets the current game phase for a session.
+
+
getCurrentRound() - Method in class com.ohacd.matchbox.api.ApiGameSession
+
+
Gets the current round number.
+
+
getCurrentRound() - Method in class com.ohacd.matchbox.api.events.PhaseChangeEvent
+
+
Gets the current round number.
+
+
getDefaultMessage() - Method in enum class com.ohacd.matchbox.api.SessionCreationResult.ErrorType
+
+
Gets the default human-readable message associated with this error type.
+
+
getDiscussionDuration() - Method in class com.ohacd.matchbox.api.GameConfig
+
+
Gets the discussion phase duration in seconds.
+
+
getErrorMessage() - Method in class com.ohacd.matchbox.api.ApiValidationHelper.ValidationResult
+
+
Gets the error message if validation failed.
+
+
getErrorMessage() - Method in class com.ohacd.matchbox.api.SessionCreationResult
+
+
Gets the error message if the creation failed.
+
+
getErrorType() - Method in class com.ohacd.matchbox.api.SessionCreationResult
+
+
Gets the error type if the creation failed.
+
+
getFinalRoles() - Method in class com.ohacd.matchbox.api.events.GameEndEvent
+
+
Gets the final roles of all players who participated.
+
+
getFromPhase() - Method in class com.ohacd.matchbox.api.events.PhaseChangeEvent
+
+
Gets the previous game phase.
+
+
getInternalSession() - Method in class com.ohacd.matchbox.api.ApiGameSession
+
+
Deprecated. +
This method exposes internal implementation details. Use the provided API methods instead.
+
+
+
getListeners() - Static method in class com.ohacd.matchbox.api.MatchboxAPI
+
+
Gets all registered event listeners.
+
+
getMedic() - Method in class com.ohacd.matchbox.api.events.CureEvent
+
+
Gets the player who performed the cure.
+
+
getMedicSecondaryAbility() - Method in class com.ohacd.matchbox.api.GameConfig
+
+
Gets the Medic secondary ability setting.
+
+
getName() - Method in class com.ohacd.matchbox.api.ApiGameSession
+
+
Gets the name of this session.
+
+
getPhaseController() - Method in class com.ohacd.matchbox.api.ApiGameSession
+
+
Gets the phase controller for this session.
+
+
getPhaseDescription() - Method in class com.ohacd.matchbox.api.PhaseController
+
+
Gets a description of the current phase state.
+
+
getPlayer() - Method in class com.ohacd.matchbox.api.events.AbilityUseEvent
+
+
Gets the player who used the ability.
+
+
getPlayer() - Method in class com.ohacd.matchbox.api.events.PlayerEliminateEvent
+
+
Gets the player who was eliminated.
+
+
getPlayer() - Method in class com.ohacd.matchbox.api.events.PlayerJoinEvent
+
+
Gets the player who joined the session.
+
+
getPlayer() - Method in class com.ohacd.matchbox.api.events.PlayerLeaveEvent
+
+
Gets the player who left the session.
+
+
getPlayerRole(Player) - Method in class com.ohacd.matchbox.api.ApiGameSession
+
+
Gets the role of a player in this session.
+
+
getPlayerRole(Player) - Static method in class com.ohacd.matchbox.api.MatchboxAPI
+
+
Gets the current role of a player if they are in an active game.
+
+
getPlayers() - Method in class com.ohacd.matchbox.api.ApiGameSession
+
+
Gets all players in this session.
+
+
getPlayers() - Method in class com.ohacd.matchbox.api.events.GameStartEvent
+
+
Gets all players participating in the game.
+
+
getPlayerSession(Player) - Static method in class com.ohacd.matchbox.api.MatchboxAPI
+
+
Gets the session a player is currently in.
+
+
getReason() - Method in class com.ohacd.matchbox.api.events.GameEndEvent
+
+
Gets the reason why the game ended.
+
+
getReason() - Method in class com.ohacd.matchbox.api.events.PlayerEliminateEvent
+
+
Gets the reason for the elimination.
+
+
getReason() - Method in class com.ohacd.matchbox.api.events.PlayerLeaveEvent
+
+
Gets the reason why the player left.
+
+
getRemainingPlayers() - Method in class com.ohacd.matchbox.api.events.GameEndEvent
+
+
Gets all players still in the game when it ended.
+
+
getRole() - Method in class com.ohacd.matchbox.api.events.PlayerEliminateEvent
+
+
Gets the role of the eliminated player.
+
+
getRoleAssignments() - Method in class com.ohacd.matchbox.api.events.GameStartEvent
+
+
Gets the role assignments for all players.
+
+
getSession() - Method in class com.ohacd.matchbox.api.SessionCreationResult
+
+
Gets the created session if successful.
+
+
getSession(String) - Static method in class com.ohacd.matchbox.api.MatchboxAPI
+
+
Gets an existing game session by name.
+
+
getSessionName() - Method in class com.ohacd.matchbox.api.events.AbilityUseEvent
+
+
Gets the name of the session where the ability was used.
+
+
getSessionName() - Method in class com.ohacd.matchbox.api.events.CureEvent
+
+
Gets the name of the session where the cure occurred.
+
+
getSessionName() - Method in class com.ohacd.matchbox.api.events.GameEndEvent
+
+
Gets the name of the session that ended.
+
+
getSessionName() - Method in class com.ohacd.matchbox.api.events.GameStartEvent
+
+
Gets the name of the session where the game started.
+
+
getSessionName() - Method in class com.ohacd.matchbox.api.events.PhaseChangeEvent
+
+
Gets the name of the session where the phase changed.
+
+
getSessionName() - Method in class com.ohacd.matchbox.api.events.PlayerEliminateEvent
+
+
Gets the name of the session where the elimination occurred.
+
+
getSessionName() - Method in class com.ohacd.matchbox.api.events.PlayerJoinEvent
+
+
Gets the name of the session the player joined.
+
+
getSessionName() - Method in class com.ohacd.matchbox.api.events.PlayerLeaveEvent
+
+
Gets the name of the session the player left.
+
+
getSessionName() - Method in class com.ohacd.matchbox.api.events.PlayerVoteEvent
+
+
Gets the name of the session where the vote occurred.
+
+
getSessionName() - Method in class com.ohacd.matchbox.api.events.SwipeEvent
+
+
Gets the name of the session where the swipe occurred.
+
+
getSparkSecondaryAbility() - Method in class com.ohacd.matchbox.api.GameConfig
+
+
Gets the Spark secondary ability setting.
+
+
getStatusDescription() - Method in class com.ohacd.matchbox.api.ApiGameSession
+
+
Gets a human-readable status description of the session.
+
+
getSwipeDuration() - Method in class com.ohacd.matchbox.api.GameConfig
+
+
Gets the swipe phase duration in seconds.
+
+
getTarget() - Method in class com.ohacd.matchbox.api.events.AbilityUseEvent
+
+
Gets the target player of the ability.
+
+
getTarget() - Method in class com.ohacd.matchbox.api.events.CureEvent
+
+
Gets the player who was cured.
+
+
getTarget() - Method in class com.ohacd.matchbox.api.events.PlayerVoteEvent
+
+
Gets the player who was voted for.
+
+
getTimeRemaining() - Method in class com.ohacd.matchbox.api.PhaseController
+
+
Gets the estimated time remaining in the current phase.
+
+
getTimestamp() - Method in class com.ohacd.matchbox.api.MatchboxEvent
+
+
Gets the timestamp when this event was created.
+
+
getToPhase() - Method in class com.ohacd.matchbox.api.events.PhaseChangeEvent
+
+
Gets the new game phase.
+
+
getTotalPlayerCount() - Method in class com.ohacd.matchbox.api.ApiGameSession
+
+
Gets the total number of players in this session.
+
+
getTotalRounds() - Method in class com.ohacd.matchbox.api.events.GameEndEvent
+
+
Gets the total number of rounds played.
+
+
getValidationSummary(ApiValidationHelper.ValidationResult...) - Static method in class com.ohacd.matchbox.api.ApiValidationHelper
+
+
Gets a summary of validation results.
+
+
getVictim() - Method in class com.ohacd.matchbox.api.events.SwipeEvent
+
+
Gets the player who was attacked.
+
+
getVoter() - Method in class com.ohacd.matchbox.api.events.PlayerVoteEvent
+
+
Gets the player who cast the vote.
+
+
getVotingDuration() - Method in class com.ohacd.matchbox.api.GameConfig
+
+
Gets the voting phase duration in seconds.
+
+
GLOBAL - Enum constant in enum class com.ohacd.matchbox.api.ChatChannel
+
+
Global chat channel - bypasses all game chat filtering and uses normal server chat.
+
+
+

H

+
+
hashCode() - Method in class com.ohacd.matchbox.api.ApiGameSession
+
 
+
hashCode() - Method in record class com.ohacd.matchbox.api.ChatMessage
+
+
Returns a hash code value for this object.
+
+
hashCode() - Method in record class com.ohacd.matchbox.api.ChatProcessor.ChatProcessingResult
+
+
Returns a hash code value for this object.
+
+
hashCode() - Method in class com.ohacd.matchbox.api.SessionCreationResult
+
 
+
HEALING_SIGHT - Enum constant in enum class com.ohacd.matchbox.api.events.AbilityUseEvent.AbilityType
+
+
Medic uses Healing Sight to see infected players
+
+
HUNTER_VISION - Enum constant in enum class com.ohacd.matchbox.api.events.AbilityUseEvent.AbilityType
+
+
Spark uses Hunter Vision to see all players
+
+
+

I

+
+
INNOCENTS_WIN - Enum constant in enum class com.ohacd.matchbox.api.events.GameEndEvent.EndReason
+
+
Innocents won (spark voted out)
+
+
INSUFFICIENT_PLAYERS - Enum constant in enum class com.ohacd.matchbox.api.events.GameEndEvent.EndReason
+
+
Game ended due to lack of players
+
+
Internal - Annotation Interface in com.ohacd.matchbox.api.annotation
+
+
Marks APIs that are internal to the implementation and not intended for public consumption.
+
+
INTERNAL_ERROR - Enum constant in enum class com.ohacd.matchbox.api.SessionCreationResult.ErrorType
+
+
Internal error during session creation
+
+
INVALID_DISCUSSION_LOCATION - Enum constant in enum class com.ohacd.matchbox.api.SessionCreationResult.ErrorType
+
+
Discussion location is invalid
+
+
isActive() - Method in class com.ohacd.matchbox.api.ApiGameSession
+
+
Gets whether this session is currently active.
+
+
isAlivePlayer() - Method in record class com.ohacd.matchbox.api.ChatMessage
+
+
Returns the value of the isAlivePlayer record component.
+
+
isFailure() - Method in class com.ohacd.matchbox.api.SessionCreationResult
+
+
Gets whether the session creation failed.
+
+
isInGamePhase() - Method in class com.ohacd.matchbox.api.ApiGameSession
+
+
Checks if the session is currently in an active game phase.
+
+
isPlayerAlive(Player) - Method in class com.ohacd.matchbox.api.ApiGameSession
+
+
Checks if a specific player is alive in this session.
+
+
isRandomSkinsEnabled() - Method in class com.ohacd.matchbox.api.GameConfig
+
+
Gets whether random skins are enabled.
+
+
isRealInfection() - Method in class com.ohacd.matchbox.api.events.CureEvent
+
+
Gets whether the target had a real infection.
+
+
isSuccess() - Method in class com.ohacd.matchbox.api.SessionCreationResult
+
+
Gets whether the session creation was successful.
+
+
isSuccessful() - Method in class com.ohacd.matchbox.api.events.SwipeEvent
+
+
Gets whether the swipe was successful.
+
+
isUseSteveSkins() - Method in class com.ohacd.matchbox.api.GameConfig
+
+
Gets whether Steve skins are forced.
+
+
isValid() - Method in class com.ohacd.matchbox.api.ApiValidationHelper.ValidationResult
+
+
Gets whether the validation was successful.
+
+
+

K

+
+
KICKED - Enum constant in enum class com.ohacd.matchbox.api.events.PlayerLeaveEvent.LeaveReason
+
+
Player was removed by admin
+
+
KILLED_BY_SPARK - Enum constant in enum class com.ohacd.matchbox.api.events.PlayerEliminateEvent.EliminationReason
+
+
Player was killed by a Spark
+
+
+

L

+
+
LEFT_GAME - Enum constant in enum class com.ohacd.matchbox.api.events.PlayerEliminateEvent.EliminationReason
+
+
Player left the game voluntarily
+
+
+

M

+
+
MANUAL_END - Enum constant in enum class com.ohacd.matchbox.api.events.GameEndEvent.EndReason
+
+
Game was ended manually by admin
+
+
MatchboxAPI - Class in com.ohacd.matchbox.api
+
+
Main API class for interacting with the Matchbox plugin.
+
+
MatchboxEvent - Class in com.ohacd.matchbox.api
+
+
Base class for all Matchbox events.
+
+
MatchboxEvent() - Constructor for class com.ohacd.matchbox.api.MatchboxEvent
+
+
Creates a new MatchboxEvent with the current timestamp.
+
+
MatchboxEvent(long) - Constructor for class com.ohacd.matchbox.api.MatchboxEvent
+
+
Creates a new MatchboxEvent with a specific timestamp.
+
+
MatchboxEventListener - Interface in com.ohacd.matchbox.api
+
+
Interface for listening to Matchbox game events.
+
+
medicAbility(String) - Method in class com.ohacd.matchbox.api.GameConfig.Builder
+
+
Sets the Medic secondary ability.
+
+
message() - Method in record class com.ohacd.matchbox.api.ChatProcessor.ChatProcessingResult
+
+
Returns the value of the message record component.
+
+
+

N

+
+
NO_PLAYERS - Enum constant in enum class com.ohacd.matchbox.api.SessionCreationResult.ErrorType
+
+
No valid players were provided
+
+
NO_SPAWN_POINTS - Enum constant in enum class com.ohacd.matchbox.api.SessionCreationResult.ErrorType
+
+
No valid spawn points were provided
+
+
+

O

+
+
onAbilityUse(AbilityUseEvent) - Method in interface com.ohacd.matchbox.api.MatchboxEventListener
+
+
Called when a player uses a special ability.
+
+
onCure(CureEvent) - Method in interface com.ohacd.matchbox.api.MatchboxEventListener
+
+
Called when a cure action is performed.
+
+
onGameEnd(GameEndEvent) - Method in interface com.ohacd.matchbox.api.MatchboxEventListener
+
+
Called when a game ends (either by win condition or manual termination).
+
+
onGameStart(GameStartEvent) - Method in interface com.ohacd.matchbox.api.MatchboxEventListener
+
+
Called when a new game starts.
+
+
onPhaseChange(PhaseChangeEvent) - Method in interface com.ohacd.matchbox.api.MatchboxEventListener
+
+
Called when a game phase changes.
+
+
onPlayerEliminate(PlayerEliminateEvent) - Method in interface com.ohacd.matchbox.api.MatchboxEventListener
+
+
Called when a player is eliminated from the game.
+
+
onPlayerJoin(PlayerJoinEvent) - Method in interface com.ohacd.matchbox.api.MatchboxEventListener
+
+
Called when a player joins a game session.
+
+
onPlayerLeave(PlayerLeaveEvent) - Method in interface com.ohacd.matchbox.api.MatchboxEventListener
+
+
Called when a player leaves a game session.
+
+
onPlayerVote(PlayerVoteEvent) - Method in interface com.ohacd.matchbox.api.MatchboxEventListener
+
+
Called when a player casts a vote during the voting phase.
+
+
onSwipe(SwipeEvent) - Method in interface com.ohacd.matchbox.api.MatchboxEventListener
+
+
Called when a swipe action is performed.
+
+
originalMessage() - Method in record class com.ohacd.matchbox.api.ChatMessage
+
+
Returns the value of the originalMessage record component.
+
+
OTHER - Enum constant in enum class com.ohacd.matchbox.api.events.GameEndEvent.EndReason
+
+
Other reasons
+
+
OTHER - Enum constant in enum class com.ohacd.matchbox.api.events.PlayerEliminateEvent.EliminationReason
+
+
Other reasons
+
+
OTHER - Enum constant in enum class com.ohacd.matchbox.api.events.PlayerLeaveEvent.LeaveReason
+
+
Other reasons
+
+
+

P

+
+
PhaseChangeEvent - Class in com.ohacd.matchbox.api.events
+
+
Event fired when the game phase changes.
+
+
PhaseChangeEvent(String, GamePhase, GamePhase, int) - Constructor for class com.ohacd.matchbox.api.events.PhaseChangeEvent
+
+
Creates a new phase change event.
+
+
PhaseController - Class in com.ohacd.matchbox.api
+
+
Utility class for managing game phases with simplified operations.
+
+
PhaseController(GameSession) - Constructor for class com.ohacd.matchbox.api.PhaseController
+
+
Creates a new phase controller for the specified session.
+
+
PlayerEliminateEvent - Class in com.ohacd.matchbox.api.events
+
+
Event fired when a player is eliminated from the game.
+
+
PlayerEliminateEvent(String, Player, Role, PlayerEliminateEvent.EliminationReason) - Constructor for class com.ohacd.matchbox.api.events.PlayerEliminateEvent
+
+
Creates a new player elimination event.
+
+
PlayerEliminateEvent(String, Player, Role, PlayerEliminateEvent.EliminationReason, long) - Constructor for class com.ohacd.matchbox.api.events.PlayerEliminateEvent
+
+
Creates a new player elimination event with explicit timestamp.
+
+
PlayerEliminateEvent.EliminationReason - Enum Class in com.ohacd.matchbox.api.events
+
+
Reasons why a player can be eliminated.
+
+
PlayerJoinEvent - Class in com.ohacd.matchbox.api.events
+
+
Event fired when a player joins a game session.
+
+
PlayerJoinEvent(String, Player) - Constructor for class com.ohacd.matchbox.api.events.PlayerJoinEvent
+
+
Creates a new player join event.
+
+
PlayerLeaveEvent - Class in com.ohacd.matchbox.api.events
+
+
Event fired when a player leaves a game session.
+
+
PlayerLeaveEvent(String, Player, PlayerLeaveEvent.LeaveReason) - Constructor for class com.ohacd.matchbox.api.events.PlayerLeaveEvent
+
+
Creates a new player leave event.
+
+
PlayerLeaveEvent.LeaveReason - Enum Class in com.ohacd.matchbox.api.events
+
+
Reasons why a player can leave a session.
+
+
PlayerVoteEvent - Class in com.ohacd.matchbox.api.events
+
+
Event fired when a player casts a vote during the voting phase.
+
+
PlayerVoteEvent(String, Player, Player) - Constructor for class com.ohacd.matchbox.api.events.PlayerVoteEvent
+
+
Creates a new player vote event.
+
+
PLUGIN_NOT_AVAILABLE - Enum constant in enum class com.ohacd.matchbox.api.SessionCreationResult.ErrorType
+
+
The plugin instance is not available
+
+
process(ChatMessage) - Method in interface com.ohacd.matchbox.api.ChatProcessor
+
+
Processes a chat message and returns the result.
+
+
+

R

+
+
randomSkins(boolean) - Method in class com.ohacd.matchbox.api.GameConfig.Builder
+
+
Sets whether random skins are enabled.
+
+
registerChatProcessor(String, ChatProcessor) - Static method in class com.ohacd.matchbox.api.MatchboxAPI
+
+
Registers a custom chat processor for a specific session.
+
+
removeEventListener(MatchboxEventListener) - Static method in class com.ohacd.matchbox.api.MatchboxAPI
+
+
Removes an event listener.
+
+
removePlayer(Player) - Method in class com.ohacd.matchbox.api.ApiGameSession
+
+
Removes a player from this session.
+
+
result() - Method in record class com.ohacd.matchbox.api.ChatProcessor.ChatProcessingResult
+
+
Returns the value of the result record component.
+
+
+

S

+
+
sender() - Method in record class com.ohacd.matchbox.api.ChatMessage
+
+
Returns the value of the sender record component.
+
+
senderId() - Method in record class com.ohacd.matchbox.api.ChatMessage
+
+
Returns the value of the senderId record component.
+
+
SESSION_EXISTS - Enum constant in enum class com.ohacd.matchbox.api.SessionCreationResult.ErrorType
+
+
A session with the given name already exists
+
+
SESSION_MANAGER_NOT_AVAILABLE - Enum constant in enum class com.ohacd.matchbox.api.SessionCreationResult.ErrorType
+
+
Session manager is not available
+
+
SessionBuilder - Class in com.ohacd.matchbox.api
+
+
Builder class for creating and configuring game sessions.
+
+
SessionBuilder(String) - Constructor for class com.ohacd.matchbox.api.SessionBuilder
+
+
Creates a new session builder with the specified session name.
+
+
SessionCreationResult - Class in com.ohacd.matchbox.api
+
+
Result object for session creation operations that provides detailed success/failure information.
+
+
SessionCreationResult.ErrorType - Enum Class in com.ohacd.matchbox.api
+
+
Enumeration of possible error types during session creation.
+
+
sessionName() - Method in record class com.ohacd.matchbox.api.ChatMessage
+
+
Returns the value of the sessionName record component.
+
+
skipToNextPhase() - Method in class com.ohacd.matchbox.api.ApiGameSession
+
+
Deprecated. + +
+
+
skipToNextPhase() - Method in class com.ohacd.matchbox.api.PhaseController
+
+
Skips to the next phase in the natural progression.
+
+
SPARK_SWAP - Enum constant in enum class com.ohacd.matchbox.api.events.AbilityUseEvent.AbilityType
+
+
Spark swaps positions with another player
+
+
SPARK_WIN - Enum constant in enum class com.ohacd.matchbox.api.events.GameEndEvent.EndReason
+
+
Spark won (all innocents eliminated)
+
+
sparkAbility(String) - Method in class com.ohacd.matchbox.api.GameConfig.Builder
+
+
Sets the Spark secondary ability.
+
+
SPECTATOR - Enum constant in enum class com.ohacd.matchbox.api.ChatChannel
+
+
Spectator chat channel - messages from spectators visible only to other spectators in the same session.
+
+
start() - Method in class com.ohacd.matchbox.api.SessionBuilder
+
+
Creates and starts the game session with the configured settings.
+
+
startGame() - Method in class com.ohacd.matchbox.api.ApiGameSession
+
+
Starts the game for this session.
+
+
startWithResult() - Method in class com.ohacd.matchbox.api.SessionBuilder
+
+
Creates and starts the game session with detailed error reporting.
+
+
steveSkins(boolean) - Method in class com.ohacd.matchbox.api.GameConfig.Builder
+
+
Sets whether Steve skins are forced.
+
+
success() - Static method in class com.ohacd.matchbox.api.ApiValidationHelper.ValidationResult
+
+
Creates a successful validation result.
+
+
success(ApiGameSession) - Static method in class com.ohacd.matchbox.api.SessionCreationResult
+
+
Creates a successful result.
+
+
SWIPE - Enum constant in enum class com.ohacd.matchbox.api.events.AbilityUseEvent.AbilityType
+
+
Swipe attack (used by Spark)
+
+
swipeDuration(int) - Method in class com.ohacd.matchbox.api.GameConfig.Builder
+
+
Sets the swipe phase duration.
+
+
SwipeEvent - Class in com.ohacd.matchbox.api.events
+
+
Event fired when the swipe action is performed (Spark attacks another player).
+
+
SwipeEvent(String, Player, Player, boolean) - Constructor for class com.ohacd.matchbox.api.events.SwipeEvent
+
+
Creates a new swipe event.
+
+
+

T

+
+
timestamp() - Method in record class com.ohacd.matchbox.api.ChatMessage
+
+
Returns the value of the timestamp record component.
+
+
toOptional() - Method in class com.ohacd.matchbox.api.SessionCreationResult
+
+
Deprecated. +
Use SessionCreationResult.getSession() for more detailed information
+
+
+
toString() - Method in class com.ohacd.matchbox.api.ApiGameSession
+
 
+
toString() - Method in record class com.ohacd.matchbox.api.ChatMessage
+
+
Returns a string representation of this record class.
+
+
toString() - Method in record class com.ohacd.matchbox.api.ChatProcessor.ChatProcessingResult
+
+
Returns a string representation of this record class.
+
+
toString() - Method in class com.ohacd.matchbox.api.events.PlayerEliminateEvent
+
 
+
toString() - Method in class com.ohacd.matchbox.api.MatchboxEvent
+
 
+
toString() - Method in class com.ohacd.matchbox.api.PhaseController
+
 
+
toString() - Method in class com.ohacd.matchbox.api.SessionCreationResult
+
 
+
+

U

+
+
unregisterChatProcessor(String, ChatProcessor) - Static method in class com.ohacd.matchbox.api.MatchboxAPI
+
+
Unregisters a custom chat processor from a specific session.
+
+
+

V

+
+
validate() - Method in class com.ohacd.matchbox.api.SessionBuilder
+
+
Validates the current builder configuration.
+
+
validateDiscussionLocation(Location) - Static method in class com.ohacd.matchbox.api.ApiValidationHelper
+
+
Validates a discussion location for session creation.
+
+
validatePlayerCount(int) - Static method in class com.ohacd.matchbox.api.ApiValidationHelper
+
+
Validates that the number of players is sufficient for a game.
+
+
validatePlayers(Collection<Player>) - Static method in class com.ohacd.matchbox.api.ApiValidationHelper
+
+
Validates a collection of players for session creation.
+
+
validateSeatLocations(Map<Integer, Location>) - Static method in class com.ohacd.matchbox.api.ApiValidationHelper
+
+
Validates seat locations for session creation.
+
+
validateSessionName(String) - Static method in class com.ohacd.matchbox.api.ApiValidationHelper
+
+
Validates a session name.
+
+
validateSpawnCount(int, int) - Static method in class com.ohacd.matchbox.api.ApiValidationHelper
+
+
Validates that the number of spawn points is sufficient for players.
+
+
validateSpawnPoints(Collection<Location>) - Static method in class com.ohacd.matchbox.api.ApiValidationHelper
+
+
Validates a collection of spawn locations for session creation.
+
+
valueOf(String) - Static method in enum class com.ohacd.matchbox.api.ChatChannel
+
+
Returns the enum constant of this class with the specified name.
+
+
valueOf(String) - Static method in enum class com.ohacd.matchbox.api.ChatResult
+
+
Returns the enum constant of this class with the specified name.
+
+
valueOf(String) - Static method in enum class com.ohacd.matchbox.api.events.AbilityUseEvent.AbilityType
+
+
Returns the enum constant of this class with the specified name.
+
+
valueOf(String) - Static method in enum class com.ohacd.matchbox.api.events.GameEndEvent.EndReason
+
+
Returns the enum constant of this class with the specified name.
+
+
valueOf(String) - Static method in enum class com.ohacd.matchbox.api.events.PlayerEliminateEvent.EliminationReason
+
+
Returns the enum constant of this class with the specified name.
+
+
valueOf(String) - Static method in enum class com.ohacd.matchbox.api.events.PlayerLeaveEvent.LeaveReason
+
+
Returns the enum constant of this class with the specified name.
+
+
valueOf(String) - Static method in enum class com.ohacd.matchbox.api.SessionCreationResult.ErrorType
+
+
Returns the enum constant of this class with the specified name.
+
+
values() - Static method in enum class com.ohacd.matchbox.api.ChatChannel
+
+
Returns an array containing the constants of this enum class, in +the order they are declared.
+
+
values() - Static method in enum class com.ohacd.matchbox.api.ChatResult
+
+
Returns an array containing the constants of this enum class, in +the order they are declared.
+
+
values() - Static method in enum class com.ohacd.matchbox.api.events.AbilityUseEvent.AbilityType
+
+
Returns an array containing the constants of this enum class, in +the order they are declared.
+
+
values() - Static method in enum class com.ohacd.matchbox.api.events.GameEndEvent.EndReason
+
+
Returns an array containing the constants of this enum class, in +the order they are declared.
+
+
values() - Static method in enum class com.ohacd.matchbox.api.events.PlayerEliminateEvent.EliminationReason
+
+
Returns an array containing the constants of this enum class, in +the order they are declared.
+
+
values() - Static method in enum class com.ohacd.matchbox.api.events.PlayerLeaveEvent.LeaveReason
+
+
Returns an array containing the constants of this enum class, in +the order they are declared.
+
+
values() - Static method in enum class com.ohacd.matchbox.api.SessionCreationResult.ErrorType
+
+
Returns an array containing the constants of this enum class, in +the order they are declared.
+
+
VOLUNTARY - Enum constant in enum class com.ohacd.matchbox.api.events.PlayerLeaveEvent.LeaveReason
+
+
Player voluntarily left the game
+
+
VOTED_OUT - Enum constant in enum class com.ohacd.matchbox.api.events.PlayerEliminateEvent.EliminationReason
+
+
Player was voted out during voting phase
+
+
votingDuration(int) - Method in class com.ohacd.matchbox.api.GameConfig.Builder
+
+
Sets the voting phase duration.
+
+
+

W

+
+
withChannel(ChatChannel) - Method in record class com.ohacd.matchbox.api.ChatMessage
+
+
Creates a copy of this message with a modified channel.
+
+
withConfig(GameConfig) - Method in class com.ohacd.matchbox.api.SessionBuilder
+
+
Sets custom game configuration for the session.
+
+
withCustomConfig(GameConfig) - Method in class com.ohacd.matchbox.api.SessionBuilder
+
+
Sets custom game configuration for the session.
+
+
withDiscussionLocation(Location) - Method in class com.ohacd.matchbox.api.SessionBuilder
+
+
Sets the discussion location for the session.
+
+
withFormattedMessage(Component) - Method in record class com.ohacd.matchbox.api.ChatMessage
+
+
Creates a copy of this message with a modified formatted message.
+
+
withPlayers(Collection<Player>) - Method in class com.ohacd.matchbox.api.SessionBuilder
+
+
Sets the players for this session.
+
+
withPlayers(Player...) - Method in class com.ohacd.matchbox.api.SessionBuilder
+
+
Sets the players for this session.
+
+
withSeatLocations(Map<Integer, Location>) - Method in class com.ohacd.matchbox.api.SessionBuilder
+
+
Sets the seat locations for the discussion phase.
+
+
withSpawnPoints(List<Location>) - Method in class com.ohacd.matchbox.api.SessionBuilder
+
+
Sets the spawn points for players.
+
+
withSpawnPoints(Location...) - Method in class com.ohacd.matchbox.api.SessionBuilder
+
+
Sets the spawn points for players.
+
+
+A B C D E F G H I K L M N O P R S T U V W 
All Classes and Interfaces|All Packages
+
+
+ + diff --git a/.gh-pages/index.html b/.gh-pages/index.html new file mode 100644 index 0000000..8b9ed9c --- /dev/null +++ b/.gh-pages/index.html @@ -0,0 +1,72 @@ + + + + +Overview (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+
+

Matchbox 0.9.5 API

+
+
+
Packages
+
+
Package
+
Description
+ +
+
Public API for Matchbox.
+
+ +
 
+ +
 
+
+
+
+
+
+ + diff --git a/.gh-pages/legal/COPYRIGHT b/.gh-pages/legal/COPYRIGHT new file mode 100644 index 0000000..ca74fff --- /dev/null +++ b/.gh-pages/legal/COPYRIGHT @@ -0,0 +1 @@ +Please see ..\java.base\COPYRIGHT diff --git a/.gh-pages/legal/LICENSE b/.gh-pages/legal/LICENSE new file mode 100644 index 0000000..4ad9fe4 --- /dev/null +++ b/.gh-pages/legal/LICENSE @@ -0,0 +1 @@ +Please see ..\java.base\LICENSE diff --git a/.gh-pages/legal/jquery.md b/.gh-pages/legal/jquery.md new file mode 100644 index 0000000..a763ec6 --- /dev/null +++ b/.gh-pages/legal/jquery.md @@ -0,0 +1,26 @@ +## jQuery v3.7.1 + +### jQuery License +``` +jQuery v 3.7.1 +Copyright OpenJS Foundation and other contributors, https://openjsf.org/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +``` diff --git a/.gh-pages/legal/jqueryUI.md b/.gh-pages/legal/jqueryUI.md new file mode 100644 index 0000000..8bda9d7 --- /dev/null +++ b/.gh-pages/legal/jqueryUI.md @@ -0,0 +1,49 @@ +## jQuery UI v1.13.2 + +### jQuery UI License +``` +Copyright jQuery Foundation and other contributors, https://jquery.org/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/jquery-ui + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code contained within the demos directory. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +``` diff --git a/.gh-pages/link.svg b/.gh-pages/link.svg new file mode 100644 index 0000000..dadef51 --- /dev/null +++ b/.gh-pages/link.svg @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/.gh-pages/member-search-index.js b/.gh-pages/member-search-index.js new file mode 100644 index 0000000..ec4a56a --- /dev/null +++ b/.gh-pages/member-search-index.js @@ -0,0 +1 @@ +memberSearchIndex = [{"p":"com.ohacd.matchbox.api.events","c":"AbilityUseEvent","l":"AbilityUseEvent(String, Player, AbilityUseEvent.AbilityType, Player)","u":"%3Cinit%3E(java.lang.String,org.bukkit.entity.Player,com.ohacd.matchbox.api.events.AbilityUseEvent.AbilityType,org.bukkit.entity.Player)"},{"p":"com.ohacd.matchbox.api","c":"MatchboxAPI","l":"addEventListener(MatchboxEventListener)","u":"addEventListener(com.ohacd.matchbox.api.MatchboxEventListener)"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"addPlayer(Player)","u":"addPlayer(org.bukkit.entity.Player)"},{"p":"com.ohacd.matchbox.api","c":"ChatResult","l":"ALLOW"},{"p":"com.ohacd.matchbox.api","c":"ChatProcessor.ChatProcessingResult","l":"allow(ChatMessage)","u":"allow(com.ohacd.matchbox.api.ChatMessage)"},{"p":"com.ohacd.matchbox.api","c":"ChatProcessor.ChatProcessingResult","l":"allowModified(ChatMessage)","u":"allowModified(com.ohacd.matchbox.api.ChatMessage)"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"ApiGameSession(GameSession)","u":"%3Cinit%3E(com.ohacd.matchbox.game.session.GameSession)"},{"p":"com.ohacd.matchbox.api","c":"GameConfig.Builder","l":"build()"},{"p":"com.ohacd.matchbox.api","c":"GameConfig.Builder","l":"Builder()","u":"%3Cinit%3E()"},{"p":"com.ohacd.matchbox.api","c":"ChatResult","l":"CANCEL"},{"p":"com.ohacd.matchbox.api","c":"ChatProcessor.ChatProcessingResult","l":"cancel(ChatMessage)","u":"cancel(com.ohacd.matchbox.api.ChatMessage)"},{"p":"com.ohacd.matchbox.api","c":"PhaseController","l":"canTransitionTo(GamePhase)","u":"canTransitionTo(com.ohacd.matchbox.game.utils.GamePhase)"},{"p":"com.ohacd.matchbox.api","c":"ChatMessage","l":"channel()"},{"p":"com.ohacd.matchbox.api","c":"ChatMessage","l":"ChatMessage(Component, Component, Player, ChatChannel, String, boolean)","u":"%3Cinit%3E(net.kyori.adventure.text.Component,net.kyori.adventure.text.Component,org.bukkit.entity.Player,com.ohacd.matchbox.api.ChatChannel,java.lang.String,boolean)"},{"p":"com.ohacd.matchbox.api","c":"ChatMessage","l":"ChatMessage(Component, Component, Player, UUID, ChatChannel, String, boolean, Instant)","u":"%3Cinit%3E(net.kyori.adventure.text.Component,net.kyori.adventure.text.Component,org.bukkit.entity.Player,java.util.UUID,com.ohacd.matchbox.api.ChatChannel,java.lang.String,boolean,java.time.Instant)"},{"p":"com.ohacd.matchbox.api","c":"ChatProcessor.ChatProcessingResult","l":"ChatProcessingResult(ChatResult, ChatMessage)","u":"%3Cinit%3E(com.ohacd.matchbox.api.ChatResult,com.ohacd.matchbox.api.ChatMessage)"},{"p":"com.ohacd.matchbox.api","c":"MatchboxAPI","l":"clearChatProcessors(String)","u":"clearChatProcessors(java.lang.String)"},{"p":"com.ohacd.matchbox.api","c":"SessionBuilder","l":"configBuilder()"},{"p":"com.ohacd.matchbox.api","c":"MatchboxAPI","l":"createSessionBuilder(String)","u":"createSessionBuilder(java.lang.String)"},{"p":"com.ohacd.matchbox.api","c":"SessionBuilder","l":"createSessionOnly()"},{"p":"com.ohacd.matchbox.api.events","c":"AbilityUseEvent.AbilityType","l":"CURE"},{"p":"com.ohacd.matchbox.api.events","c":"CureEvent","l":"CureEvent(String, Player, Player, boolean)","u":"%3Cinit%3E(java.lang.String,org.bukkit.entity.Player,org.bukkit.entity.Player,boolean)"},{"p":"com.ohacd.matchbox.api.events","c":"AbilityUseEvent.AbilityType","l":"DELUSION"},{"p":"com.ohacd.matchbox.api","c":"ChatResult","l":"DENY"},{"p":"com.ohacd.matchbox.api","c":"ChatProcessor.ChatProcessingResult","l":"deny(ChatMessage)","u":"deny(com.ohacd.matchbox.api.ChatMessage)"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerEliminateEvent.EliminationReason","l":"DISCONNECTED"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerLeaveEvent.LeaveReason","l":"DISCONNECTED"},{"p":"com.ohacd.matchbox.api","c":"GameConfig.Builder","l":"discussionDuration(int)"},{"p":"com.ohacd.matchbox.api.events","c":"AbilityUseEvent","l":"dispatch(MatchboxEventListener)","u":"dispatch(com.ohacd.matchbox.api.MatchboxEventListener)"},{"p":"com.ohacd.matchbox.api.events","c":"CureEvent","l":"dispatch(MatchboxEventListener)","u":"dispatch(com.ohacd.matchbox.api.MatchboxEventListener)"},{"p":"com.ohacd.matchbox.api.events","c":"GameEndEvent","l":"dispatch(MatchboxEventListener)","u":"dispatch(com.ohacd.matchbox.api.MatchboxEventListener)"},{"p":"com.ohacd.matchbox.api.events","c":"GameStartEvent","l":"dispatch(MatchboxEventListener)","u":"dispatch(com.ohacd.matchbox.api.MatchboxEventListener)"},{"p":"com.ohacd.matchbox.api.events","c":"PhaseChangeEvent","l":"dispatch(MatchboxEventListener)","u":"dispatch(com.ohacd.matchbox.api.MatchboxEventListener)"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerJoinEvent","l":"dispatch(MatchboxEventListener)","u":"dispatch(com.ohacd.matchbox.api.MatchboxEventListener)"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerLeaveEvent","l":"dispatch(MatchboxEventListener)","u":"dispatch(com.ohacd.matchbox.api.MatchboxEventListener)"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerVoteEvent","l":"dispatch(MatchboxEventListener)","u":"dispatch(com.ohacd.matchbox.api.MatchboxEventListener)"},{"p":"com.ohacd.matchbox.api.events","c":"SwipeEvent","l":"dispatch(MatchboxEventListener)","u":"dispatch(com.ohacd.matchbox.api.MatchboxEventListener)"},{"p":"com.ohacd.matchbox.api","c":"MatchboxEvent","l":"dispatch(MatchboxEventListener)","u":"dispatch(com.ohacd.matchbox.api.MatchboxEventListener)"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerEliminateEvent","l":"dispatch(MatchboxEventListener)","u":"dispatch(com.ohacd.matchbox.api.MatchboxEventListener)"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerLeaveEvent.LeaveReason","l":"ELIMINATED"},{"p":"com.ohacd.matchbox.api","c":"MatchboxAPI","l":"endAllSessions()"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"endGame()"},{"p":"com.ohacd.matchbox.api","c":"MatchboxAPI","l":"endSession(String)","u":"endSession(java.lang.String)"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"com.ohacd.matchbox.api","c":"ChatMessage","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"com.ohacd.matchbox.api","c":"ChatProcessor.ChatProcessingResult","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"com.ohacd.matchbox.api","c":"SessionCreationResult","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"com.ohacd.matchbox.api","c":"ApiValidationHelper.ValidationResult","l":"error(String)","u":"error(java.lang.String)"},{"p":"com.ohacd.matchbox.api","c":"SessionCreationResult","l":"failure(SessionCreationResult.ErrorType, String)","u":"failure(com.ohacd.matchbox.api.SessionCreationResult.ErrorType,java.lang.String)"},{"p":"com.ohacd.matchbox.api","c":"PhaseController","l":"forcePhase(GamePhase)","u":"forcePhase(com.ohacd.matchbox.game.utils.GamePhase)"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"forcePhase(GamePhase)","u":"forcePhase(com.ohacd.matchbox.game.utils.GamePhase)"},{"p":"com.ohacd.matchbox.api","c":"ChatMessage","l":"formattedMessage()"},{"p":"com.ohacd.matchbox.api","c":"ChatChannel","l":"GAME"},{"p":"com.ohacd.matchbox.api","c":"SessionCreationResult.ErrorType","l":"GAME_MANAGER_NOT_AVAILABLE"},{"p":"com.ohacd.matchbox.api","c":"GameConfig","l":"GameConfig(int, int, int, String, String, boolean, boolean)","u":"%3Cinit%3E(int,int,int,java.lang.String,java.lang.String,boolean,boolean)"},{"p":"com.ohacd.matchbox.api.events","c":"GameEndEvent","l":"GameEndEvent(String, GameEndEvent.EndReason, Collection, Map, int)","u":"%3Cinit%3E(java.lang.String,com.ohacd.matchbox.api.events.GameEndEvent.EndReason,java.util.Collection,java.util.Map,int)"},{"p":"com.ohacd.matchbox.api.events","c":"GameStartEvent","l":"GameStartEvent(String, Collection, Map)","u":"%3Cinit%3E(java.lang.String,java.util.Collection,java.util.Map)"},{"p":"com.ohacd.matchbox.api.events","c":"AbilityUseEvent","l":"getAbility()"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"getAlivePlayerCount()"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"getAlivePlayers()"},{"p":"com.ohacd.matchbox.api","c":"MatchboxAPI","l":"getAllSessions()"},{"p":"com.ohacd.matchbox.api.events","c":"SwipeEvent","l":"getAttacker()"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"getCurrentPhase()"},{"p":"com.ohacd.matchbox.api","c":"PhaseController","l":"getCurrentPhase()"},{"p":"com.ohacd.matchbox.api","c":"MatchboxAPI","l":"getCurrentPhase(String)","u":"getCurrentPhase(java.lang.String)"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"getCurrentRound()"},{"p":"com.ohacd.matchbox.api.events","c":"PhaseChangeEvent","l":"getCurrentRound()"},{"p":"com.ohacd.matchbox.api","c":"SessionCreationResult.ErrorType","l":"getDefaultMessage()"},{"p":"com.ohacd.matchbox.api","c":"GameConfig","l":"getDiscussionDuration()"},{"p":"com.ohacd.matchbox.api","c":"ApiValidationHelper.ValidationResult","l":"getErrorMessage()"},{"p":"com.ohacd.matchbox.api","c":"SessionCreationResult","l":"getErrorMessage()"},{"p":"com.ohacd.matchbox.api","c":"SessionCreationResult","l":"getErrorType()"},{"p":"com.ohacd.matchbox.api.events","c":"GameEndEvent","l":"getFinalRoles()"},{"p":"com.ohacd.matchbox.api.events","c":"PhaseChangeEvent","l":"getFromPhase()"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"getInternalSession()"},{"p":"com.ohacd.matchbox.api","c":"MatchboxAPI","l":"getListeners()"},{"p":"com.ohacd.matchbox.api.events","c":"CureEvent","l":"getMedic()"},{"p":"com.ohacd.matchbox.api","c":"GameConfig","l":"getMedicSecondaryAbility()"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"getName()"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"getPhaseController()"},{"p":"com.ohacd.matchbox.api","c":"PhaseController","l":"getPhaseDescription()"},{"p":"com.ohacd.matchbox.api.events","c":"AbilityUseEvent","l":"getPlayer()"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerEliminateEvent","l":"getPlayer()"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerJoinEvent","l":"getPlayer()"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerLeaveEvent","l":"getPlayer()"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"getPlayerRole(Player)","u":"getPlayerRole(org.bukkit.entity.Player)"},{"p":"com.ohacd.matchbox.api","c":"MatchboxAPI","l":"getPlayerRole(Player)","u":"getPlayerRole(org.bukkit.entity.Player)"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"getPlayers()"},{"p":"com.ohacd.matchbox.api.events","c":"GameStartEvent","l":"getPlayers()"},{"p":"com.ohacd.matchbox.api","c":"MatchboxAPI","l":"getPlayerSession(Player)","u":"getPlayerSession(org.bukkit.entity.Player)"},{"p":"com.ohacd.matchbox.api.events","c":"GameEndEvent","l":"getReason()"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerEliminateEvent","l":"getReason()"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerLeaveEvent","l":"getReason()"},{"p":"com.ohacd.matchbox.api.events","c":"GameEndEvent","l":"getRemainingPlayers()"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerEliminateEvent","l":"getRole()"},{"p":"com.ohacd.matchbox.api.events","c":"GameStartEvent","l":"getRoleAssignments()"},{"p":"com.ohacd.matchbox.api","c":"SessionCreationResult","l":"getSession()"},{"p":"com.ohacd.matchbox.api","c":"MatchboxAPI","l":"getSession(String)","u":"getSession(java.lang.String)"},{"p":"com.ohacd.matchbox.api.events","c":"AbilityUseEvent","l":"getSessionName()"},{"p":"com.ohacd.matchbox.api.events","c":"CureEvent","l":"getSessionName()"},{"p":"com.ohacd.matchbox.api.events","c":"GameEndEvent","l":"getSessionName()"},{"p":"com.ohacd.matchbox.api.events","c":"GameStartEvent","l":"getSessionName()"},{"p":"com.ohacd.matchbox.api.events","c":"PhaseChangeEvent","l":"getSessionName()"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerEliminateEvent","l":"getSessionName()"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerJoinEvent","l":"getSessionName()"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerLeaveEvent","l":"getSessionName()"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerVoteEvent","l":"getSessionName()"},{"p":"com.ohacd.matchbox.api.events","c":"SwipeEvent","l":"getSessionName()"},{"p":"com.ohacd.matchbox.api","c":"GameConfig","l":"getSparkSecondaryAbility()"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"getStatusDescription()"},{"p":"com.ohacd.matchbox.api","c":"GameConfig","l":"getSwipeDuration()"},{"p":"com.ohacd.matchbox.api.events","c":"AbilityUseEvent","l":"getTarget()"},{"p":"com.ohacd.matchbox.api.events","c":"CureEvent","l":"getTarget()"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerVoteEvent","l":"getTarget()"},{"p":"com.ohacd.matchbox.api","c":"PhaseController","l":"getTimeRemaining()"},{"p":"com.ohacd.matchbox.api","c":"MatchboxEvent","l":"getTimestamp()"},{"p":"com.ohacd.matchbox.api.events","c":"PhaseChangeEvent","l":"getToPhase()"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"getTotalPlayerCount()"},{"p":"com.ohacd.matchbox.api.events","c":"GameEndEvent","l":"getTotalRounds()"},{"p":"com.ohacd.matchbox.api","c":"ApiValidationHelper","l":"getValidationSummary(ApiValidationHelper.ValidationResult...)","u":"getValidationSummary(com.ohacd.matchbox.api.ApiValidationHelper.ValidationResult...)"},{"p":"com.ohacd.matchbox.api.events","c":"SwipeEvent","l":"getVictim()"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerVoteEvent","l":"getVoter()"},{"p":"com.ohacd.matchbox.api","c":"GameConfig","l":"getVotingDuration()"},{"p":"com.ohacd.matchbox.api","c":"ChatChannel","l":"GLOBAL"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"hashCode()"},{"p":"com.ohacd.matchbox.api","c":"ChatMessage","l":"hashCode()"},{"p":"com.ohacd.matchbox.api","c":"ChatProcessor.ChatProcessingResult","l":"hashCode()"},{"p":"com.ohacd.matchbox.api","c":"SessionCreationResult","l":"hashCode()"},{"p":"com.ohacd.matchbox.api.events","c":"AbilityUseEvent.AbilityType","l":"HEALING_SIGHT"},{"p":"com.ohacd.matchbox.api.events","c":"AbilityUseEvent.AbilityType","l":"HUNTER_VISION"},{"p":"com.ohacd.matchbox.api.events","c":"GameEndEvent.EndReason","l":"INNOCENTS_WIN"},{"p":"com.ohacd.matchbox.api.events","c":"GameEndEvent.EndReason","l":"INSUFFICIENT_PLAYERS"},{"p":"com.ohacd.matchbox.api","c":"SessionCreationResult.ErrorType","l":"INTERNAL_ERROR"},{"p":"com.ohacd.matchbox.api","c":"SessionCreationResult.ErrorType","l":"INVALID_DISCUSSION_LOCATION"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"isActive()"},{"p":"com.ohacd.matchbox.api","c":"ChatMessage","l":"isAlivePlayer()"},{"p":"com.ohacd.matchbox.api","c":"SessionCreationResult","l":"isFailure()"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"isInGamePhase()"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"isPlayerAlive(Player)","u":"isPlayerAlive(org.bukkit.entity.Player)"},{"p":"com.ohacd.matchbox.api","c":"GameConfig","l":"isRandomSkinsEnabled()"},{"p":"com.ohacd.matchbox.api.events","c":"CureEvent","l":"isRealInfection()"},{"p":"com.ohacd.matchbox.api","c":"SessionCreationResult","l":"isSuccess()"},{"p":"com.ohacd.matchbox.api.events","c":"SwipeEvent","l":"isSuccessful()"},{"p":"com.ohacd.matchbox.api","c":"GameConfig","l":"isUseSteveSkins()"},{"p":"com.ohacd.matchbox.api","c":"ApiValidationHelper.ValidationResult","l":"isValid()"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerLeaveEvent.LeaveReason","l":"KICKED"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerEliminateEvent.EliminationReason","l":"KILLED_BY_SPARK"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerEliminateEvent.EliminationReason","l":"LEFT_GAME"},{"p":"com.ohacd.matchbox.api.events","c":"GameEndEvent.EndReason","l":"MANUAL_END"},{"p":"com.ohacd.matchbox.api","c":"MatchboxEvent","l":"MatchboxEvent()","u":"%3Cinit%3E()"},{"p":"com.ohacd.matchbox.api","c":"MatchboxEvent","l":"MatchboxEvent(long)","u":"%3Cinit%3E(long)"},{"p":"com.ohacd.matchbox.api","c":"GameConfig.Builder","l":"medicAbility(String)","u":"medicAbility(java.lang.String)"},{"p":"com.ohacd.matchbox.api","c":"ChatProcessor.ChatProcessingResult","l":"message()"},{"p":"com.ohacd.matchbox.api","c":"SessionCreationResult.ErrorType","l":"NO_PLAYERS"},{"p":"com.ohacd.matchbox.api","c":"SessionCreationResult.ErrorType","l":"NO_SPAWN_POINTS"},{"p":"com.ohacd.matchbox.api","c":"MatchboxEventListener","l":"onAbilityUse(AbilityUseEvent)","u":"onAbilityUse(com.ohacd.matchbox.api.events.AbilityUseEvent)"},{"p":"com.ohacd.matchbox.api","c":"MatchboxEventListener","l":"onCure(CureEvent)","u":"onCure(com.ohacd.matchbox.api.events.CureEvent)"},{"p":"com.ohacd.matchbox.api","c":"MatchboxEventListener","l":"onGameEnd(GameEndEvent)","u":"onGameEnd(com.ohacd.matchbox.api.events.GameEndEvent)"},{"p":"com.ohacd.matchbox.api","c":"MatchboxEventListener","l":"onGameStart(GameStartEvent)","u":"onGameStart(com.ohacd.matchbox.api.events.GameStartEvent)"},{"p":"com.ohacd.matchbox.api","c":"MatchboxEventListener","l":"onPhaseChange(PhaseChangeEvent)","u":"onPhaseChange(com.ohacd.matchbox.api.events.PhaseChangeEvent)"},{"p":"com.ohacd.matchbox.api","c":"MatchboxEventListener","l":"onPlayerEliminate(PlayerEliminateEvent)","u":"onPlayerEliminate(com.ohacd.matchbox.api.events.PlayerEliminateEvent)"},{"p":"com.ohacd.matchbox.api","c":"MatchboxEventListener","l":"onPlayerJoin(PlayerJoinEvent)","u":"onPlayerJoin(com.ohacd.matchbox.api.events.PlayerJoinEvent)"},{"p":"com.ohacd.matchbox.api","c":"MatchboxEventListener","l":"onPlayerLeave(PlayerLeaveEvent)","u":"onPlayerLeave(com.ohacd.matchbox.api.events.PlayerLeaveEvent)"},{"p":"com.ohacd.matchbox.api","c":"MatchboxEventListener","l":"onPlayerVote(PlayerVoteEvent)","u":"onPlayerVote(com.ohacd.matchbox.api.events.PlayerVoteEvent)"},{"p":"com.ohacd.matchbox.api","c":"MatchboxEventListener","l":"onSwipe(SwipeEvent)","u":"onSwipe(com.ohacd.matchbox.api.events.SwipeEvent)"},{"p":"com.ohacd.matchbox.api","c":"ChatMessage","l":"originalMessage()"},{"p":"com.ohacd.matchbox.api.events","c":"GameEndEvent.EndReason","l":"OTHER"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerEliminateEvent.EliminationReason","l":"OTHER"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerLeaveEvent.LeaveReason","l":"OTHER"},{"p":"com.ohacd.matchbox.api.events","c":"PhaseChangeEvent","l":"PhaseChangeEvent(String, GamePhase, GamePhase, int)","u":"%3Cinit%3E(java.lang.String,com.ohacd.matchbox.game.utils.GamePhase,com.ohacd.matchbox.game.utils.GamePhase,int)"},{"p":"com.ohacd.matchbox.api","c":"PhaseController","l":"PhaseController(GameSession)","u":"%3Cinit%3E(com.ohacd.matchbox.game.session.GameSession)"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerEliminateEvent","l":"PlayerEliminateEvent(String, Player, Role, PlayerEliminateEvent.EliminationReason)","u":"%3Cinit%3E(java.lang.String,org.bukkit.entity.Player,com.ohacd.matchbox.game.utils.Role,com.ohacd.matchbox.api.events.PlayerEliminateEvent.EliminationReason)"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerEliminateEvent","l":"PlayerEliminateEvent(String, Player, Role, PlayerEliminateEvent.EliminationReason, long)","u":"%3Cinit%3E(java.lang.String,org.bukkit.entity.Player,com.ohacd.matchbox.game.utils.Role,com.ohacd.matchbox.api.events.PlayerEliminateEvent.EliminationReason,long)"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerJoinEvent","l":"PlayerJoinEvent(String, Player)","u":"%3Cinit%3E(java.lang.String,org.bukkit.entity.Player)"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerLeaveEvent","l":"PlayerLeaveEvent(String, Player, PlayerLeaveEvent.LeaveReason)","u":"%3Cinit%3E(java.lang.String,org.bukkit.entity.Player,com.ohacd.matchbox.api.events.PlayerLeaveEvent.LeaveReason)"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerVoteEvent","l":"PlayerVoteEvent(String, Player, Player)","u":"%3Cinit%3E(java.lang.String,org.bukkit.entity.Player,org.bukkit.entity.Player)"},{"p":"com.ohacd.matchbox.api","c":"SessionCreationResult.ErrorType","l":"PLUGIN_NOT_AVAILABLE"},{"p":"com.ohacd.matchbox.api","c":"ChatProcessor","l":"process(ChatMessage)","u":"process(com.ohacd.matchbox.api.ChatMessage)"},{"p":"com.ohacd.matchbox.api","c":"GameConfig.Builder","l":"randomSkins(boolean)"},{"p":"com.ohacd.matchbox.api","c":"MatchboxAPI","l":"registerChatProcessor(String, ChatProcessor)","u":"registerChatProcessor(java.lang.String,com.ohacd.matchbox.api.ChatProcessor)"},{"p":"com.ohacd.matchbox.api","c":"MatchboxAPI","l":"removeEventListener(MatchboxEventListener)","u":"removeEventListener(com.ohacd.matchbox.api.MatchboxEventListener)"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"removePlayer(Player)","u":"removePlayer(org.bukkit.entity.Player)"},{"p":"com.ohacd.matchbox.api","c":"ChatProcessor.ChatProcessingResult","l":"result()"},{"p":"com.ohacd.matchbox.api","c":"ChatMessage","l":"sender()"},{"p":"com.ohacd.matchbox.api","c":"ChatMessage","l":"senderId()"},{"p":"com.ohacd.matchbox.api","c":"SessionCreationResult.ErrorType","l":"SESSION_EXISTS"},{"p":"com.ohacd.matchbox.api","c":"SessionCreationResult.ErrorType","l":"SESSION_MANAGER_NOT_AVAILABLE"},{"p":"com.ohacd.matchbox.api","c":"SessionBuilder","l":"SessionBuilder(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"com.ohacd.matchbox.api","c":"ChatMessage","l":"sessionName()"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"skipToNextPhase()"},{"p":"com.ohacd.matchbox.api","c":"PhaseController","l":"skipToNextPhase()"},{"p":"com.ohacd.matchbox.api.events","c":"AbilityUseEvent.AbilityType","l":"SPARK_SWAP"},{"p":"com.ohacd.matchbox.api.events","c":"GameEndEvent.EndReason","l":"SPARK_WIN"},{"p":"com.ohacd.matchbox.api","c":"GameConfig.Builder","l":"sparkAbility(String)","u":"sparkAbility(java.lang.String)"},{"p":"com.ohacd.matchbox.api","c":"ChatChannel","l":"SPECTATOR"},{"p":"com.ohacd.matchbox.api","c":"SessionBuilder","l":"start()"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"startGame()"},{"p":"com.ohacd.matchbox.api","c":"SessionBuilder","l":"startWithResult()"},{"p":"com.ohacd.matchbox.api","c":"GameConfig.Builder","l":"steveSkins(boolean)"},{"p":"com.ohacd.matchbox.api","c":"ApiValidationHelper.ValidationResult","l":"success()"},{"p":"com.ohacd.matchbox.api","c":"SessionCreationResult","l":"success(ApiGameSession)","u":"success(com.ohacd.matchbox.api.ApiGameSession)"},{"p":"com.ohacd.matchbox.api.events","c":"AbilityUseEvent.AbilityType","l":"SWIPE"},{"p":"com.ohacd.matchbox.api","c":"GameConfig.Builder","l":"swipeDuration(int)"},{"p":"com.ohacd.matchbox.api.events","c":"SwipeEvent","l":"SwipeEvent(String, Player, Player, boolean)","u":"%3Cinit%3E(java.lang.String,org.bukkit.entity.Player,org.bukkit.entity.Player,boolean)"},{"p":"com.ohacd.matchbox.api","c":"ChatMessage","l":"timestamp()"},{"p":"com.ohacd.matchbox.api","c":"SessionCreationResult","l":"toOptional()"},{"p":"com.ohacd.matchbox.api","c":"ApiGameSession","l":"toString()"},{"p":"com.ohacd.matchbox.api","c":"ChatMessage","l":"toString()"},{"p":"com.ohacd.matchbox.api","c":"ChatProcessor.ChatProcessingResult","l":"toString()"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerEliminateEvent","l":"toString()"},{"p":"com.ohacd.matchbox.api","c":"MatchboxEvent","l":"toString()"},{"p":"com.ohacd.matchbox.api","c":"PhaseController","l":"toString()"},{"p":"com.ohacd.matchbox.api","c":"SessionCreationResult","l":"toString()"},{"p":"com.ohacd.matchbox.api","c":"MatchboxAPI","l":"unregisterChatProcessor(String, ChatProcessor)","u":"unregisterChatProcessor(java.lang.String,com.ohacd.matchbox.api.ChatProcessor)"},{"p":"com.ohacd.matchbox.api","c":"SessionBuilder","l":"validate()"},{"p":"com.ohacd.matchbox.api","c":"ApiValidationHelper","l":"validateDiscussionLocation(Location)","u":"validateDiscussionLocation(org.bukkit.Location)"},{"p":"com.ohacd.matchbox.api","c":"ApiValidationHelper","l":"validatePlayerCount(int)"},{"p":"com.ohacd.matchbox.api","c":"ApiValidationHelper","l":"validatePlayers(Collection)","u":"validatePlayers(java.util.Collection)"},{"p":"com.ohacd.matchbox.api","c":"ApiValidationHelper","l":"validateSeatLocations(Map)","u":"validateSeatLocations(java.util.Map)"},{"p":"com.ohacd.matchbox.api","c":"ApiValidationHelper","l":"validateSessionName(String)","u":"validateSessionName(java.lang.String)"},{"p":"com.ohacd.matchbox.api","c":"ApiValidationHelper","l":"validateSpawnCount(int, int)","u":"validateSpawnCount(int,int)"},{"p":"com.ohacd.matchbox.api","c":"ApiValidationHelper","l":"validateSpawnPoints(Collection)","u":"validateSpawnPoints(java.util.Collection)"},{"p":"com.ohacd.matchbox.api","c":"ChatChannel","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"com.ohacd.matchbox.api","c":"ChatResult","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"com.ohacd.matchbox.api.events","c":"AbilityUseEvent.AbilityType","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"com.ohacd.matchbox.api.events","c":"GameEndEvent.EndReason","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerEliminateEvent.EliminationReason","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerLeaveEvent.LeaveReason","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"com.ohacd.matchbox.api","c":"SessionCreationResult.ErrorType","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"com.ohacd.matchbox.api","c":"ChatChannel","l":"values()"},{"p":"com.ohacd.matchbox.api","c":"ChatResult","l":"values()"},{"p":"com.ohacd.matchbox.api.events","c":"AbilityUseEvent.AbilityType","l":"values()"},{"p":"com.ohacd.matchbox.api.events","c":"GameEndEvent.EndReason","l":"values()"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerEliminateEvent.EliminationReason","l":"values()"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerLeaveEvent.LeaveReason","l":"values()"},{"p":"com.ohacd.matchbox.api","c":"SessionCreationResult.ErrorType","l":"values()"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerLeaveEvent.LeaveReason","l":"VOLUNTARY"},{"p":"com.ohacd.matchbox.api.events","c":"PlayerEliminateEvent.EliminationReason","l":"VOTED_OUT"},{"p":"com.ohacd.matchbox.api","c":"GameConfig.Builder","l":"votingDuration(int)"},{"p":"com.ohacd.matchbox.api","c":"ChatMessage","l":"withChannel(ChatChannel)","u":"withChannel(com.ohacd.matchbox.api.ChatChannel)"},{"p":"com.ohacd.matchbox.api","c":"SessionBuilder","l":"withConfig(GameConfig)","u":"withConfig(com.ohacd.matchbox.api.GameConfig)"},{"p":"com.ohacd.matchbox.api","c":"SessionBuilder","l":"withCustomConfig(GameConfig)","u":"withCustomConfig(com.ohacd.matchbox.api.GameConfig)"},{"p":"com.ohacd.matchbox.api","c":"SessionBuilder","l":"withDiscussionLocation(Location)","u":"withDiscussionLocation(org.bukkit.Location)"},{"p":"com.ohacd.matchbox.api","c":"ChatMessage","l":"withFormattedMessage(Component)","u":"withFormattedMessage(net.kyori.adventure.text.Component)"},{"p":"com.ohacd.matchbox.api","c":"SessionBuilder","l":"withPlayers(Collection)","u":"withPlayers(java.util.Collection)"},{"p":"com.ohacd.matchbox.api","c":"SessionBuilder","l":"withPlayers(Player...)","u":"withPlayers(org.bukkit.entity.Player...)"},{"p":"com.ohacd.matchbox.api","c":"SessionBuilder","l":"withSeatLocations(Map)","u":"withSeatLocations(java.util.Map)"},{"p":"com.ohacd.matchbox.api","c":"SessionBuilder","l":"withSpawnPoints(List)","u":"withSpawnPoints(java.util.List)"},{"p":"com.ohacd.matchbox.api","c":"SessionBuilder","l":"withSpawnPoints(Location...)","u":"withSpawnPoints(org.bukkit.Location...)"}];updateSearchResults(); \ No newline at end of file diff --git a/.gh-pages/module-search-index.js b/.gh-pages/module-search-index.js new file mode 100644 index 0000000..0d59754 --- /dev/null +++ b/.gh-pages/module-search-index.js @@ -0,0 +1 @@ +moduleSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/.gh-pages/overview-summary.html b/.gh-pages/overview-summary.html new file mode 100644 index 0000000..bca29a9 --- /dev/null +++ b/.gh-pages/overview-summary.html @@ -0,0 +1,25 @@ + + + + +Matchbox 0.9.5 API + + + + + + + + + + +
+ +

index.html

+
+ + diff --git a/.gh-pages/overview-tree.html b/.gh-pages/overview-tree.html new file mode 100644 index 0000000..a5fce22 --- /dev/null +++ b/.gh-pages/overview-tree.html @@ -0,0 +1,144 @@ + + + + +Class Hierarchy (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For All Packages

+
+Package Hierarchies: + +
+

Class Hierarchy

+ +
+
+

Interface Hierarchy

+ +
+
+

Annotation Interface Hierarchy

+ +
+
+

Enum Class Hierarchy

+ +
+
+

Record Class Hierarchy

+ +
+
+
+
+ + diff --git a/.gh-pages/package-search-index.js b/.gh-pages/package-search-index.js new file mode 100644 index 0000000..fc914a4 --- /dev/null +++ b/.gh-pages/package-search-index.js @@ -0,0 +1 @@ +packageSearchIndex = [{"l":"All Packages","u":"allpackages-index.html"},{"l":"com.ohacd.matchbox.api"},{"l":"com.ohacd.matchbox.api.annotation"},{"l":"com.ohacd.matchbox.api.events"}];updateSearchResults(); \ No newline at end of file diff --git a/.gh-pages/resources/glass.png b/.gh-pages/resources/glass.png new file mode 100644 index 0000000000000000000000000000000000000000..a7f591f467a1c0c949bbc510156a0c1afb860a6e GIT binary patch literal 499 zcmVJoRsvExf%rEN>jUL}qZ_~k#FbE+Q;{`;0FZwVNX2n-^JoI; zP;4#$8DIy*Yk-P>VN(DUKmPse7mx+ExD4O|;?E5D0Z5($mjO3`*anwQU^s{ZDK#Lz zj>~{qyaIx5K!t%=G&2IJNzg!ChRpyLkO7}Ry!QaotAHAMpbB3AF(}|_f!G-oI|uK6 z`id_dumai5K%C3Y$;tKS_iqMPHg<*|-@e`liWLAggVM!zAP#@l;=c>S03;{#04Z~5 zN_+ss=Yg6*hTr59mzMwZ@+l~q!+?ft!fF66AXT#wWavHt30bZWFCK%!BNk}LN?0Hg z1VF_nfs`Lm^DjYZ1(1uD0u4CSIr)XAaqW6IT{!St5~1{i=i}zAy76p%_|w8rh@@c0Axr!ns=D-X+|*sY6!@wacG9%)Qn*O zl0sa739kT-&_?#oVxXF6tOnqTD)cZ}2vi$`ZU8RLAlo8=_z#*P3xI~i!lEh+Pdu-L zx{d*wgjtXbnGX_Yf@Tc7Q3YhLhPvc8noGJs2DA~1DySiA&6V{5JzFt ojAY1KXm~va;tU{v7C?Xj0BHw!K;2aXV*mgE07*qoM6N<$f;4TDA^-pY literal 0 HcmV?d00001 diff --git a/.gh-pages/script-dir/jquery-3.7.1.min.js b/.gh-pages/script-dir/jquery-3.7.1.min.js new file mode 100644 index 0000000..7f37b5d --- /dev/null +++ b/.gh-pages/script-dir/jquery-3.7.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(E(s),E(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})},x.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,l=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("
    ").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("
    ").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==x.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=x("
    ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(x("
    ").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}});x.ui.autocomplete}); \ No newline at end of file diff --git a/.gh-pages/script.js b/.gh-pages/script.js new file mode 100644 index 0000000..f1a0f25 --- /dev/null +++ b/.gh-pages/script.js @@ -0,0 +1,253 @@ +/* + * Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +var moduleSearchIndex; +var packageSearchIndex; +var typeSearchIndex; +var memberSearchIndex; +var tagSearchIndex; + +var oddRowColor = "odd-row-color"; +var evenRowColor = "even-row-color"; +var sortAsc = "sort-asc"; +var sortDesc = "sort-desc"; +var tableTab = "table-tab"; +var activeTableTab = "active-table-tab"; + +function loadScripts(doc, tag) { + createElem(doc, tag, 'search.js'); + + createElem(doc, tag, 'module-search-index.js'); + createElem(doc, tag, 'package-search-index.js'); + createElem(doc, tag, 'type-search-index.js'); + createElem(doc, tag, 'member-search-index.js'); + createElem(doc, tag, 'tag-search-index.js'); +} + +function createElem(doc, tag, path) { + var script = doc.createElement(tag); + var scriptElement = doc.getElementsByTagName(tag)[0]; + script.src = pathtoroot + path; + scriptElement.parentNode.insertBefore(script, scriptElement); +} + +// Helper for making content containing release names comparable lexicographically +function makeComparable(s) { + return s.toLowerCase().replace(/(\d+)/g, + function(n, m) { + return ("000" + m).slice(-4); + }); +} + +// Switches between two styles depending on a condition +function toggleStyle(classList, condition, trueStyle, falseStyle) { + if (condition) { + classList.remove(falseStyle); + classList.add(trueStyle); + } else { + classList.remove(trueStyle); + classList.add(falseStyle); + } +} + +// Sorts the rows in a table lexicographically by the content of a specific column +function sortTable(header, columnIndex, columns) { + var container = header.parentElement; + var descending = header.classList.contains(sortAsc); + container.querySelectorAll("div.table-header").forEach( + function(header) { + header.classList.remove(sortAsc); + header.classList.remove(sortDesc); + } + ) + var cells = container.children; + var rows = []; + for (var i = columns; i < cells.length; i += columns) { + rows.push(Array.prototype.slice.call(cells, i, i + columns)); + } + var comparator = function(a, b) { + var ka = makeComparable(a[columnIndex].textContent); + var kb = makeComparable(b[columnIndex].textContent); + if (ka < kb) + return descending ? 1 : -1; + if (ka > kb) + return descending ? -1 : 1; + return 0; + }; + var sorted = rows.sort(comparator); + var visible = 0; + sorted.forEach(function(row) { + if (row[0].style.display !== 'none') { + var isEvenRow = visible++ % 2 === 0; + } + row.forEach(function(cell) { + toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor); + container.appendChild(cell); + }) + }); + toggleStyle(header.classList, descending, sortDesc, sortAsc); +} + +// Toggles the visibility of a table category in all tables in a page +function toggleGlobal(checkbox, selected, columns) { + var display = checkbox.checked ? '' : 'none'; + document.querySelectorAll("div.table-tabs").forEach(function(t) { + var id = t.parentElement.getAttribute("id"); + var selectedClass = id + "-tab" + selected; + // if selected is empty string it selects all uncategorized entries + var selectUncategorized = !Boolean(selected); + var visible = 0; + document.querySelectorAll('div.' + id) + .forEach(function(elem) { + if (selectUncategorized) { + if (elem.className.indexOf(selectedClass) === -1) { + elem.style.display = display; + } + } else if (elem.classList.contains(selectedClass)) { + elem.style.display = display; + } + if (elem.style.display === '') { + var isEvenRow = visible++ % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + } + }); + var displaySection = visible === 0 ? 'none' : ''; + t.parentElement.style.display = displaySection; + document.querySelector("li#contents-" + id).style.display = displaySection; + }) +} + +// Shows the elements of a table belonging to a specific category +function show(tableId, selected, columns) { + if (tableId !== selected) { + document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') + .forEach(function(elem) { + elem.style.display = 'none'; + }); + } + document.querySelectorAll('div.' + selected) + .forEach(function(elem, index) { + elem.style.display = ''; + var isEvenRow = index % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + }); + updateTabs(tableId, selected); +} + +function updateTabs(tableId, selected) { + document.querySelector('div#' + tableId +' .summary-table') + .setAttribute('aria-labelledby', selected); + document.querySelectorAll('button[id^="' + tableId + '"]') + .forEach(function(tab, index) { + if (selected === tab.id || (tableId === selected && index === 0)) { + tab.className = activeTableTab; + tab.setAttribute('aria-selected', true); + tab.setAttribute('tabindex',0); + } else { + tab.className = tableTab; + tab.setAttribute('aria-selected', false); + tab.setAttribute('tabindex',-1); + } + }); +} + +function switchTab(e) { + var selected = document.querySelector('[aria-selected=true]'); + if (selected) { + if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) { + // left or up arrow key pressed: move focus to previous tab + selected.previousSibling.click(); + selected.previousSibling.focus(); + e.preventDefault(); + } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) { + // right or down arrow key pressed: move focus to next tab + selected.nextSibling.click(); + selected.nextSibling.focus(); + e.preventDefault(); + } + } +} + +var updateSearchResults = function() {}; + +function indexFilesLoaded() { + return moduleSearchIndex + && packageSearchIndex + && typeSearchIndex + && memberSearchIndex + && tagSearchIndex; +} +// Copy the contents of the local snippet to the clipboard +function copySnippet(button) { + copyToClipboard(button.nextElementSibling.innerText); + switchCopyLabel(button, button.firstElementChild); +} +function copyToClipboard(content) { + var textarea = document.createElement("textarea"); + textarea.style.height = 0; + document.body.appendChild(textarea); + textarea.value = content; + textarea.select(); + document.execCommand("copy"); + document.body.removeChild(textarea); +} +function switchCopyLabel(button, span) { + var copied = span.getAttribute("data-copied"); + button.classList.add("visible"); + var initialLabel = span.innerHTML; + span.innerHTML = copied; + setTimeout(function() { + button.classList.remove("visible"); + setTimeout(function() { + if (initialLabel !== copied) { + span.innerHTML = initialLabel; + } + }, 100); + }, 1900); +} +// Workaround for scroll position not being included in browser history (8249133) +document.addEventListener("DOMContentLoaded", function(e) { + var contentDiv = document.querySelector("div.flex-content"); + window.addEventListener("popstate", function(e) { + if (e.state !== null) { + contentDiv.scrollTop = e.state; + } + }); + window.addEventListener("hashchange", function(e) { + history.replaceState(contentDiv.scrollTop, document.title); + }); + var timeoutId; + contentDiv.addEventListener("scroll", function(e) { + if (timeoutId) { + clearTimeout(timeoutId); + } + timeoutId = setTimeout(function() { + history.replaceState(contentDiv.scrollTop, document.title); + }, 100); + }); + if (!location.hash) { + history.replaceState(contentDiv.scrollTop, document.title); + } +}); diff --git a/.gh-pages/search-page.js b/.gh-pages/search-page.js new file mode 100644 index 0000000..e4da097 --- /dev/null +++ b/.gh-pages/search-page.js @@ -0,0 +1,284 @@ +/* + * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +"use strict"; +$(function() { + var copy = $("#page-search-copy"); + var expand = $("#page-search-expand"); + var searchLink = $("span#page-search-link"); + var redirect = $("input#search-redirect"); + function setSearchUrlTemplate() { + var href = document.location.href.split(/[#?]/)[0]; + href += "?q=" + "%s"; + if (redirect.is(":checked")) { + href += "&r=1"; + } + searchLink.html(href); + copy[0].onmouseenter(); + } + function copyLink(e) { + copyToClipboard(this.previousSibling.innerText); + switchCopyLabel(this, this.lastElementChild); + } + copy.click(copyLink); + copy[0].onmouseenter = function() {}; + redirect.click(setSearchUrlTemplate); + setSearchUrlTemplate(); + copy.prop("disabled", false); + redirect.prop("disabled", false); + expand.click(function (e) { + var searchInfo = $("div.page-search-info"); + if(this.parentElement.hasAttribute("open")) { + searchInfo.attr("style", "border-width: 0;"); + } else { + searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight")); + } + }); +}); +$(window).on("load", function() { + var input = $("#page-search-input"); + var reset = $("#page-search-reset"); + var notify = $("#page-search-notify"); + var resultSection = $("div#result-section"); + var resultContainer = $("div#result-container"); + var searchTerm = ""; + var activeTab = ""; + var fixedTab = false; + var visibleTabs = []; + var feelingLucky = false; + function renderResults(result) { + if (!result.length) { + notify.html(messages.noResult); + } else if (result.length === 1) { + notify.html(messages.oneResult); + } else { + notify.html(messages.manyResults.replace("{0}", result.length)); + } + resultContainer.empty(); + var r = { + "types": [], + "members": [], + "packages": [], + "modules": [], + "searchTags": [] + }; + for (var i in result) { + var item = result[i]; + var arr = r[item.category]; + arr.push(item); + } + if (!activeTab || r[activeTab].length === 0 || !fixedTab) { + Object.keys(r).reduce(function(prev, curr) { + if (r[curr].length > 0 && r[curr][0].score > prev) { + activeTab = curr; + return r[curr][0].score; + } + return prev; + }, 0); + } + if (feelingLucky && activeTab) { + notify.html(messages.redirecting) + var firstItem = r[activeTab][0]; + window.location = getURL(firstItem.indexItem, firstItem.category); + return; + } + if (result.length > 20) { + if (searchTerm[searchTerm.length - 1] === ".") { + if (activeTab === "types" && r["members"].length > r["types"].length) { + activeTab = "members"; + } else if (activeTab === "packages" && r["types"].length > r["packages"].length) { + activeTab = "types"; + } + } + } + var categoryCount = Object.keys(r).reduce(function(prev, curr) { + return prev + (r[curr].length > 0 ? 1 : 0); + }, 0); + visibleTabs = []; + var tabContainer = $("
    ").appendTo(resultContainer); + for (var key in r) { + var id = "#result-tab-" + key.replace("searchTags", "search_tags"); + if (r[key].length) { + var count = r[key].length >= 1000 ? "999+" : r[key].length; + if (result.length > 20 && categoryCount > 1) { + var button = $("").appendTo(tabContainer); + button.click(key, function(e) { + fixedTab = true; + renderResult(e.data, $(this)); + }); + visibleTabs.push(key); + } else { + $("" + categories[key] + + " (" + count + ")").appendTo(tabContainer); + renderTable(key, r[key]).appendTo(resultContainer); + tabContainer = $("
    ").appendTo(resultContainer); + + } + } + } + if (activeTab && result.length > 20 && categoryCount > 1) { + $("button#result-tab-" + activeTab).addClass("active-table-tab"); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + } + resultSection.show(); + function renderResult(category, button) { + activeTab = category; + setSearchUrl(); + resultContainer.find("div.summary-table").remove(); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + button.siblings().removeClass("active-table-tab"); + button.addClass("active-table-tab"); + } + } + function selectTab(category) { + $("button#result-tab-" + category).click(); + } + function renderTable(category, items) { + var table = $("
    ") + .addClass(category === "modules" + ? "one-column-search-results" + : "two-column-search-results"); + var col1, col2; + if (category === "modules") { + col1 = "Module"; + } else if (category === "packages") { + col1 = "Module"; + col2 = "Package"; + } else if (category === "types") { + col1 = "Package"; + col2 = "Class" + } else if (category === "members") { + col1 = "Class"; + col2 = "Member"; + } else if (category === "searchTags") { + col1 = "Location"; + col2 = "Name"; + } + $("
    " + col1 + "
    ").appendTo(table); + if (category !== "modules") { + $("
    " + col2 + "
    ").appendTo(table); + } + $.each(items, function(index, item) { + var rowColor = index % 2 ? "odd-row-color" : "even-row-color"; + renderItem(item, table, rowColor); + }); + return table; + } + function renderItem(item, table, rowColor) { + var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length); + var link = $("") + .attr("href", getURL(item.indexItem, item.category)) + .attr("tabindex", "0") + .addClass("search-result-link") + .html(label); + var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1); + if (item.category === "searchTags") { + container = item.indexItem.h || ""; + } + if (item.category !== "modules") { + $("
    ").html(container).addClass("col-plain").addClass(rowColor).appendTo(table); + } + $("
    ").html(link).addClass("col-last").addClass(rowColor).appendTo(table); + } + var timeout; + function schedulePageSearch() { + if (timeout) { + clearTimeout(timeout); + } + timeout = setTimeout(function () { + doPageSearch() + }, 100); + } + function doPageSearch() { + setSearchUrl(); + var term = searchTerm = input.val().trim(); + if (term === "") { + notify.html(messages.enterTerm); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + resultSection.hide(); + } else { + notify.html(messages.searching); + doSearch({ term: term, maxResults: 1200 }, renderResults); + } + } + function setSearchUrl() { + var query = input.val().trim(); + var url = document.location.pathname; + if (query) { + url += "?q=" + encodeURI(query); + if (activeTab && fixedTab) { + url += "&c=" + activeTab; + } + } + history.replaceState({query: query}, "", url); + } + input.on("input", function(e) { + feelingLucky = false; + schedulePageSearch(); + }); + $(document).keydown(function(e) { + if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) { + if (activeTab && visibleTabs.length > 1) { + var idx = visibleTabs.indexOf(activeTab); + idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1; + selectTab(visibleTabs[idx % visibleTabs.length]); + return false; + } + } + }); + reset.click(function() { + notify.html(messages.enterTerm); + resultSection.hide(); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + input.val('').focus(); + setSearchUrl(); + }); + input.prop("disabled", false); + reset.prop("disabled", false); + + var urlParams = new URLSearchParams(window.location.search); + if (urlParams.has("q")) { + input.val(urlParams.get("q")) + } + if (urlParams.has("c")) { + activeTab = urlParams.get("c"); + fixedTab = true; + } + if (urlParams.get("r")) { + feelingLucky = true; + } + if (input.val()) { + doPageSearch(); + } else { + notify.html(messages.enterTerm); + } + input.select().focus(); +}); diff --git a/.gh-pages/search.html b/.gh-pages/search.html new file mode 100644 index 0000000..d1d8dbf --- /dev/null +++ b/.gh-pages/search.html @@ -0,0 +1,72 @@ + + + + +Search (Matchbox 0.9.5 API) + + + + + + + + + + + + + +
    + +
    +
    +

    Search

    +
    + + +
    +Additional resources +
    +
    +
    +

    The help page provides an introduction to the scope and syntax of JavaDoc search.

    +

    You can use the <ctrl> or <cmd> keys in combination with the left and right arrow keys to switch between result tabs in this page.

    +

    The URL template below may be used to configure this page as a search engine in browsers that support this feature. It has been tested to work in Google Chrome and Mozilla Firefox. Note that other browsers may not support this feature or require a different URL format.

    +link +

    + +

    +
    +

    Loading search index...

    + +
    +
    +
    + + diff --git a/.gh-pages/search.js b/.gh-pages/search.js new file mode 100644 index 0000000..4ca9557 --- /dev/null +++ b/.gh-pages/search.js @@ -0,0 +1,458 @@ +/* + * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ +"use strict"; +const messages = { + enterTerm: "Enter a search term", + noResult: "No results found", + oneResult: "Found one result", + manyResults: "Found {0} results", + loading: "Loading search index...", + searching: "Searching...", + redirecting: "Redirecting to first result...", + linkIcon: "Link icon", + linkToSection: "Link to this section" +} +const categories = { + modules: "Modules", + packages: "Packages", + types: "Classes and Interfaces", + members: "Members", + searchTags: "Search Tags" +}; +const highlight = "$&"; +const NO_MATCH = {}; +const MAX_RESULTS = 300; +function checkUnnamed(name, separator) { + return name === "" || !name ? "" : name + separator; +} +function escapeHtml(str) { + return str.replace(//g, ">"); +} +function getHighlightedText(str, boundaries, from, to) { + var start = from; + var text = ""; + for (var i = 0; i < boundaries.length; i += 2) { + var b0 = boundaries[i]; + var b1 = boundaries[i + 1]; + if (b0 >= to || b1 <= from) { + continue; + } + text += escapeHtml(str.slice(start, Math.max(start, b0))); + text += ""; + text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1))); + text += ""; + start = Math.min(to, b1); + } + text += escapeHtml(str.slice(start, to)); + return text; +} +function getURLPrefix(item, category) { + var urlPrefix = ""; + var slash = "/"; + if (category === "modules") { + return item.l + slash; + } else if (category === "packages" && item.m) { + return item.m + slash; + } else if (category === "types" || category === "members") { + if (item.m) { + urlPrefix = item.m + slash; + } else { + $.each(packageSearchIndex, function(index, it) { + if (it.m && item.p === it.l) { + urlPrefix = it.m + slash; + } + }); + } + } + return urlPrefix; +} +function getURL(item, category) { + if (item.url) { + return item.url; + } + var url = getURLPrefix(item, category); + if (category === "modules") { + url += "module-summary.html"; + } else if (category === "packages") { + if (item.u) { + url = item.u; + } else { + url += item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (category === "types") { + if (item.u) { + url = item.u; + } else { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html"; + } + } else if (category === "members") { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#"; + if (item.u) { + url += item.u; + } else { + url += item.l; + } + } else if (category === "searchTags") { + url += item.u; + } + item.url = url; + return url; +} +function createMatcher(term, camelCase) { + if (camelCase && !isUpperCase(term)) { + return null; // no need for camel-case matcher for lower case query + } + var pattern = ""; + var upperCase = []; + term.trim().split(/\s+/).forEach(function(w, index, array) { + var tokens = w.split(/(?=[A-Z,.()<>?[\/])/); + for (var i = 0; i < tokens.length; i++) { + var s = tokens[i]; + // ',' and '?' are the only delimiters commonly followed by space in java signatures + pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")"; + upperCase.push(false); + var isWordToken = /\w$/.test(s); + if (isWordToken) { + if (i === tokens.length - 1 && index < array.length - 1) { + // space in query string matches all delimiters + pattern += "(.*?)"; + upperCase.push(isUpperCase(s[0])); + } else { + if (!camelCase && isUpperCase(s) && s.length === 1) { + pattern += "()"; + } else { + pattern += "([a-z0-9$<>?[\\]]*?)"; + } + upperCase.push(isUpperCase(s[0])); + } + } else { + pattern += "()"; + upperCase.push(false); + } + } + }); + var re = new RegExp(pattern, "gi"); + re.upperCase = upperCase; + return re; +} +function findMatch(matcher, input, startOfName, endOfName) { + var from = startOfName; + matcher.lastIndex = from; + var match = matcher.exec(input); + // Expand search area until we get a valid result or reach the beginning of the string + while (!match || match.index + match[0].length < startOfName || endOfName < match.index) { + if (from === 0) { + return NO_MATCH; + } + from = input.lastIndexOf(".", from - 2) + 1; + matcher.lastIndex = from; + match = matcher.exec(input); + } + var boundaries = []; + var matchEnd = match.index + match[0].length; + var score = 5; + var start = match.index; + var prevEnd = -1; + for (var i = 1; i < match.length; i += 2) { + var isUpper = isUpperCase(input[start]); + var isMatcherUpper = matcher.upperCase[i]; + // capturing groups come in pairs, match and non-match + boundaries.push(start, start + match[i].length); + // make sure groups are anchored on a left word boundary + var prevChar = input[start - 1] || ""; + var nextChar = input[start + 1] || ""; + if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) { + if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) { + score -= 0.1; + } else if (isMatcherUpper && start === prevEnd) { + score -= isUpper ? 0.1 : 1.0; + } else { + return NO_MATCH; + } + } + prevEnd = start + match[i].length; + start += match[i].length + match[i + 1].length; + + // lower score for parts of the name that are missing + if (match[i + 1] && prevEnd < endOfName) { + score -= rateNoise(match[i + 1]); + } + } + // lower score if a type name contains unmatched camel-case parts + if (input[matchEnd - 1] !== "." && endOfName > matchEnd) + score -= rateNoise(input.slice(matchEnd, endOfName)); + score -= rateNoise(input.slice(0, Math.max(startOfName, match.index))); + + if (score <= 0) { + return NO_MATCH; + } + return { + input: input, + score: score, + boundaries: boundaries + }; +} +function isUpperCase(s) { + return s !== s.toLowerCase(); +} +function isLowerCase(s) { + return s !== s.toUpperCase(); +} +function rateNoise(str) { + return (str.match(/([.(])/g) || []).length / 5 + + (str.match(/([A-Z]+)/g) || []).length / 10 + + str.length / 20; +} +function doSearch(request, response) { + var term = request.term.trim(); + var maxResults = request.maxResults || MAX_RESULTS; + if (term.length === 0) { + return this.close(); + } + var matcher = { + plainMatcher: createMatcher(term, false), + camelCaseMatcher: createMatcher(term, true) + } + var indexLoaded = indexFilesLoaded(); + + function getPrefix(item, category) { + switch (category) { + case "packages": + return checkUnnamed(item.m, "/"); + case "types": + return checkUnnamed(item.p, "."); + case "members": + return checkUnnamed(item.p, ".") + item.c + "."; + default: + return ""; + } + } + function useQualifiedName(category) { + switch (category) { + case "packages": + return /[\s/]/.test(term); + case "types": + case "members": + return /[\s.]/.test(term); + default: + return false; + } + } + function searchIndex(indexArray, category) { + var matches = []; + if (!indexArray) { + if (!indexLoaded) { + matches.push({ l: messages.loading, category: category }); + } + return matches; + } + $.each(indexArray, function (i, item) { + var prefix = getPrefix(item, category); + var simpleName = item.l; + var qualifiedName = prefix + simpleName; + var useQualified = useQualifiedName(category); + var input = useQualified ? qualifiedName : simpleName; + var startOfName = useQualified ? prefix.length : 0; + var endOfName = category === "members" && input.indexOf("(", startOfName) > -1 + ? input.indexOf("(", startOfName) : input.length; + var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName); + if (m === NO_MATCH && matcher.camelCaseMatcher) { + m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName); + } + if (m !== NO_MATCH) { + m.indexItem = item; + m.prefix = prefix; + m.category = category; + if (!useQualified) { + m.input = qualifiedName; + m.boundaries = m.boundaries.map(function(b) { + return b + prefix.length; + }); + } + matches.push(m); + } + return true; + }); + return matches.sort(function(e1, e2) { + return e2.score - e1.score; + }).slice(0, maxResults); + } + + var result = searchIndex(moduleSearchIndex, "modules") + .concat(searchIndex(packageSearchIndex, "packages")) + .concat(searchIndex(typeSearchIndex, "types")) + .concat(searchIndex(memberSearchIndex, "members")) + .concat(searchIndex(tagSearchIndex, "searchTags")); + + if (!indexLoaded) { + updateSearchResults = function() { + doSearch(request, response); + } + } else { + updateSearchResults = function() {}; + } + response(result); +} +// JQuery search menu implementation +$.widget("custom.catcomplete", $.ui.autocomplete, { + _create: function() { + this._super(); + this.widget().menu("option", "items", "> .result-item"); + // workaround for search result scrolling + this.menu._scrollIntoView = function _scrollIntoView( item ) { + var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; + if ( this._hasScroll() ) { + borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0; + paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0; + offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; + scroll = this.activeMenu.scrollTop(); + elementHeight = this.activeMenu.height() - 26; + itemHeight = item.outerHeight(); + + if ( offset < 0 ) { + this.activeMenu.scrollTop( scroll + offset ); + } else if ( offset + itemHeight > elementHeight ) { + this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); + } + } + }; + }, + _renderMenu: function(ul, items) { + var currentCategory = ""; + var widget = this; + widget.menu.bindings = $(); + $.each(items, function(index, item) { + if (item.category && item.category !== currentCategory) { + ul.append("
  • " + categories[item.category] + "
  • "); + currentCategory = item.category; + } + var li = widget._renderItemData(ul, item); + if (item.category) { + li.attr("aria-label", categories[item.category] + " : " + item.l); + } else { + li.attr("aria-label", item.l); + } + li.attr("class", "result-item"); + }); + ul.append(""); + }, + _renderItem: function(ul, item) { + var li = $("
  • ").appendTo(ul); + var div = $("
    ").appendTo(li); + var label = item.l + ? item.l + : getHighlightedText(item.input, item.boundaries, 0, item.input.length); + var idx = item.indexItem; + if (item.category === "searchTags" && idx && idx.h) { + if (idx.d) { + div.html(label + " (" + idx.h + ")
    " + + idx.d + "
    "); + } else { + div.html(label + " (" + idx.h + ")"); + } + } else { + div.html(label); + } + return li; + } +}); +$(function() { + var expanded = false; + var windowWidth; + function collapse() { + if (expanded) { + $("div#navbar-top").removeAttr("style"); + $("button#navbar-toggle-button") + .removeClass("expanded") + .attr("aria-expanded", "false"); + expanded = false; + } + } + $("button#navbar-toggle-button").click(function (e) { + if (expanded) { + collapse(); + } else { + var navbar = $("div#navbar-top"); + navbar.height(navbar.prop("scrollHeight")); + $("button#navbar-toggle-button") + .addClass("expanded") + .attr("aria-expanded", "true"); + expanded = true; + windowWidth = window.innerWidth; + } + }); + $("ul.sub-nav-list-small li a").click(collapse); + $("input#search-input").focus(collapse); + $("main").click(collapse); + $("section[id] > :header, :header[id], :header:has(a[id])").each(function(idx, el) { + // Create anchor links for headers with an associated id attribute + var hdr = $(el); + var id = hdr.attr("id") || hdr.parent("section").attr("id") || hdr.children("a").attr("id"); + if (id) { + hdr.append(" " + messages.linkIcon +""); + } + }); + $(window).on("orientationchange", collapse).on("resize", function(e) { + if (expanded && windowWidth !== window.innerWidth) collapse(); + }); + var search = $("#search-input"); + var reset = $("#reset-button"); + search.catcomplete({ + minLength: 1, + delay: 200, + source: doSearch, + response: function(event, ui) { + if (!ui.content.length) { + ui.content.push({ l: messages.noResult }); + } else { + $("#search-input").empty(); + } + }, + autoFocus: true, + focus: function(event, ui) { + return false; + }, + position: { + collision: "flip" + }, + select: function(event, ui) { + if (ui.item.indexItem) { + var url = getURL(ui.item.indexItem, ui.item.category); + window.location.href = pathtoroot + url; + $("#search-input").focus(); + } + } + }); + search.val(''); + search.prop("disabled", false); + reset.prop("disabled", false); + reset.click(function() { + search.val('').focus(); + }); + search.focus(); +}); diff --git a/.gh-pages/stylesheet.css b/.gh-pages/stylesheet.css new file mode 100644 index 0000000..f71489f --- /dev/null +++ b/.gh-pages/stylesheet.css @@ -0,0 +1,1272 @@ +/* + * Javadoc style sheet + */ + +@import url('resources/fonts/dejavu.css'); + +/* + * These CSS custom properties (variables) define the core color and font + * properties used in this stylesheet. + */ +:root { + /* body, block and code fonts */ + --body-font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + --block-font-family: 'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + --code-font-family: 'DejaVu Sans Mono', monospace; + /* Base font sizes for body and code elements */ + --body-font-size: 14px; + --code-font-size: 14px; + /* Text colors for body and block elements */ + --body-text-color: #353833; + --block-text-color: #474747; + /* Background colors for various structural elements */ + --body-background-color: #ffffff; + --section-background-color: #f8f8f8; + --detail-background-color: #ffffff; + /* Colors for navigation bar and table captions */ + --navbar-background-color: #4D7A97; + --navbar-text-color: #ffffff; + /* Background color for subnavigation and various headers */ + --subnav-background-color: #dee3e9; + /* Background and text colors for selected tabs and navigation items */ + --selected-background-color: #f8981d; + --selected-text-color: #253441; + --selected-link-color: #1f389c; + /* Background colors for generated tables */ + --even-row-color: #ffffff; + --odd-row-color: #eeeeef; + /* Text color for page title */ + --title-color: #2c4557; + /* Text colors for links */ + --link-color: #4A6782; + --link-color-active: #bb7a2a; + /* Snippet colors */ + --snippet-background-color: #ebecee; + --snippet-text-color: var(--block-text-color); + --snippet-highlight-color: #f7c590; + /* Border colors for structural elements and user defined tables */ + --border-color: #ededed; + --table-border-color: #000000; + /* Search input colors */ + --search-input-background-color: #ffffff; + --search-input-text-color: #000000; + --search-input-placeholder-color: #909090; + /* Highlight color for active search tag target */ + --search-tag-highlight-color: #ffff00; + /* Adjustments for icon and active background colors of copy-to-clipboard buttons */ + --copy-icon-brightness: 100%; + --copy-button-background-color-active: rgba(168, 168, 176, 0.3); + /* Colors for invalid tag notifications */ + --invalid-tag-background-color: #ffe6e6; + --invalid-tag-text-color: #000000; +} +/* + * Styles for individual HTML elements. + * + * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular + * HTML element throughout the page. + */ +body { + background-color:var(--body-background-color); + color:var(--body-text-color); + font-family:var(--body-font-family); + font-size:var(--body-font-size); + margin:0; + padding:0; + height:100%; + width:100%; +} +iframe { + margin:0; + padding:0; + height:100%; + width:100%; + overflow-y:scroll; + border:none; +} +a:link, a:visited { + text-decoration:none; + color:var(--link-color); +} +a[href]:hover, a[href]:focus { + text-decoration:none; + color:var(--link-color-active); +} +pre { + font-family:var(--code-font-family); + font-size:1em; +} +h1 { + font-size:1.428em; +} +h2 { + font-size:1.285em; +} +h3 { + font-size:1.14em; +} +h4 { + font-size:1.072em; +} +h5 { + font-size:1.001em; +} +h6 { + font-size:0.93em; +} +/* Disable font boosting for selected elements */ +h1, h2, h3, h4, h5, h6, div.member-signature { + max-height: 1000em; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:var(--code-font-family); +} +:not(h1, h2, h3, h4, h5, h6) > code, +:not(h1, h2, h3, h4, h5, h6) > tt { + font-size:var(--code-font-size); + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:var(--code-font-family); + font-size:1em; + padding-top:4px; +} +.summary-table dt code { + font-family:var(--code-font-family); + font-size:1em; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +button { + font-family: var(--body-font-family); + font-size: 1em; +} +/* + * Styles for HTML generated by javadoc. + * + * These are style classes that are used by the standard doclet to generate HTML documentation. + */ + +/* + * Styles for document title and copyright. + */ +.about-language { + float:right; + padding:0 21px 8px 8px; + font-size:0.915em; + margin-top:-9px; + height:2.9em; +} +.legal-copy { + margin-left:.5em; +} +/* + * Styles for navigation bar. + */ +@media screen { + div.flex-box { + position:fixed; + display:flex; + flex-direction:column; + height: 100%; + width: 100%; + } + header.flex-header { + flex: 0 0 auto; + } + div.flex-content { + flex: 1 1 auto; + overflow-y: auto; + } +} +.top-nav { + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + float:left; + width:100%; + clear:right; + min-height:2.8em; + padding:10px 0 0 0; + overflow:hidden; + font-size:0.857em; +} +button#navbar-toggle-button { + display:none; +} +ul.sub-nav-list-small { + display: none; +} +.sub-nav { + background-color:var(--subnav-background-color); + float:left; + width:100%; + overflow:hidden; + font-size:0.857em; +} +.sub-nav div { + clear:left; + float:left; + padding:6px; + text-transform:uppercase; +} +.sub-nav .sub-nav-list { + padding-top:4px; +} +ul.nav-list { + display:block; + margin:0 25px 0 0; + padding:0; +} +ul.sub-nav-list { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.nav-list li { + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list-search { + float:right; + margin:0; + padding:6px; + clear:none; + text-align:right; + position:relative; +} +ul.sub-nav-list li { + list-style:none; + float:left; +} +.top-nav a:link, .top-nav a:active, .top-nav a:visited { + color:var(--navbar-text-color); + text-decoration:none; + text-transform:uppercase; +} +.top-nav a:hover { + color:var(--link-color-active); +} +.nav-bar-cell1-rev { + background-color:var(--selected-background-color); + color:var(--selected-text-color); + margin: auto 5px; +} +.skip-nav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* + * Hide navigation links and search box in print layout + */ +@media print { + ul.nav-list, div.sub-nav { + display:none; + } +} +/* + * Styles for page header. + */ +.title { + color:var(--title-color); + margin:10px 0; +} +.sub-title { + margin:5px 0 0 0; +} +ul.contents-list { + margin: 0 0 15px 0; + padding: 0; + list-style: none; +} +ul.contents-list li { + font-size:0.93em; +} +/* + * Styles for headings. + */ +body.class-declaration-page .summary h2, +body.class-declaration-page .details h2, +body.class-use-page h2, +body.module-declaration-page .block-list h2 { + font-style: italic; + padding:0; + margin:15px 0; +} +body.class-declaration-page .summary h3, +body.class-declaration-page .details h3, +body.class-declaration-page .summary .inherited-list h2 { + background-color:var(--subnav-background-color); + border:1px solid var(--border-color); + margin:0 0 6px -8px; + padding:7px 5px; +} +/* + * Styles for page layout containers. + */ +main { + clear:both; + padding:10px 20px; + position:relative; +} +dl.notes > dt { + font-family: var(--body-font-family); + font-size:0.856em; + font-weight:bold; + margin:10px 0 0 0; + color:var(--body-text-color); +} +dl.notes > dd { + margin:5px 10px 10px 0; + font-size:1em; + font-family:var(--block-font-family) +} +dl.name-value > dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +dl.name-value > dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* + * Styles for lists. + */ +li.circle { + list-style:circle; +} +ul.horizontal li { + display:inline; + font-size:0.9em; +} +div.inheritance { + margin:0; + padding:0; +} +div.inheritance div.inheritance { + margin-left:2em; +} +ul.block-list, +ul.details-list, +ul.member-list, +ul.summary-list { + margin:10px 0 10px 0; + padding:0; +} +ul.block-list > li, +ul.details-list > li, +ul.member-list > li, +ul.summary-list > li { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +ul.ref-list { + padding:0; + margin:0; +} +ul.ref-list > li { + list-style:none; +} +.summary-table dl, .summary-table dl dt, .summary-table dl dd { + margin-top:0; + margin-bottom:1px; +} +ul.tag-list, ul.tag-list-long { + padding-left: 0; + list-style: none; +} +ul.tag-list li { + display: inline; +} +ul.tag-list li:not(:last-child):after, +ul.tag-list-long li:not(:last-child):after +{ + content: ", "; + white-space: pre-wrap; +} +ul.preview-feature-list { + list-style: none; + margin:0; + padding:0.1em; + line-height: 1.6em; +} +/* + * Styles for tables. + */ +.summary-table, .details-table { + width:100%; + border-spacing:0; + border:1px solid var(--border-color); + border-top:0; + padding:0; +} +.caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:var(--selected-text-color); + clear:none; + overflow:hidden; + padding: 10px 0 0 1px; + margin:0; +} +.caption a:link, .caption a:visited { + color:var(--selected-link-color); +} +.caption a:hover, +.caption a:active { + color:var(--navbar-text-color); +} +.caption span { + font-weight:bold; + white-space:nowrap; + padding:5px 12px 7px 12px; + display:inline-block; + float:left; + background-color:var(--selected-background-color); + border: none; + height:16px; +} +div.table-tabs { + padding:10px 0 0 1px; + margin:10px 0 0 0; +} +div.table-tabs > button { + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 8px; +} +div.table-tabs > .active-table-tab { + background: var(--selected-background-color); + color: var(--selected-text-color); +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.two-column-search-results { + display: grid; + grid-template-columns: minmax(400px, max-content) minmax(400px, auto); +} +div.checkboxes { + line-height: 2em; +} +div.checkboxes > span { + margin-left: 10px; +} +div.checkboxes > label { + margin-left: 8px; + white-space: nowrap; +} +div.checkboxes > label > input { + margin: 0 2px; +} +.two-column-summary { + display: grid; + grid-template-columns: minmax(25%, max-content) minmax(25%, auto); +} +.three-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(20%, max-content) minmax(20%, auto); +} +.three-column-release-summary { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(10%, max-content) minmax(40%, auto); +} +.four-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, max-content) minmax(15%, auto); +} +@media screen and (max-width: 1000px) { + .four-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + } +} +@media screen and (max-width: 800px) { + .two-column-search-results { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(40%, auto); + } + .three-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(25%, auto); + } + .three-column-release-summary { + display: grid; + grid-template-columns: minmax(70%, max-content) minmax(30%, max-content) + } + .three-column-summary .col-last, + .three-column-release-summary .col-last{ + grid-column-end: span 2; + } +} +@media screen and (max-width: 600px) { + .two-column-summary { + display: grid; + grid-template-columns: 1fr; + } +} +.summary-table > div, .details-table > div { + text-align:left; + padding: 8px 3px 3px 7px; + overflow-x: auto; + scrollbar-width: thin; +} +.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name { + vertical-align:top; + padding-right:0; + padding-top:8px; + padding-bottom:3px; +} +.table-header { + background:var(--subnav-background-color); + font-weight: bold; +} +/* Sortable table columns */ +.table-header[onclick] { + cursor: pointer; +} +.table-header[onclick]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + '); + background-size:100% 100%; + width:9px; + height:14px; + margin-left:4px; + margin-bottom:-3px; +} +.table-header[onclick].sort-asc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + +} +.table-header[onclick].sort-desc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} +.col-first, .col-first { + font-size:0.93em; +} +.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last { + font-size:0.93em; +} +.col-first, .col-second, .col-constructor-name { + vertical-align:top; + overflow: auto; +} +.col-last { + white-space:normal; +} +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-constructor-name a:link, .col-constructor-name a:visited, +.col-summary-item-name a:link, .col-summary-item-name a:visited { + font-weight:bold; +} +.even-row-color, .even-row-color .table-header { + background-color:var(--even-row-color); +} +.odd-row-color, .odd-row-color .table-header { + background-color:var(--odd-row-color); +} +/* + * Styles for contents. + */ +div.block { + font-size:var(--body-font-size); + font-family:var(--block-font-family); +} +.col-last div { + padding-top:0; +} +.col-last a { + padding-bottom:3px; +} +.module-signature, +.package-signature, +.type-signature, +.member-signature { + font-family:var(--code-font-family); + font-size:1em; + margin:14px 0; + white-space: pre-wrap; +} +.module-signature, +.package-signature, +.type-signature { + margin-top: 0; +} +.member-signature .type-parameters-long, +.member-signature .parameters, +.member-signature .exceptions { + display: inline-block; + vertical-align: top; + white-space: pre; +} +.member-signature .type-parameters { + white-space: normal; +} +/* + * Styles for formatting effect. + */ +.source-line-no { + /* Color of line numbers in source pages can be set via custom property below */ + color:var(--source-linenumber-color, green); + padding:0 30px 0 0; +} +.block { + display:block; + margin:0 10px 5px 0; + color:var(--block-text-color); +} +.deprecated-label, .description-from-type-label, .implementation-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .package-label-in-type, +.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { + font-weight:bold; +} +.deprecation-comment, .help-footnote, .preview-comment { + font-style:italic; +} +.deprecation-block { + font-size:1em; + font-family:var(--block-font-family); + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +.preview-block { + font-size:1em; + font-family:var(--block-font-family); + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +div.block div.deprecation-comment { + font-style:normal; +} +details.invalid-tag, span.invalid-tag { + font-size:1em; + font-family:var(--block-font-family); + color: var(--invalid-tag-text-color); + background: var(--invalid-tag-background-color); + border: thin solid var(--table-border-color); + border-radius:2px; + padding: 2px 4px; + display:inline-block; +} +details summary { + cursor: pointer; +} +/* + * Styles specific to HTML5 elements. + */ +main, nav, header, footer, section { + display:block; +} +/* + * Styles for javadoc search. + */ +.ui-state-active { + /* Overrides the color of selection used in jQuery UI */ + background: var(--selected-background-color); + border: 1px solid var(--selected-background-color); + color: var(--selected-text-color); +} +.ui-autocomplete-category { + font-weight:bold; + font-size:15px; + padding:7px 0 7px 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); +} +.ui-autocomplete { + max-height:85%; + max-width:65%; + overflow-y:auto; + overflow-x:auto; + scrollbar-width: thin; + white-space:nowrap; + box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); +} +ul.ui-autocomplete { + position:fixed; + z-index:1; + background-color: var(--body-background-color); +} +ul.ui-autocomplete li { + float:left; + clear:both; + min-width:100%; +} +ul.ui-autocomplete li.ui-static-link { + position:sticky; + bottom:0; + left:0; + background: var(--subnav-background-color); + padding: 5px 0; + font-family: var(--body-font-family); + font-size: 0.93em; + font-weight: bolder; + z-index: 2; +} +li.ui-static-link a, li.ui-static-link a:visited { + text-decoration:none; + color:var(--link-color); + float:right; + margin-right:20px; +} +.ui-autocomplete .result-item { + font-size: inherit; +} +.ui-autocomplete .result-highlight { + font-weight:bold; +} +#search-input, #page-search-input { + background-image:url('resources/glass.png'); + background-size:13px; + background-repeat:no-repeat; + background-position:2px 3px; + background-color: var(--search-input-background-color); + color: var(--search-input-text-color); + border-color: var(--border-color); + padding-left:20px; + width: 250px; + margin: 0; +} +#search-input { + margin-left: 4px; +} +#reset-button { + background-color: transparent; + background-image:url('resources/x.png'); + background-repeat:no-repeat; + background-size:contain; + border:0; + border-radius:0; + width:12px; + height:12px; + position:absolute; + right:12px; + top:10px; + font-size:0; +} +::placeholder { + color:var(--search-input-placeholder-color); + opacity: 1; +} +.search-tag-desc-result { + font-style:italic; + font-size:11px; +} +.search-tag-holder-result { + font-style:italic; + font-size:12px; +} +.search-tag-result:target { + background-color:var(--search-tag-highlight-color); +} +details.page-search-details { + display: inline-block; +} +div#result-container { + font-size: 1em; +} +div#result-container a.search-result-link { + padding: 0; + margin: 4px 0; + width: 100%; +} +#result-container .result-highlight { + font-weight:bolder; +} +.page-search-info { + background-color: var(--subnav-background-color); + border-radius: 3px; + border: 0 solid var(--border-color); + padding: 0 8px; + overflow: hidden; + height: 0; + transition: all 0.2s ease; +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.page-search-header { + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + display: inline-block; +} +button.page-search-header { + border: none; + cursor: pointer; +} +span#page-search-link { + text-decoration: underline; +} +.module-graph span, .sealed-graph span { + display:none; + position:absolute; +} +.module-graph:hover span, .sealed-graph:hover span { + display:block; + margin: -100px 0 0 100px; + z-index: 1; +} +.inherited-list { + margin: 10px 0 10px 0; +} +section.class-description { + line-height: 1.4; +} +.summary section[class$="-summary"], .details section[class$="-details"], +.class-uses .detail, .serialized-class-details { + padding: 0 20px 5px 10px; + border: 1px solid var(--border-color); + background-color: var(--section-background-color); +} +.inherited-list, section[class$="-details"] .detail { + padding:0 0 5px 8px; + background-color:var(--detail-background-color); + border:none; +} +.vertical-separator { + padding: 0 5px; +} +ul.help-section-list { + margin: 0; +} +ul.help-subtoc > li { + display: inline-block; + padding-right: 5px; + font-size: smaller; +} +ul.help-subtoc > li::before { + content: "\2022" ; + padding-right:2px; +} +.help-note { + font-style: italic; +} +/* + * Indicator icon for external links. + */ +main a[href*="://"]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + background-size:100% 100%; + width:7px; + height:7px; + margin-left:2px; + margin-bottom:4px; +} +main a[href*="://"]:hover::after, +main a[href*="://"]:focus::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} +/* + * Styles for header/section anchor links + */ +a.anchor-link { + opacity: 0; + transition: opacity 0.1s; +} +:hover > a.anchor-link { + opacity: 80%; +} +a.anchor-link:hover, +a.anchor-link:focus-visible, +a.anchor-link.visible { + opacity: 100%; +} +a.anchor-link > img { + width: 0.9em; + height: 0.9em; +} +/* + * Styles for copy-to-clipboard buttons + */ +button.copy { + opacity: 70%; + border: none; + border-radius: 3px; + position: relative; + background:none; + transition: opacity 0.3s; + cursor: pointer; +} +:hover > button.copy { + opacity: 80%; +} +button.copy:hover, +button.copy:active, +button.copy:focus-visible, +button.copy.visible { + opacity: 100%; +} +button.copy img { + position: relative; + background: none; + filter: brightness(var(--copy-icon-brightness)); +} +button.copy:active { + background-color: var(--copy-button-background-color-active); +} +button.copy span { + color: var(--body-text-color); + position: relative; + top: -0.1em; + transition: all 0.1s; + font-size: 0.76rem; + line-height: 1.2em; + opacity: 0; +} +button.copy:hover span, +button.copy:focus-visible span, +button.copy.visible span { + opacity: 100%; +} +/* search page copy button */ +button#page-search-copy { + margin-left: 0.4em; + padding:0.3em; + top:0.13em; +} +button#page-search-copy img { + width: 1.2em; + height: 1.2em; + padding: 0.01em 0; + top: 0.15em; +} +button#page-search-copy span { + color: var(--body-text-color); + line-height: 1.2em; + padding: 0.2em; + top: -0.18em; +} +div.page-search-info:hover button#page-search-copy span { + opacity: 100%; +} +/* snippet copy button */ +button.snippet-copy { + position: absolute; + top: 6px; + right: 6px; + height: 1.7em; + padding: 2px; +} +button.snippet-copy img { + width: 18px; + height: 18px; + padding: 0.05em 0; +} +button.snippet-copy span { + line-height: 1.2em; + padding: 0.2em; + position: relative; + top: -0.5em; +} +div.snippet-container:hover button.snippet-copy span { + opacity: 100%; +} +/* + * Styles for user-provided tables. + * + * borderless: + * No borders, vertical margins, styled caption. + * This style is provided for use with existing doc comments. + * In general, borderless tables should not be used for layout purposes. + * + * plain: + * Plain borders around table and cells, vertical margins, styled caption. + * Best for small tables or for complex tables for tables with cells that span + * rows and columns, when the "striped" style does not work well. + * + * striped: + * Borders around the table and vertical borders between cells, striped rows, + * vertical margins, styled caption. + * Best for tables that have a header row, and a body containing a series of simple rows. + */ + +table.borderless, +table.plain, +table.striped { + margin-top: 10px; + margin-bottom: 10px; +} +table.borderless > caption, +table.plain > caption, +table.striped > caption { + font-weight: bold; + font-size: smaller; +} +table.borderless th, table.borderless td, +table.plain th, table.plain td, +table.striped th, table.striped td { + padding: 2px 5px; +} +table.borderless, +table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th, +table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td { + border: none; +} +table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr { + background-color: transparent; +} +table.plain { + border-collapse: collapse; + border: 1px solid var(--table-border-color); +} +table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { + background-color: transparent; +} +table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, +table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { + border: 1px solid var(--table-border-color); +} +table.striped { + border-collapse: collapse; + border: 1px solid var(--table-border-color); +} +table.striped > thead { + background-color: var(--subnav-background-color); +} +table.striped > thead > tr > th, table.striped > thead > tr > td { + border: 1px solid var(--table-border-color); +} +table.striped > tbody > tr:nth-child(even) { + background-color: var(--odd-row-color) +} +table.striped > tbody > tr:nth-child(odd) { + background-color: var(--even-row-color) +} +table.striped > tbody > tr > th, table.striped > tbody > tr > td { + border-left: 1px solid var(--table-border-color); + border-right: 1px solid var(--table-border-color); +} +table.striped > tbody > tr > th { + font-weight: normal; +} +/** + * Tweak style for small screens. + */ +@media screen and (max-width: 920px) { + header.flex-header { + max-height: 100vh; + overflow-y: auto; + } + div#navbar-top { + height: 2.8em; + transition: height 0.35s ease; + } + ul.nav-list { + display: block; + width: 40%; + float:left; + clear: left; + margin: 10px 0 0 0; + padding: 0; + } + ul.nav-list li { + float: none; + padding: 6px; + margin-left: 10px; + margin-top: 2px; + } + ul.sub-nav-list-small { + display:block; + height: 100%; + width: 50%; + float: right; + clear: right; + background-color: var(--subnav-background-color); + color: var(--body-text-color); + margin: 6px 0 0 0; + padding: 0; + } + ul.sub-nav-list-small ul { + padding-left: 20px; + } + ul.sub-nav-list-small a:link, ul.sub-nav-list-small a:visited { + color:var(--link-color); + } + ul.sub-nav-list-small a:hover { + color:var(--link-color-active); + } + ul.sub-nav-list-small li { + list-style:none; + float:none; + padding: 6px; + margin-top: 1px; + text-transform:uppercase; + } + ul.sub-nav-list-small > li { + margin-left: 10px; + } + ul.sub-nav-list-small li p { + margin: 5px 0; + } + div#navbar-sub-list { + display: none; + } + .top-nav a:link, .top-nav a:active, .top-nav a:visited { + display: block; + } + button#navbar-toggle-button { + width: 3.4em; + height: 2.8em; + background-color: transparent; + display: block; + float: left; + border: 0; + margin: 0 10px; + cursor: pointer; + font-size: 10px; + } + button#navbar-toggle-button .nav-bar-toggle-icon { + display: block; + width: 24px; + height: 3px; + margin: 1px 0 4px 0; + border-radius: 2px; + transition: all 0.1s; + background-color: var(--navbar-text-color); + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(1) { + transform: rotate(45deg); + transform-origin: 10% 10%; + width: 26px; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(2) { + opacity: 0; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(3) { + transform: rotate(-45deg); + transform-origin: 10% 90%; + width: 26px; + } +} +@media screen and (max-width: 800px) { + .about-language { + padding-right: 16px; + } + ul.nav-list li { + margin-left: 5px; + } + ul.sub-nav-list-small > li { + margin-left: 5px; + } + main { + padding: 10px; + } + .summary section[class$="-summary"], .details section[class$="-details"], + .class-uses .detail, .serialized-class-details { + padding: 0 8px 5px 8px; + } + body { + -webkit-text-size-adjust: none; + } +} +@media screen and (max-width: 400px) { + .about-language { + font-size: 10px; + padding-right: 12px; + } +} +@media screen and (max-width: 400px) { + .nav-list-search { + width: 94%; + } + #search-input, #page-search-input { + width: 70%; + } +} +@media screen and (max-width: 320px) { + .nav-list-search > label { + display: none; + } + .nav-list-search { + width: 90%; + } + #search-input, #page-search-input { + width: 80%; + } +} + +pre.snippet { + background-color: var(--snippet-background-color); + color: var(--snippet-text-color); + padding: 10px; + margin: 12px 0; + overflow: auto; + white-space: pre; +} +div.snippet-container { + position: relative; +} +@media screen and (max-width: 800px) { + pre.snippet { + padding-top: 26px; + } + button.snippet-copy { + top: 4px; + right: 4px; + } +} +pre.snippet .italic { + font-style: italic; +} +pre.snippet .bold { + font-weight: bold; +} +pre.snippet .highlighted { + background-color: var(--snippet-highlight-color); + border-radius: 10%; +} diff --git a/.gh-pages/tag-search-index.js b/.gh-pages/tag-search-index.js new file mode 100644 index 0000000..0367dae --- /dev/null +++ b/.gh-pages/tag-search-index.js @@ -0,0 +1 @@ +tagSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/.gh-pages/type-search-index.js b/.gh-pages/type-search-index.js new file mode 100644 index 0000000..150380c --- /dev/null +++ b/.gh-pages/type-search-index.js @@ -0,0 +1 @@ +typeSearchIndex = [{"p":"com.ohacd.matchbox.api.events","l":"AbilityUseEvent.AbilityType"},{"p":"com.ohacd.matchbox.api.events","l":"AbilityUseEvent"},{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"com.ohacd.matchbox.api","l":"ApiGameSession"},{"p":"com.ohacd.matchbox.api","l":"ApiValidationHelper"},{"p":"com.ohacd.matchbox.api","l":"GameConfig.Builder"},{"p":"com.ohacd.matchbox.api","l":"ChatChannel"},{"p":"com.ohacd.matchbox.api","l":"ChatMessage"},{"p":"com.ohacd.matchbox.api","l":"ChatProcessor.ChatProcessingResult"},{"p":"com.ohacd.matchbox.api","l":"ChatProcessor"},{"p":"com.ohacd.matchbox.api","l":"ChatResult"},{"p":"com.ohacd.matchbox.api.events","l":"CureEvent"},{"p":"com.ohacd.matchbox.api.events","l":"PlayerEliminateEvent.EliminationReason"},{"p":"com.ohacd.matchbox.api.events","l":"GameEndEvent.EndReason"},{"p":"com.ohacd.matchbox.api","l":"SessionCreationResult.ErrorType"},{"p":"com.ohacd.matchbox.api.annotation","l":"Experimental"},{"p":"com.ohacd.matchbox.api","l":"GameConfig"},{"p":"com.ohacd.matchbox.api.events","l":"GameEndEvent"},{"p":"com.ohacd.matchbox.api.events","l":"GameStartEvent"},{"p":"com.ohacd.matchbox.api.annotation","l":"Internal"},{"p":"com.ohacd.matchbox.api.events","l":"PlayerLeaveEvent.LeaveReason"},{"p":"com.ohacd.matchbox.api","l":"MatchboxAPI"},{"p":"com.ohacd.matchbox.api","l":"MatchboxEvent"},{"p":"com.ohacd.matchbox.api","l":"MatchboxEventListener"},{"p":"com.ohacd.matchbox.api.events","l":"PhaseChangeEvent"},{"p":"com.ohacd.matchbox.api","l":"PhaseController"},{"p":"com.ohacd.matchbox.api.events","l":"PlayerEliminateEvent"},{"p":"com.ohacd.matchbox.api.events","l":"PlayerJoinEvent"},{"p":"com.ohacd.matchbox.api.events","l":"PlayerLeaveEvent"},{"p":"com.ohacd.matchbox.api.events","l":"PlayerVoteEvent"},{"p":"com.ohacd.matchbox.api","l":"SessionBuilder"},{"p":"com.ohacd.matchbox.api","l":"SessionCreationResult"},{"p":"com.ohacd.matchbox.api.events","l":"SwipeEvent"},{"p":"com.ohacd.matchbox.api","l":"ApiValidationHelper.ValidationResult"}];updateSearchResults(); \ No newline at end of file diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml new file mode 100644 index 0000000..12c8671 --- /dev/null +++ b/.github/workflows/publish-docs.yml @@ -0,0 +1,46 @@ +name: Publish Javadoc to GitHub Pages + +on: + push: + branches: [ main, master, dev ] + workflow_dispatch: + +permissions: + contents: write + pages: write + id-token: write + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: '17' + + - name: Cache Gradle + uses: actions/cache@v4 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*','**/gradle-wrapper.properties') }} + restore-keys: gradle-${{ runner.os }}- + + - name: Build Javadoc + run: ./gradlew javadoc --no-daemon --console=plain + + - name: Deploy to GitHub Pages + uses: peaceiris/actions-gh-pages@v3 + with: + publish_dir: ./build/docs/javadoc + publish_branch: gh-pages + user_name: github-actions[bot] + user_email: github-actions[bot]@users.noreply.github.com + commit_message: 'chore(docs): update javadoc' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From e0b74e9a465dfb83bb684d9a0b8323ba470611fa Mon Sep 17 00:00:00 2001 From: OhACD Date: Thu, 25 Dec 2025 01:06:36 +0200 Subject: [PATCH 2/4] docs(site): add 'Unreleased docs' banner and root redirect to API overview --- .gh-pages/index.html | 41 +++++++++++++++++++++---------- .gh-pages/overview-summary.html | 43 ++++++++++++++++++--------------- 2 files changed, 51 insertions(+), 33 deletions(-) diff --git a/.gh-pages/index.html b/.gh-pages/index.html index 8b9ed9c..ddaf266 100644 --- a/.gh-pages/index.html +++ b/.gh-pages/index.html @@ -1,19 +1,34 @@ - + - -Overview (Matchbox 0.9.5 API) - - - - - - - - - + + + Matchbox API Docs — Unreleased snapshot + + - + +
    + +

    Matchbox API Documentation (preview)

    +

    The documentation will redirect you shortly to the API overview.

    + +

    If you prefer the README as the homepage, visit the repository link above.

    +
    + +
    "),i=e.children()[0];return x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(E(s),E(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})},x.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,l=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("
      ").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("
      ").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==x.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=x("
      ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(x("
      ").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}});x.ui.autocomplete}); \ No newline at end of file diff --git a/.gh-pages/script.js b/.gh-pages/script.js deleted file mode 100644 index f1a0f25..0000000 --- a/.gh-pages/script.js +++ /dev/null @@ -1,253 +0,0 @@ -/* - * Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved. - * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - */ - -var moduleSearchIndex; -var packageSearchIndex; -var typeSearchIndex; -var memberSearchIndex; -var tagSearchIndex; - -var oddRowColor = "odd-row-color"; -var evenRowColor = "even-row-color"; -var sortAsc = "sort-asc"; -var sortDesc = "sort-desc"; -var tableTab = "table-tab"; -var activeTableTab = "active-table-tab"; - -function loadScripts(doc, tag) { - createElem(doc, tag, 'search.js'); - - createElem(doc, tag, 'module-search-index.js'); - createElem(doc, tag, 'package-search-index.js'); - createElem(doc, tag, 'type-search-index.js'); - createElem(doc, tag, 'member-search-index.js'); - createElem(doc, tag, 'tag-search-index.js'); -} - -function createElem(doc, tag, path) { - var script = doc.createElement(tag); - var scriptElement = doc.getElementsByTagName(tag)[0]; - script.src = pathtoroot + path; - scriptElement.parentNode.insertBefore(script, scriptElement); -} - -// Helper for making content containing release names comparable lexicographically -function makeComparable(s) { - return s.toLowerCase().replace(/(\d+)/g, - function(n, m) { - return ("000" + m).slice(-4); - }); -} - -// Switches between two styles depending on a condition -function toggleStyle(classList, condition, trueStyle, falseStyle) { - if (condition) { - classList.remove(falseStyle); - classList.add(trueStyle); - } else { - classList.remove(trueStyle); - classList.add(falseStyle); - } -} - -// Sorts the rows in a table lexicographically by the content of a specific column -function sortTable(header, columnIndex, columns) { - var container = header.parentElement; - var descending = header.classList.contains(sortAsc); - container.querySelectorAll("div.table-header").forEach( - function(header) { - header.classList.remove(sortAsc); - header.classList.remove(sortDesc); - } - ) - var cells = container.children; - var rows = []; - for (var i = columns; i < cells.length; i += columns) { - rows.push(Array.prototype.slice.call(cells, i, i + columns)); - } - var comparator = function(a, b) { - var ka = makeComparable(a[columnIndex].textContent); - var kb = makeComparable(b[columnIndex].textContent); - if (ka < kb) - return descending ? 1 : -1; - if (ka > kb) - return descending ? -1 : 1; - return 0; - }; - var sorted = rows.sort(comparator); - var visible = 0; - sorted.forEach(function(row) { - if (row[0].style.display !== 'none') { - var isEvenRow = visible++ % 2 === 0; - } - row.forEach(function(cell) { - toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor); - container.appendChild(cell); - }) - }); - toggleStyle(header.classList, descending, sortDesc, sortAsc); -} - -// Toggles the visibility of a table category in all tables in a page -function toggleGlobal(checkbox, selected, columns) { - var display = checkbox.checked ? '' : 'none'; - document.querySelectorAll("div.table-tabs").forEach(function(t) { - var id = t.parentElement.getAttribute("id"); - var selectedClass = id + "-tab" + selected; - // if selected is empty string it selects all uncategorized entries - var selectUncategorized = !Boolean(selected); - var visible = 0; - document.querySelectorAll('div.' + id) - .forEach(function(elem) { - if (selectUncategorized) { - if (elem.className.indexOf(selectedClass) === -1) { - elem.style.display = display; - } - } else if (elem.classList.contains(selectedClass)) { - elem.style.display = display; - } - if (elem.style.display === '') { - var isEvenRow = visible++ % (columns * 2) < columns; - toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); - } - }); - var displaySection = visible === 0 ? 'none' : ''; - t.parentElement.style.display = displaySection; - document.querySelector("li#contents-" + id).style.display = displaySection; - }) -} - -// Shows the elements of a table belonging to a specific category -function show(tableId, selected, columns) { - if (tableId !== selected) { - document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') - .forEach(function(elem) { - elem.style.display = 'none'; - }); - } - document.querySelectorAll('div.' + selected) - .forEach(function(elem, index) { - elem.style.display = ''; - var isEvenRow = index % (columns * 2) < columns; - toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); - }); - updateTabs(tableId, selected); -} - -function updateTabs(tableId, selected) { - document.querySelector('div#' + tableId +' .summary-table') - .setAttribute('aria-labelledby', selected); - document.querySelectorAll('button[id^="' + tableId + '"]') - .forEach(function(tab, index) { - if (selected === tab.id || (tableId === selected && index === 0)) { - tab.className = activeTableTab; - tab.setAttribute('aria-selected', true); - tab.setAttribute('tabindex',0); - } else { - tab.className = tableTab; - tab.setAttribute('aria-selected', false); - tab.setAttribute('tabindex',-1); - } - }); -} - -function switchTab(e) { - var selected = document.querySelector('[aria-selected=true]'); - if (selected) { - if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) { - // left or up arrow key pressed: move focus to previous tab - selected.previousSibling.click(); - selected.previousSibling.focus(); - e.preventDefault(); - } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) { - // right or down arrow key pressed: move focus to next tab - selected.nextSibling.click(); - selected.nextSibling.focus(); - e.preventDefault(); - } - } -} - -var updateSearchResults = function() {}; - -function indexFilesLoaded() { - return moduleSearchIndex - && packageSearchIndex - && typeSearchIndex - && memberSearchIndex - && tagSearchIndex; -} -// Copy the contents of the local snippet to the clipboard -function copySnippet(button) { - copyToClipboard(button.nextElementSibling.innerText); - switchCopyLabel(button, button.firstElementChild); -} -function copyToClipboard(content) { - var textarea = document.createElement("textarea"); - textarea.style.height = 0; - document.body.appendChild(textarea); - textarea.value = content; - textarea.select(); - document.execCommand("copy"); - document.body.removeChild(textarea); -} -function switchCopyLabel(button, span) { - var copied = span.getAttribute("data-copied"); - button.classList.add("visible"); - var initialLabel = span.innerHTML; - span.innerHTML = copied; - setTimeout(function() { - button.classList.remove("visible"); - setTimeout(function() { - if (initialLabel !== copied) { - span.innerHTML = initialLabel; - } - }, 100); - }, 1900); -} -// Workaround for scroll position not being included in browser history (8249133) -document.addEventListener("DOMContentLoaded", function(e) { - var contentDiv = document.querySelector("div.flex-content"); - window.addEventListener("popstate", function(e) { - if (e.state !== null) { - contentDiv.scrollTop = e.state; - } - }); - window.addEventListener("hashchange", function(e) { - history.replaceState(contentDiv.scrollTop, document.title); - }); - var timeoutId; - contentDiv.addEventListener("scroll", function(e) { - if (timeoutId) { - clearTimeout(timeoutId); - } - timeoutId = setTimeout(function() { - history.replaceState(contentDiv.scrollTop, document.title); - }, 100); - }); - if (!location.hash) { - history.replaceState(contentDiv.scrollTop, document.title); - } -}); diff --git a/.gh-pages/search-page.js b/.gh-pages/search-page.js deleted file mode 100644 index e4da097..0000000 --- a/.gh-pages/search-page.js +++ /dev/null @@ -1,284 +0,0 @@ -/* - * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved. - * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - */ - -"use strict"; -$(function() { - var copy = $("#page-search-copy"); - var expand = $("#page-search-expand"); - var searchLink = $("span#page-search-link"); - var redirect = $("input#search-redirect"); - function setSearchUrlTemplate() { - var href = document.location.href.split(/[#?]/)[0]; - href += "?q=" + "%s"; - if (redirect.is(":checked")) { - href += "&r=1"; - } - searchLink.html(href); - copy[0].onmouseenter(); - } - function copyLink(e) { - copyToClipboard(this.previousSibling.innerText); - switchCopyLabel(this, this.lastElementChild); - } - copy.click(copyLink); - copy[0].onmouseenter = function() {}; - redirect.click(setSearchUrlTemplate); - setSearchUrlTemplate(); - copy.prop("disabled", false); - redirect.prop("disabled", false); - expand.click(function (e) { - var searchInfo = $("div.page-search-info"); - if(this.parentElement.hasAttribute("open")) { - searchInfo.attr("style", "border-width: 0;"); - } else { - searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight")); - } - }); -}); -$(window).on("load", function() { - var input = $("#page-search-input"); - var reset = $("#page-search-reset"); - var notify = $("#page-search-notify"); - var resultSection = $("div#result-section"); - var resultContainer = $("div#result-container"); - var searchTerm = ""; - var activeTab = ""; - var fixedTab = false; - var visibleTabs = []; - var feelingLucky = false; - function renderResults(result) { - if (!result.length) { - notify.html(messages.noResult); - } else if (result.length === 1) { - notify.html(messages.oneResult); - } else { - notify.html(messages.manyResults.replace("{0}", result.length)); - } - resultContainer.empty(); - var r = { - "types": [], - "members": [], - "packages": [], - "modules": [], - "searchTags": [] - }; - for (var i in result) { - var item = result[i]; - var arr = r[item.category]; - arr.push(item); - } - if (!activeTab || r[activeTab].length === 0 || !fixedTab) { - Object.keys(r).reduce(function(prev, curr) { - if (r[curr].length > 0 && r[curr][0].score > prev) { - activeTab = curr; - return r[curr][0].score; - } - return prev; - }, 0); - } - if (feelingLucky && activeTab) { - notify.html(messages.redirecting) - var firstItem = r[activeTab][0]; - window.location = getURL(firstItem.indexItem, firstItem.category); - return; - } - if (result.length > 20) { - if (searchTerm[searchTerm.length - 1] === ".") { - if (activeTab === "types" && r["members"].length > r["types"].length) { - activeTab = "members"; - } else if (activeTab === "packages" && r["types"].length > r["packages"].length) { - activeTab = "types"; - } - } - } - var categoryCount = Object.keys(r).reduce(function(prev, curr) { - return prev + (r[curr].length > 0 ? 1 : 0); - }, 0); - visibleTabs = []; - var tabContainer = $("
      ").appendTo(resultContainer); - for (var key in r) { - var id = "#result-tab-" + key.replace("searchTags", "search_tags"); - if (r[key].length) { - var count = r[key].length >= 1000 ? "999+" : r[key].length; - if (result.length > 20 && categoryCount > 1) { - var button = $("").appendTo(tabContainer); - button.click(key, function(e) { - fixedTab = true; - renderResult(e.data, $(this)); - }); - visibleTabs.push(key); - } else { - $("" + categories[key] - + " (" + count + ")").appendTo(tabContainer); - renderTable(key, r[key]).appendTo(resultContainer); - tabContainer = $("
      ").appendTo(resultContainer); - - } - } - } - if (activeTab && result.length > 20 && categoryCount > 1) { - $("button#result-tab-" + activeTab).addClass("active-table-tab"); - renderTable(activeTab, r[activeTab]).appendTo(resultContainer); - } - resultSection.show(); - function renderResult(category, button) { - activeTab = category; - setSearchUrl(); - resultContainer.find("div.summary-table").remove(); - renderTable(activeTab, r[activeTab]).appendTo(resultContainer); - button.siblings().removeClass("active-table-tab"); - button.addClass("active-table-tab"); - } - } - function selectTab(category) { - $("button#result-tab-" + category).click(); - } - function renderTable(category, items) { - var table = $("
      ") - .addClass(category === "modules" - ? "one-column-search-results" - : "two-column-search-results"); - var col1, col2; - if (category === "modules") { - col1 = "Module"; - } else if (category === "packages") { - col1 = "Module"; - col2 = "Package"; - } else if (category === "types") { - col1 = "Package"; - col2 = "Class" - } else if (category === "members") { - col1 = "Class"; - col2 = "Member"; - } else if (category === "searchTags") { - col1 = "Location"; - col2 = "Name"; - } - $("
      " + col1 + "
      ").appendTo(table); - if (category !== "modules") { - $("
      " + col2 + "
      ").appendTo(table); - } - $.each(items, function(index, item) { - var rowColor = index % 2 ? "odd-row-color" : "even-row-color"; - renderItem(item, table, rowColor); - }); - return table; - } - function renderItem(item, table, rowColor) { - var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length); - var link = $("") - .attr("href", getURL(item.indexItem, item.category)) - .attr("tabindex", "0") - .addClass("search-result-link") - .html(label); - var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1); - if (item.category === "searchTags") { - container = item.indexItem.h || ""; - } - if (item.category !== "modules") { - $("
      ").html(container).addClass("col-plain").addClass(rowColor).appendTo(table); - } - $("
      ").html(link).addClass("col-last").addClass(rowColor).appendTo(table); - } - var timeout; - function schedulePageSearch() { - if (timeout) { - clearTimeout(timeout); - } - timeout = setTimeout(function () { - doPageSearch() - }, 100); - } - function doPageSearch() { - setSearchUrl(); - var term = searchTerm = input.val().trim(); - if (term === "") { - notify.html(messages.enterTerm); - activeTab = ""; - fixedTab = false; - resultContainer.empty(); - resultSection.hide(); - } else { - notify.html(messages.searching); - doSearch({ term: term, maxResults: 1200 }, renderResults); - } - } - function setSearchUrl() { - var query = input.val().trim(); - var url = document.location.pathname; - if (query) { - url += "?q=" + encodeURI(query); - if (activeTab && fixedTab) { - url += "&c=" + activeTab; - } - } - history.replaceState({query: query}, "", url); - } - input.on("input", function(e) { - feelingLucky = false; - schedulePageSearch(); - }); - $(document).keydown(function(e) { - if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) { - if (activeTab && visibleTabs.length > 1) { - var idx = visibleTabs.indexOf(activeTab); - idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1; - selectTab(visibleTabs[idx % visibleTabs.length]); - return false; - } - } - }); - reset.click(function() { - notify.html(messages.enterTerm); - resultSection.hide(); - activeTab = ""; - fixedTab = false; - resultContainer.empty(); - input.val('').focus(); - setSearchUrl(); - }); - input.prop("disabled", false); - reset.prop("disabled", false); - - var urlParams = new URLSearchParams(window.location.search); - if (urlParams.has("q")) { - input.val(urlParams.get("q")) - } - if (urlParams.has("c")) { - activeTab = urlParams.get("c"); - fixedTab = true; - } - if (urlParams.get("r")) { - feelingLucky = true; - } - if (input.val()) { - doPageSearch(); - } else { - notify.html(messages.enterTerm); - } - input.select().focus(); -}); diff --git a/.gh-pages/search.html b/.gh-pages/search.html deleted file mode 100644 index d1d8dbf..0000000 --- a/.gh-pages/search.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - -Search (Matchbox 0.9.5 API) - - - - - - - - - - - - - -
      - -
      -
      -

      Search

      -
      - - -
      -Additional resources -
      -
      -
      -

      The help page provides an introduction to the scope and syntax of JavaDoc search.

      -

      You can use the <ctrl> or <cmd> keys in combination with the left and right arrow keys to switch between result tabs in this page.

      -

      The URL template below may be used to configure this page as a search engine in browsers that support this feature. It has been tested to work in Google Chrome and Mozilla Firefox. Note that other browsers may not support this feature or require a different URL format.

      -link -

      - -

      -
      -

      Loading search index...

      - -
      -
      -
      - - diff --git a/.gh-pages/search.js b/.gh-pages/search.js deleted file mode 100644 index 4ca9557..0000000 --- a/.gh-pages/search.js +++ /dev/null @@ -1,458 +0,0 @@ -/* - * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved. - * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - */ -"use strict"; -const messages = { - enterTerm: "Enter a search term", - noResult: "No results found", - oneResult: "Found one result", - manyResults: "Found {0} results", - loading: "Loading search index...", - searching: "Searching...", - redirecting: "Redirecting to first result...", - linkIcon: "Link icon", - linkToSection: "Link to this section" -} -const categories = { - modules: "Modules", - packages: "Packages", - types: "Classes and Interfaces", - members: "Members", - searchTags: "Search Tags" -}; -const highlight = "$&"; -const NO_MATCH = {}; -const MAX_RESULTS = 300; -function checkUnnamed(name, separator) { - return name === "" || !name ? "" : name + separator; -} -function escapeHtml(str) { - return str.replace(//g, ">"); -} -function getHighlightedText(str, boundaries, from, to) { - var start = from; - var text = ""; - for (var i = 0; i < boundaries.length; i += 2) { - var b0 = boundaries[i]; - var b1 = boundaries[i + 1]; - if (b0 >= to || b1 <= from) { - continue; - } - text += escapeHtml(str.slice(start, Math.max(start, b0))); - text += ""; - text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1))); - text += ""; - start = Math.min(to, b1); - } - text += escapeHtml(str.slice(start, to)); - return text; -} -function getURLPrefix(item, category) { - var urlPrefix = ""; - var slash = "/"; - if (category === "modules") { - return item.l + slash; - } else if (category === "packages" && item.m) { - return item.m + slash; - } else if (category === "types" || category === "members") { - if (item.m) { - urlPrefix = item.m + slash; - } else { - $.each(packageSearchIndex, function(index, it) { - if (it.m && item.p === it.l) { - urlPrefix = it.m + slash; - } - }); - } - } - return urlPrefix; -} -function getURL(item, category) { - if (item.url) { - return item.url; - } - var url = getURLPrefix(item, category); - if (category === "modules") { - url += "module-summary.html"; - } else if (category === "packages") { - if (item.u) { - url = item.u; - } else { - url += item.l.replace(/\./g, '/') + "/package-summary.html"; - } - } else if (category === "types") { - if (item.u) { - url = item.u; - } else { - url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html"; - } - } else if (category === "members") { - url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#"; - if (item.u) { - url += item.u; - } else { - url += item.l; - } - } else if (category === "searchTags") { - url += item.u; - } - item.url = url; - return url; -} -function createMatcher(term, camelCase) { - if (camelCase && !isUpperCase(term)) { - return null; // no need for camel-case matcher for lower case query - } - var pattern = ""; - var upperCase = []; - term.trim().split(/\s+/).forEach(function(w, index, array) { - var tokens = w.split(/(?=[A-Z,.()<>?[\/])/); - for (var i = 0; i < tokens.length; i++) { - var s = tokens[i]; - // ',' and '?' are the only delimiters commonly followed by space in java signatures - pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")"; - upperCase.push(false); - var isWordToken = /\w$/.test(s); - if (isWordToken) { - if (i === tokens.length - 1 && index < array.length - 1) { - // space in query string matches all delimiters - pattern += "(.*?)"; - upperCase.push(isUpperCase(s[0])); - } else { - if (!camelCase && isUpperCase(s) && s.length === 1) { - pattern += "()"; - } else { - pattern += "([a-z0-9$<>?[\\]]*?)"; - } - upperCase.push(isUpperCase(s[0])); - } - } else { - pattern += "()"; - upperCase.push(false); - } - } - }); - var re = new RegExp(pattern, "gi"); - re.upperCase = upperCase; - return re; -} -function findMatch(matcher, input, startOfName, endOfName) { - var from = startOfName; - matcher.lastIndex = from; - var match = matcher.exec(input); - // Expand search area until we get a valid result or reach the beginning of the string - while (!match || match.index + match[0].length < startOfName || endOfName < match.index) { - if (from === 0) { - return NO_MATCH; - } - from = input.lastIndexOf(".", from - 2) + 1; - matcher.lastIndex = from; - match = matcher.exec(input); - } - var boundaries = []; - var matchEnd = match.index + match[0].length; - var score = 5; - var start = match.index; - var prevEnd = -1; - for (var i = 1; i < match.length; i += 2) { - var isUpper = isUpperCase(input[start]); - var isMatcherUpper = matcher.upperCase[i]; - // capturing groups come in pairs, match and non-match - boundaries.push(start, start + match[i].length); - // make sure groups are anchored on a left word boundary - var prevChar = input[start - 1] || ""; - var nextChar = input[start + 1] || ""; - if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) { - if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) { - score -= 0.1; - } else if (isMatcherUpper && start === prevEnd) { - score -= isUpper ? 0.1 : 1.0; - } else { - return NO_MATCH; - } - } - prevEnd = start + match[i].length; - start += match[i].length + match[i + 1].length; - - // lower score for parts of the name that are missing - if (match[i + 1] && prevEnd < endOfName) { - score -= rateNoise(match[i + 1]); - } - } - // lower score if a type name contains unmatched camel-case parts - if (input[matchEnd - 1] !== "." && endOfName > matchEnd) - score -= rateNoise(input.slice(matchEnd, endOfName)); - score -= rateNoise(input.slice(0, Math.max(startOfName, match.index))); - - if (score <= 0) { - return NO_MATCH; - } - return { - input: input, - score: score, - boundaries: boundaries - }; -} -function isUpperCase(s) { - return s !== s.toLowerCase(); -} -function isLowerCase(s) { - return s !== s.toUpperCase(); -} -function rateNoise(str) { - return (str.match(/([.(])/g) || []).length / 5 - + (str.match(/([A-Z]+)/g) || []).length / 10 - + str.length / 20; -} -function doSearch(request, response) { - var term = request.term.trim(); - var maxResults = request.maxResults || MAX_RESULTS; - if (term.length === 0) { - return this.close(); - } - var matcher = { - plainMatcher: createMatcher(term, false), - camelCaseMatcher: createMatcher(term, true) - } - var indexLoaded = indexFilesLoaded(); - - function getPrefix(item, category) { - switch (category) { - case "packages": - return checkUnnamed(item.m, "/"); - case "types": - return checkUnnamed(item.p, "."); - case "members": - return checkUnnamed(item.p, ".") + item.c + "."; - default: - return ""; - } - } - function useQualifiedName(category) { - switch (category) { - case "packages": - return /[\s/]/.test(term); - case "types": - case "members": - return /[\s.]/.test(term); - default: - return false; - } - } - function searchIndex(indexArray, category) { - var matches = []; - if (!indexArray) { - if (!indexLoaded) { - matches.push({ l: messages.loading, category: category }); - } - return matches; - } - $.each(indexArray, function (i, item) { - var prefix = getPrefix(item, category); - var simpleName = item.l; - var qualifiedName = prefix + simpleName; - var useQualified = useQualifiedName(category); - var input = useQualified ? qualifiedName : simpleName; - var startOfName = useQualified ? prefix.length : 0; - var endOfName = category === "members" && input.indexOf("(", startOfName) > -1 - ? input.indexOf("(", startOfName) : input.length; - var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName); - if (m === NO_MATCH && matcher.camelCaseMatcher) { - m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName); - } - if (m !== NO_MATCH) { - m.indexItem = item; - m.prefix = prefix; - m.category = category; - if (!useQualified) { - m.input = qualifiedName; - m.boundaries = m.boundaries.map(function(b) { - return b + prefix.length; - }); - } - matches.push(m); - } - return true; - }); - return matches.sort(function(e1, e2) { - return e2.score - e1.score; - }).slice(0, maxResults); - } - - var result = searchIndex(moduleSearchIndex, "modules") - .concat(searchIndex(packageSearchIndex, "packages")) - .concat(searchIndex(typeSearchIndex, "types")) - .concat(searchIndex(memberSearchIndex, "members")) - .concat(searchIndex(tagSearchIndex, "searchTags")); - - if (!indexLoaded) { - updateSearchResults = function() { - doSearch(request, response); - } - } else { - updateSearchResults = function() {}; - } - response(result); -} -// JQuery search menu implementation -$.widget("custom.catcomplete", $.ui.autocomplete, { - _create: function() { - this._super(); - this.widget().menu("option", "items", "> .result-item"); - // workaround for search result scrolling - this.menu._scrollIntoView = function _scrollIntoView( item ) { - var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; - if ( this._hasScroll() ) { - borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0; - paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0; - offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; - scroll = this.activeMenu.scrollTop(); - elementHeight = this.activeMenu.height() - 26; - itemHeight = item.outerHeight(); - - if ( offset < 0 ) { - this.activeMenu.scrollTop( scroll + offset ); - } else if ( offset + itemHeight > elementHeight ) { - this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); - } - } - }; - }, - _renderMenu: function(ul, items) { - var currentCategory = ""; - var widget = this; - widget.menu.bindings = $(); - $.each(items, function(index, item) { - if (item.category && item.category !== currentCategory) { - ul.append("
    • " + categories[item.category] + "
    • "); - currentCategory = item.category; - } - var li = widget._renderItemData(ul, item); - if (item.category) { - li.attr("aria-label", categories[item.category] + " : " + item.l); - } else { - li.attr("aria-label", item.l); - } - li.attr("class", "result-item"); - }); - ul.append(""); - }, - _renderItem: function(ul, item) { - var li = $("
    • ").appendTo(ul); - var div = $("
      ").appendTo(li); - var label = item.l - ? item.l - : getHighlightedText(item.input, item.boundaries, 0, item.input.length); - var idx = item.indexItem; - if (item.category === "searchTags" && idx && idx.h) { - if (idx.d) { - div.html(label + " (" + idx.h + ")
      " - + idx.d + "
      "); - } else { - div.html(label + " (" + idx.h + ")"); - } - } else { - div.html(label); - } - return li; - } -}); -$(function() { - var expanded = false; - var windowWidth; - function collapse() { - if (expanded) { - $("div#navbar-top").removeAttr("style"); - $("button#navbar-toggle-button") - .removeClass("expanded") - .attr("aria-expanded", "false"); - expanded = false; - } - } - $("button#navbar-toggle-button").click(function (e) { - if (expanded) { - collapse(); - } else { - var navbar = $("div#navbar-top"); - navbar.height(navbar.prop("scrollHeight")); - $("button#navbar-toggle-button") - .addClass("expanded") - .attr("aria-expanded", "true"); - expanded = true; - windowWidth = window.innerWidth; - } - }); - $("ul.sub-nav-list-small li a").click(collapse); - $("input#search-input").focus(collapse); - $("main").click(collapse); - $("section[id] > :header, :header[id], :header:has(a[id])").each(function(idx, el) { - // Create anchor links for headers with an associated id attribute - var hdr = $(el); - var id = hdr.attr("id") || hdr.parent("section").attr("id") || hdr.children("a").attr("id"); - if (id) { - hdr.append(" " + messages.linkIcon +""); - } - }); - $(window).on("orientationchange", collapse).on("resize", function(e) { - if (expanded && windowWidth !== window.innerWidth) collapse(); - }); - var search = $("#search-input"); - var reset = $("#reset-button"); - search.catcomplete({ - minLength: 1, - delay: 200, - source: doSearch, - response: function(event, ui) { - if (!ui.content.length) { - ui.content.push({ l: messages.noResult }); - } else { - $("#search-input").empty(); - } - }, - autoFocus: true, - focus: function(event, ui) { - return false; - }, - position: { - collision: "flip" - }, - select: function(event, ui) { - if (ui.item.indexItem) { - var url = getURL(ui.item.indexItem, ui.item.category); - window.location.href = pathtoroot + url; - $("#search-input").focus(); - } - } - }); - search.val(''); - search.prop("disabled", false); - reset.prop("disabled", false); - reset.click(function() { - search.val('').focus(); - }); - search.focus(); -}); diff --git a/.gh-pages/stylesheet.css b/.gh-pages/stylesheet.css deleted file mode 100644 index f71489f..0000000 --- a/.gh-pages/stylesheet.css +++ /dev/null @@ -1,1272 +0,0 @@ -/* - * Javadoc style sheet - */ - -@import url('resources/fonts/dejavu.css'); - -/* - * These CSS custom properties (variables) define the core color and font - * properties used in this stylesheet. - */ -:root { - /* body, block and code fonts */ - --body-font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; - --block-font-family: 'DejaVu Serif', Georgia, "Times New Roman", Times, serif; - --code-font-family: 'DejaVu Sans Mono', monospace; - /* Base font sizes for body and code elements */ - --body-font-size: 14px; - --code-font-size: 14px; - /* Text colors for body and block elements */ - --body-text-color: #353833; - --block-text-color: #474747; - /* Background colors for various structural elements */ - --body-background-color: #ffffff; - --section-background-color: #f8f8f8; - --detail-background-color: #ffffff; - /* Colors for navigation bar and table captions */ - --navbar-background-color: #4D7A97; - --navbar-text-color: #ffffff; - /* Background color for subnavigation and various headers */ - --subnav-background-color: #dee3e9; - /* Background and text colors for selected tabs and navigation items */ - --selected-background-color: #f8981d; - --selected-text-color: #253441; - --selected-link-color: #1f389c; - /* Background colors for generated tables */ - --even-row-color: #ffffff; - --odd-row-color: #eeeeef; - /* Text color for page title */ - --title-color: #2c4557; - /* Text colors for links */ - --link-color: #4A6782; - --link-color-active: #bb7a2a; - /* Snippet colors */ - --snippet-background-color: #ebecee; - --snippet-text-color: var(--block-text-color); - --snippet-highlight-color: #f7c590; - /* Border colors for structural elements and user defined tables */ - --border-color: #ededed; - --table-border-color: #000000; - /* Search input colors */ - --search-input-background-color: #ffffff; - --search-input-text-color: #000000; - --search-input-placeholder-color: #909090; - /* Highlight color for active search tag target */ - --search-tag-highlight-color: #ffff00; - /* Adjustments for icon and active background colors of copy-to-clipboard buttons */ - --copy-icon-brightness: 100%; - --copy-button-background-color-active: rgba(168, 168, 176, 0.3); - /* Colors for invalid tag notifications */ - --invalid-tag-background-color: #ffe6e6; - --invalid-tag-text-color: #000000; -} -/* - * Styles for individual HTML elements. - * - * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular - * HTML element throughout the page. - */ -body { - background-color:var(--body-background-color); - color:var(--body-text-color); - font-family:var(--body-font-family); - font-size:var(--body-font-size); - margin:0; - padding:0; - height:100%; - width:100%; -} -iframe { - margin:0; - padding:0; - height:100%; - width:100%; - overflow-y:scroll; - border:none; -} -a:link, a:visited { - text-decoration:none; - color:var(--link-color); -} -a[href]:hover, a[href]:focus { - text-decoration:none; - color:var(--link-color-active); -} -pre { - font-family:var(--code-font-family); - font-size:1em; -} -h1 { - font-size:1.428em; -} -h2 { - font-size:1.285em; -} -h3 { - font-size:1.14em; -} -h4 { - font-size:1.072em; -} -h5 { - font-size:1.001em; -} -h6 { - font-size:0.93em; -} -/* Disable font boosting for selected elements */ -h1, h2, h3, h4, h5, h6, div.member-signature { - max-height: 1000em; -} -ul { - list-style-type:disc; -} -code, tt { - font-family:var(--code-font-family); -} -:not(h1, h2, h3, h4, h5, h6) > code, -:not(h1, h2, h3, h4, h5, h6) > tt { - font-size:var(--code-font-size); - padding-top:4px; - margin-top:8px; - line-height:1.4em; -} -dt code { - font-family:var(--code-font-family); - font-size:1em; - padding-top:4px; -} -.summary-table dt code { - font-family:var(--code-font-family); - font-size:1em; - vertical-align:top; - padding-top:4px; -} -sup { - font-size:8px; -} -button { - font-family: var(--body-font-family); - font-size: 1em; -} -/* - * Styles for HTML generated by javadoc. - * - * These are style classes that are used by the standard doclet to generate HTML documentation. - */ - -/* - * Styles for document title and copyright. - */ -.about-language { - float:right; - padding:0 21px 8px 8px; - font-size:0.915em; - margin-top:-9px; - height:2.9em; -} -.legal-copy { - margin-left:.5em; -} -/* - * Styles for navigation bar. - */ -@media screen { - div.flex-box { - position:fixed; - display:flex; - flex-direction:column; - height: 100%; - width: 100%; - } - header.flex-header { - flex: 0 0 auto; - } - div.flex-content { - flex: 1 1 auto; - overflow-y: auto; - } -} -.top-nav { - background-color:var(--navbar-background-color); - color:var(--navbar-text-color); - float:left; - width:100%; - clear:right; - min-height:2.8em; - padding:10px 0 0 0; - overflow:hidden; - font-size:0.857em; -} -button#navbar-toggle-button { - display:none; -} -ul.sub-nav-list-small { - display: none; -} -.sub-nav { - background-color:var(--subnav-background-color); - float:left; - width:100%; - overflow:hidden; - font-size:0.857em; -} -.sub-nav div { - clear:left; - float:left; - padding:6px; - text-transform:uppercase; -} -.sub-nav .sub-nav-list { - padding-top:4px; -} -ul.nav-list { - display:block; - margin:0 25px 0 0; - padding:0; -} -ul.sub-nav-list { - float:left; - margin:0 25px 0 0; - padding:0; -} -ul.nav-list li { - list-style:none; - float:left; - padding: 5px 6px; - text-transform:uppercase; -} -.sub-nav .nav-list-search { - float:right; - margin:0; - padding:6px; - clear:none; - text-align:right; - position:relative; -} -ul.sub-nav-list li { - list-style:none; - float:left; -} -.top-nav a:link, .top-nav a:active, .top-nav a:visited { - color:var(--navbar-text-color); - text-decoration:none; - text-transform:uppercase; -} -.top-nav a:hover { - color:var(--link-color-active); -} -.nav-bar-cell1-rev { - background-color:var(--selected-background-color); - color:var(--selected-text-color); - margin: auto 5px; -} -.skip-nav { - position:absolute; - top:auto; - left:-9999px; - overflow:hidden; -} -/* - * Hide navigation links and search box in print layout - */ -@media print { - ul.nav-list, div.sub-nav { - display:none; - } -} -/* - * Styles for page header. - */ -.title { - color:var(--title-color); - margin:10px 0; -} -.sub-title { - margin:5px 0 0 0; -} -ul.contents-list { - margin: 0 0 15px 0; - padding: 0; - list-style: none; -} -ul.contents-list li { - font-size:0.93em; -} -/* - * Styles for headings. - */ -body.class-declaration-page .summary h2, -body.class-declaration-page .details h2, -body.class-use-page h2, -body.module-declaration-page .block-list h2 { - font-style: italic; - padding:0; - margin:15px 0; -} -body.class-declaration-page .summary h3, -body.class-declaration-page .details h3, -body.class-declaration-page .summary .inherited-list h2 { - background-color:var(--subnav-background-color); - border:1px solid var(--border-color); - margin:0 0 6px -8px; - padding:7px 5px; -} -/* - * Styles for page layout containers. - */ -main { - clear:both; - padding:10px 20px; - position:relative; -} -dl.notes > dt { - font-family: var(--body-font-family); - font-size:0.856em; - font-weight:bold; - margin:10px 0 0 0; - color:var(--body-text-color); -} -dl.notes > dd { - margin:5px 10px 10px 0; - font-size:1em; - font-family:var(--block-font-family) -} -dl.name-value > dt { - margin-left:1px; - font-size:1.1em; - display:inline; - font-weight:bold; -} -dl.name-value > dd { - margin:0 0 0 1px; - font-size:1.1em; - display:inline; -} -/* - * Styles for lists. - */ -li.circle { - list-style:circle; -} -ul.horizontal li { - display:inline; - font-size:0.9em; -} -div.inheritance { - margin:0; - padding:0; -} -div.inheritance div.inheritance { - margin-left:2em; -} -ul.block-list, -ul.details-list, -ul.member-list, -ul.summary-list { - margin:10px 0 10px 0; - padding:0; -} -ul.block-list > li, -ul.details-list > li, -ul.member-list > li, -ul.summary-list > li { - list-style:none; - margin-bottom:15px; - line-height:1.4; -} -ul.ref-list { - padding:0; - margin:0; -} -ul.ref-list > li { - list-style:none; -} -.summary-table dl, .summary-table dl dt, .summary-table dl dd { - margin-top:0; - margin-bottom:1px; -} -ul.tag-list, ul.tag-list-long { - padding-left: 0; - list-style: none; -} -ul.tag-list li { - display: inline; -} -ul.tag-list li:not(:last-child):after, -ul.tag-list-long li:not(:last-child):after -{ - content: ", "; - white-space: pre-wrap; -} -ul.preview-feature-list { - list-style: none; - margin:0; - padding:0.1em; - line-height: 1.6em; -} -/* - * Styles for tables. - */ -.summary-table, .details-table { - width:100%; - border-spacing:0; - border:1px solid var(--border-color); - border-top:0; - padding:0; -} -.caption { - position:relative; - text-align:left; - background-repeat:no-repeat; - color:var(--selected-text-color); - clear:none; - overflow:hidden; - padding: 10px 0 0 1px; - margin:0; -} -.caption a:link, .caption a:visited { - color:var(--selected-link-color); -} -.caption a:hover, -.caption a:active { - color:var(--navbar-text-color); -} -.caption span { - font-weight:bold; - white-space:nowrap; - padding:5px 12px 7px 12px; - display:inline-block; - float:left; - background-color:var(--selected-background-color); - border: none; - height:16px; -} -div.table-tabs { - padding:10px 0 0 1px; - margin:10px 0 0 0; -} -div.table-tabs > button { - border: none; - cursor: pointer; - padding: 5px 12px 7px 12px; - font-weight: bold; - margin-right: 8px; -} -div.table-tabs > .active-table-tab { - background: var(--selected-background-color); - color: var(--selected-text-color); -} -div.table-tabs > button.table-tab { - background: var(--navbar-background-color); - color: var(--navbar-text-color); -} -.two-column-search-results { - display: grid; - grid-template-columns: minmax(400px, max-content) minmax(400px, auto); -} -div.checkboxes { - line-height: 2em; -} -div.checkboxes > span { - margin-left: 10px; -} -div.checkboxes > label { - margin-left: 8px; - white-space: nowrap; -} -div.checkboxes > label > input { - margin: 0 2px; -} -.two-column-summary { - display: grid; - grid-template-columns: minmax(25%, max-content) minmax(25%, auto); -} -.three-column-summary { - display: grid; - grid-template-columns: minmax(15%, max-content) minmax(20%, max-content) minmax(20%, auto); -} -.three-column-release-summary { - display: grid; - grid-template-columns: minmax(40%, max-content) minmax(10%, max-content) minmax(40%, auto); -} -.four-column-summary { - display: grid; - grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, max-content) minmax(15%, auto); -} -@media screen and (max-width: 1000px) { - .four-column-summary { - display: grid; - grid-template-columns: minmax(15%, max-content) minmax(15%, auto); - } -} -@media screen and (max-width: 800px) { - .two-column-search-results { - display: grid; - grid-template-columns: minmax(40%, max-content) minmax(40%, auto); - } - .three-column-summary { - display: grid; - grid-template-columns: minmax(10%, max-content) minmax(25%, auto); - } - .three-column-release-summary { - display: grid; - grid-template-columns: minmax(70%, max-content) minmax(30%, max-content) - } - .three-column-summary .col-last, - .three-column-release-summary .col-last{ - grid-column-end: span 2; - } -} -@media screen and (max-width: 600px) { - .two-column-summary { - display: grid; - grid-template-columns: 1fr; - } -} -.summary-table > div, .details-table > div { - text-align:left; - padding: 8px 3px 3px 7px; - overflow-x: auto; - scrollbar-width: thin; -} -.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name { - vertical-align:top; - padding-right:0; - padding-top:8px; - padding-bottom:3px; -} -.table-header { - background:var(--subnav-background-color); - font-weight: bold; -} -/* Sortable table columns */ -.table-header[onclick] { - cursor: pointer; -} -.table-header[onclick]::after { - content:""; - display:inline-block; - background-image:url('data:image/svg+xml; utf8, \ - \ - '); - background-size:100% 100%; - width:9px; - height:14px; - margin-left:4px; - margin-bottom:-3px; -} -.table-header[onclick].sort-asc::after { - background-image:url('data:image/svg+xml; utf8, \ - \ - \ - '); - -} -.table-header[onclick].sort-desc::after { - background-image:url('data:image/svg+xml; utf8, \ - \ - \ - '); -} -.col-first, .col-first { - font-size:0.93em; -} -.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last { - font-size:0.93em; -} -.col-first, .col-second, .col-constructor-name { - vertical-align:top; - overflow: auto; -} -.col-last { - white-space:normal; -} -.col-first a:link, .col-first a:visited, -.col-second a:link, .col-second a:visited, -.col-first a:link, .col-first a:visited, -.col-second a:link, .col-second a:visited, -.col-constructor-name a:link, .col-constructor-name a:visited, -.col-summary-item-name a:link, .col-summary-item-name a:visited { - font-weight:bold; -} -.even-row-color, .even-row-color .table-header { - background-color:var(--even-row-color); -} -.odd-row-color, .odd-row-color .table-header { - background-color:var(--odd-row-color); -} -/* - * Styles for contents. - */ -div.block { - font-size:var(--body-font-size); - font-family:var(--block-font-family); -} -.col-last div { - padding-top:0; -} -.col-last a { - padding-bottom:3px; -} -.module-signature, -.package-signature, -.type-signature, -.member-signature { - font-family:var(--code-font-family); - font-size:1em; - margin:14px 0; - white-space: pre-wrap; -} -.module-signature, -.package-signature, -.type-signature { - margin-top: 0; -} -.member-signature .type-parameters-long, -.member-signature .parameters, -.member-signature .exceptions { - display: inline-block; - vertical-align: top; - white-space: pre; -} -.member-signature .type-parameters { - white-space: normal; -} -/* - * Styles for formatting effect. - */ -.source-line-no { - /* Color of line numbers in source pages can be set via custom property below */ - color:var(--source-linenumber-color, green); - padding:0 30px 0 0; -} -.block { - display:block; - margin:0 10px 5px 0; - color:var(--block-text-color); -} -.deprecated-label, .description-from-type-label, .implementation-label, .member-name-link, -.module-label-in-package, .module-label-in-type, .package-label-in-type, -.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { - font-weight:bold; -} -.deprecation-comment, .help-footnote, .preview-comment { - font-style:italic; -} -.deprecation-block { - font-size:1em; - font-family:var(--block-font-family); - border-style:solid; - border-width:thin; - border-radius:10px; - padding:10px; - margin-bottom:10px; - margin-right:10px; - display:inline-block; -} -.preview-block { - font-size:1em; - font-family:var(--block-font-family); - border-style:solid; - border-width:thin; - border-radius:10px; - padding:10px; - margin-bottom:10px; - margin-right:10px; - display:inline-block; -} -div.block div.deprecation-comment { - font-style:normal; -} -details.invalid-tag, span.invalid-tag { - font-size:1em; - font-family:var(--block-font-family); - color: var(--invalid-tag-text-color); - background: var(--invalid-tag-background-color); - border: thin solid var(--table-border-color); - border-radius:2px; - padding: 2px 4px; - display:inline-block; -} -details summary { - cursor: pointer; -} -/* - * Styles specific to HTML5 elements. - */ -main, nav, header, footer, section { - display:block; -} -/* - * Styles for javadoc search. - */ -.ui-state-active { - /* Overrides the color of selection used in jQuery UI */ - background: var(--selected-background-color); - border: 1px solid var(--selected-background-color); - color: var(--selected-text-color); -} -.ui-autocomplete-category { - font-weight:bold; - font-size:15px; - padding:7px 0 7px 3px; - background-color:var(--navbar-background-color); - color:var(--navbar-text-color); -} -.ui-autocomplete { - max-height:85%; - max-width:65%; - overflow-y:auto; - overflow-x:auto; - scrollbar-width: thin; - white-space:nowrap; - box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); -} -ul.ui-autocomplete { - position:fixed; - z-index:1; - background-color: var(--body-background-color); -} -ul.ui-autocomplete li { - float:left; - clear:both; - min-width:100%; -} -ul.ui-autocomplete li.ui-static-link { - position:sticky; - bottom:0; - left:0; - background: var(--subnav-background-color); - padding: 5px 0; - font-family: var(--body-font-family); - font-size: 0.93em; - font-weight: bolder; - z-index: 2; -} -li.ui-static-link a, li.ui-static-link a:visited { - text-decoration:none; - color:var(--link-color); - float:right; - margin-right:20px; -} -.ui-autocomplete .result-item { - font-size: inherit; -} -.ui-autocomplete .result-highlight { - font-weight:bold; -} -#search-input, #page-search-input { - background-image:url('resources/glass.png'); - background-size:13px; - background-repeat:no-repeat; - background-position:2px 3px; - background-color: var(--search-input-background-color); - color: var(--search-input-text-color); - border-color: var(--border-color); - padding-left:20px; - width: 250px; - margin: 0; -} -#search-input { - margin-left: 4px; -} -#reset-button { - background-color: transparent; - background-image:url('resources/x.png'); - background-repeat:no-repeat; - background-size:contain; - border:0; - border-radius:0; - width:12px; - height:12px; - position:absolute; - right:12px; - top:10px; - font-size:0; -} -::placeholder { - color:var(--search-input-placeholder-color); - opacity: 1; -} -.search-tag-desc-result { - font-style:italic; - font-size:11px; -} -.search-tag-holder-result { - font-style:italic; - font-size:12px; -} -.search-tag-result:target { - background-color:var(--search-tag-highlight-color); -} -details.page-search-details { - display: inline-block; -} -div#result-container { - font-size: 1em; -} -div#result-container a.search-result-link { - padding: 0; - margin: 4px 0; - width: 100%; -} -#result-container .result-highlight { - font-weight:bolder; -} -.page-search-info { - background-color: var(--subnav-background-color); - border-radius: 3px; - border: 0 solid var(--border-color); - padding: 0 8px; - overflow: hidden; - height: 0; - transition: all 0.2s ease; -} -div.table-tabs > button.table-tab { - background: var(--navbar-background-color); - color: var(--navbar-text-color); -} -.page-search-header { - padding: 5px 12px 7px 12px; - font-weight: bold; - margin-right: 3px; - background-color:var(--navbar-background-color); - color:var(--navbar-text-color); - display: inline-block; -} -button.page-search-header { - border: none; - cursor: pointer; -} -span#page-search-link { - text-decoration: underline; -} -.module-graph span, .sealed-graph span { - display:none; - position:absolute; -} -.module-graph:hover span, .sealed-graph:hover span { - display:block; - margin: -100px 0 0 100px; - z-index: 1; -} -.inherited-list { - margin: 10px 0 10px 0; -} -section.class-description { - line-height: 1.4; -} -.summary section[class$="-summary"], .details section[class$="-details"], -.class-uses .detail, .serialized-class-details { - padding: 0 20px 5px 10px; - border: 1px solid var(--border-color); - background-color: var(--section-background-color); -} -.inherited-list, section[class$="-details"] .detail { - padding:0 0 5px 8px; - background-color:var(--detail-background-color); - border:none; -} -.vertical-separator { - padding: 0 5px; -} -ul.help-section-list { - margin: 0; -} -ul.help-subtoc > li { - display: inline-block; - padding-right: 5px; - font-size: smaller; -} -ul.help-subtoc > li::before { - content: "\2022" ; - padding-right:2px; -} -.help-note { - font-style: italic; -} -/* - * Indicator icon for external links. - */ -main a[href*="://"]::after { - content:""; - display:inline-block; - background-image:url('data:image/svg+xml; utf8, \ - \ - \ - '); - background-size:100% 100%; - width:7px; - height:7px; - margin-left:2px; - margin-bottom:4px; -} -main a[href*="://"]:hover::after, -main a[href*="://"]:focus::after { - background-image:url('data:image/svg+xml; utf8, \ - \ - \ - '); -} -/* - * Styles for header/section anchor links - */ -a.anchor-link { - opacity: 0; - transition: opacity 0.1s; -} -:hover > a.anchor-link { - opacity: 80%; -} -a.anchor-link:hover, -a.anchor-link:focus-visible, -a.anchor-link.visible { - opacity: 100%; -} -a.anchor-link > img { - width: 0.9em; - height: 0.9em; -} -/* - * Styles for copy-to-clipboard buttons - */ -button.copy { - opacity: 70%; - border: none; - border-radius: 3px; - position: relative; - background:none; - transition: opacity 0.3s; - cursor: pointer; -} -:hover > button.copy { - opacity: 80%; -} -button.copy:hover, -button.copy:active, -button.copy:focus-visible, -button.copy.visible { - opacity: 100%; -} -button.copy img { - position: relative; - background: none; - filter: brightness(var(--copy-icon-brightness)); -} -button.copy:active { - background-color: var(--copy-button-background-color-active); -} -button.copy span { - color: var(--body-text-color); - position: relative; - top: -0.1em; - transition: all 0.1s; - font-size: 0.76rem; - line-height: 1.2em; - opacity: 0; -} -button.copy:hover span, -button.copy:focus-visible span, -button.copy.visible span { - opacity: 100%; -} -/* search page copy button */ -button#page-search-copy { - margin-left: 0.4em; - padding:0.3em; - top:0.13em; -} -button#page-search-copy img { - width: 1.2em; - height: 1.2em; - padding: 0.01em 0; - top: 0.15em; -} -button#page-search-copy span { - color: var(--body-text-color); - line-height: 1.2em; - padding: 0.2em; - top: -0.18em; -} -div.page-search-info:hover button#page-search-copy span { - opacity: 100%; -} -/* snippet copy button */ -button.snippet-copy { - position: absolute; - top: 6px; - right: 6px; - height: 1.7em; - padding: 2px; -} -button.snippet-copy img { - width: 18px; - height: 18px; - padding: 0.05em 0; -} -button.snippet-copy span { - line-height: 1.2em; - padding: 0.2em; - position: relative; - top: -0.5em; -} -div.snippet-container:hover button.snippet-copy span { - opacity: 100%; -} -/* - * Styles for user-provided tables. - * - * borderless: - * No borders, vertical margins, styled caption. - * This style is provided for use with existing doc comments. - * In general, borderless tables should not be used for layout purposes. - * - * plain: - * Plain borders around table and cells, vertical margins, styled caption. - * Best for small tables or for complex tables for tables with cells that span - * rows and columns, when the "striped" style does not work well. - * - * striped: - * Borders around the table and vertical borders between cells, striped rows, - * vertical margins, styled caption. - * Best for tables that have a header row, and a body containing a series of simple rows. - */ - -table.borderless, -table.plain, -table.striped { - margin-top: 10px; - margin-bottom: 10px; -} -table.borderless > caption, -table.plain > caption, -table.striped > caption { - font-weight: bold; - font-size: smaller; -} -table.borderless th, table.borderless td, -table.plain th, table.plain td, -table.striped th, table.striped td { - padding: 2px 5px; -} -table.borderless, -table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th, -table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td { - border: none; -} -table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr { - background-color: transparent; -} -table.plain { - border-collapse: collapse; - border: 1px solid var(--table-border-color); -} -table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { - background-color: transparent; -} -table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, -table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { - border: 1px solid var(--table-border-color); -} -table.striped { - border-collapse: collapse; - border: 1px solid var(--table-border-color); -} -table.striped > thead { - background-color: var(--subnav-background-color); -} -table.striped > thead > tr > th, table.striped > thead > tr > td { - border: 1px solid var(--table-border-color); -} -table.striped > tbody > tr:nth-child(even) { - background-color: var(--odd-row-color) -} -table.striped > tbody > tr:nth-child(odd) { - background-color: var(--even-row-color) -} -table.striped > tbody > tr > th, table.striped > tbody > tr > td { - border-left: 1px solid var(--table-border-color); - border-right: 1px solid var(--table-border-color); -} -table.striped > tbody > tr > th { - font-weight: normal; -} -/** - * Tweak style for small screens. - */ -@media screen and (max-width: 920px) { - header.flex-header { - max-height: 100vh; - overflow-y: auto; - } - div#navbar-top { - height: 2.8em; - transition: height 0.35s ease; - } - ul.nav-list { - display: block; - width: 40%; - float:left; - clear: left; - margin: 10px 0 0 0; - padding: 0; - } - ul.nav-list li { - float: none; - padding: 6px; - margin-left: 10px; - margin-top: 2px; - } - ul.sub-nav-list-small { - display:block; - height: 100%; - width: 50%; - float: right; - clear: right; - background-color: var(--subnav-background-color); - color: var(--body-text-color); - margin: 6px 0 0 0; - padding: 0; - } - ul.sub-nav-list-small ul { - padding-left: 20px; - } - ul.sub-nav-list-small a:link, ul.sub-nav-list-small a:visited { - color:var(--link-color); - } - ul.sub-nav-list-small a:hover { - color:var(--link-color-active); - } - ul.sub-nav-list-small li { - list-style:none; - float:none; - padding: 6px; - margin-top: 1px; - text-transform:uppercase; - } - ul.sub-nav-list-small > li { - margin-left: 10px; - } - ul.sub-nav-list-small li p { - margin: 5px 0; - } - div#navbar-sub-list { - display: none; - } - .top-nav a:link, .top-nav a:active, .top-nav a:visited { - display: block; - } - button#navbar-toggle-button { - width: 3.4em; - height: 2.8em; - background-color: transparent; - display: block; - float: left; - border: 0; - margin: 0 10px; - cursor: pointer; - font-size: 10px; - } - button#navbar-toggle-button .nav-bar-toggle-icon { - display: block; - width: 24px; - height: 3px; - margin: 1px 0 4px 0; - border-radius: 2px; - transition: all 0.1s; - background-color: var(--navbar-text-color); - } - button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(1) { - transform: rotate(45deg); - transform-origin: 10% 10%; - width: 26px; - } - button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(2) { - opacity: 0; - } - button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(3) { - transform: rotate(-45deg); - transform-origin: 10% 90%; - width: 26px; - } -} -@media screen and (max-width: 800px) { - .about-language { - padding-right: 16px; - } - ul.nav-list li { - margin-left: 5px; - } - ul.sub-nav-list-small > li { - margin-left: 5px; - } - main { - padding: 10px; - } - .summary section[class$="-summary"], .details section[class$="-details"], - .class-uses .detail, .serialized-class-details { - padding: 0 8px 5px 8px; - } - body { - -webkit-text-size-adjust: none; - } -} -@media screen and (max-width: 400px) { - .about-language { - font-size: 10px; - padding-right: 12px; - } -} -@media screen and (max-width: 400px) { - .nav-list-search { - width: 94%; - } - #search-input, #page-search-input { - width: 70%; - } -} -@media screen and (max-width: 320px) { - .nav-list-search > label { - display: none; - } - .nav-list-search { - width: 90%; - } - #search-input, #page-search-input { - width: 80%; - } -} - -pre.snippet { - background-color: var(--snippet-background-color); - color: var(--snippet-text-color); - padding: 10px; - margin: 12px 0; - overflow: auto; - white-space: pre; -} -div.snippet-container { - position: relative; -} -@media screen and (max-width: 800px) { - pre.snippet { - padding-top: 26px; - } - button.snippet-copy { - top: 4px; - right: 4px; - } -} -pre.snippet .italic { - font-style: italic; -} -pre.snippet .bold { - font-weight: bold; -} -pre.snippet .highlighted { - background-color: var(--snippet-highlight-color); - border-radius: 10%; -} diff --git a/.gh-pages/tag-search-index.js b/.gh-pages/tag-search-index.js deleted file mode 100644 index 0367dae..0000000 --- a/.gh-pages/tag-search-index.js +++ /dev/null @@ -1 +0,0 @@ -tagSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/.gh-pages/type-search-index.js b/.gh-pages/type-search-index.js deleted file mode 100644 index 150380c..0000000 --- a/.gh-pages/type-search-index.js +++ /dev/null @@ -1 +0,0 @@ -typeSearchIndex = [{"p":"com.ohacd.matchbox.api.events","l":"AbilityUseEvent.AbilityType"},{"p":"com.ohacd.matchbox.api.events","l":"AbilityUseEvent"},{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"com.ohacd.matchbox.api","l":"ApiGameSession"},{"p":"com.ohacd.matchbox.api","l":"ApiValidationHelper"},{"p":"com.ohacd.matchbox.api","l":"GameConfig.Builder"},{"p":"com.ohacd.matchbox.api","l":"ChatChannel"},{"p":"com.ohacd.matchbox.api","l":"ChatMessage"},{"p":"com.ohacd.matchbox.api","l":"ChatProcessor.ChatProcessingResult"},{"p":"com.ohacd.matchbox.api","l":"ChatProcessor"},{"p":"com.ohacd.matchbox.api","l":"ChatResult"},{"p":"com.ohacd.matchbox.api.events","l":"CureEvent"},{"p":"com.ohacd.matchbox.api.events","l":"PlayerEliminateEvent.EliminationReason"},{"p":"com.ohacd.matchbox.api.events","l":"GameEndEvent.EndReason"},{"p":"com.ohacd.matchbox.api","l":"SessionCreationResult.ErrorType"},{"p":"com.ohacd.matchbox.api.annotation","l":"Experimental"},{"p":"com.ohacd.matchbox.api","l":"GameConfig"},{"p":"com.ohacd.matchbox.api.events","l":"GameEndEvent"},{"p":"com.ohacd.matchbox.api.events","l":"GameStartEvent"},{"p":"com.ohacd.matchbox.api.annotation","l":"Internal"},{"p":"com.ohacd.matchbox.api.events","l":"PlayerLeaveEvent.LeaveReason"},{"p":"com.ohacd.matchbox.api","l":"MatchboxAPI"},{"p":"com.ohacd.matchbox.api","l":"MatchboxEvent"},{"p":"com.ohacd.matchbox.api","l":"MatchboxEventListener"},{"p":"com.ohacd.matchbox.api.events","l":"PhaseChangeEvent"},{"p":"com.ohacd.matchbox.api","l":"PhaseController"},{"p":"com.ohacd.matchbox.api.events","l":"PlayerEliminateEvent"},{"p":"com.ohacd.matchbox.api.events","l":"PlayerJoinEvent"},{"p":"com.ohacd.matchbox.api.events","l":"PlayerLeaveEvent"},{"p":"com.ohacd.matchbox.api.events","l":"PlayerVoteEvent"},{"p":"com.ohacd.matchbox.api","l":"SessionBuilder"},{"p":"com.ohacd.matchbox.api","l":"SessionCreationResult"},{"p":"com.ohacd.matchbox.api.events","l":"SwipeEvent"},{"p":"com.ohacd.matchbox.api","l":"ApiValidationHelper.ValidationResult"}];updateSearchResults(); \ No newline at end of file