🎮 CustomGuiReworked - Plugin Mechanics
Detailed description of all mechanics and systems of the CustomGuiReworked plugin.
📋 GUI System
Creation and Editing
- Built-in Editor - Creating GUI through
/gui create and /gui edit commands
- Visual Editing - Placing items in slots through interface
- Property Configuration - Setting title, size, commands for slots
- File Saving - Each GUI is saved in a separate YAML file
Inventory Types
- 9 slots (1 row) - For simple menus
- 18 slots (2 rows) - For small interfaces
- 27 slots (3 rows) - Standard size
- 36 slots (4 rows) - Extended interfaces
- 45 slots (5 rows) - Large menus
- 54 slots (6 rows) - Maximum size
💾 Data Storage System
5 Storage Types
| Type |
Description |
Usage |
| Block |
Data bound to specific block |
Chests, furnaces, workbenches |
| Personal |
Data unique for each player |
Personal inventories, settings |
| Global |
Shared data for all players |
global banks, global chest |
| Team |
Data for player groups |
Clan storages |
| Temporary |
Data only for session duration |
Temporary menus, forms |
Saving Mechanics
- Automatic saving when content changes
- Data loading when opening GUI
- Synchronization between players for shared inventories
🎯 Command System
Slot Commands
- Command execution when clicking on slot
- Variable support (%player%, %slot%, %item%)
- Conditional execution - commands only under certain conditions
- Console commands - execution on behalf of server
Command Examples
commands:
- command: "give %player% diamond 1"
slot: 10
condition: "has_permission"
- command: "teleport %player% spawn"
slot: 15
🔍 SlotTypeAPI - Slot Type Detection
Automatic Detection
| Type |
Description |
Behavior |
| DESIGN |
Decorative slots |
Cannot interact |
| CONTAINER |
Storage slots |
Full interaction |
| CRAFT |
Crafting/recipe slots |
Limited interaction |
| RESULT |
Crafting result slots |
Only item retrieval |
| FUEL |
Fuel slots |
Fuel validity check |
only design have functional, other for API to easy codding
Standard Inventory Support
- Crafting Table - Crafting slots and result
- Furnace - Ingredient, fuel, result
- Brewing Stand - Potions, fuel, bottles
- Anvil - Items and result
- Enchanting Table - Item and lapis
Heuristics for Custom Inventories
- Size analysis of inventory
- Pattern detection of layout
- Result caching for performance
🔧 Developer API
Static API (CustomGuiAPI)
// Simple calls without getting plugin instance
CustomGuiAPI.createGui("shop");
CustomGuiAPI.openGui(player, "shop");
CustomGuiAPI.isDesignSlot(slot, inventory);
Internal API (ApiManager)
- Direct access to plugin managers
- Extended capabilities for complex integration
- Full control over functionality
🎨 Design System
Appearance Configuration
- Titles with color codes (§6, §a, §c)
- skeleton system - items for buttons and elements
ItemsAdder SUPPORT!
🛡️ Security System
Checks and Restrictions
- Access rights - permission checking
- Data validation - correctness verification
- Exploit protection - bug prevention
⚡ Performance Optimization
Caching
- Slot type cache - fast access to information
- GUI cache - loaded interfaces in memory
- Lazy loading - loading on demand
Memory Management
- Auto-cleanup - removing unused data
- Size limitation - preventing memory leaks
- Asynchronous operations - non-blocking operations
🌐 Multilingual Support
Language Support
- English - primary language
- Russian - additional language
- Translation system - easy to add new languages
Localization
- Messages - translation of all texts
- Commands - support for different languages
- Documentation - help translation
🔧 Integration with Other Plugins
API Capabilities
- GUI creation from other plugins
- Data management - reading/writing content
- Event handling - reacting to player actions
- Functionality extension - adding new capabilities
Integration Examples
| Plugin |
Application |
Examples |
| Economy Plugins |
Shops with prices |
Vault, Essentials |
| Warp Systems |
Teleportation menus |
Essentials, Multiverse |
| Clan Systems |
Clan management |
Factions, Clans |
| Mini-games |
Game interfaces |
Custom mini-games |
📊 Performance
Metrics
- GUI loading time: < 50ms
- Memory per GUI: ~2-5KB
- Concurrent users support: 1000+
- Compatibility: 99% of plugins
Optimizations
- Lazy initialization - loading only when needed
- Object pooling - object reuse
- Asynchronous processing - non-blocking operations
- Smart caching - cache with TTL
🚀 Advanced Features
Advanced Functions
- Dynamic GUIs - real-time content changes
- Conditional logic - showing elements by conditions
- Animations - smooth transitions and effects
- Web integration - connection with web services
Future Plans
- Visual constructor - drag-and-drop interface
- GUI templates - ready-made designs
- Plugin marketplace - GUI exchange between servers
- Mobile support - management through app