promotional bannermobile promotional banner

Horrrs Pvz

A simple Plants vs. Zombies mod
Back to Files

horrrs_pvz-1.9.0-neoforge-1.21.1.jar

File namehorrrs_pvz-1.9.0-neoforge-1.21.1.jar
Uploader
HorrrsHorrrs
Uploaded
Sep 30, 2026
Downloads
88
Size
4.1 MB
Mod Loaders
NeoForge
File ID
9018149
Type
R
Release
Supported game versions
  • 1.21.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:horrrs-pvz-1106064:9018149"

Learn more about Curse Maven

What's new

Horrrs' Plants vs Zombies · 1.9.0 · Minecraft 1.21.1 (NeoForge)
Changes since the 1.20.1 release



## Platform and Dependencies

 

- Minecraft 1.20.1 + Forge → **Minecraft 1.21.1 + NeoForge 21.1.233**
- Requires GeckoLib 4.9+. JEI 19+ is optional and client-side only (nothing changes if you don't have it).
- Same amount of content as before: 51 plants, 11 card packs, every existing item and block. This release is a **port plus a behaviour overhaul** — nothing was removed.



## New

 

**Config file** `config/horrrs_pvz-common.toml`, everything under `[targeting]` (1.20.1 had no config file):

 

- `plantEnemy` — entities that plants will always target. Default `["minecraft:slime"]`
- `attackMonsters` — also target vanilla monsters (Monster / flying mobs). On by default
- `dontTarget` — entities that are never picked as a target
- `cannotAttack` — entities plants can deal no damage to at all (blocks damage only, not targeting)

 

All four accept `#tag` entries. **`plantEnemy` replaces the 1.20.1 datapack tag `horrrs_pvz:plant_enemy`** — move your old list into the config when upgrading.

 

**JEI integration**: browse which cards a card pack can drop, with the drop chance for each (11 packs / 101 entries).

 

**Fume Shroom and Melancholic Mushroom now use an area spray** (in 1.20.1 they fired projectile entities):

 

- Fume Shroom: a 2-block-wide × 6-block-long rectangle in front of it, 6-block targeting range
- Melancholic Mushroom: 6×6 centred on itself
- The particles cover exactly the same area as the damage, so nothing looks like it should hit but doesn't

 

**Doom Shroom**: particle effect on detonation.

 

**Plant cards**: cards recovered with the gardening gloves now have the enchantment glint, and their tooltip shows that plant's remaining health (bold red, shown as "current / max").



## Changed

 

**Pult projectiles were rebuilt.** 1.20.1 fired in a straight line towards the target with a small elevation bonus based on distance. It is now an actual ballistic solve (fixed arc apex, launch speed and angle solved for) with landing-point prediction:

 

- High arc when the target is standing still (6-block apex), lower arc while it is moving (3-block apex) to shorten the flight time
- Lead is taken from the target's **pathfinding destination**, not a naive velocity extrapolation, so the landing point never overshoots where the target will stop
- If the target dies mid wind-up the pult still fires, and the shot arcs to **where the target last was** (no more "the throwing animation plays but no projectile appears")

 

**Bullet damage no longer scales with flight speed.** All 24 projectiles now deal exactly the plant's attack damage. Vanilla's arrow formula is `ceil(impact speed × base damage)` — that is the bow's draw-strength mechanic, so shots used to hit harder when flat and weaker when lobbed.

 

**Gardening Gloves**: no longer require a full-health plant — any living plant can be picked up. The card now **keeps the plant's full state** (health, texture variant, custom name, equipment, status effects) and restores it exactly when replanted. This also fixes the Imitater, which previously could not be picked up at all.

 

**Plants now turn to face the target they are attacking** (they used to glance around randomly, so the plant was often looking somewhere other than where it was shooting).

 

**Position lock was rebuilt.** It used to teleport every plant back to its anchor point every tick, which showed up as jitter, as "it teleports back after being pushed", and as a fight with legitimate replanting. It now only corrects a plant that has actually been displaced, and plants no longer take knockback at all.



## Fixed

 

- A plant recovered with the gloves now **stays exactly where you replant it**. It used to be dragged back to where it was picked up, and in the worst case it **vanished the instant it was planted** (root cause: on 1.21, `Entity.load` reads a missing `Pos` entry as 0, which moved the plant to the world origin).
- Fume Shroom's particles did not match its damage area.
- Plants jittering when pushed.



## Porting notes (1.21 platform differences, all handled)

 

- `MeleeAttackGoal.getAttackReachSqr` was removed in 1.21. The 35 plants that overrode it to opt out of melee attacks became dead code (with no compiler warning), which made plants bite at point-blank range with the wrong cadence. Reimplemented against the 1.21 API.
- `/particle` arguments became codec-based in 1.21, so all 498 hardcoded commands behind the Doom Shroom effect **failed silently** (no error, just no particles). They now send particle packets directly, with the same appearance as 1.20.1.
- The client-side resource manager cannot read the `data/` directory, so card pack contents are now resolved on the server and synced to clients over the network — which means **JEI still shows card pack contents on a server**.



## Compatibility and upgrading

 

- **Multiplayer**: damage, targeting, drops and positions are all server-authoritative; clients only handle visuals.
- **Upgrading**: this is a Minecraft major-version move (Forge → NeoForge). You cannot simply swap the 1.20.1 jar for this one — use a 1.21.1 instance/pack.
- **Config**: `config/horrrs_pvz-common.toml` is generated on first launch. Restart the game or server after editing it.
- Item, block and entity registry names are unchanged from 1.20.1.

This mod has no additional files