promotional bannermobile promotional banner

PunchThemAll

Punch different blocks to obtain the ressources you need !
Back to Files

pta-1.21.1-2.1.0.jar

File namepta-1.21.1-2.1.0.jar
Uploader
DrimoZDrimoZ
Uploaded
Jul 20, 2026
Downloads
9
Size
230.9 KB
Mod Loaders
NeoForge
File ID
8473510
Type
R
Release
Supported game versions
  • 1.21.1
  • 1.21

Curse Maven Snippet

NeoForge

implementation "curse.maven:punchthemall-1046761:8473510"

Learn more about Curse Maven

What's new

[1.21.1-2.1.0] — NeoForge

The NeoForge 1.21.1 release. The JSON you write is unchanged (schema_version: 2), but where you put it changed: interactions are now datapack data.

⚠️ Migrating from 1.20.1 (2.0.x)

  • Interactions move to a datapack. Copy your files from config/punchthemall/interactions/ into data/<namespace>/pta/interaction/ inside a datapack. Ids come from the path (data/mypack/pta/interaction/early/flint.jsonmypack:early/flint).
  • Only schema_version: 2 is accepted. The legacy (schema 1) format is gone — convert first, using the mapping table in docs/interaction-format.md.
  • The Loader config section is gone (recursive_discovery, lowercase_generated_ids, load_from_datapacks). All other config sections are unchanged.

Added

  • Interactions are datapack data, at data/<namespace>/pta/interaction/*.json. They reload with /reload, can be overridden by pack order, and support neoforge:conditions. The server syncs its loaded set to clients on join and after every reload, so JEI/EMI are correct on dedicated servers with no setup.
  • Native EMI support, alongside JEI (now JEI 19).
  • Biome #tags in conditions.biomes, in addition to exact biome/dimension ids.
  • JSON schema (docs/interaction.schema.json) for editor autocomplete and validation.
  • Example datapack at examples/punchthemall-examples40 interactions covering every field of the format, each catalogued with what it shows and how to trigger it in game.
  • Item conditions are spelled out in JEI and EMI. The hand/target tooltips used to print the tag structure back at you (Enchantments[].lvl : [1 - 5] where {id:"minecraft:efficiency"}). They now read as two plain blocks — The item must have / The item must NOT have — with enchantments named and levelled ("Efficiency I - V"). EMI shows them too, where it previously showed none.
  • left_click on air now works. It never could before, on either loader: the event behind it is client-only, so the server never saw the swing. The client now reports it, and only when a pack actually defines such an interaction.

Changed

  • Ported to NeoForge 21.1.x / Java 21 (ModDevGradle).
  • Item data now uses Data Components internally (1.20.5+ removed item NBT). PTA matches items against a version-stable view (Damage, Enchantments:[{id,lvl}], custom), so your nbt/nbt_predicates expressions keep working unchanged across mod versions.
  • Interactions are synced by a small server-to-client payload sent on join and after each /reload. (A datapack registry would sync for free, but /reload cannot re-read one — see docs/porting/neoforge-1.21.1-plan.md.)

Fixed

  • NBT range checks compare numerically. A RangeTag was matched by exact tag type, so a file mixing widths — {Damage:{RangeTag:[0,500]}} (ints) against a short value, or [2s,7s] against an int — could silently never match, or throw. Whitelists and blacklists now both compare as numbers.
  • target.kind: "any" no longer reports a phantom error. Trying both a block and a fluid lookup is the whole point of any, but the failing side logged Unknown block/fluid even when the other succeeded, sending pack makers after a problem that did not exist.
  • JEI drop tooltips no longer carry a "Recipe By: PunchThemAll" line.
  • Weighted drop selection no longer has an off-by-one bias (it slightly over-weighted the first entry and under-weighted the last — noticeable with weight: 1 fillers).
  • Random rolls now use the world's random source consistently, instead of a global RNG.

This mod has no additional files