# PokeLog

## Highlights

* Logs when a player captures a pokemon.
* Logs when a player hatches a pokemon egg.
* Logs when a player trades a pokemon to another player.
* Logs when a player releases a pokemon from their party or pc.
* View logs with ease using a user interface and able to filter logs for an easier searching.
* Able to retrieve the logged pokemon.

## Commands

<table><thead><tr><th width="257.33333333333326">Command</th><th width="277">Permission</th><th>Description</th></tr></thead><tbody><tr><td>/pokelog info</td><td>N/A</td><td>Shows the plugin information and commands.</td></tr><tr><td>/pokelog reload</td><td>pokelog.command.reload</td><td>Reloads the configuration files.</td></tr><tr><td>/pokelog clear &#x3C;type></td><td>pokelog.command.clear</td><td>Clears the logs of the specified type.</td></tr><tr><td>/pokelog open &#x3C;type> &#x3C;player> &#x3C;pokemonProperties></td><td>pokelog.command.open</td><td>Opens the user interface logs with the specified options.</td></tr></tbody></table>

## Extra Permissions

| Permission               | Description                                                |
| ------------------------ | ---------------------------------------------------------- |
| pokelog.retrieve.pokemon | Able to retrieve the pokemon from the user interface logs. |

## Main Configuration

<details>

<summary>Expand</summary>

```json
{
  "UseSqlite": true,
  "DatabaseName": "pokelog",
  "DatabaseAddress": "localhost:3306",
  "DatabaseUserName": "root",
  "DatabasePassword": "password",
  "CommandAlias": [
    "pokelog",
    "plog"
  ],
  "TimeZone": "GMT+8",
  "TimeFormat": "h:mm a M/d/yyyy",
  # The list of player UUIDs that will not be logged.
  "PlayerWhitelist": [
    "7b0b5d51-4786-462b-9866-c71ee6f8604e",
    "7b0b5d51-4786-462b-9866-c71ee6f8604e"
  ]
}
```

</details>

## User Interface Configuration

<details>

<summary>Expand</summary>

```json
{
  "NoneText": "&bNone",
  "HiddenAbilityText": " &b(Hidden Ability)",
  "LogPokemonSpriteTitle": "&a%player% (%date%)",
  "TradeLogPokemonSpriteTitle": "&a%player% traded to %traded_to% (%date%)",
  "PokemonSpriteLore": [
    "&e%pokemon% %nickname%",
    " ",
    "&6Level: &b%level%",
    "&6Dynamax Level: &b%dynamax_level%",
    "&6Friendship: &b%friendship%",
    "&6Nature: &b%nature%",
    "&6Ability: &b%ability%",
    " ",
    "&6Size: &b%size%",
    "&6Poké Ball: &b%ball%",
    "&6Held Item: &b%held_item%",
    "&6Original Trainer: &b%original_trainer%",
    "&6Aspects: &b%aspects%",
    " ",
    "&6IVs: &b%iv_hp%&7/&b%iv_atk%&7/&b%iv_def%&7/&b%iv_spe%&7/&b%iv_spa%&7/&b%iv_spd% &b(%iv_percentage%%)",
    "&6EVs: &b%ev_hp%&7/&b%ev_atk%&7/&b%ev_def%&7/&b%ev_spe%&7/&b%ev_spa%&7/&b%ev_spd% &b(%ev_total%)",
    " ",
    "&6Moves: &b%move_1%&7/&b%move_2%&7/&b%move_3%&7/&b%move_4%",
    " ",
    "&6World: &b%world%",
    "&6Position X: &b%pos_x%",
    "&6Position Y: &b%pos_y%",
    "&6Position Z: &b%pos_z%",
    " ",
    "&7Click to retrieve the pokemon."
  ],
  "UserInterfaceRows": 6,
  "UserInterfaceTitle": "&#404040%type% Logs",
  "UserInterface": {
    "0": {
      "DisplayItem": "minecraft:red_stained_glass_pane"
    },
    "1": {
      "DisplayItem": "minecraft:red_stained_glass_pane"
    },
    "2": {
      "DisplayItem": "minecraft:red_stained_glass_pane"
    },
    "3": {
      "DisplayItem": "minecraft:red_stained_glass_pane"
    },
    "4": {
      "DisplayItem": "minecraft:red_stained_glass_pane"
    },
    "5": {
      "DisplayItem": "minecraft:red_stained_glass_pane"
    },
    "6": {
      "DisplayItem": "minecraft:red_stained_glass_pane"
    },
    "7": {
      "DisplayItem": "minecraft:red_stained_glass_pane"
    },
    "8": {
      "DisplayItem": "minecraft:red_stained_glass_pane"
    },
    "9": {
      "DisplayItem": "minecraft:red_stained_glass_pane"
    },
    "17": {
      "DisplayItem": "minecraft:red_stained_glass_pane"
    },
    "18": {
      "DisplayItem": "minecraft:black_stained_glass_pane"
    },
    "26": {
      "DisplayItem": "minecraft:black_stained_glass_pane"
    },
    "27": {
      "DisplayItem": "minecraft:black_stained_glass_pane"
    },
    "35": {
      "DisplayItem": "minecraft:black_stained_glass_pane"
    },
    "36": {
      "DisplayItem": "minecraft:white_stained_glass_pane"
    },
    "44": {
      "DisplayItem": "minecraft:white_stained_glass_pane"
    },
    "45": {
      "DisplayItem": "minecraft:white_stained_glass_pane"
    },
    "46": {
      "DisplayItem": "minecraft:white_stained_glass_pane"
    },
    "47": {
      "DisplayItem": "minecraft:white_stained_glass_pane"
    },
    "48": {
      "Type": "previous",
      "DisplayItem": "minecraft:spectral_arrow",
      "DisplayName": "&6Previous"
    },
    "49": {
      "DisplayItem": "minecraft:white_stained_glass_pane"
    },
    "50": {
      "Type": "next",
      "DisplayItem": "minecraft:spectral_arrow",
      "DisplayName": "&6Next"
    },
    "51": {
      "DisplayItem": "minecraft:white_stained_glass_pane"
    },
    "52": {
      "DisplayItem": "minecraft:white_stained_glass_pane"
    },
    "53": {
      "DisplayItem": "minecraft:white_stained_glass_pane"
    }
  }
}
```

</details>

## Dependencies

* Java 21
* [GooeyLibs Fabric 1.21.1](https://modrinth.com/mod/gooeylibs)
* [Cobblemon Fabric 1.21.1](https://modrinth.com/mod/cobblemon/)

## Example

<figure><img src="https://i.gyazo.com/bc16c14da218d1839b25b95fb6589821.png" alt=""><figcaption></figcaption></figure>
