File Details
arcadia-pets-1.2.8
- R
- Apr 30, 2026
- 526.58 KB
- 11
- 1.21.1
- NeoForge
File Name
arcadia-pets-1.2.8.jar
Supported Versions
- 1.21.1
Curse Maven Snippet
## [1.2.8] - 2026-04-28 (latest)
### Fixed
- **Sniffer pet item-dupe exploit (allowlist-based fix)** — A pet Sniffer's brain memory was only cleared every 600 ticks (~30 s) by `suppressSpecialBehaviors`, leaving a wide window in which the vanilla dig state machine could complete a full SCENT → SEARCH → DIG cycle and drop items from the `sniffer_digging` loot table — which on datapack-extended servers became "free arbitrary blocks at the sniffer's feet" (a genuine dupe vector, not just seeds/pods). New `PetEventHandler.onSnifferDigDrop` intercepts `EntityJoinLevelEvent` for any thrower-less `ItemEntity` spawning within 1.5 blocks of an active pet Sniffer and **cancels the spawn unless the item id is on a configurable allowlist** (`PetPoolConfig` → `[sniffer].dig_allowlist`). Default allowlist contains the basic vanilla ores (raw_iron / raw_gold / raw_copper / coal / diamond / emerald / redstone / lapis / quartz / netherite_scrap and their ore-block forms) so players retain a controlled, useful drop set while every other server-spawned item near a pet sniffer is blocked. Player-thrown items (non-null thrower) are unaffected.
- **Iron Will (Iron Golem) reflected zero damage when the owner wore good armour** — the skill computed thorns as `event.getNewDamage() * percent`, where `getNewDamage()` is the post-armour, post-resistance HP loss. Full diamond + protection IV reduces a 10-damage hit down to 0–1, so the reflect collapsed to 0 even on heavy attacks. Now uses `event.getOriginalDamage()` (the attacker's incoming hit) and floors the reflected amount at 1 — the pet finally feels like a guardian against armoured hits.
### Correctifs
- **Exploit de duplication d'items via le pet Sniffer (correction par allowlist)** — La mémoire cerveau d'un pet Sniffer n'était nettoyée que toutes les 600 ticks (~30 s) par `suppressSpecialBehaviors`, laissant une fenêtre large dans laquelle la machine d'état de dig vanilla pouvait compléter un cycle SCENT → SEARCH → DIG et faire dropper des items de la loot table `sniffer_digging` — qui, sur les serveurs avec datapacks étendus, devenait littéralement « des blocs arbitraires gratuits aux pieds du sniffer » (un vrai vecteur de dupe, pas juste des graines). Le nouveau `PetEventHandler.onSnifferDigDrop` intercepte `EntityJoinLevelEvent` pour tout `ItemEntity` sans lanceur apparaissant à moins de 1,5 bloc d'un pet Sniffer actif et **annule le spawn sauf si l'id de l'item est dans une allowlist configurable** (`PetPoolConfig` → `[sniffer].dig_allowlist`). L'allowlist par défaut contient les minerais vanilla de base (raw_iron / raw_gold / raw_copper / coal / diamond / emerald / redstone / lapis / quartz / netherite_scrap et leurs formes en bloc) — les joueurs gardent un set utile et contrôlé tandis que tous les autres items server-spawn près d'un pet sniffer sont bloqués. Les items lancés par les joueurs (lanceur non-null) ne sont pas affectés.
- **Volonté de Fer (Golem de Fer) renvoyait 0 dégât avec une bonne armure** — la compétence calculait les épines depuis `event.getNewDamage() * pourcentage`, où `getNewDamage()` est la perte de HP après armure et résistance. Diamant complet + protection IV réduit un coup de 10 à 0–1, donc le renvoi tombait à 0 même sur des attaques lourdes. Utilise maintenant `event.getOriginalDamage()` (le coup entrant de l'attaquant) et plafonne le renvoi à 1 minimum — le pet redevient enfin un gardien utile contre les coups armurés.

