Survival Plugin
Instead of relying on a dozen different fragmented plugins to run a Minecraft server, I decided to build my own all-in-one core plugin from scratch. This project handles everything from essential player commands to custom chat formatting and even hosts its own resource packs.
The Stack
- Language: Java, utilizing a strict, object-oriented architecture.
- Build Tool: Maven, managed through a central configuration.
- Data Management: A custom Database Manager to safely handle player data and server states.
- Web Integration: A built-in HTTP server designed specifically to distribute custom server resource packs.
- Configuration: YAML-based config files for easy server-side adjustments.
Features & Player Mechanics
This plugin replaces heavily bloated third-party tools with clean, handwritten implementations of core server mechanics:
- Teleportation System: A fully interactive TPA system handling
/tpa,/tpaccept,/tpdeny, and/tphererequests. - Moderation Tools: Essential oversight features including
/vanish,/fly,/invsee, and more. - World Navigation: Comprehensive Home and Warp Managers for setting and managing player locations.
- Quality of Life: Portable utility commands granting players instant access to
/enderchest,/workbench, and/trash.
Theming, UI & Customization
A server should feel like a cohesive experience, not a patchwork of random tools. I built out dedicated managers and listeners to control the visual flow:
- Chat & Assets: Custom chat formatting, message prefixes, and autocomplete features.
- Live Server Branding: A fully customized
TablistManagerand dynamic MOTD handling. - Event Tracking: Dedicated listeners for player actions, including custom join and leave messages.
Why Build It Myself?
Writing a Minecraft plugin of this scale is a massive exercise in handling edge cases and server events. How do you ensure a player in /vanish stays completely invisible to the server's TablistManager and JoinListener? How do you efficiently serve custom assets without relying on a third-party web host?
Building features like the ResourcePackServer and wrestling with complex inventory states in the InvseeListener made this project a fantastic deep dive into backend Java development and real-time event handling.