Events & Runtime Hooks
Learn where the runtime exposes sync and async hooks, and how to keep handlers small and safe.
Практическая документация по разработке плагинов/модов: жизненный цикл, события, сущности, движение, инвентарь, взаимодействие, UI, команды, конфиг, сеть и лицензирование.
Навигация Разработчика
Используйте поиск для перехода непосредственно к классам и методам из индексированной среды выполнения.
Эти документы объединяют официальные страницы политики Hytale с подписями API среды выполнения, извлеченными из текущей сборки сервера. Используйте это как практическое руководство по разработке плагинов/модов Java в Hytale Depot.
В этом разделе описывается, как примеры Dev Docs проверяются на соответствие текущему jar-файлу среды выполнения.
python3 tools/generate_hytale_api_index.py ../HytaleServer.jar apps/web/lib/hytale-api-index.json && npm testИспользуйте эти треки в качестве порядка сборки: начните с жизненного цикла/событий, затем доменов игрового процесса, а затем премиум-лицензирования.
Events & Runtime Hooks
Learn where the runtime exposes sync and async hooks, and how to keep handlers small and safe.
Universe, Entities & NPCs
Work with Universe, World, PlayerRef, entity access, and the larger NPC/spawning package families.
Inventories, Items & Interaction Flow
Understand containers, hotbar/storage flow, and how inventory state ties into actions.
UI, Localization & Commands
Create command-driven tooling and understand the current UI/localization classes exposed by the runtime.
Assets, Config & Protocol
Read the asset/config surface and understand how protocol or service layers connect to gameplay systems.
Премиум-лицензирование
Защитите плагины/моды премиум-класса с помощью проверок запуска, правил привязки и подписанных ответов.
Учебники по настройке сервера
Готовая к работе конфигурация и базовые параметры запуска для типов серверов лобби, ванили и PvP.
Жизненный цикл
Постройте детерминированные перехватчики установки/запуска/выключения.
API игрового процесса
События, сущности, движение, инвентарь, взаимодействие и системы пользовательского интерфейса.
Безопасность
Проверка лицензии + процесс привязки для премиум-модов/плагинов.
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.AbstractCommand;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.plugin.JavaPlugin;
import com.hypixel.hytale.server.core.plugin.JavaPluginInit;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public final class StarterPlugin extends JavaPlugin {
private final ScheduledExecutorService scheduler =
Executors.newSingleThreadScheduledExecutor(r -> new Thread(r, "starter-heartbeat"));
public StarterPlugin(JavaPluginInit init) { super(init); }
@Override
public CompletableFuture<Void> preLoad() {
getLogger().atInfo().log("preLoad -> %s", getIdentifier());
return CompletableFuture.completedFuture(null);
}
@Override
protected void setup() {
getCommandRegistry().registerCommand(new StarterStatusCommand());
}
@Override
protected void start() {
scheduler.scheduleAtFixedRate(
() -> getLogger().atInfo().log("starter heartbeat"),
0,
1,
TimeUnit.SECONDS);
getTaskRegistry().registerTask(CompletableFuture.completedFuture(null));
}
@Override
protected void shutdown() {
scheduler.shutdownNow();
}
private final class StarterStatusCommand extends AbstractCommand {
private StarterStatusCommand() { super("hdstarter", "Starter plugin status command"); }
@Override
protected CompletableFuture<Void> execute(CommandContext ctx) {
ctx.sendMessage(Message.raw("[Starter] plugin is active."));
return CompletableFuture.completedFuture(null);
}
}
}getEventRegistry().registerGlobal(PluginSetupEvent.class, event -> {
// Register runtime handlers after plugin startup to avoid lifecycle issues.
getLogger().atInfo().log("Plugin setup event: %s", event.getPlugin().getName());
// Keep handler work small and move slow tasks to an async executor.
});Practical dedicated-server operations validated against the current jar manifest, option strings, config classes, and shipped runtime artifacts in this workspace.
| Use case | Command | Why |
|---|---|---|
| Standard startup | java -XX:AOTCache=HytaleServer.aot.config -jar HytaleServer.jar | Current baseline for the shipped jar and AOT cache artifact in this workspace. |
| Bootstrap payload mode | java -jar HytaleServer.jar --bootstrap | Starts the minimal authenticated bootstrap path used to pull the full runtime payload layout. |
| Validate asset data | java -jar HytaleServer.jar --validate-assets | Runs asset validation and exits with an error code when the immutable asset payload is invalid. |
| Generate config schemas | java -jar HytaleServer.jar --generate-config-schema ./schemas | Exports JSON schemas for the current config model so your tooling matches the running jar. |
| Bind custom UDP port | java -jar HytaleServer.jar --bind 3500 | Overrides the listener port using the current runtime's bind option text. |
| Switch transport backend | java -jar HytaleServer.jar --transport QUICHE | Lets you validate the alternate QUICHE transport backend when comparing networking behavior. |
| Development mode (disable Sentry) | java -jar HytaleServer.jar --disable-sentry | Avoids sending dev crashes during local plugin/mod iteration. |
| List server arguments | java -jar HytaleServer.jar --help | Shows current runtime flags for your exact server build. |
Device auth flow
/auth login device
Visit https://accounts.hytale.com/device
Enter the shown code and wait for "Authentication successful".Firewall examples (UDP)
Windows: New-NetFirewallRule -DisplayName "Hytale Server" -Direction Inbound -Protocol UDP -LocalPort <server-port> -Action Allow
Linux ufw: sudo ufw allow <server-port>/udp
Linux iptables: sudo iptables -A INPUT -p udp --dport <server-port> -j ACCEPTObserved from the current runtime artifacts plus the update/bootstrap expectations exposed by the jar. Use this as the baseline structure to keep updates, backups, and saves stable.
| Path | Цель |
|---|---|
HytaleServer.jar | Current dedicated server runtime jar. Keep it aligned with the matching AOT cache and wrapper layout. |
HytaleServer.aot.config | Shipped binary AOT cache artifact for the current JVM/server build. Use it as input to -XX:AOTCache; do not treat it like an editable text config. |
../HytaleAssets/ | Current default immutable assets path exposed by the runtime option strings for --assets. |
config.json | Core server configuration: identity, host/port, defaults, modules, plugin/mod loading, update, backup, and storage settings. |
permissions.json | Permission groups, migrated legacy group data, and per-user permission assignments. |
whitelist.json | Whitelist toggle and allowed players list. |
bans.json | Ban entries enforced by server access control. |
auth.enc | Encrypted authentication credential store used by AuthCredentialStore. |
mods/ | Loaded plugin/mod packages and per-mod data folders referenced by Mods and ModLoadOrder config. |
logs/ | Server runtime logs used for diagnostics and auditing. |
universe/players/ | Per-player persistent data snapshots. |
universe/worlds/<world>/config.json | World-level simulation, spawning, world map, save, and gameplay toggles. |
universe/worlds/<world>/config.bson | Binary world-config storage path still referenced by the current world config provider. |
universe/worlds/<world>/chunks/ | Region/chunk storage files for world terrain state. |
universe/worlds/<world>/resources/ | World resource stores (markers, time, chunk metadata, etc.). |
updater/staging/ | Downloaded update staging area consumed by wrapper scripts. |
start.sh / start.bat | Wrapper scripts mentioned by bootstrap/update flows when staging the full runtime payload. |
backups/ | Backup output (if --backup and backup path are enabled). |
permissions.json stores groups + per-user assignments. Keep OP wildcard assignments tightly controlled.
whitelist.json controls global whitelist mode and allowed user list.
bans.json stores ban entries used at authentication/connection time.
The current world config provider references both config.json and config.bson. Pick one storage flow and keep it consistent in your tooling and backups.
universe/players contains per-player saved state, while world chunk/resource state is in universe/worlds/<world>.
Edit config/permissions/whitelist/bans with the server offline when possible to avoid runtime overwrite.
Field-level behavior reference mapped to the generated config structure used by current server builds.
| Field | Supported values | What it controls |
|---|---|---|
Version | integer | Schema version for server config compatibility. |
ServerName | string | Public server name shown to players/in listings. |
MOTD | string | Message of the day displayed on connect/status views. |
Password | string (empty or secret) | Optional server password gate. |
Host | host/ip string | Configured listener host stored alongside Port in the current server config model. |
Port | integer / short | Configured listener port for the dedicated server transport. |
MaxPlayers | integer >= 1 | Maximum concurrent players allowed. |
MaxViewRadius | integer | Upper render/simulation radius cap; major RAM driver. |
Defaults.World | world id/name | Default world used for player joins/spawns. |
Defaults.GameMode | Adventure | other runtime modes | Default game mode on entry. |
ConnectionTimeouts | object | Handshake/session timeout profile. Current nested fields include InitialTimeout, AuthTimeout, AuthGrantTimeout, AuthTokenTimeout, PasswordTimeout, PlayTimeout, and setup-stage timers. |
RateLimit | object | Packet rate-limiting domain. Current fields include Enabled, PacketsPerSecond, and BurstCapacity. |
Modules | object | Named server module toggles plus nested per-module settings. Current module objects expose at least an Enabled field. |
LogLevels | object | Per-domain logging level overrides. |
Plugins | object | Plugin-scoped configuration buckets surfaced by the current server config model. |
Mods | object | Per-mod configuration overrides/enablement. |
ModLoadOrder | array of plugin identifiers | Explicit load-order override for plugin/mod packages when deterministic ordering matters. |
DefaultModsEnabled | true | false | Whether newly detected plugin/mod packages should be enabled by default. |
DisplayTmpTagsInStrings | true | false | Debug formatting behavior for TMP tags in text. |
PlayerStorage.Type | Hytale | Disk | Player data storage backend. |
AuthCredentialStore.Type | Encrypted | Credential store implementation. |
AuthCredentialStore.Path | relative path (example: auth.enc) | Credential file location. |
Update | object | Auto-update/check/apply behavior configuration. |
Backup | object | Backup scheduling and retention options. |
WorldMap | object | Server-wide world map/view-radius domain used by the current config model. |
FallbackServer | string / host descriptor | Fallback server target surfaced by the current server config model for redirect/failover scenarios. |
{
"Version": 4,
"ServerName": "My Hytale Server",
"MOTD": "Private test shard",
"Password": "",
"Host": "0.0.0.0",
"Port": 5520,
"MaxPlayers": 128,
"MaxViewRadius": 8,
"Defaults": { "World": "default", "GameMode": "Adventure" },
"ConnectionTimeouts": {},
"RateLimit": {},
"Modules": {},
"LogLevels": {},
"Plugins": {},
"Mods": {},
"ModLoadOrder": [],
"DefaultModsEnabled": true,
"DisplayTmpTagsInStrings": false,
"PlayerStorage": { "Type": "Hytale" },
"AuthCredentialStore": { "Type": "Encrypted", "Path": "auth.enc" },
"Update": {},
"Backup": {},
"WorldMap": {}
}World-level toggles directly control simulation, persistence, PvP behavior, and client-facing environment effects.
| Field | Supported values | What it controls |
|---|---|---|
Version | integer | Schema version for world config. |
UUID | binary UUID | Persistent world identity. |
DisplayName | string | Human-facing world name shown in world selection or admin tooling. |
Seed | integer | World generation seed. |
SpawnPoint | vector/object | Explicit spawn location used when the world defines a fixed player entry point. |
SpawnProvider | provider id/object | Spawn-resolution strategy when the world relies on a provider rather than a fixed point. |
WorldGen.Type | Hytale | custom generator id | Generator backend selection. |
WorldGen.Name | string | Generator preset/profile name. |
WorldMap.Type | WorldGen | custom | Map provider binding for this world. |
ChunkStorage.Type | Hytale | custom | Chunk storage backend selection. |
ChunkConfig | object | Chunk behavior tuning domain. |
IsTicking | true | false | Master simulation tick toggle for world. |
IsBlockTicking | true | false | Block update/tick simulation toggle. |
IsPvpEnabled | true | false | World-scoped PvP enablement. |
IsFallDamageEnabled | true | false | Fall damage rules for this world. |
IsGameTimePaused | true | false | Freezes or advances in-world time. |
GameTime | ISO datetime | Current or fixed world clock value. |
ForcedWeather | weather enum/object | Forces a specific weather state when you do not want the world weather system to decide dynamically. |
ClientEffects.* | numbers | Visual/environment values for connected clients. |
PregenerateRegion | box/object | Optional pregeneration region for worlds that should prebuild terrain before players join. |
RequiredPlugins | map | Plugins required before world is considered valid. |
GameMode | runtime game mode enum | World-level game mode override. |
DefaultPermissionGroup | string | Default permission group assigned to players entering this world. |
IsSpawningNPC | true | false | Enables/disables NPC spawn logic. |
IsSpawnMarkersEnabled | true | false | Spawn marker visibility/usage. |
IsAllNPCFrozen | true | false | Freezes NPC behavior for controlled worlds/lobbies. |
GameplayConfig | preset name | Gameplay ruleset preset for world behavior. |
Death | object | World-level death handling domain used by the current runtime config model. |
DaytimeDurationSeconds | integer | Length of the daytime portion of the world clock. |
NighttimeDurationSeconds | integer | Length of the nighttime portion of the world clock. |
IsCompassUpdating | true | false | Compass update behavior for clients. |
IsSavingPlayers | true | false | Persist player state changes to disk. |
IsSavingChunks | true | false | Persist world chunk updates to disk. |
SaveNewChunks | true | false | Persist newly generated chunks. |
IsUnloadingChunks | true | false | Allow chunk unload lifecycle for memory control. |
IsObjectiveMarkersEnabled | true | false | Objective marker system visibility/updates. |
DeleteOnUniverseStart | true | false | Deletes world on universe startup when enabled. |
DeleteOnRemove | true | false | Deletes world files when removed from universe. |
DisabledFluidTickers | array | List of fluid ticker ids disabled for this world. |
ResourceStorage.Type | Hytale | custom | World resource storage backend. |
Plugin | object | Plugin-scoped world metadata/config bucket. |
| Option | Default | Behavior |
|---|---|---|
Update.Enabled | true | Enable periodic update checks. |
Update.CheckIntervalSeconds | 3600 | Seconds between update checks. |
Update.NotifyPlayersOnAvailable | true | Notify eligible players when an update is available. |
Update.Patchline | null | Patchline override (release/pre-release). |
Update.RunBackupBeforeUpdate | true | Run backup before update apply. |
Update.BackupConfigBeforeUpdate | true | Backup config files before update apply. |
Update.AutoApplyMode | Disabled | Disabled | WhenEmpty | Scheduled. |
Update.AutoApplyDelayMinutes | 30 | Delay for Scheduled auto-apply mode. |
{
"Version": 4,
"DisplayName": "default",
"Seed": 1768426248534,
"WorldGen": { "Type": "Hytale", "Name": "Default", "Version": "0.0.0" },
"WorldMap": {},
"IsTicking": true,
"IsBlockTicking": false,
"IsPvpEnabled": false,
"IsFallDamageEnabled": false,
"IsGameTimePaused": true,
"GameMode": "Adventure",
"ClientEffects": {
"SunHeightPercent": 100.0,
"BloomIntensity": 0.30000001192092896
},
"IsSpawningNPC": false,
"IsAllNPCFrozen": true,
"IsSavingPlayers": true,
"IsSavingChunks": true,
"SaveNewChunks": false,
"IsUnloadingChunks": false
}Ориентированные на производство базовые версии для распространенных стилей серверов. Используйте их в качестве отправной точки и профилируйте свою собственную рабочую нагрузку.
Основные цели
Контрольный список
Основные цели
Контрольный список
Основные цели
Контрольный список
This table maps high-value configuration domains from the current HytaleServer.jar runtime packages to practical option-level guidance.
interaction/configRuntime sources: InteractionConfiguration, InteractionRules, InteractionCameraSettings
| Option | Supported values | Behavior |
|---|---|---|
priority | LOW | NORMAL | HIGH (enum) | Controls interaction ordering when multiple interactions can run from a single trigger. |
selector | raycast | aoe_circle | aoe_cylinder | stab | horizontal | Defines target selection strategy for interaction chains and combat interactions. |
conditions | array of condition blocks | Validation pipeline before execution, such as movement, cooldown, stat, or effect checks. |
effects | array of effect blocks | Execution pipeline that mutates world/player state after all conditions pass. |
projectile/configRuntime sources: ProjectileConfig, StandardPhysicsConfig, PhysicsConfig
| Option | Supported values | Behavior |
|---|---|---|
speed | number > 0 | Initial projectile velocity scalar; tune with spread and tick rate. |
gravityScale | number >= 0 | Gravity multiplier applied each update tick for arc behavior. |
drag | number between 0 and 1 | Per-tick velocity damping factor for smoother projectile deceleration. |
maxLifetimeTicks | integer > 0 | Upper lifetime cap before automatic despawn to prevent stale entities. |
asset/type/item/configRuntime sources: Item, ItemToolSpec, ItemStackContainerConfig, ItemReticleConfig
| Option | Supported values | Behavior |
|---|---|---|
category | enum category id | Controls grouping, filtering, and UI placement for item collections. |
durability | integer >= 0 | Base item durability and wear behavior when interacting with world/entities. |
dropTable | single | choice | multiple | droplist container | Specifies drop logic shape and weighted output behavior. |
reticle | reticle configuration object | Defines UI reticle overlays, durations, and conditional display logic. |
asset/type/blocktype/configRuntime sources: BlockPlacementSettings, BlockMovementSettings, BlockGathering
| Option | Supported values | Behavior |
|---|---|---|
rotationMode | NONE | HORIZONTAL | FULL (enum) | Controls permitted placement orientation variants. |
previewVisibility | VISIBLE | HIDDEN | CONDITIONAL (enum) | Defines placement preview behavior in client interaction flow. |
supportRules | support rule object/array | Specifies required block-face support and fallback drop behavior. |
movementSettings | friction, acceleration, collision properties | Adjusts physical traversal behavior for movement-sensitive blocks. |
Рекомендуемые профили запуска Java для операторов серверов Hytale. Выберите один профиль и проверьте его под реальную нагрузку игроков.
-Xms4G -Xmx4G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=80 -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:+PerfDisableSharedMemStable baseline for the current Java 25 dedicated server runtime. Pair it with the shipped AOT cache from the same server build.
-Xms6G -Xmx6G -XX:+UseZGC -XX:+ZGenerational -XX:+AlwaysPreTouch -XX:+DisableExplicitGCLower tail-latency profile for bursty combat and high player concurrency. Benchmark it against G1 on your own hardware before standardizing on it.
-Xms2G -Xmx2G -XX:+UseG1GC -XX:MaxGCPauseMillis=120 -XX:+HeapDumpOnOutOfMemoryErrorSafer local testing profile when you want fast iteration and heap dumps instead of production-like throughput.
| Flag | Supported values | Usage note |
|---|---|---|
-XX:+UseG1GC | enabled/disabled | Balanced collector profile for mixed gameplay and plugin workloads. |
-XX:MaxGCPauseMillis=80 | integer milliseconds | Controls pause-time target for G1; lower values reduce spikes but may lower throughput. |
-XX:+ParallelRefProcEnabled | enabled/disabled | Processes reference queues in parallel to reduce stop-the-world pauses. |
-XX:+AlwaysPreTouch | enabled/disabled | Pre-commits heap pages at boot to avoid first-load page faults. |
-XX:+UseZGC -XX:+ZGenerational | enabled/disabled | Low-latency GC profile for high concurrency and high player bursts. |
-XX:+DisableExplicitGC | enabled/disabled | Prevents plugin code from forcing full GC pauses through explicit GC calls. |
-XX:+HeapDumpOnOutOfMemoryError | enabled/disabled | Generates heap dumps for diagnostics when OOM occurs. |
-XX:+PerfDisableSharedMem | enabled/disabled | Reduces JVM perf counter shared memory overhead on containerized hosts. |
-XX:AOTCache=HytaleServer.aot.config | path to shipped AOT cache artifact | Uses the shipped binary AOT cache for the current JVM/server build. Replace it together with the jar instead of hand-editing it. |
The current runtime treats assets as an immutable payload/cache input. Keep custom content in mod/plugin packs and avoid patching the shipped base assets directly.
| Area | Цель |
|---|---|
manifest.json | Asset package manifest and metadata root. |
Common/ | Shared client/server assets (UI, icons, sounds, particles, language bundles). |
Server/World | World-generation/runtime world data definitions. |
Server/Prefabs | Prefab definitions used by world/content pipelines. |
Server/Item | Server-side item definitions and gameplay metadata. |
Server/GameplayConfigs | Gameplay preset configurations consumed by worlds. |
Server/ProjectileConfigs | Projectile behavior definitions used by combat systems. |
Common/UI | UI assets/layouts used by menus and interfaces. |
Current option strings expose --assets as an immutable asset path, with ../HytaleAssets as the default string in this build. Do not assume the live runtime always expects a literal Assets.zip argument.
Keep your custom assets in separate mod/plugin packs; do not modify the shipped immutable asset payload directly for production.
Reference assets by stable IDs/paths from your mod/plugin manifest and runtime loaders.
Validate assets in local staging before publishing to production servers.
Track asset versioning together with plugin/mod releases to avoid mismatches after server updates.
Manifest fields used by starter resources and expected by the loader during startup.
| Field | Required | Supported values | What it controls |
|---|---|---|---|
Group | Yes | string (reverse-domain or namespace) | Publisher namespace used for plugin/mod identity grouping. |
Name | Yes | string | Resource identifier. Keep stable once released to avoid update collisions. |
Version | Yes | semantic version string | Build version visible to server loader and update pipelines. |
Description | Yes | string | Short summary shown in server logs and management UIs. |
Authors | Yes | array of author objects | Maintainer metadata; include at least one primary maintainer. |
Website | No | https URL | Repository or support URL for release notes and issue reporting. |
ServerVersion | Yes | runtime server build string | Must match target server build to avoid loader rejection. |
Dependencies | No | map<string, version constraint> | Hard dependencies that must load before this plugin/mod starts. |
OptionalDependencies | No | map<string, version constraint> | Soft dependencies that enable extra integration when present. |
Main | Yes | fully qualified class name | Entry-point class implementing the plugin/mod lifecycle. |
DisabledByDefault | No | true | false | If true, operator must explicitly enable the resource in server config. |
IncludesAssetPack | No | true | false | Marks whether the package bundles additional assetpack content. |
{
"Group": "HytaleDepot",
"Name": "UiPluginTemplate",
"Version": "1.0.0",
"Description": "Hytale Depot plugin template for ui.",
"Authors": [{ "Name": "Hytale Depot" }],
"Website": "https://github.com/VgamerV3/hytale-plugin-template-ui",
"ServerVersion": "2026.03.26-89796e57b",
"Dependencies": {},
"OptionalDependencies": {},
"DisabledByDefault": false,
"Main": "net.hytaledepot.templates.plugin.ui.UiPluginTemplate",
"IncludesAssetPack": false
}Систематизированы по практическим областям разработки, чтобы разработчики плагинов/модов могли быстро найти подходящие API-интерфейсы времени выполнения.
PluginBase, JavaPlugin, PluginManager, and the runtime hooks that actually control server-side plugin startup and shutdown.
Показаны 6 индексированные классы для этого домена (всего обнаружено: 23).
ClassTransformer
com.hypixel.hytale.plugin.early.ClassTransformer
2 извлеченные методы
priority(): int+1 больше методов, доступных в сгенерированном индексе.
EarlyPluginLoader
com.hypixel.hytale.plugin.early.EarlyPluginLoader
4 извлеченные методы
loadEarlyPlugins(String[]): void+3 больше методов, доступных в сгенерированном индексе.
TransformingClassLoader
com.hypixel.hytale.plugin.early.TransformingClassLoader
2 извлеченные методы
TransformingClassLoader(URL[], List, ClassLoader, ClassLoader)+1 больше методов, доступных в сгенерированном индексе.
PluginCommand
com.hypixel.hytale.server.core.plugin.commands.PluginCommand
1 извлеченные методы
PluginCommand()PluginEvent
com.hypixel.hytale.server.core.plugin.event.PluginEvent
3 извлеченные методы
PluginEvent(PluginBase)+2 больше методов, доступных в сгенерированном индексе.
PluginSetupEvent
com.hypixel.hytale.server.core.plugin.event.PluginSetupEvent
1 извлеченные методы
PluginSetupEvent(PluginBase)Показан быстрый предварительный просмотр крупнейших доменов, чтобы обеспечить быструю загрузку страниц. Используйте Full API JSON для полных подписей.
EventBus and EventRegistry entry points for sync and async server-side event handling.
Показаны 6 индексированные классы для этого домена (всего обнаружено: 52).
AsyncEventBusRegistry
com.hypixel.hytale.event.AsyncEventBusRegistry
8 извлеченные методы
AsyncEventBusRegistry(HytaleLogger, Class)+7 больше методов, доступных в сгенерированном индексе.
EventBus
com.hypixel.hytale.event.EventBus
18 извлеченные методы
EventBus(boolean)+17 больше методов, доступных в сгенерированном индексе.
EventBusRegistry
com.hypixel.hytale.event.EventBusRegistry
10 извлеченные методы
EventBusRegistry(HytaleLogger, Class, EventBusRegistry$EventConsumerMap, EventBusRegistry$EventConsumerMap)+9 больше методов, доступных в сгенерированном индексе.
EventPriority
com.hypixel.hytale.event.EventPriority
3 извлеченные методы
values(): EventPriority[]+2 больше методов, доступных в сгенерированном индексе.
EventRegistration
com.hypixel.hytale.event.EventRegistration
5 извлеченные методы
EventRegistration(Class, BooleanSupplier, Runnable)+4 больше методов, доступных в сгенерированном индексе.
EventRegistry
com.hypixel.hytale.event.EventRegistry
18 извлеченные методы
EventRegistry(List, BooleanSupplier, String, IEventRegistry)+17 больше методов, доступных в сгенерированном индексе.
Показан быстрый предварительный просмотр крупнейших доменов, чтобы обеспечить быструю загрузку страниц. Используйте Full API JSON для полных подписей.
World loading, PlayerRef, entity services, NPC systems, spawning, and universe-level runtime control.
Показаны 6 индексированные классы для этого домена (всего обнаружено: 1555).
AnimationUtils
com.hypixel.hytale.server.core.entity.AnimationUtils
8 извлеченные методы
AnimationUtils()+7 больше методов, доступных в сгенерированном индексе.
ChainSyncStorage
com.hypixel.hytale.server.core.entity.ChainSyncStorage
8 извлеченные методы
getClientState(): InteractionState+7 больше методов, доступных в сгенерированном индексе.
DamageDataComponent
com.hypixel.hytale.server.core.entity.damage.DamageDataComponent
11 извлеченные методы
DamageDataComponent()+10 больше методов, доступных в сгенерированном индексе.
DamageDataSetupSystem
com.hypixel.hytale.server.core.entity.damage.DamageDataSetupSystem
4 извлеченные методы
DamageDataSetupSystem(ComponentType)+3 больше методов, доступных в сгенерированном индексе.
ActiveEntityEffect
com.hypixel.hytale.server.core.entity.effect.ActiveEntityEffect
13 извлеченные методы
ActiveEntityEffect()+12 больше методов, доступных в сгенерированном индексе.
EffectControllerComponent
com.hypixel.hytale.server.core.entity.effect.EffectControllerComponent
18 извлеченные методы
getComponentType(): ComponentType+17 больше методов, доступных в сгенерированном индексе.
Показан быстрый предварительный просмотр крупнейших доменов, чтобы обеспечить быструю загрузку страниц. Используйте Full API JSON для полных подписей.
Collision, projectile, block-health, and movement-adjacent systems from the current runtime packages.
Показаны 6 индексированные классы для этого домена (всего обнаружено: 83).
BlockHealth
com.hypixel.hytale.server.core.modules.blockhealth.BlockHealth
12 извлеченные методы
BlockHealth()+11 больше методов, доступных в сгенерированном индексе.
BlockHealthChunk
com.hypixel.hytale.server.core.modules.blockhealth.BlockHealthChunk
15 извлеченные методы
BlockHealthChunk()+14 больше методов, доступных в сгенерированном индексе.
BlockHealthModule
com.hypixel.hytale.server.core.modules.blockhealth.BlockHealthModule
4 извлеченные методы
BlockHealthModule(JavaPluginInit)+3 больше методов, доступных в сгенерированном индексе.
FragileBlock
com.hypixel.hytale.server.core.modules.blockhealth.FragileBlock
8 извлеченные методы
FragileBlock(float)+7 больше методов, доступных в сгенерированном индексе.
BasicCollisionData
com.hypixel.hytale.server.core.modules.collision.BasicCollisionData
2 извлеченные методы
BasicCollisionData()+1 больше методов, доступных в сгенерированном индексе.
BlockCollisionData
com.hypixel.hytale.server.core.modules.collision.BlockCollisionData
6 извлеченные методы
BlockCollisionData()+5 больше методов, доступных в сгенерированном индексе.
Показан быстрый предварительный просмотр крупнейших доменов, чтобы обеспечить быструю загрузку страниц. Используйте Full API JSON для полных подписей.
Inventory containers, player-facing storage, active slots, and item movement utilities.
Показаны 6 индексированные классы для этого домена (всего обнаружено: 66).
ActiveSlotInventoryComponent
com.hypixel.hytale.server.core.inventory.ActiveSlotInventoryComponent
9 извлеченные методы
ActiveSlotInventoryComponent()+8 больше методов, доступных в сгенерированном индексе.
CombinedItemContainer
com.hypixel.hytale.server.core.inventory.container.CombinedItemContainer
18 извлеченные методы
CombinedItemContainer(ItemContainer[])+17 больше методов, доступных в сгенерированном индексе.
DelegateItemContainer
com.hypixel.hytale.server.core.inventory.container.DelegateItemContainer
18 извлеченные методы
DelegateItemContainer(ItemContainer)+17 больше методов, доступных в сгенерированном индексе.
EmptyItemContainer
com.hypixel.hytale.server.core.inventory.container.EmptyItemContainer
18 извлеченные методы
EmptyItemContainer()+17 больше методов, доступных в сгенерированном индексе.
FetchedItemContainer
com.hypixel.hytale.server.core.inventory.container.FetchedItemContainer
18 извлеченные методы
FetchedItemContainer(Supplier)+17 больше методов, доступных в сгенерированном индексе.
ArmorSlotAddFilter
com.hypixel.hytale.server.core.inventory.container.filter.ArmorSlotAddFilter
3 извлеченные методы
ArmorSlotAddFilter(ItemArmorSlot)+2 больше методов, доступных в сгенерированном индексе.
Показан быстрый предварительный просмотр крупнейших доменов, чтобы обеспечить быструю загрузку страниц. Используйте Full API JSON для полных подписей.
The interaction module, block actions, combat wiring, selectors, and chained interaction behavior.
Показаны 6 индексированные классы для этого домена (всего обнаружено: 132).
BlockHarvestUtils
com.hypixel.hytale.server.core.modules.interaction.BlockHarvestUtils
14 извлеченные методы
BlockHarvestUtils()+13 больше методов, доступных в сгенерированном индексе.
BlockInteractionUtils
com.hypixel.hytale.server.core.modules.interaction.BlockInteractionUtils
3 извлеченные методы
BlockInteractionUtils()+2 больше методов, доступных в сгенерированном индексе.
BlockPlaceUtils
com.hypixel.hytale.server.core.modules.interaction.BlockPlaceUtils
3 извлеченные методы
BlockPlaceUtils()+2 больше методов, доступных в сгенерированном индексе.
BlockCounter
com.hypixel.hytale.server.core.modules.interaction.blocktrack.BlockCounter
7 извлеченные методы
getResourceType(): ResourceType+6 больше методов, доступных в сгенерированном индексе.
TrackedPlacement
com.hypixel.hytale.server.core.modules.interaction.blocktrack.TrackedPlacement
4 извлеченные методы
getComponentType(): ComponentType+3 больше методов, доступных в сгенерированном индексе.
InteractionClearCommand
com.hypixel.hytale.server.core.modules.interaction.commands.InteractionClearCommand
2 извлеченные методы
InteractionClearCommand()+1 больше методов, доступных в сгенерированном индексе.
Показан быстрый предварительный просмотр крупнейших доменов, чтобы обеспечить быструю загрузку страниц. Используйте Full API JSON для полных подписей.
Custom UI pages, entity UI systems, and localization tooling that actually appear in the jar.
Показаны 6 индексированные классы для этого домена (всего обнаружено: 26).
EnableTmpTagsCommand
com.hypixel.hytale.server.core.modules.i18n.commands.EnableTmpTagsCommand
2 извлеченные методы
EnableTmpTagsCommand()+1 больше методов, доступных в сгенерированном индексе.
GenerateI18nCommand
com.hypixel.hytale.server.core.modules.i18n.commands.GenerateI18nCommand
2 извлеченные методы
GenerateI18nCommand()+1 больше методов, доступных в сгенерированном индексе.
InternationalizationCommands
com.hypixel.hytale.server.core.modules.i18n.commands.InternationalizationCommands
1 извлеченные методы
InternationalizationCommands()GenerateDefaultLanguageEvent
com.hypixel.hytale.server.core.modules.i18n.event.GenerateDefaultLanguageEvent
2 извлеченные методы
GenerateDefaultLanguageEvent(ConcurrentHashMap)+1 больше методов, доступных в сгенерированном индексе.
MessagesUpdated
com.hypixel.hytale.server.core.modules.i18n.event.MessagesUpdated
4 извлеченные методы
MessagesUpdated(Map, Map)+3 больше методов, доступных в сгенерированном индексе.
TranslationMap
com.hypixel.hytale.server.core.modules.i18n.generator.TranslationMap
10 извлеченные методы
TranslationMap()+9 больше методов, доступных в сгенерированном индексе.
Показан быстрый предварительный просмотр крупнейших доменов, чтобы обеспечить быструю загрузку страниц. Используйте Full API JSON для полных подписей.
AbstractCommand, CommandContext, permission groups, and TaskRegistry orchestration.
Показаны 6 индексированные классы для этого домена (всего обнаружено: 246).
AssetsCommand
com.hypixel.hytale.server.core.command.commands.debug.AssetsCommand
1 извлеченные методы
AssetsCommand()AssetsDuplicatesCommand
com.hypixel.hytale.server.core.command.commands.debug.AssetsDuplicatesCommand
2 извлеченные методы
AssetsDuplicatesCommand()+1 больше методов, доступных в сгенерированном индексе.
AssetTagsCommand
com.hypixel.hytale.server.core.command.commands.debug.AssetTagsCommand
2 извлеченные методы
AssetTagsCommand()+1 больше методов, доступных в сгенерированном индексе.
HitboxCollisionAddCommand
com.hypixel.hytale.server.core.command.commands.debug.component.hitboxcollision.HitboxCollisionAddCommand
1 извлеченные методы
HitboxCollisionAddCommand()HitboxCollisionCommand
com.hypixel.hytale.server.core.command.commands.debug.component.hitboxcollision.HitboxCollisionCommand
1 извлеченные методы
HitboxCollisionCommand()HitboxCollisionRemoveCommand
com.hypixel.hytale.server.core.command.commands.debug.component.hitboxcollision.HitboxCollisionRemoveCommand
1 извлеченные методы
HitboxCollisionRemoveCommand()Показан быстрый предварительный просмотр крупнейших доменов, чтобы обеспечить быструю загрузку страниц. Используйте Full API JSON для полных подписей.
Asset store data, config codecs, prefabs, and jar-exposed configuration primitives.
Показаны 6 индексированные классы для этого домена (всего обнаружено: 642).
AssetConstants
com.hypixel.hytale.assetstore.AssetConstants
1 извлеченные методы
AssetConstants()AssetExtraInfo
com.hypixel.hytale.assetstore.AssetExtraInfo
9 извлеченные методы
AssetExtraInfo(AssetExtraInfo$Data)+8 больше методов, доступных в сгенерированном индексе.
AssetHolder
com.hypixel.hytale.assetstore.AssetHolder
0 извлеченные методы
Нет извлеченных общедоступных/защищенных методов.
AssetKeyValidator
com.hypixel.hytale.assetstore.AssetKeyValidator
4 извлеченные методы
AssetKeyValidator(Supplier)+3 больше методов, доступных в сгенерированном индексе.
AssetLoadResult
com.hypixel.hytale.assetstore.AssetLoadResult
6 извлеченные методы
AssetLoadResult(Map, Map, Set, Set, Map)+5 больше методов, доступных в сгенерированном индексе.
AssetMap
com.hypixel.hytale.assetstore.AssetMap
18 извлеченные методы
AssetMap()+17 больше методов, доступных в сгенерированном индексе.
Показан быстрый предварительный просмотр крупнейших доменов, чтобы обеспечить быструю загрузку страниц. Используйте Full API JSON для полных подписей.
Protocol packets, IO handlers, auth/service clients, and validation-heavy network structures.
Показаны 6 индексированные классы для этого домена (всего обнаружено: 963).
AbilityEffects
com.hypixel.hytale.protocol.AbilityEffects
18 извлеченные методы
AbilityEffects()+17 больше методов, доступных в сгенерированном индексе.
AccumulationMode
com.hypixel.hytale.protocol.AccumulationMode
4 извлеченные методы
values(): AccumulationMode[]+3 больше методов, доступных в сгенерированном индексе.
ActiveAnimationsUpdate
com.hypixel.hytale.protocol.ActiveAnimationsUpdate
17 извлеченные методы
ActiveAnimationsUpdate()+16 больше методов, доступных в сгенерированном индексе.
AmbienceFX
com.hypixel.hytale.protocol.AmbienceFX
18 извлеченные методы
AmbienceFX()+17 больше методов, доступных в сгенерированном индексе.
AmbienceFXAltitude
com.hypixel.hytale.protocol.AmbienceFXAltitude
4 извлеченные методы
values(): AmbienceFXAltitude[]+3 больше методов, доступных в сгенерированном индексе.
AmbienceFXAmbientBed
com.hypixel.hytale.protocol.AmbienceFXAmbientBed
18 извлеченные методы
AmbienceFXAmbientBed()+17 больше методов, доступных в сгенерированном индексе.
Показан быстрый предварительный просмотр крупнейших доменов, чтобы обеспечить быструю загрузку страниц. Используйте Full API JSON для полных подписей.
Starter repository references for core systems, UI, events, entities, networking, inventory, messages, permissions, commands, config, economy, persistence, advanced utilities, and smoke tests.
Treat these repositories as scaffolding references. Regenerate the runtime index against the latest jar before relying on any older starter code unchanged.
Плагин
hytale-plugin-template-core
Плагин
hytale-plugin-template-ui
Плагин
hytale-plugin-template-events
Плагин
hytale-plugin-template-entities
Плагин
hytale-plugin-template-network
Плагин
hytale-plugin-template-inventory
Плагин
hytale-plugin-template-messages
Плагин
hytale-plugin-template-permissions
Mod
hytale-mod-template-core
Mod
hytale-mod-template-ui
Mod
hytale-mod-template-events
Mod
hytale-mod-template-entities
Mod
hytale-mod-template-network
Mod
hytale-mod-template-inventory
Mod
hytale-mod-template-messages
Mod
hytale-mod-template-permissions
Плагин
hytale-plugin-template-commands
Плагин
hytale-plugin-template-config
Плагин
hytale-plugin-template-economy
Плагин
hytale-plugin-template-persistence
Плагин
hytale-plugin-template-advanced
Плагин
hytale-plugin-template-smoke
Плагин
hytale-plugin-template-security
Mod
hytale-mod-template-commands
Mod
hytale-mod-template-config
Mod
hytale-mod-template-economy
Mod
hytale-mod-template-persistence
Mod
hytale-mod-template-advanced
Mod
hytale-mod-template-smoke
Mod
hytale-mod-template-security
Пространства имен пакетов высокой плотности из извлеченного индекса jar, полезные для быстрого изучения подсистем.
| Упаковка | Количество классов |
|---|---|
com.hypixel.hytale.server.core | 1601 |
com.hypixel.hytale.server.npc | 797 |
com.hypixel.hytale.builtin.hytalegenerator | 573 |
com.hypixel.hytale.protocol.packets | 453 |
com.hypixel.hytale.builtin.adventure | 227 |
com.hypixel.hytale.server.worldgen | 215 |
com.hypixel.hytale.builtin.buildertools | 208 |
com.hypixel.hytale.builtin.triggervolumes | 90 |
com.hypixel.hytale.server.spawning | 82 |
com.hypixel.hytale.builtin.portals | 53 |
com.hypixel.hytale.procedurallib.logic | 42 |
com.hypixel.hytale.procedurallib.json | 38 |
com.hypixel.hytale.codec.validation | 36 |
com.hypixel.hytale.server.flock | 33 |
com.hypixel.hytale.builtin.worldgen | 33 |
com.hypixel.hytale.codec.codecs | 30 |
com.hypixel.hytale.builtin.asseteditor | 30 |
com.hypixel.hytale.builtin.instances | 29 |
Премиум-ресурсы должны проверять ключи при запуске сервера и периодически во время выполнения, используя токены интеграции создателя и подписанные ответы.
Interactive startup flow preview
Ready to startExample Server
ExampleAsset startup license check
> Press Start to preview the buyer activation flow.
| Конечная точка | Цель |
|---|---|
GET /api/status | Availability + maintenance probe used before first activation prompt. |
POST /api/licenses/runtime-token | Creator relay endpoint: exchange a long-lived integration key/token for a short-lived asset-scoped runtime token. |
POST /api/licenses/validate | Primary runtime check. Validates status/expiry and auto-binds active server/IP slot usage. |
POST /api/licenses/bind | Optional explicit bind when you want to reserve/confirm slot before full startup. |
GET /api/licenses/key/{key} | Read license state, expiry, and currently bound slots. |
POST /api/licenses/demo/{assetId} | Выдайте временную демонстрационную лицензию для настроенных демонстрационных сборок. |
POST /api/licenses/custom | Выпускайте пользовательские лицензии, управляемые создателями, с правилами истечения срока действия/IP. |
# HytaleDepot Integration Config - auto-injected at upload
plugin-secret: "build_scoped_hmac"
asset-id: "asset_uuid"
build-hash: "published_build_sha256"
secret-version: "4"
validate-endpoint: "https://hytaledepot.net/api/licenses/validate"
deployment-secret-env: "HD_DEPLOYMENT_SECRET"
asset-name: "Example Plugin"
asset-type: "plugin"Injected runtime behavior
1. Adds net.hytaledepot.runtime.HdLicenseBootstrap.class
2. Adds net.hytaledepot.runtime.HdLicenseCommand.class
3. Rewrites manifest.json Main -> net.hytaledepot.runtime.HdBootstrapWrapper
4. Wrapper calls HdLicenseBootstrap.validate(this) before the original setup path
5. First-run license entry uses /hdlicense <assetId> <licenseKey> or hd-licenses/<assetId>.pending
6. Verified buyer keys are cached in hd-licenses/<assetId>.key
7. If /api/status is in maintenance or unreachable, startup fail-opens for that boot onlyPOST /api/licenses/validate
X-Plugin-Secret: <build_scoped_derived_secret>
Content-Type: application/json
{
"asset_id": "asset_uuid",
"license_key": "HD-XXXX-XXXX",
"server_ip": "x.x.x.x",
"build_hash": "published_build_sha256",
"secret_version": "4",
"deployment_secret": "server_only_secret",
"timestamp": "1739553549000",
"nonce": "abc12345",
"signature": "HMAC_SHA256(pluginSecret, licenseKey|assetId|serverIp|timestamp|nonce)"
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.util.UUID;
String API_VALIDATE = "https://hytaledepot.net/api/licenses/validate";
String API_STATUS = "https://hytaledepot.net/api/status";
String API_RUNTIME_TOKEN = "https://hytaledepot.net/api/licenses/runtime-token";
String ASSET_ID = "asset_uuid";
String LICENSE_KEY = readBuyerLicenseKey();
String BUILD_HASH = "build_sha256_here";
String DEPLOYMENT_SECRET = System.getenv("HD_DEPLOYMENT_SECRET");
String RUNTIME_TOKEN = requestRuntimeTokenFromCreatorRelay(API_RUNTIME_TOKEN, ASSET_ID, BUILD_HASH);
String SERVER_IP = detectServerIp();
if (isApiTemporarilyUnavailable(API_STATUS)) {
System.err.println("[HD License] Licensing API is in maintenance or unreachable.");
System.err.println("[HD License] Loading this startup without license activation; next restart will require validation again.");
return;
}
String timestamp = String.valueOf(System.currentTimeMillis());
String nonce = UUID.randomUUID().toString();
String payload = "{"
+ "\"asset_id\":\"" + ASSET_ID + "\","
+ "\"license_key\":\"" + LICENSE_KEY + "\","
+ "\"server_ip\":\"" + SERVER_IP + "\","
+ "\"build_hash\":\"" + BUILD_HASH + "\","
+ "\"deployment_secret\":\"" + DEPLOYMENT_SECRET + "\","
+ "\"timestamp\":\"" + timestamp + "\","
+ "\"nonce\":\"" + nonce + "\""
+ "}";
HttpRequest request = HttpRequest.newBuilder(URI.create(API_VALIDATE))
.header("Content-Type", "application/json")
.header("X-License-Token", RUNTIME_TOKEN)
.POST(HttpRequest.BodyPublishers.ofString(payload, StandardCharsets.UTF_8))
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
boolean allowed = response.statusCode() == 200
&& (response.body().contains("\"allowed\":true") || response.body().contains("\"allowed\": true"));
if (!allowed) {
String reason = extractJsonField(response.body(), "reason_code");
System.err.println("[HD License] Validation denied: " + reason);
Thread.sleep(5000);
System.exit(1);
}
static boolean isApiTemporarilyUnavailable(String statusUrl) {
try {
HttpResponse<String> status = HttpClient.newHttpClient().send(
HttpRequest.newBuilder(URI.create(statusUrl)).GET().build(),
HttpResponse.BodyHandlers.ofString()
);
return status.statusCode() >= 500
|| status.body().contains("\"enabled\":true")
|| status.body().contains("\"enabled\": true");
} catch (Exception ignored) {
return true;
}
}{
"asset_id": "asset_uuid",
"license_key": "HD-XXXX-XXXX",
"server_ip": "x.x.x.x",
"build_hash": "build_sha256_here",
"deployment_secret": "server_only_secret",
"timestamp": "1739553549000",
"nonce": "abc12345"
}{
"status": "invalid",
"allowed": false,
"reason_code": "ip_slots_exhausted",
"expires_at": "2027-01-01T00:00:00.000Z",
"offline_grace_seconds": 3600,
"max_ip_slots": 2,
"bindings": [{ "ip": "x.x.x.x", "lastSeenAt": "2026-04-02T10:21:00.000Z" }],
"issued_at": "2026-02-15T09:12:21.000Z",
"nonce": "r7FmK1ab",
"signature": "hex_hmac_signature"
}Строгость
`hard` = остановить запуск, `soft` = отключить только плагин, `warn` = войти в систему и продолжить.
Офлайн Грейс
Временное автономное окно (в секундах) разрешено после последней успешной проверки.
IP-слоты
Максимальное количество одновременных привязок сервера/IP до возврата `ip_slots_exhausted`.
Maintenance fallback
If `/api/status` reports maintenance or the API cannot be reached, startup may fail-open for that boot only and must not persist an unverified new key.
Rotation
Only rotate a license key after the old key is inactive. Replace the server file with the new key before the next restart.
Используйте официальные ссылки Hytale для руководства по политике и времени выполнения, а также репозитории сообщества для шаблонов реализации.
Официальный
Сообщество / Открытый исходный код
Выберите plugin/mod/mixed и уровень basic/intermediate/advanced. Каждая попытка использует случайные вопросы и практические проверки кода.
Настройка теста
Тесты случайно выбираются из большой базы вопросов. Вопросы по коду проверяются семантическими шаблонами (реальный build пользовательского кода не запускается).
Можно начать как гость, но подробные результаты правильных/неправильных ответов доступны только после входа и привязки.