Built-in Plugins Reference
Built-in Plugins Reference
Section titled “Built-in Plugins Reference”Hytale includes 31 built-in plugins that demonstrate modding patterns and provide core gameplay features. This reference documents each plugin, its components, and how to learn from them.
Package Location
Section titled “Package Location”com.hypixel.hytale.builtin
Complete Plugin List
Section titled “Complete Plugin List”All 31 built-in plugins organized by category:
Core Gameplay
Section titled “Core Gameplay”| Plugin | Directory | Description |
|---|---|---|
| WeatherPlugin | weather/ | Dynamic weather systems |
| CraftingPlugin | crafting/ | Crafting benches and recipes |
| TeleportPlugin | teleport/ | Teleportation and warps |
| PortalsPlugin | portals/ | Inter-world portals |
| BedsPlugin | beds/ | Spawn points and sleeping |
| InstancesPlugin | instances/ | Instanced dungeons/areas |
Movement & Combat
Section titled “Movement & Combat”| Plugin | Directory | Description |
|---|---|---|
| MountPlugin | mounts/ | Mounts and riding |
| MantlingPlugin | mantling/ | Ledge climbing |
| SprintForcePlugin | sprintforce/ | Sprint mechanics |
| CrouchSlidePlugin | crouchslide/ | Crouch sliding |
| SafetyRollPlugin | safetyroll/ | Fall damage reduction |
| ParkourPlugin | parkour/ | Parkour mechanics |
| DeployablesPlugin | deployables/ | Deployable items |
World Systems
Section titled “World Systems”| Plugin | Directory | Description |
|---|---|---|
| FluidPlugin | fluid/ | Fluid simulation |
| BlockPhysicsPlugin | blockphysics/ | Block physics |
| BlockTickPlugin | blocktick/ | Block updates/growth |
| WorldGenPlugin | worldgen/ | World generation hooks |
| HytaleGeneratorPlugin | hytalegenerator/ | Default world generator |
| BlockSpawnerPlugin | blockspawner/ | Block-based spawners |
| AmbiencePlugin | ambience/ | Ambient sounds/effects |
| LanDiscoveryPlugin | landiscovery/ | LAN game discovery |
Adventure Mode
Section titled “Adventure Mode”| Plugin | Directory | Description |
|---|---|---|
| AdventurePlugin | adventure/ | Adventure mode (shops, reputation, objectives, memories, farming) |
Tools & Editors
Section titled “Tools & Editors”| Plugin | Directory | Description |
|---|---|---|
| NPCEditorPlugin | npceditor/ | NPC editing commands |
| BuilderToolsPlugin | buildertools/ | World building tools |
| AssetEditorPlugin | asseteditor/ | Asset editing utilities |
| CommandMacroPlugin | commandmacro/ | Command macros |
| CreativeHubPlugin | creativehub/ | Creative mode hub |
AI & NPCs
Section titled “AI & NPCs”| Plugin | Directory | Description |
|---|---|---|
| NPCCombatActionEvaluatorPlugin | npccombatactionevaluator/ | NPC combat AI |
| PathPlugin | path/ | Pathfinding utilities |
| Plugin | Directory | Description |
|---|---|---|
| ModelPlugin | model/ | Model utilities |
| TagSetPlugin | tagset/ | Tag set management |
WeatherPlugin
Section titled “WeatherPlugin”Location: builtin/weather/
Manages dynamic weather systems per world.
Components
Section titled “Components”| Component | Store | Description |
|---|---|---|
WeatherTracker | EntityStore | Tracks weather per player |
WeatherResource | EntityStore | World weather state |
Systems
Section titled “Systems”WeatherSystem.WorldAddedSystem // Initialize weather for new worldsWeatherSystem.PlayerAddedSystem // Send weather to joining playersWeatherSystem.TickingSystem // Update weather over timeWeatherSystem.InvalidateWeatherAfterTeleport // Sync after teleportCommands
Section titled “Commands”/weather <type>- Change weather
Key Patterns
Section titled “Key Patterns”// Register resourceweatherResourceType = EntityStore.REGISTRY.registerResource( WeatherResource.class, WeatherResource::new);
// Register componentweatherTrackerComponentType = EntityStore.REGISTRY.registerComponent( WeatherTracker.class, WeatherTracker::new);
// Register systemsentityStoreRegistry.registerSystem(new WeatherSystem.TickingSystem());CraftingPlugin
Section titled “CraftingPlugin”Location: builtin/crafting/
Complete crafting system with benches, recipes, and UI.
Components
Section titled “Components”| Component | Store | Description |
|---|---|---|
CraftingManager | EntityStore | Player crafting state |
BenchState | BlockState | Crafting bench state |
ProcessingBenchState | BlockState | Processing bench state |
Block States
Section titled “Block States”// Register block state for crafting benchesblockStateRegistry.registerBlockState( BenchState.class, "crafting", BenchState.CODEC);Interactions
Section titled “Interactions”OpenBenchPageInteraction // Open crafting UIOpenProcessingBenchInteraction // Open processing UILearnRecipeInteraction // Learn new recipeRecipe System
Section titled “Recipe System”// Get recipes for a benchList<CraftingRecipe> recipes = CraftingPlugin.getBenchRecipes(bench);
// Learn a recipeCraftingPlugin.learnRecipe(ref, recipeId, componentAccessor);
// Check if item is valid materialCraftingPlugin.isValidCraftingMaterialForBench(benchState, itemStack);Commands
Section titled “Commands”/recipe learn <id>- Learn recipe/recipe forget <id>- Forget recipe
TeleportPlugin
Section titled “TeleportPlugin”Location: builtin/teleport/
Teleportation commands and warp points.
Components
Section titled “Components”| Component | Store | Description |
|---|---|---|
TeleportHistory | EntityStore | Player teleport history |
WarpComponent | EntityStore | Warp point marker |
// Get all warpsMap<String, Warp> warps = TeleportPlugin.get().getWarps();
// Warps persist in warps.json in universe folderMap Markers
Section titled “Map Markers”// Warps show on world mapWarpMarkerProvider.INSTANCE // Provides warp markersCommands
Section titled “Commands”/tp <player>- Teleport to player/tp <x> <y> <z>- Teleport to coordinates/warp <name>- Go to warp/warp set <name>- Create warp/spawn- Go to spawn
PortalsPlugin
Section titled “PortalsPlugin”Location: builtin/portals/
Inter-world portal system with void events.
Components
Section titled “Components”| Component | Store | Description |
|---|---|---|
PortalWorld | EntityStore (Resource) | Portal world data |
PortalDevice | ChunkStore | Portal device block |
VoidEvent | EntityStore | Void event state |
VoidSpawner | EntityStore | Void portal spawner |
Interactions
Section titled “Interactions”EnterPortalInteraction // Enter a portalReturnPortalInteraction // Return from portalGameplay Config
Section titled “Gameplay Config”// Register plugin configgetCodecRegistry(GameplayConfig.PLUGIN_CODEC) .register(PortalGameplayConfig.class, "Portal", PortalGameplayConfig.CODEC);Systems
Section titled “Systems”PortalTrackerSystems.TrackerSystemPortalInvalidDestinationSystemCloseWorldWhenBreakingDeviceSystemsVoidEventStagesSystemMountPlugin
Section titled “MountPlugin”Location: builtin/mounts/
Mounting and riding entities.
Key Features
Section titled “Key Features”- Mount/dismount mechanics
- Riding controls
- Mount AI integration
Components
Section titled “Components”| Component | Store | Description |
|---|---|---|
MountComponent | EntityStore | Mount state |
RiderComponent | EntityStore | Rider state |
FluidPlugin
Section titled “FluidPlugin”Location: builtin/fluid/
Fluid simulation and water physics.
Key Features
Section titled “Key Features”- Water flow simulation
- Fluid level tracking
- Swimming mechanics
Components
Section titled “Components”| Component | Store | Description |
|---|---|---|
FluidState | ChunkStore | Fluid block state |
BlockTickPlugin
Section titled “BlockTickPlugin”Location: builtin/blocktick/
Block update and tick system.
Systems
Section titled “Systems”ChunkBlockTickSystem // Process block ticksMergeWaitingBlocksSystem // Merge pending updatesTick Procedures
Section titled “Tick Procedures”BasicChanceBlockGrowthProcedure // Simple growthSplitChanceBlockGrowthProcedure // Variable growth ratesBedsPlugin
Section titled “BedsPlugin”Location: builtin/beds/
Bed interactions and spawn points.
Key Features
Section titled “Key Features”- Sleep mechanics
- Individual spawn points
- Respawn handling
Adventure Mode Plugins
Section titled “Adventure Mode Plugins”ShopPlugin
Section titled “ShopPlugin”Location: builtin/adventure/shop/
NPC shop system with items and currencies.
ReputationPlugin
Section titled “ReputationPlugin”Location: builtin/adventure/reputation/
Faction/NPC reputation tracking.
ObjectivePlugin
Section titled “ObjectivePlugin”Location: builtin/adventure/objectives/
Quest and objective tracking.
MemoriesPlugin
Section titled “MemoriesPlugin”Location: builtin/adventure/memories/
NPC memory of player interactions.
Common Patterns
Section titled “Common Patterns”Plugin Singleton Pattern
Section titled “Plugin Singleton Pattern”public class MyPlugin extends JavaPlugin { private static MyPlugin instance;
public static MyPlugin get() { return instance; }
public MyPlugin(JavaPluginInit init) { super(init); instance = this; }}Component Registration Pattern
Section titled “Component Registration Pattern”@Overrideprotected void setup() { // Register component myComponentType = EntityStore.REGISTRY.registerComponent( MyComponent.class, MyComponent::new);
// Register system getEntityStoreRegistry().registerSystem(new MySystem());}Event Registration Pattern
Section titled “Event Registration Pattern”@Overrideprotected void setup() { // Register event listener getEventRegistry().register(LoadedAssetsEvent.class, Item.class, this::onItemLoad);
// Register global listener getEventRegistry().registerGlobal(AddWorldEvent.class, event -> initializeWorld(event.getWorld()));}Command Registration Pattern
Section titled “Command Registration Pattern”@Overrideprotected void setup() { // Via CommandRegistry getCommandRegistry().registerCommand(new MyCommand());
// Via CommandManager (system commands) CommandManager.get().registerSystemCommand(new MySystemCommand());}Codec Registration Pattern
Section titled “Codec Registration Pattern”@Overrideprotected void setup() { // Register interaction type getCodecRegistry(Interaction.CODEC) .register("MyInteraction", MyInteraction.class, MyInteraction.CODEC);
// Register block state getBlockStateRegistry().registerBlockState( MyBlockState.class, "myBlockState", MyBlockState.CODEC);}World Event Pattern
Section titled “World Event Pattern”@Overrideprotected void setup() { getEventRegistry().registerGlobal(AddWorldEvent.class, event -> { World world = event.getWorld(); // Initialize per-world state world.getWorldMapManager().addMarkerProvider("markers", myProvider); });}Learning From Built-in Plugins
Section titled “Learning From Built-in Plugins”- Study structure: Each plugin demonstrates proper organization
- Examine codecs: See how serialization is handled
- Follow ECS patterns: Learn component/system design
- Understand lifecycle: See how setup/start/shutdown work
- Review commands: Study command implementation
- Analyze interactions: Learn block/entity interaction patterns
Related
Section titled “Related”- Plugin Lifecycle - Plugin basics
- Event System - Events
- Commands - Command system
- ECS Overview - Components and systems