hytale-vfx
SKILL.md
Hytale VFX & Particles
Create custom visual effects and particle systems for your Hytale mods.
VFX Types
| Type | Use For | Examples |
|---|---|---|
| Particles | Small visual elements | Sparks, dust, bubbles |
| Trails | Following motion | Sword swings, projectiles |
| Bursts | One-time effects | Explosions, impacts |
| Ambient | Environmental | Fireflies, snow, leaves |
| Auras | Entity effects | Buffs, status effects |
Folder Structure
MyPack/
└── Common/
└── VFX/
├── particles/
│ ├── spark.json
│ └── magic_dust.json
├── effects/
│ ├── explosion.json
│ └── heal_aura.json
└── textures/
├── particle_spark.png
└── particle_dust.png
Particle Definition
Basic Particle
{
"particleId": "mymod:magic_spark",
"texture": "textures/particle_spark.png",
"lifetime": {
"min": 0.5,
"max": 1.5
},
"size": {
"start": 0.2,
"end": 0.0
},
"color": {
"start": [1.0, 0.8, 0.2, 1.0],
"end": [1.0, 0.2, 0.0, 0.0]
},
"velocity": {
"x": { "min": -0.5, "max": 0.5 },
"y": { "min": 0.5, "max": 1.5 },
"z": { "min": -0.5, "max": 0.5 }
},
"gravity": -0.5,
"emissive": true
}
Particle Properties
| Property | Description |
|---|---|
texture |
Sprite image |
lifetime |
Duration in seconds |
size.start/end |
Size over time |
color.start/end |
RGBA over time |
velocity |
Initial speed |
gravity |
Downward force |
emissive |
Glows in dark |
collides |
Stops at blocks |
Particle Emitters
Emitter Definition
{
"emitterId": "mymod:campfire_smoke",
"particle": "mymod:smoke_puff",
"rate": 5,
"shape": "point",
"offset": { "y": 0.5 },
"continuous": true
}
Emitter Shapes
| Shape | Description |
|---|---|
point |
Single origin |
sphere |
Random in sphere |
box |
Random in box |
ring |
Circle outline |
cone |
Cone direction |
{
"emitterId": "mymod:aura",
"shape": "sphere",
"shapeParams": {
"radius": 1.0,
"surface": true
}
}
Effect Definitions
Burst Effect
{
"effectId": "mymod:explosion",
"particles": [
{
"particle": "mymod:fire_spark",
"count": 50,
"burst": true
},
{
"particle": "mymod:smoke",
"count": 20,
"delay": 0.1
}
],
"sound": "mymod:explosion_sound",
"light": {
"color": [1.0, 0.5, 0.0],
"intensity": 2.0,
"duration": 0.3
}
}
Trail Effect
{
"effectId": "mymod:sword_trail",
"type": "trail",
"texture": "textures/trail_slash.png",
"length": 5,
"width": 0.3,
"fadeTime": 0.2,
"color": [0.8, 0.9, 1.0, 0.8]
}
Attaching VFX to Content
Block VFX
{
"blockId": "mymod:magic_crystal",
"vfx": {
"ambient": {
"emitter": "mymod:crystal_sparkle",
"offset": { "y": 0.5 }
},
"break": "mymod:crystal_shatter"
}
}
Item VFX
{
"itemId": "mymod:fire_sword",
"vfx": {
"held": "mymod:flame_aura",
"attack": "mymod:fire_slash"
}
}
Entity VFX
{
"entityId": "mymod:fire_elemental",
"vfx": {
"ambient": "mymod:fire_aura",
"hurt": "mymod:ember_burst",
"death": "mymod:fire_explosion"
}
}
Triggering VFX in Plugins
Play Effect
// Play at position
world.playEffect("mymod:explosion", position);
// Play on entity
entity.playEffect("mymod:heal_aura");
// Play with options
world.playEffect("mymod:magic_burst", position, EffectOptions.builder()
.scale(2.0f)
.color(Color.BLUE)
.duration(3.0f)
.build());
Attach Continuous Effect
// Start continuous effect
EffectHandle handle = entity.startEffect("mymod:fire_aura");
// Later, stop it
handle.stop();
// Or with fade
handle.fadeOut(1.0f);
Projectile Trails
Projectile arrow = world.spawnProjectile("arrow", position, velocity);
arrow.setTrailEffect("mymod:magic_trail");
Common Effect Patterns
Heal Effect
{
"effectId": "mymod:heal",
"particles": [
{
"particle": "mymod:heal_plus",
"count": 10,
"velocity": { "y": { "min": 0.5, "max": 1.0 } }
},
{
"particle": "mymod:sparkle",
"count": 20,
"shape": "sphere",
"radius": 0.5
}
],
"sound": "mymod:heal_sound"
}
Level Up Effect
{
"effectId": "mymod:level_up",
"particles": [
{
"particle": "mymod:star",
"count": 30,
"shape": "ring",
"radius": 1.0,
"velocity": { "y": { "min": 1.0, "max": 2.0 } }
}
],
"light": {
"color": [1.0, 1.0, 0.5],
"intensity": 3.0,
"duration": 1.0
}
}
Weather Particles
{
"emitterId": "mymod:snow",
"particle": "mymod:snowflake",
"rate": 50,
"area": { "width": 32, "height": 20 },
"followPlayer": true,
"velocity": {
"y": { "min": -2.0, "max": -1.0 },
"x": { "min": -0.3, "max": 0.3 }
}
}
Performance Tips
Do
| Practice | Why |
|---|---|
| Limit particle count | Performance |
| Use simple textures | Memory |
| Short lifetimes | Cleanup |
| Pool particles | Efficiency |
Don't
| Mistake | Why Bad |
|---|---|
| Too many particles | FPS drops |
| Huge textures | Memory waste |
| Infinite emitters | Memory leak |
| Complex shapes | CPU heavy |
Asset Editor Workflow
- Open Asset Editor
- Navigate to VFX section
- Create new particle/effect
- Adjust properties visually
- Preview in real-time
- Save and test in-game
Quick Reference
| Task | How |
|---|---|
| Create particle | Define in particles/ JSON |
| Create emitter | Define with rate and shape |
| Attach to block | Add vfx to block JSON |
| Play from plugin | world.playEffect("id", pos) |
| Create trail | Use type: "trail" effect |
Resources
- Animation: See
hytale-animationskill - Audio: See
hytale-audioskill - Pack Creation: See
hytale-pack-creatorskill
Weekly Installs
3
Repository
z3nlotus/hytale…t-skillsGitHub Stars
3
First Seen
Feb 10, 2026
Security Audits
Installed on
gemini-cli3
antigravity3
claude-code3
github-copilot3
codex3
cursor3