Skip to content

Built-in Plugins Reference

Hytale ships with 32 built-in plugin packages that demonstrate modding patterns and provide core gameplay features. Some packages (notably adventure/) contain multiple independent plugin classes — the actual plugin count is over 45. This reference documents each plugin, its components, and how to learn from them.

com.hypixel.hytale.builtin

All 32 built-in plugin packages organized by category:

PluginDirectoryDescription
WeatherPluginweather/Dynamic weather systems
CraftingPlugincrafting/Crafting benches and recipes
TeleportPluginteleport/Teleportation and warps
PortalsPluginportals/Inter-world portals
BedsPluginbeds/Spawn points and sleeping
InstancesPlugininstances/Instanced dungeons/areas
PluginDirectoryDescription
MountPluginmounts/Mounts and riding
MantlingPluginmantling/Ledge climbing
SprintForcePluginsprintforce/Sprint mechanics
CrouchSlidePlugincrouchslide/Crouch sliding
SafetyRollPluginsafetyroll/Fall damage reduction
ParkourPluginparkour/Parkour mechanics
DeployablesPlugindeployables/Deployable items
PluginDirectoryDescription
FluidPluginfluid/Fluid simulation
BlockPhysicsPluginblockphysics/Block physics
BlockTickPluginblocktick/Block updates/growth
WorldGenPluginworldgen/World generation hooks
HytaleGeneratorhytalegenerator/Default world generator
BlockSpawnerPluginblockspawner/Block-based spawners
AmbiencePluginambience/Ambient sounds/effects
LANDiscoveryPluginlandiscovery/LAN game discovery
PluginDirectoryDescription
NPCEditorPluginnpceditor/NPC editing commands
BuilderToolsPluginbuildertools/World building tools
AssetEditorPluginasseteditor/Asset editing utilities
MacroCommandPlugincommandmacro/Command macros
CreativeHubPlugincreativehub/Creative mode hub
PluginDirectoryDescription
NPCCombatActionEvaluatorPluginnpccombatactionevaluator/NPC combat AI
PathPluginpath/Pathfinding utilities
PluginDirectoryDescription
ModelPluginmodel/Model utilities
TagSetPlugintagset/Tag set management
RandomTickPluginrandomtick/Random block ticking (grass spread, block changes)

Location: builtin/weather/

Manages dynamic weather systems per world.

ComponentStoreDescription
WeatherTrackerEntityStoreTracks weather per player
WeatherResourceEntityStoreWorld weather state
WeatherSystem.WorldAddedSystem // Initialize weather for new worlds
WeatherSystem.PlayerAddedSystem // Send weather to joining players
WeatherSystem.TickingSystem // Update weather over time
WeatherSystem.InvalidateWeatherAfterTeleport // Sync after teleport
  • /weather <type> - Change weather
// Register resource
weatherResourceType = EntityStore.REGISTRY.registerResource(
WeatherResource.class, WeatherResource::new);
// Register component
weatherTrackerComponentType = EntityStore.REGISTRY.registerComponent(
WeatherTracker.class, WeatherTracker::new);
// Register systems
entityStoreRegistry.registerSystem(new WeatherSystem.TickingSystem());

Location: builtin/crafting/

Complete crafting system with benches, recipes, and UI.

ComponentStoreDescription
CraftingManagerEntityStorePlayer crafting state
BenchStateBlockStateCrafting bench state
ProcessingBenchStateBlockStateProcessing bench state
// Register block state for crafting benches
blockStateRegistry.registerBlockState(
BenchState.class, "crafting", BenchState.CODEC);
OpenBenchPageInteraction // Open crafting UI
OpenProcessingBenchInteraction // Open processing UI
LearnRecipeInteraction // Learn new recipe
// Get recipes for a bench
List<CraftingRecipe> recipes = CraftingPlugin.getBenchRecipes(bench);
// Learn a recipe
CraftingPlugin.learnRecipe(ref, recipeId, componentAccessor);
// Check if item is valid material
CraftingPlugin.isValidCraftingMaterialForBench(benchState, itemStack);
  • /recipe learn <id> - Learn recipe
  • /recipe forget <id> - Forget recipe

Location: builtin/teleport/

Teleportation commands and warp points.

ComponentStoreDescription
TeleportHistoryEntityStorePlayer teleport history
WarpComponentEntityStoreWarp point marker
// Get all warps
Map<String, Warp> warps = TeleportPlugin.get().getWarps();
// Warps persist in warps.json in universe folder
// Warps show on world map
WarpMarkerProvider.INSTANCE // Provides warp markers
  • /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

Location: builtin/portals/

Inter-world portal system with void events.

ComponentStoreDescription
PortalWorldEntityStore (Resource)Portal world data
PortalDeviceChunkStorePortal device block
VoidEventEntityStoreVoid event state
VoidSpawnerEntityStoreVoid portal spawner
EnterPortalInteraction // Enter a portal
ReturnPortalInteraction // Return from portal
// Register plugin config
getCodecRegistry(GameplayConfig.PLUGIN_CODEC)
.register(PortalGameplayConfig.class, "Portal", PortalGameplayConfig.CODEC);
PortalTrackerSystems.TrackerSystem
PortalInvalidDestinationSystem
CloseWorldWhenBreakingDeviceSystems
VoidEventStagesSystem

Location: builtin/mounts/

Mounting and riding entities.

  • Mount/dismount mechanics
  • Riding controls
  • Mount AI integration
ComponentStoreDescription
NPCMountComponentEntityStoreNPC mount state and configuration
MountedComponentEntityStoreEntity currently being mounted
MountedByComponentEntityStoreEntity being ridden
BlockMountComponentChunkStoreBlock-based seating
MinecartComponentEntityStoreMinecart mount behavior

Location: builtin/fluid/

Fluid simulation and water physics.

  • Water flow simulation
  • Fluid level tracking
  • Swimming mechanics

FluidPlugin registers three FluidTicker codecs and six FluidSystems that operate on core chunk components (FluidSection, ChunkSection, BlockChunk, ChunkColumn, WorldChunk).

FluidTicker CodecClassDescription
DefaultDefaultFluidTickerStandard fluid spreading
FireFireFluidTickerFire fluid behavior
FiniteFiniteFluidTickerFinite fluid volumes

Location: builtin/blocktick/

Deterministic block update and tick system.

ChunkBlockTickSystem // Process block ticks
MergeWaitingBlocksSystem // Merge pending updates
BasicChanceBlockGrowthProcedure // Simple growth
SplitChanceBlockGrowthProcedure // Variable growth rates

Location: builtin/beds/

Bed interactions and spawn points.

  • Sleep mechanics
  • Individual spawn points
  • Respawn handling
  • Multiplayer sleep notifications

The adventure/ package contains 15 independent plugins that together form Hytale’s adventure mode. Each is its own JavaPlugin.

PluginDirectoryDescription
CameraPluginadventure/camera/Camera control and cinematic systems
FarmingPluginadventure/farming/Crop farming mechanics
MemoriesPluginadventure/memories/NPC memory of player interactions
NPCObjectivesPluginadventure/npcobjectives/NPC-driven objective assignments
NPCReputationPluginadventure/npcreputation/NPC-specific reputation effects
NPCShopPluginadventure/npcshop/NPC-specific shop bindings
ObjectivePluginadventure/objectives/Quest and objective tracking
ObjectiveReputationPluginadventure/objectivereputation/Reputation rewards from objectives
ObjectiveShopPluginadventure/objectiveshop/Shop unlocks tied to objectives
ReputationPluginadventure/reputation/Faction/NPC reputation tracking
ShopPluginadventure/shop/Shop system with items and currencies
ShopReputationPluginadventure/shopreputation/Shop pricing based on reputation
StashPluginadventure/stash/Player stash/storage system
TeleporterPluginadventure/teleporter/In-world teleporter devices (with clear-out and portal state systems)
WorldLocationConditionPluginadventure/worldlocationcondition/Location-based conditions

public class MyPlugin extends JavaPlugin {
private static MyPlugin instance;
public static MyPlugin get() {
return instance;
}
public MyPlugin(JavaPluginInit init) {
super(init);
instance = this;
}
}
@Override
protected void setup() {
// Register component
myComponentType = EntityStore.REGISTRY.registerComponent(
MyComponent.class, MyComponent::new);
// Register system
getEntityStoreRegistry().registerSystem(new MySystem());
}
@Override
protected void setup() {
// Register event listener
getEventRegistry().register(LoadedAssetsEvent.class, Item.class,
this::onItemLoad);
// Register global listener
getEventRegistry().registerGlobal(AddWorldEvent.class,
event -> initializeWorld(event.getWorld()));
}
@Override
protected void setup() {
// Via CommandRegistry
getCommandRegistry().registerCommand(new MyCommand());
// Via CommandManager (system commands)
CommandManager.get().registerSystemCommand(new MySystemCommand());
}
@Override
protected void setup() {
// Register interaction type
getCodecRegistry(Interaction.CODEC)
.register("MyInteraction", MyInteraction.class, MyInteraction.CODEC);
// Register block state
getBlockStateRegistry().registerBlockState(
MyBlockState.class, "myBlockState", MyBlockState.CODEC);
}
@Override
protected void setup() {
getEventRegistry().registerGlobal(AddWorldEvent.class, event -> {
World world = event.getWorld();
// Initialize per-world state
world.getWorldMapManager().addMarkerProvider("markers", myProvider);
});
}

  1. Study structure: Each plugin demonstrates proper organization
  2. Examine codecs: See how serialization is handled
  3. Follow ECS patterns: Learn component/system design
  4. Understand lifecycle: See how setup/start/shutdown work
  5. Review commands: Study command implementation
  6. Analyze interactions: Learn block/entity interaction patterns