EZvac is a standalone HVAC and indoor-climate simulation plugin for Paper 1.21.1 and its forks, including Purpur. It provides sign thermostats, variable-speed heat pumps and air conditioners, furnaces, ducted airflow, point thermometers, RPM monitors, operating-profile panels, outdoor climate simulation, and persistent room temperatures. Systems condition either air or water, so the same simulation heats a room or a swimming pool.
HVAC systems are identified by their world and group name.
Release status: EZvac ALPHA 1.6 adds water systems — boilers, waxed copper grate vents, and pool thermostats that condition a body of water exactly the way vents condition a room. It supersedes ALPHA 1.6 Pilot 1 and includes everything that was in it.
You cannot roll back to ALPHA 1.5 once you build a water system — 1.5 predates the forward-compatibility work and would reinterpret boilers as heat pumps and delete grate vents. From 1.6 onward a downgrade degrades gracefully. See CHANGELOG.md.
This is alpha software: back up your server and EZvac data before upgrading.
- Paper 1.21.1 or a Paper fork such as Purpur
- Java 21
- Maven 3.9 or newer when building from source
mvn clean packageThe production plugin will be written to:
target/EzVac-ALPHA-1.6.jar
Automated tests are included under src/test/java and run as part of
mvn verify. GitHub Actions runs the same build and test suite on every push
and pull request.
- Build the project or obtain the release JAR.
- Put
EzVac-ALPHA-1.6.jarin the server'spluginsdirectory. - Start Paper (or Purpur) with Java 21.
- Use
/hvac help,/hvac list, and/hvac statsto confirm operation.
- Thermostat: One sign controller per world-scoped HVAC group, 60-85 F.
- Pool thermostat: The same sign for water systems, 75-104 F. Only controls boiler systems, so it cannot be used to overheat a room.
- Heat pump: Dispenser-backed variable-speed cooling and heating.
- Air conditioner: Dispenser-backed variable-speed cooling.
- Furnace: Dispenser-backed fixed-capacity heating.
- Boiler: Dispenser-backed fixed-capacity heating for water systems.
- Vent: Explicitly linked iron trapdoor that seeds duct airflow.
- Water vent: Explicitly linked waxed copper grate that conditions a body of water. A system is all air or all water; water bodies behave exactly like rooms.
- Thermometer: Independent sign sensor that measures its own block.
- RPM monitor: Type-specific sign showing RPM, capacity, and unit counts.
- Settings panel: Sign control for Eco, Normal, and Turbo operation.
Registered equipment does not consume buckets, fuel, water, lava, power, or inventory items. EZvac records and removes only fluid sources that it created.
Create a panel while looking at a sign:
/hvac create settingspanel <group> [label]
Right-click to move forward through the profiles and sneak-right-click to move backward. Without a panel, a group always uses Normal.
| Profile | Default maximum RPM | Variable-unit maximum capacity |
|---|---|---|
| Eco | 2,400 | 70% |
| Normal | 3,600 | 100% |
| Turbo | 4,200 | 115% |
Profiles affect heat pumps and air conditioners only. All variable equipment in a group receives the same speed command. Furnaces remain fixed at full capacity and are never averaged down by a throttled heat pump.
EZvac | main
74.2 F | COOL
Set 72.0 F | 68%
ETA 0:31 | house
The ETA uses the same RPM ramping, operating profile, outdoor load, mixed-unit capacity, and thermal simulation as the live controller.
Create an independent point thermometer while looking at a sign:
/hvac create thermometer [label]
It reads the temperature at its own block: full conditioned temperature in a vent core, blended temperature near the airflow edge, or outdoor temperature when outside every HVAC system.
ezvac.use— help, readings, inspection, and settings-panel operation.ezvac.admin— device creation, changes, removal, linking, and diagnostics.
Runtime state is stored in plugins/EZvac/hvac.yml. Saves use a temporary file,
backup, and atomic replacement when supported. The snapshot is taken on the main
thread and the YAML dump and file replacement run off it, so a large registry no
longer stalls the server tick; shutdown saves stay synchronous. Missing loaded
devices are pruned, unloaded-world records are retained, and pending owned-fluid
cleanup is persisted until its chunk becomes available.
EZvac is released under the MIT License, starting with ALPHA 1.5. Copyright (c) 2026 bladestech and EZvac contributors.
Releases through ALPHA 1.1 HOTFIX were dedicated to the public domain under The Unlicense. That dedication is irrevocable: those versions remain public domain and may still be used on those terms. The MIT License applies to ALPHA 1.5 and everything after it.
Contributions are accepted under the same MIT terms — see CONTRIBUTING.md.