Overview
PenguinCore is a multi-feature SMP plugin that bundles RTP with GUI, Teams, Duels, Bounties, AFK, Playtime & Rewards, Daily Rewards, Sell GUI, Social commands, Chat Mentions, BossBar rotation, Bedrock notices, World Border management and more. It ships with DB support (SQLite/MySQL/H2 via HikariCP) and tightly integrates with PlaceholderAPI, Vault Economy, HeadDatabase, Floodgate/Geyser, and VirtualSpawner.
Most features can be toggled via features.*.enabled in config.yml.
Installation
- Place the JAR in
plugins/and start the server once to generate config files. - Configure
config.yml,messages.yml, and optional files (bossbar.yml,sellgui.yml,dailyrewards.yml,duels.yml). - Install required integrations (PlaceholderAPI, Vault, etc.) according to your feature set.
- Restart the server.
Configuration
Main highlights. See full details in the Files section.
# Feature toggles (examples)
features:
team:
enabled: true
rtp:
enabled: true
duels:
enabled: true
daily-rewards:
enabled: true
# Social links
social:
twitch: "https://twitch.tv/..."
discord: "https://discord.gg/..."
store: "https://store.example.com"
website: "https://example.com"
Dependencies & Integrations
- PlaceholderAPI — placeholders & replacements
- Vault Economy — economy operations
- HeadDatabase — GUI icons (RTP GUI)
- Floodgate/Geyser — optional Bedrock detection
- VirtualSpawner — optional; if enabled but missing, the plugin disables
- HikariCP — DB connection pool (SQLite/MySQL/H2)
Licensing
- Requires
licensing.keyinconfig.yml. - Determines server IP; disables on mismatch/error.
Database
Supports MySQL, SQLite (default), and H2. Notable tables:
runes,playtime,playtime_rewards,penguincore_playtimekeyteams,team_members,team_invites,team_homes,team_chatpenguincore_bounties
Teams
- Create/rename/delete, invites with 5-minute expiry (clickable accept/deny)
- Team chat toggle & spy; team home (set/home)
- Validations for name, membership, roles
RTP
- GUI for Overworld/Nether/End (HeadDatabase icons)
- Safe landings per environment; cooldown panel in GUI
- Default cooldown: 300s; bypass:
penguincore.command.rtp.bypass - Max radius: Overworld 75k, Nether 15k, End 65k
RTP Queue
- Queue pairs players and teleports them face-to-face
- Short immobilization, titles; auto-leave if out of zone
rtpqueue:
zone:
world: "Spawn"
center-x: 94.0
center-y: -11.0
center-z: -49.0
radius: 4.0
Duels (1v1)
- Personal duel (choose opponent & arena) or Random queue
- Arenas/kits in
duels.yml; occupancy tracked; snapshots & restore - Start: titles, brief immobilization; End: no drops, +100 runes to winner
- Logout = automatic win for remaining player
Bounties
- Set on online players (min 500), not on self or same team
- On death: payout to killer, optional broadcast, fireworks, clear bounty
- PAPI:
%penguincore_bounty%
Runes (currency)
- Admin:
/rune set|add|remove - Anti-farm kill chain: blocks rune gain for repeat kills for 1 hour
Checks (banknotes)
/check <amount>creates a PAPER item "Check – VALUE gold"- Eco take on creation, eco give on redemption
- Anvil protection against forging/renaming
Sell GUI
- 6×9 "Sell Items" chest; merges stacks; prices from
sellgui.yml - Shows per-item value, qty, totals; confirm button reflects grand total
AFK
- Automatic idle detection + manual
/afk - Teleport to configured location, invisibility, titles, pause playtime
Playtime & Rewards
- Saved every second; milestones execute configured commands
- GUI fully customizable; Hourly "Playtime Key" with live timer
- Placeholders for readable time formats
Daily Rewards
- Types:
default, squire, knight, lord, prince, king - Rules: 1 claim/day per type per account; 1 account per IP/day per type
- Live cooldown timer; locked items if no permission
BossBar Rotation
Configured in bossbar.yml. PAPI replacements per player.
bossbars:
- text: "<your text with PAPI>"
color: "BLUE"
style: "SEGMENTED_10"
duration: 8
switch-interval: 2
Chat Mentions
- Highlights
@Name(supports Bedrock names with dots) - Sound ping with per-player cooldown
Bedrock Notices
- Detects Floodgate/Geyser or prefix mode
- Sends two join notice lines (configurable)
World Borders
- Default:
world_nether = 30000,world_the_end = 130000 - Optional Overworld border (center & size from config)
Social Links
/twitch,/discord,/store,/website
Crystal
- Fast-mode crystal placement with configurable cooldown
- Damage customization: explosion radius and damage multiplier
crystal:
enabled: true
fast-mode:
enabled: true
cooldown: 0.3
damage:
radius: 5.0
multiplier: 1.25
Placeholders (PlaceholderAPI)
%penguincore_rune%— player's runes%penguincore_team%— team name%penguincore_playtime%— long smart format%penguincore_playtime_minuti%— "Xh Ym" format%penguincore_playtimekey%— remaining time or AFK%penguincore_bounty%— compact rich value
Files
config.yml— global settings, feature togglesmessages.yml— user-facing textsbossbar.yml— bossbar rotationsellgui.yml— per-material pricingdailyrewards.yml— reward types, GUI layoutduels.yml— arenas, kits, durations
Troubleshooting
- Plugin won't load: Java 17+, license present/valid, DB reachable
- Economy not changing: Verify Vault + economy provider
- Placeholders missing: Install PlaceholderAPI
- Duels won't start: Ensure at least one free arena
Commands
| Command | Permission | Description |
|---|---|---|
/penguincore reload | penguincore.command.reload | Reload config files |
/help | — | Shows help lines |
/team ... | — | Team subcommands |
/rtp | penguincore.command.rtp.bypass | Open RTP GUI |
/rtpqueue | — | Enter queue |
/rune <set|add|remove> | — | Manage Runes |
/sell | — | Open Sell GUI |
/bounty set <player> <amount> | — | Set bounty |
/check <amount> | — | Create check |
/afk | — | Toggle AFK |
/playtime | — | Open Playtime GUI |
/duel | — | Open duels GUI |
/twitch, /discord, /store, /website | — | Social links |


