# GillKits - Advanced Kit Editor Plugin
**Version:** 1.0.0
**Minecraft Version:** 1.21+
**Dependencies:** None
GillKits is a high-performance Minecraft plugin that provides advanced kit management capabilities. Built with modern Java practices, it offers lightning-fast performance with minimal server impact, easy YAML-based configuration, and advanced features like cooldowns, permissions, and multi-world support.
---
## Features
**GUI Kit Editor** - Edit kits visually with an inventory-based editor
**Per-Player Kits** - Players can have their own customized kits
**Lightning Fast** - Optimized for performance with minimal server impact
**Easy Configuration** - Simple YAML-based configuration
**Multi-World Support** - Works across multiple worlds and servers
**Permission-based Editing** - Control who can edit default kits or just their own
**Automatic Saving** - Kits are saved to `.yml` files for persistence
**Advanced Cooldowns** - Flexible cooldown system
**Custom Messages** - Fully customizable plugin messages
**Reload Support** - Reload configs and kits without restarting your server
---
## Installation
1. Download the **GillKits.jar** file
2. Place it into your server's `plugins` folder
3. Restart the server
4. The plugin will create its folder and default files automatically
---
## Commands
| Command | Description | Permission |
|---------|-------------|------------|
| `/gkits create <name>` | Create a new kit with the given name | `gillkits.edit` |
| `/gkits edit <name>` | Open the GUI editor for an existing kit | `gillkits.edit` |
| `/gkits save` | Save the kit you're currently editing | `gillkits.edit` |
| `/gkits reset` | Reset your kit editing session back to the original | `gillkits.edit` |
| `/gkits cancel` | Cancel editing without saving changes | `gillkits.edit` |
| `/gkits remove <name>` | Delete a kit | `gillkits.edit.default` |
| `/gkits list` | Show all available kits | `gillkits.use` |
| `/gkits give <kit> [player]` | Give a kit to yourself or another player | `gillkits.give` |
| `/gkits reload` | Reload the plugin's configs and kits | `gillkits.admin` |
---
## Permissions
| Permission | Description |
|------------|-------------|
| `gillkits.use` | Basic permission to use `/gkits` commands |
| `gillkits.edit` | Allows a player to edit their own kits |
| `gillkits.edit.default` | Allows editing of default kits |
| `gillkits.give` | Allows giving kits to other players |
| `gillkits.admin` | Full access to all commands |
---
## Configuration
### config.yml
```yaml
# GillKits Configuration
plugin:
version: "1.0.0"
debug: false
# General Settings
settings:
auto-save: true
backup-kits: true
max-kits-per-player: 10
# GUI Settings
gui:
editor-title: "Kit Editor"
selector-title: "Select Kit"
confirm-deletions: true
# Performance
performance:
async-save: true
cache-kits: true
```
### messages.yml
```yaml
no-permission: "&cYou don't have permission to do that!"
player-only: "&cThis command can only be executed by players!"
player-not-found: "&cPlayer &6%player% &cnot found!"
plugin:
reloaded: "&aGillKits configuration reloaded!"
kit:
exists: "&cA kit named &6%kit% &calready exists!"
not-exists: "&cKit &6%kit% &cdoes not exist!"
created: "&aKit &6%kit% &acreated successfully!"
create:
usage: "&cUsage: /gkits create <name>"
error: "&cAn error occurred while creating kit &6%kit%"
removed: "&aKit &6%kit% &aremoved successfully!"
remove:
usage: "&cUsage: /gkits remove <name>"
error: "&cAn error occurred while removing kit &6%kit%"
saved: "&aKit &6%kit% &ahas been saved successfully!"
reset: "&aKit &6%kit% &ahas been reset to its original state!"
reset.default: "&aKit &6%kit% &ahas been reset to original version!"
reset.user: "&aYour personal kit &6%kit% &ahas been reset to original version!"
edit-cancelled: "&aKit editing cancelled!"
not-editing: "&cYou are not currently editing a kit!"
edit:
usage: "&cUsage: /gkits edit <name>"
given:
sender: "&aGiven kit &6%kit% &ato &6%player%"
target: "&aYou received kit &6%kit%"
usage: "&cUsage: /gkits give <kit> [player]"
console-usage: "&cUsage: /gkits give <kit> <player>"
list:
empty: "&cThere are no kits available!"
header: "&6Available Kits:"
item: "&7- &6%kit%"
help:
header: "&6&lGillKits &7- &fCommands"
footer: "&7Alias: &6/gk"
create: "&6/gkits create <name> &7- Create a new kit from your inventory"
edit: "&6/gkits edit <name> &7- Edit a kit in a GUI"
save: "&6/gkits save &7- Save your current kit edits"
reset: "&6/gkits reset &7- Reset kit to its original state"
cancel: "&6/gkits cancel &7- Cancel editing without saving"
remove: "&6/gkits remove <name> &7- Delete a kit"
list: "&6/gkits list &7- List all available kits"
reload: "&6/gkits reload &7- Reload the plugin configuration"
give: "&6/gkits give <kit> [player] &7- Give a kit to a player"
```
---
## Quick Start Guide
### Creating Your First Kit
1. **Fill your inventory** with the items you want in the kit
2. **Run the command**: `/gkits create starter`
3. **The kit is created** and ready to use
4. **Give the kit**: `/gkits give starter [player]`
### Editing Existing Kits
1. **Start editing**: `/gkits edit starter`
2. **Modify items** in the GUI editor
3. **Save changes**: `/gkits save`
4. **Or cancel**: `/gkits cancel`
### Setting Up Permissions
```yaml
# Basic usage
- gillkits.use
# Allow players to edit their own kits
- gillkits.edit
# Allow editing of server default kits (admins)
- gillkits.edit.default
# Allow giving kits to other players
- gillkits.give
```
---
## Advanced Features
### Per-Player Kit System
Players can create and manage their own personal kits:
- Each player has their own kit storage
### GUI-Based Editing
The visual kit editor provides:
- **Inventory Interface** - Familiar chest-based editing
- **Real-time Preview** - See changes as you make them
- **Easy Item Management** - Drag and drop items
- **Confirmation Dialogs** - Prevent accidental changes
### Performance Optimization
GillKits is built for performance:
- **Asynchronous Saving** - Non-blocking kit saves
- **Memory Efficient** - Minimal RAM usage
- **Fast Loading** - Quick server startup
- **Cache System** - Reduced file I/O operations
---
## Kit File Format
```yaml
# Example kit file: starter.yml
kit:
name: "starter"
display-name: "&aStarter Kit"
created: "2025-01-01T00:00:00Z"
last-modified: "2025-01-01T00:00:00Z"
items:
- slot: 0
material: "WOODEN_SWORD"
amount: 1
- slot: 1
material: "WOODEN_PICKAXE"
amount: 1
- slot: 8
material: "BREAD"
amount: 16
```
---
// Create a kit programmatically
Kit kit = new Kit("example");
kit.setDisplayName("Example Kit");
kit.addItem(0, new ItemStack(Material.DIAMOND_SWORD));
api.saveKit(kit, player);
// Give a kit to a player
api.giveKit(player, "starter");
// Check if kit exists
if (api.kitExists("starter", player)) {
// Kit exists
}
```
---
## Troubleshooting
### Common Issues
**Kits not saving:**
- Check file permissions in the `plugins/GillKits/` folder
- Ensure `auto-save` is enabled in config
- Check console for error messages
**Permission errors:**
- Verify LuckPerm plugin is installed and working
- Check permission node spelling
- Restart server after permission changes
**Performance issues:**
- Enable `async-save` in configuration
- Reduce `max-kits-per-player` if needed
- Check for plugin conflicts
---
## Support
**Discord:**
https://discord.gg/5zMvpYeq7J
For bug reports, feature requests, or general support, join our Discord server where our development team and community can assist you.