HTDevLib
HytaleDevLib – Biblioteca de Utilidades para Desarrolladores Una biblioteca de utilidades completa para el desarro...

VolatileEntities es un marco basado en ECS para Hytale que te permite crear y gestionar entidades no persistentes o controladas por tiempo, sin dejar “basura” en el mundo.
Está diseñado para:
Cualquier entidad con un VolatileComponent se elimina automáticamente en el primer tick después de un reinicio del servidor, gracias a:
expiredOnLoad manejada por el códec del componente (VolatileComponent.CODEC),VolatileTickSystem que elimina las entidades volátiles “cargadas desde el disco”.Esto garantiza que las entidades volátiles nunca sobrevivan a un reinicio, incluso si fueron guardadas en el disco.
Usando VolatileConfig y VolatilePolicy, puedes controlar con precisión cuánto tiempo debe vivir una entidad en tiempo de ejecución:
IDLE_TIMEOUT – despawn después de X ticks o segundos de actividad,MAX_DISTANCE – despawn cuando esté demasiado lejos de una entidad vinculada,LINKED_ENTITY_INVALID – despawn si la entidad vinculada se vuelve inválida,CUSTOM – lógica de despawn completamente personalizada a través de un predicado en VolatileContext.Todos estos se evalúan por VolatileTickSystem mientras tu plugin está cargado.
Las políticas son no exclusivas.
Una sola entidad volátil puede combinar múltiples políticas al mismo tiempo. La entidad será eliminada tan pronto como cualquier condición de política se cumpla.
Por ejemplo, una entidad puede:
IDLE_TIMEOUT),MAX_DISTANCE),OWNER_DISCONNECT).Esto te permite expresar ciclos de vida complejos sin código personalizado.
VolatileEntities.builder()
.withinDistance(targetRef, 30f)
.idleTimeoutSeconds(10f)
.ownedBy(playerUuid)
.spawn(commandBuffer);
Este ejemplo demuestra cómo varias reglas de VolatilePolicy pueden combinarse dentro de un solo VolatileConfig.
Las políticas son no exclusivas: una entidad puede tener varias reglas de ciclo de vida aplicadas al mismo tiempo.
La entidad será eliminada tan pronto como cualquier condición de política se cumpla.
VolatileConfig.VolatileConfigBuilder configBuilder = VolatileConfig.builder()
// Eliminar automáticamente la entidad cuando su chunk se descargue
.policy(VolatilePolicy.CHUNK_UNLOAD)
// Eliminar inmediatamente tan pronto como una condición de política se vuelva inválida
.removeOnInvalid(true);
// Opcionalmente vincula esta entidad volátil a otra (por ejemplo, un mob o NPC)
if (linkedEntity != null) {
configBuilder
.policy(VolatilePolicy.LINKED_ENTITY_INVALID)
.linkedEntity(linkedEntity);
}
VolatileConfig config = configBuilder.build();
return new VolatileComponent(config);
DespawnComponent de Hytale (seguro para descarga/carga de chunk)VolatileEntities se integra limpiamente con los sistemas de Hytale vanilla:
DespawnComponent + DespawnSystem manejan TTL absoluto en tiempo real,USE_DESPAWN_TTL le dice a VolatileEntities que delegue completamente el manejo de TTL a DespawnComponent.Esto significa:
TimeResource), no en ticks,Por lo tanto, puedes elegir entre:
IDLE_TIMEOUT), oUSE_DESPAWN_TTL + DespawnComponent).Para resolver el clásico problema de “entidades dejadas atrás después de eliminar un mod”, VolatileEntities utiliza un patrón de mantener vivo:
VolatileDespawnKeepAliveSystem actualiza continuamente un DespawnComponent vanilla en entidades volátiles (excepto aquellas que usan USE_DESPAWN_TTL),En ese momento, el núcleo de Hytale DespawnSystem limpia automáticamente todas las entidades volátiles restantes, incluso si tu plugin ya no está presente.
Sin escaneos manuales del mundo. Sin entidades huérfanas.
Además de las políticas de TTL básicas, el marco admite:
CHUNK_UNLOAD – elimina automáticamente entidades volátiles cuando su chunk se descarga (manejadas por VolatileChunkUnloadSystem, un EntityEventSystem<ChunkUnloadEvent>).
OWNER_DISCONNECT – marca o elimina entidades volátiles propiedad de un jugador cuando se desconectan (manejadas por VolatileOwnerDisconnectListener, escuchando PlayerDisconnectEvent).
Combinadas, estas políticas forman un robusto conjunto de herramientas de ciclo de vida para entidades temporales.
Usa VolatileEntities para marcar:
como volátiles, para que:
Si ya generas una entidad manualmente (por ejemplo, un holograma), puedes simplemente adjuntar un VolatileComponent para hacerla no persistente.
holder.addComponent(
VolatileComponent.getComponentType(),
VolatileComponent.restartOnly()
);
Resultado:
Para despawn una entidad después de una cantidad fija de tiempo real, incluso a través de descargas de chunk, combina DespawnComponent con USE_DESPAWN_TTL:
holder.addComponent(
DespawnComponent.getComponentType(),
DespawnComponent.despawnInSeconds(time, 10f)
);
VolatileConfig cfg = VolatileConfig.builder()
.policy(VolatilePolicy.USE_DESPAWN_TTL)
.build();
holder.addComponent(
VolatileComponent.getComponentType(),
new VolatileComponent(cfg)
);
Aquí:
Puedes marcar una entidad como volátil después de que ya exista:
store.putComponent(
ref,
VolatileComponent.getComponentType(),
VolatileComponent.restartOnly()
);
No se requiere lógica de respawn o despawn manual.
VolatileComponent – métodos de fábricarestartOnly() – solo en tiempo de ejecución, eliminado al reiniciarwithTimeout(int ticks) / withTimeoutSeconds(float seconds, int tickRate)withinDistance(Ref<EntityStore> target, float distance)linkedTo(Ref<EntityStore> target)ownedBy(UUID playerUuid)useDespawnTtl()VolatileConfigPresets y constructores para control avanzado:
chunkBound()linkedTo(ref)withinDistance(ref, distance)ownedBy(playerUuid)withTimeout(ticks)useDespawnTtl()custom(ctx -> { ... })VolatileEntities.builder()
Para conveniencia, la API de constructor proporciona una forma fluida de generar entidades volátiles:
VolatileEntities.builder()
.at(new Vector3d(x, y, z))
.with(MyComponent.TYPE, new MyComponent(...))
.withinDistance(targetRef, 50f)
.idleTimeoutSeconds(10f)
.spawn(commandBuffer);
Coloca el VolatileEntities JAR en la carpeta de plugins de tu servidor.
Declara una dependencia en el manifiesto de tu plugin:
{
"Group": "Ender_Griefeur99",
"Name": "MyPlugin",
"Version": "1.0.0",
"Main": "fr.ender_griefeur99.myplugin.MyPlugin",
"ServerVersion": "*",
"IncludesAssetPack": false,
"Dependencies": {
"Ender_Griefeur99:VolatileEntities": "*"
}
}
HytaleDevLib – Biblioteca de Utilidades para Desarrolladores Una biblioteca de utilidades completa para el desarro...
Animal Growth Un mod sencillo pero esencial que añade crecimiento automático de animales a Hytale. ¡Los animales jóvenes...
Expande el sistema de combate de Terraria con objetos y armas completamente recreados del exitoso juego Terraria. Todos ...
Por favor, deja sugerencias sobre lo que debería añadir a continuación. El mod tendrá ranuras separadas en el futuro, ...
🌍 Todos Los Minerales Todos Los Minerales es un mod en expansión de Hytale que transforma la progresión de recursos al ...
Versioning 🔢 Formato: X.Y.Z (por ejemplo, 1.1.2) X – Actualización importante / hito de la hoja de ruta 🚀 Y – Nueva...