# maboroshikobo/partyanimals architecture

> Architecture diagram of the GitHub repository maboroshikobo/partyanimals, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/maboroshikobo/partyanimals
- Repository: https://github.com/maboroshikobo/partyanimals

## Overview

PartyAnimals is a Paper/Purpur server plugin for configurable pinata events and community voting. A server operator configures pinata templates; players or operators spawn them, the manager activates entity behavior and presentation, and hits trigger cooldowns, reflexes, effects, actions and rewards. Voting adds milestones and reminders through NuVotifier. The graph includes the documented model and PlaceholderAPI integrations. Evidence is limited to README statements, SOURCE INDEX references and supplied excerpts; unsampled subsystem links are omitted or marked unverified.

Main entry points: [`src/main/java/org/maboroshi/partyanimals/manager/PinataManager.java`](https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/manager/PinataManager.java) (Pinata Lifecycle), [`src/main/java/org/maboroshi/partyanimals/PartyAnimals.java`](https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/PartyAnimals.java) (Plugin Lifecycle), [`src/main/java/org/maboroshi/partyanimals/listener/PinataListener.java`](https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/listener/PinataListener.java) (Hit and Death Events), [`src/main/java/org/maboroshi/partyanimals/command`](https://github.com/maboroshikobo/partyanimals/tree/main/src/main/java/org/maboroshi/partyanimals/command) (Commands)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Plugin Runtime"]
  node_entry["Plugin Lifecycle<br/>[PartyAnimals.java]"]
  node_commands["Commands"]
end

subgraph group_pinata["Pinata Events"]
  node_factory["Pinata Creation<br/>[PinataFactory.java]"]
  node_pinata_mgr["Pinata Lifecycle<br/>[PinataManager.java]"]
  node_listener["Hit and Death Events"]
  node_behavior["Entity Behaviors"]
  node_reflex["Hit Reflexes<br/>[ReflexHandler.java]"]
  node_effects["Effects<br/>[EffectHandler.java]"]
  node_actions["Reward Actions<br/>[ActionHandler.java]"]
  node_bossbar["Boss Bars"]
end

subgraph group_voting["Voting"]
  node_database[("Vote Data Store")]
  node_vote_cmd["Vote Commands<br/>[VoteCommand.java]"]
  node_vote_mgr["Vote Goals<br/>[VoteManager.java]"]
  node_vote_listener["Vote Listener<br/>[VoteListener.java]"]
  node_reminder["Vote Reminders<br/>[VoteReminder.java]"]
end

subgraph group_support["Configuration and Integrations"]
  node_config["Settings and Templates<br/>[ConfigManager.java]"]
  node_messages["Message Formatting<br/>[MessageUtils.java]"]
  node_modelengine["ModelEngine Adapter"]
  node_bettermodel["BetterModel Adapter"]
  node_papi["PlaceholderAPI Adapter"]
end

node_operator(("Server Operator"))
node_players(("Players"))
node_server["Paper Server"]
node_votifier["NuVotifier"]

node_operator -->|"runs commands"| node_commands
node_players -->|"runs commands"| node_commands
node_entry -->|"loads settings"| node_config
node_entry -->|"connects store"| node_database
node_entry -->|"registers commands"| node_commands
node_commands -->|"requests pinatas"| node_pinata_mgr
node_commands -->|"reads settings"| node_config
node_pinata_mgr -->|"creates entities"| node_factory
node_pinata_mgr -->|"applies behavior"| node_behavior
node_pinata_mgr -->|"tracks pinatas"| node_bossbar
node_pinata_mgr -->|"reads templates"| node_config
node_listener -->|"checks pinata"| node_pinata_mgr
node_listener -->|"triggers reflexes"| node_reflex
node_listener -->|"plays effects"| node_effects
node_listener -->|"runs actions"| node_actions
node_listener -->|"updates bars"| node_bossbar
node_reflex -->|"plays effects"| node_effects
node_reflex -->|"runs actions"| node_actions
node_actions -->|"dispatches commands"| node_server
node_entry -->|"initializes goals"| node_vote_mgr
node_vote_cmd -.->|"manages goals"| node_vote_mgr
node_vote_listener -.->|"records votes"| node_vote_mgr
node_vote_mgr -.->|"stores vote data"| node_database
node_reminder -.->|"sends reminders"| node_players
node_votifier -.->|"delivers votes"| node_vote_listener
node_entry -->|"sets up optional hook"| node_modelengine
node_entry -->|"sets up optional hook"| node_bettermodel
node_entry -->|"sets up optional hook"| node_papi
node_pinata_mgr -->|"uses model adapter"| node_modelengine
node_pinata_mgr -->|"uses model adapter"| node_bettermodel
node_players -->|"hits pinatas"| node_listener

click node_entry "https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/PartyAnimals.java"
click node_commands "https://github.com/maboroshikobo/partyanimals/tree/main/src/main/java/org/maboroshi/partyanimals/command"
click node_config "https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/config/ConfigManager.java"
click node_messages "https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/util/MessageUtils.java"
click node_database "https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/manager/DatabaseManager.java"
click node_factory "https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/manager/PinataFactory.java"
click node_pinata_mgr "https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/manager/PinataManager.java"
click node_listener "https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/listener/PinataListener.java"
click node_behavior "https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/handler/BehaviorHandler.java"
click node_reflex "https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/handler/ReflexHandler.java"
click node_effects "https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/handler/EffectHandler.java"
click node_actions "https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/handler/ActionHandler.java"
click node_bossbar "https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/manager/BossBarManager.java"
click node_vote_cmd "https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/command/VoteCommand.java"
click node_vote_mgr "https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/manager/VoteManager.java"
click node_vote_listener "https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/listener/VoteListener.java"
click node_reminder "https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/task/VoteReminder.java"
click node_modelengine "https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/hook/ModelEngineHook.java"
click node_bettermodel "https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/hook/BetterModelHook.java"
click node_papi "https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/hook/PlaceholderAPIHook.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_entry,node_commands toneBlue
class node_factory,node_pinata_mgr,node_listener,node_behavior,node_reflex,node_effects,node_actions,node_bossbar toneAmber
class node_database,node_vote_cmd,node_vote_mgr,node_vote_listener,node_reminder,node_operator,node_server toneMint
class node_config,node_messages,node_modelengine,node_bettermodel,node_papi toneRose
class node_players,node_votifier toneIndigo
```

## Components

### Plugin Runtime

- [Plugin Lifecycle](https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/PartyAnimals.java): `src/main/java/org/maboroshi/partyanimals/PartyAnimals.java`
- [Commands](https://github.com/maboroshikobo/partyanimals/tree/main/src/main/java/org/maboroshi/partyanimals/command): `src/main/java/org/maboroshi/partyanimals/command`

### Pinata Events

- [Pinata Creation](https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/manager/PinataFactory.java): `src/main/java/org/maboroshi/partyanimals/manager/PinataFactory.java`
- [Pinata Lifecycle](https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/manager/PinataManager.java): `src/main/java/org/maboroshi/partyanimals/manager/PinataManager.java`
- [Hit and Death Events](https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/listener/PinataListener.java): `src/main/java/org/maboroshi/partyanimals/listener/PinataListener.java`
- [Entity Behaviors](https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/handler/BehaviorHandler.java): `src/main/java/org/maboroshi/partyanimals/handler/BehaviorHandler.java`
- [Hit Reflexes](https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/handler/ReflexHandler.java): `src/main/java/org/maboroshi/partyanimals/handler/ReflexHandler.java`
- [Effects](https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/handler/EffectHandler.java): `src/main/java/org/maboroshi/partyanimals/handler/EffectHandler.java`
- [Reward Actions](https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/handler/ActionHandler.java): `src/main/java/org/maboroshi/partyanimals/handler/ActionHandler.java`
- [Boss Bars](https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/manager/BossBarManager.java): `src/main/java/org/maboroshi/partyanimals/manager/BossBarManager.java`

### Voting

- [Vote Data Store](https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/manager/DatabaseManager.java): `src/main/java/org/maboroshi/partyanimals/manager/DatabaseManager.java`
- [Vote Commands](https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/command/VoteCommand.java): `src/main/java/org/maboroshi/partyanimals/command/VoteCommand.java`
- [Vote Goals](https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/manager/VoteManager.java): `src/main/java/org/maboroshi/partyanimals/manager/VoteManager.java`
- [Vote Listener](https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/listener/VoteListener.java): `src/main/java/org/maboroshi/partyanimals/listener/VoteListener.java`
- [Vote Reminders](https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/task/VoteReminder.java): `src/main/java/org/maboroshi/partyanimals/task/VoteReminder.java`

### Configuration and Integrations

- [Settings and Templates](https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/config/ConfigManager.java): `src/main/java/org/maboroshi/partyanimals/config/ConfigManager.java`
- [Message Formatting](https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/util/MessageUtils.java): `src/main/java/org/maboroshi/partyanimals/util/MessageUtils.java`
- [ModelEngine Adapter](https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/hook/ModelEngineHook.java): `src/main/java/org/maboroshi/partyanimals/hook/ModelEngineHook.java`
- [BetterModel Adapter](https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/hook/BetterModelHook.java): `src/main/java/org/maboroshi/partyanimals/hook/BetterModelHook.java`
- [PlaceholderAPI Adapter](https://github.com/maboroshikobo/partyanimals/blob/main/src/main/java/org/maboroshi/partyanimals/hook/PlaceholderAPIHook.java): `src/main/java/org/maboroshi/partyanimals/hook/PlaceholderAPIHook.java`

### Other components

- **Server Operator**
- **Players**
- **Paper Server**
- **NuVotifier**

## Connections

- Server Operator → Commands: runs commands (evidence: `src/main/java/org/maboroshi/partyanimals/command/PinataCommand.java`)
- Players → Commands: runs commands
- Plugin Lifecycle → Settings and Templates: loads settings (evidence: `src/main/java/org/maboroshi/partyanimals/PartyAnimals.java`)
- Plugin Lifecycle → Vote Data Store: connects store (evidence: `src/main/java/org/maboroshi/partyanimals/PartyAnimals.java`)
- Plugin Lifecycle → Commands: registers commands (evidence: `src/main/java/org/maboroshi/partyanimals/PartyAnimals.java`)
- Commands → Pinata Lifecycle: requests pinatas (evidence: `src/main/java/org/maboroshi/partyanimals/command/PinataCommand.java`)
- Commands → Settings and Templates: reads settings (evidence: `src/main/java/org/maboroshi/partyanimals/command/PinataCommand.java`)
- Pinata Lifecycle → Pinata Creation: creates entities (evidence: `src/main/java/org/maboroshi/partyanimals/manager/PinataManager.java`)
- Pinata Lifecycle → Entity Behaviors: applies behavior (evidence: `src/main/java/org/maboroshi/partyanimals/manager/PinataManager.java`)
- Pinata Lifecycle → Boss Bars: tracks pinatas (evidence: `src/main/java/org/maboroshi/partyanimals/manager/PinataManager.java`)
- Pinata Lifecycle → Settings and Templates: reads templates (evidence: `src/main/java/org/maboroshi/partyanimals/manager/PinataManager.java`)
- Hit and Death Events → Pinata Lifecycle: checks pinata (evidence: `src/main/java/org/maboroshi/partyanimals/listener/PinataListener.java`)
- Hit and Death Events → Hit Reflexes: triggers reflexes (evidence: `src/main/java/org/maboroshi/partyanimals/listener/PinataListener.java`)
- Hit and Death Events → Effects: plays effects (evidence: `src/main/java/org/maboroshi/partyanimals/listener/PinataListener.java`)
- Hit and Death Events → Reward Actions: runs actions (evidence: `src/main/java/org/maboroshi/partyanimals/listener/PinataListener.java`)
- Hit and Death Events → Boss Bars: updates bars (evidence: `src/main/java/org/maboroshi/partyanimals/listener/PinataListener.java`)
- Hit Reflexes → Effects: plays effects (evidence: `src/main/java/org/maboroshi/partyanimals/handler/ReflexHandler.java`)
- Hit Reflexes → Reward Actions: runs actions (evidence: `src/main/java/org/maboroshi/partyanimals/handler/ReflexHandler.java`)
- Reward Actions → Paper Server: dispatches commands (evidence: `src/main/java/org/maboroshi/partyanimals/handler/ActionHandler.java`)
- Plugin Lifecycle → Vote Goals: initializes goals (evidence: `src/main/java/org/maboroshi/partyanimals/PartyAnimals.java`)
- Vote Commands → Vote Goals: manages goals
- Vote Listener → Vote Goals: records votes (evidence: `src/main/java/org/maboroshi/partyanimals/manager/VoteManager.java`)
- Vote Goals → Vote Data Store: stores vote data
- Vote Reminders → Players: sends reminders
- NuVotifier → Vote Listener: delivers votes
- Plugin Lifecycle → ModelEngine Adapter: sets up optional hook (evidence: `src/main/java/org/maboroshi/partyanimals/PartyAnimals.java`)
- Plugin Lifecycle → BetterModel Adapter: sets up optional hook (evidence: `src/main/java/org/maboroshi/partyanimals/PartyAnimals.java`)
- Plugin Lifecycle → PlaceholderAPI Adapter: sets up optional hook (evidence: `src/main/java/org/maboroshi/partyanimals/PartyAnimals.java`)
- Pinata Lifecycle → ModelEngine Adapter: uses model adapter (evidence: `src/main/java/org/maboroshi/partyanimals/manager/PinataManager.java`)
- Pinata Lifecycle → BetterModel Adapter: uses model adapter (evidence: `src/main/java/org/maboroshi/partyanimals/manager/PinataManager.java`)
- Players → Hit and Death Events: hits pinatas
