Goop Documentation

↳ Emitters ?

As of v0.4, Goop Emitters are Datadriven using Resourcepacks; before that, people needed to make their own mods with Goop as a dependency.

Fields

"type" (Required String)
There's currently 3 Types of Emitters:
"DAMAGE"
Emits goop particles when an Entity gets damaged. "DEATH"
Emits goop particles when an Entity dies. "LAND"
Emits goop particles when an Entity lands after falling.
"targets" (Optional Array of Strings)
A Json Array of the Entity Types that this Emitter should be applied to.
Each Entry can either be a single Entity Type, or an Entity Type Tag. To mark an Entry as an Entity Type Tag, put a '#' in front of the identifier.
If undefined, this emitter will apply to ALL Entity Types.
"goop" (Required Json Object)
All the data important for the goop particles themselves; The Object has following Fields:
"color" (Optional Color)
The Color of the Goop Particles. Can be any of the following:
- Hexadecimal String reperesnting an RGB//RGBA Color
- Integer representing an RGB//RGBA Color
- Array of 3-4 Floats on a scale from 0-1
- Calculatable Color

If no Alpha Channel is given, Alpha defaults to 1.
Defaults to White.
"size" (Optional Calculatable)
The Size of the Goop Particles. Defaults to 1. "waterhandling" (Optional String)
How the Goop Particles should interact with Water. There's currently 3 Types of Water Handling:
"IGNORE"
Acts as if the Water wasn't even there. "REMOVE_PARTICLE"
Removes the Particle upon contact with Water "REPLACE_WITH_CLOUD_PARTICLE"
Replaces the Particle with Cloud Particles of the same Size and Color. Defaults to "REPLACE_WITH_CLOUD_PARTICLE".
"mature" (Optional Boolean)
Whether the Particles Color should be replaced with a Censor-Color depending on Client Settings. Defaults to false. "drip" (Optional Boolean)
Whether Puddles on Ceilings should emit Dripping particles. Defaults to true. "deform" (Optional Boolean)
Whether Puddles on Ceilings and Walls should deform over time; like emulating a viscous fluid adhering to gravity. Defaults to true.
"count" (Optional Calculatable)
The Count of Splatter Particles that should be emitted. Default varies per emitter type:
"DAMAGE": "clamp(damage, 1, 32)"
"DEATH": "rand(4, 8)"
"LANDING": "0"

If set to 0, instead of Splatter Particles a single Puddle will be emitted.
"speed" (Optional Calculatable)
The Initial Velocity of Splatter Particles emitted. Defaults to "0".
If set to 0, the default particle velocity of 1 will be used instead. Use a small decimal number if you don't want Splatter Particles to have initial Velocity.
Every Splatter Particles Velocity points in a random direction.
"limitDamage" (Optional Boolean)
Damage Emitter Only
Whether the Damage variable should be limited to the Mobs Max Health.
This results in a Chicken to bleed much less from the same Damage than a Pig would for example.
Defaults to true.

Variables

Each Emitter Type has different Variables that can be used in Calculatables:
"DAMAGE"
damage
The amount of damage dealt.
"DEATH"
None "LAND"
fallDist
The distance the entity has fallen before landing.

The Json Files

Once you've made a Resourcepack, create a directory called goop_emitters in your namespace directory.
In there, you'll make your Emitter Json Files.

Example for a Damage Emitter that emits Blood Colored Splatter particles when a Zombie or Pig gets damaged; their size and amount depend on the amount of damage dealt.

{
    "type": "DAMAGE",
    "targets": [
        "minecraft:zombie",
        "minecraft:pig"
    ],
    "goop": {
        "color": "a11208",
        "size": "min(1 + damage / 2 + rand(0.5), 4)",
        "waterhandling": "REPLACE_WITH_CLOUD_PARTICLE"
    },
    "count": "clamp(damage * 2, 1, 32)"
}

Example for a Death Emitter that places a Water Colored Puddle when a Snow Golem melts:

{
    "type": "DEATH",
    "targets": [
        "minecraft:snow_golem"
    ],
    "damage-types": [
        "minecraft:on_fire"
    ],
    "goop": {
        "color": [
            0.5,
            0.5,
            0.9,
            1
        ],
        "size": 1.5,
        "waterhandling": "REMOVE_PARTICLE"
    },
    count: 0
}

Example for a Landing Emitter that placed a Slime Colored Puddle when a Slime lands on the ground:

{
    "type": "LANDING",
    "targets": [
        "minecraft:slime"
    ],
    "goop": {
        "color": [
            0.2,
            0.74,
            0.47,
            1
        ],
        "size": "1 + min(fallDist / 10, 3)",
        "waterhandling": "REPLACE_WITH_CLOUD_PARTICLE"
    }
}