This allows you to add fluids to the game!

Create the Fluid Representation

Link to create-the-fluid-representation

Before you can add the fluid, you need to create a Fluid Representation which will allow you to set the properties of the fluid you want to add.
This is where the VanillaFactory comes in:

ZenScript
Copy
mods.contenttweaker.VanillaFactory.createFluid(String unlocalizedName, int color);
mods.contenttweaker.VanillaFactory.createFluid(String unlocalizedName, CTColor color);

Import the representation Package

Link to import-the-representation-package

It might be required for you to import the package if you encounter any issues, so better be safe than sorry and add the import.
import mods.contenttweaker.Fluid;

To get/set the properties you can either use the respecting ZenGetters/Setters or the ZenMethods:

ZenScript
Copy
//property name: density
//ZenGetter
print(fluid.density);
//ZenSetter
fluid.density = 500;
//ZenMethods
fluid.getDensity();
fluid.setDensity(1000);
Property NameTypeRequiredDefault ValueDescription/Notes
Property Name
unlocalizedName
Type
string
Required
Yes
Default Value
Description/Notes
Name, should be all lowercase
Property Name
density
Type
int
Required
No
Default Value
1000
Description/Notes
How fast you can walk in the fluid
Property Name
gaseous
Type
boolean
Required
No
Default Value
false
Description/Notes
Is the fluid gaseous (flows upwards instead of downwards)?
Property Name
luminosity
Type
int
Required
No
Default Value
0
Description/Notes
The light-level emitted by the fluid
Property Name
temperature
Type
int
Required
No
Default Value
300
Description/Notes
The Fluid's temperature
Property Name
color
Type
int
Required
Yes
Default Value
Description/Notes
The Fluid's color-code
Property Name
colorize
Type
boolean
Required
No
Default Value
true
Description/Notes
Is the fluid's color-code applied?
Property Name
rarity
Type
string
Required
No
Default Value
COMMON
Description/Notes
How rare a fluid is, determines ToolTip color ("COMMON", "UNCOMMON", "RARE", "EPIC")
Property Name
viscosity
Type
int
Required
No
Default Value
1000
Description/Notes
How quickly the fluid spreads
Property Name
fillSound
Type
ISoundEventDefinition
Required
No
Default Value
ITEM_BUCKET_FILL
Description/Notes
The sound played when the fluid is picked up with a Bucket
Property Name
emptySound
Type
ISoundEventDefinition
Required
No
Default Value
ITEM_BUCKET_EMPTY
Description/Notes
The sound played when the fluid is placed
Property Name
vaporize
Type
boolean
Required
No
Default Value
false
Description/Notes
Does vaporize when placed in the Nether?
Property Name
stillLocation
Type
string
Required
No
Default Value
contenttweaker:fluids/fluid
Description/Notes
The Location where to find the texture for the still fluid
Property Name
flowingLocation
Type
string
Required
No
Default Value
contenttweaker:fluids/fluid_flow
Description/Notes
The Location where to find the texture for the flowing fluid
Property Name
material
Type
IMaterialDefinition
Required
No
Default Value
WATER
Description/Notes
The Material the fluid is made of

Registering the fluid

Link to registering-the-fluid

You need to call this method to register the fluid in the game!
Otherwise nothing will happen!
After you have called this function, you cannot un-register the fluid or change any of it's properties!

ZenScript
Copy
fluid.register();
ZenScript
Copy
#loader contenttweaker
import mods.contenttweaker.VanillaFactory;
import mods.contenttweaker.Fluid;
import mods.contenttweaker.Color;

var zsFluid = VanillaFactory.createFluid("zs_fluid", Color.fromHex("FF69B4"));
zsFluid.fillSound = <soundevent:block.anvil.place>;
zsFluid.register();

Localizing the fluid

Link to localizing-the-fluid

You will need to add fluid.fluidName = Localized Name to the responding language files. Alternatively, you could use CraftTweaker's localization feature, though it's recommended using the language files!