Skip to content

Releases: ReverseEngineeringEnthusiasts/Jenny-Mod-Fapcraft

Fapcraft Build 7

Choose a tag to compare

@github-actions github-actions released this 05 Sep 22:00

Fapcraft 1.12.2 Build 7

SRG-reobfuscated + shaded (GeckoLib bundled). Drop into mods/ of a 1.12.2 instance.

Changes

_Since

  • Add first-run download prompt when no custom models installed (GitHub archive) (379c5b1)
  • Add reskin pack browser (zip/rar, any depth), fix custom-model loader abort, guard crash on missing legacy models (583d60c)
  • Fix CustomModelList click routing (was calling onMouseMove not getSlotIndex) (ded2140)
  • Fix per-row preview and < > hitbox for custom models (84e768e)
  • Fix cosmetics GUI hitboxes and per-row preview scale (855cfa4)
  • Support simple .zip drops for custom models (read directly, no extract) (97ed48e)
  • Fix Galath steve skin rendering (jar-faithful correction) (0f0b566)
  • Verify and fix JAR-ground-truth deviations + upstream credit (863f9a6)

SHA256

e3e24564ae4cf0ea90cfc6cdf094ddb0bccb117b40dd1df0dd2af6b7266c5594  dist/fapcraft-1.12.2-1.1.0.jar

Fapcraft Build 6

Choose a tag to compare

@github-actions github-actions released this 16 Aug 14:56

Fapcraft 1.12.2 Build 6

SRG-reobfuscated + shaded (GeckoLib bundled). Drop into mods/ of a 1.12.2 instance.

Changes

_Since

SHA256

1dc4212c8f3924c3e89775e8d2e9ad7606e7ede6915f9076ee8c30f356f9a27b  dist/fapcraft-1.12.2-1.1.0.jar

Fapcraft Build 5

Choose a tag to compare

@github-actions github-actions released this 16 Aug 14:02

Fapcraft 1.12.2 Build 5

SRG-reobfuscated + shaded (GeckoLib bundled). Drop into mods/ of a 1.12.2 instance.

Changes

_Since

SHA256

188019fdc0e4fefea2f50b67b3bf88af0863bb045a0bd173091988d608fc47ea  dist/fapcraft-1.12.2-1.1.0.jar

Fapcraft Build 4

Choose a tag to compare

@github-actions github-actions released this 15 Aug 15:26

Fapcraft 1.12.2 Build 4

SRG-reobfuscated + shaded (GeckoLib bundled). Drop into mods/ of a 1.12.2 instance.

Changes

_Since

  • Docs overhaul: restructure into characters/ + systems/ hierarchy, ground everything in source (78597ad)
  • Add comprehensive feature documentation: 13 separate files in docs/ covering every entity, item, action/scene, tribe system, Galath arc, GUI, custom-model pipeline, commands, packet protocol, dev features, worldgen/config, translations and sounds (082b4ab)

SHA256

4f5f46d6ed805b53a05ad782e44fcd3f102f48f17fe8a9d6a8b00cbe97d61eab  dist/fapcraft-1.12.2-1.1.0.jar

Fapcraft Build 3

Choose a tag to compare

@github-actions github-actions released this 15 Aug 14:40

Fapcraft 1.12.2 Build 3

SRG-reobfuscated + shaded (GeckoLib bundled). Drop into mods/ of a 1.12.2 instance.

Changes

_Since

  • Back up 2026-08-15 varN-rename campaign tooling: merged renamer.py CLI (report/check/apply/rename/batch/apply-maps modes, help examples), core engines, QA checks, one-off fixes/extras; all paths sanitized (no usernames/absolute paths); drop shell wrappers, epub converter, campaign maps/specs data; ignore pycache (451904a)

SHA256

4be8009dc9a4094250b868b17dd527043f974ceb8c17336ea43b21cec27b09ef  dist/fapcraft-1.12.2-1.1.0.jar

Fapcraft Build 2

Choose a tag to compare

@github-actions github-actions released this 15 Aug 14:25

Fapcraft 1.12.2 Build 2

SRG-reobfuscated + shaded (GeckoLib bundled). Drop into mods/ of a 1.12.2 instance.

Changes

Initial build

  • CI: compile MCRepack from source at build time (gitignored .class was missing on runners); target Java 8 bytecode (52) for the whole project (5e0fc24)
  • Add GitHub Actions workflow auto-building the mod on every push; print resources/banner.txt to the Forge log at preInit (d8ce8c1)
  • Fix ClothingScreen crash on headless/unsupported desktops: guard Desktop.open/browse with isDesktopSupported+Action support before use; point girl wand tutorial to web.archive.org snapshot (a7611b0)
  • Fix report.md findings: CRIT (InHandMapRenderer 4-arg recursion, lerpAngleDegrees self-recursion, KoboldTask infinite ground loop, ClothingScreen bounds, ModelData NPE, KoboldEggItem UUID), HIGH (bed/chest getter+serialization crossing jar-verified, SendBlocksPacket removeTribeBed, shouldDespawn CUM_TIMEOUT, GirlModel outfit >=, BeeScreen/HornyMeter statics, DownloadServerModelPacket stale counter), MED null-guards (lerp-end players, owner derefs, packet targets). Remove obf-generated junk: 148 unused imports, identity wrapException helpers, 21 dead constants, dead methods (GalathCoinItem cluster, setBoneHidden, getGirlTexture). Developer features kept (DebugWindow/DebugMode/update checker/UpdateEquipmentPacket). (b52cc60)
  • Add code audit report (report.md): consolidated findings from 3 package audits + jar verification status; 2 deobf bugs already fixed (null instanceof ClientProxy family, GalathFlightData comparator) (c5e82ee)
  • Rename ~24k decompiler varN tokens to readable names across all packages (4 parallel agents + collision fixes). Fix triggerFastSexAction/triggerCumAction self-comparison bug (uuid.equals(uuid), jar-verified -> interactionUuid.equals(uuid)). Restore 3 files corrupted by rename tooling (BeeScreen, GenderSwapScreen, GirlInventorySlot). (43e27ed)
  • Full javadoc pass (304/304 files + package-info): scene system, networking, client, util documented with architecture, sides, and pitfall history. Fix openGui(null) NPE (Main.instance restored in KoboldEntity/PlayerActionPacket/BeeOpenChestPacket, jar-verified). SceneDebug per-subsystem flags. (6e73a14)
  • Fix deobfuscation artifact: 'animationController' leaked into kobold tribe chat message (b64c4e5)
  • Fix scene lifecycle root causes (jar-verified): resetPose inversion, invented setDead catch, broken R-Shift UUID (9fd5d34)
  • Fix three linked scene bugs: 1. ResetGirlPacket: player noGravity/noClip cleanup now runs for ALL girls, not just AbstractPlayerGirlEntity forms. NPC scenes (slime/goblin/bia/luna) set the interacting player's physics at entry but never cleared them (the original had the cleanup trapped inside the APGE-only branch) -> players stayed gravity-free, un-hittable, glued after scenes. 2. SexSceneKeyHandler: R-Shift safety net always unlocks the player + restores physics + sends ResetGirlPacket, even when no scene action can advance (stalled scenes left the player frozen with nothing responding). 3. BaseGirlEntity.onUpdate: the corrupt-entity setDead catch now only fires for the ride-corruption NPE signature. Previously ANY tick exception deleted the girl (Jenny/Bia 'disappear + gone on reload' were girls being setDead on benign scene-action exceptions). (6e489ab)
  • Rewrite DOCUMENTATION.md: full engineering log in the jenny-mod-re README style (plain ASCII, no fancy punctuation) -- obfuscation layers, the MCRepack SRG reobfuscator we built, all 20 tools, the rename campaign (683 methods, 787 a_clash, 1007 fields to 0), the full crash saga with root causes, the git history rewrite, lessons learned (06f3dd0)
  • Rework R-Shift scene exit to PROGRESS the scene instead of snapping out: keybind now triggers triggerCumAction (plays the ending animation when the current action has a cum) then walks the chain with triggerFastSexAction to its end. Root cause of the stuck-girls bug: the old keybind called resetCameraAndPhysics, whose setCurrentAction(NULL) is REFUSED server-side while anchored ('prevented a potential animation break') — player got snapped out but the girl stayed mid-scene, stuck standing and uninteractable. Fixes stuck states after scene exit (49e6f87)
  • Harden BaseGirlEntity.onUpdate against corrupt old-world entity state: (1) ride guard clears stale/dead rides (try/catch since vanilla getters can throw), (2) super.onUpdate wrapped — a corrupt entity that makes vanilla's tick NPE is removed (setDead + log) instead of crashing the whole server tick. Fixes repeated old-world crash on the same corrupt bee. Verified bytecode: both exception tables present (Throwable), getRidingEntity/dismountRidingEntity SRG-correct (be258ed)
  • Add ride-corruption guard in BaseGirlEntity.onUpdate: clear stale/dead rides before super so old worlds with corrupt entity state (left by the pre-fix snap-out bug) load instead of NPE-crashing vanilla's passenger handling. Verified bytecode: getRidingEntity(field check) -> dismountRidingEntity before super.func_70071_h_ (3fe1566)
  • Fix deobf self-recursion bugs: AbstractPlayerGirlEntity.isAnchored was a bogus self-recursive override (original o_clash456 camera-scene check, now isSceneActive calling the real getter); GoblinPlayerEntity.isAnchored recursed (now super.isAnchored || hasOwner). These corrupted AI/interaction/camera state everywhere (stuck walking, can't interact, disappearing girls). GirlCameraHelper camera check now uses isSceneActive (877a300)
  • Fix GalathEntity.hasMaster infinite recursion (deobf bug: body was self-call; now delegates to super — matches original k_clash637->J_clash526) + R-Shift scene exit now progresses to natural end via resetCameraAndPhysics (client flow -> ResetGirlPacket resetPose=false) instead of hard ResetGirlPacket(true) snap-out that broke girl state (disappearing models, stuck scenes, steve dummy). Fixes StackOverflowError on world tick + scene-exit state corruption (5d96987)
  • Fix server NPE on player login: PlayerIds.onPlayerLoggedIn + InHandMapRenderer + GirlCameraHelper called rebuildPlayerGirlTable (client-only camera reset, derefs Minecraft.getMinecraft().player) — the original bytecode calls C_clash585 (server-safe table rebuild). Renamed the client method to resetPlayerGirlCamera and pointed all 4 C_clash585 sites at rebuildPlayerGirlTableFromWorld. Fixes NPE at AbstractPlayerGirlEntity.rebuildPlayerGirlTable:205 on world load (6233c2c)
  • Fix MCRepack v4: forge classes (net/minecraftforge) keep their own MCP method names at runtime — only remap forge-owner calls that resolve to a vanilla net/minecraft method in the hierarchy (LootTableLoadEvent.getName stays getName; ClientCommandHandler.registerCommand -> func_71560_a). Added extra-jar hierarchy scan (forge srg + MCP jars) for owner resolution. Fixes NoSuchMethodError: LootTableLoadEvent.func_186649_a (9dc5f73)
  • Fix MCRepack v3: interface-aware owner resolution — walk implemented interfaces (ICommand, IResourceManagerReloadListener) when resolving duplicate (mcp,desc) names. Fixes AbstractMethodError: CommandWhitelistServer/CommandSetModelCode/CommandFuta getName->func_71517_b and GeckoLibCache onResourceManagerReload->func_110549_a (bdced7c)
  • Fix MCRepack SRG reobfuscation v2: owner-aware resolution for duplicate (mcp,desc) method/field names + hierarchy walk through mod subclasses. Fixes NoSuchFieldError (Entity.world->field_70170_p not field_73235_d; mod-declared fields no longer mangled) and NoSuchMethodError (ClientCommandHandler.registerCommand->func_71560_a via net/minecraftforge owner; getResourceDomains->func_110587_b; BufferedReader.close + shadowed jackson never remapped) (b69ef4f)
  • Fix MCRepack SRG reobfuscation: remap inherited MC fields through mod-subclass owners (Item.maxStackSize -> field_77777_bU) + resolve duplicate getMinecraft SRG names by declaring class (func_71410_x over stale func_193295_e/func_192989_b). Fixes NoSuchFieldError/NoSuchMethodError at game launch (eb74637)
  • Add universal build + push scripts (build.sh/.bat, push.sh/.bat) with intelligent Java/Maven discovery (JAVA_HOME, PATH, SDKMAN, system dirs; prefers modern JDK for MCRepack, PREFER_JAVA=8 override), jar -> dist/, banner bundled in jar + README build docs (6417fd5)
  • Deobfuscate final methods + inner classes (Day 2) (ddae28d)
  • Deobfuscate single-letter methods (Day 2, cont.) (3b4c744)
  • Deobfuscate single-letter methods (Day 2) (3361346)
  • Formatting pass: normalize CFR decompiler whitespace artifacts across 296 files (collapse blank-line runs, fix package/import/class header spacing, strip trailing whitespace); whitespace-only, verified with git diff -w (13966c0)
  • Deobfuscate a_clash method tokens (Day 1) (6e9f3c0)
  • Deobfuscate all single-letter fields project-wide (Day 1) (0bda19e)
  • Add reusable remap tooling: rename_class (context-aware type renames), rename_methods, rename_params (brace-matched), add_javadoc, fix_imports (CFR header normalization), vote_match/match_oracle (oracle fingerprinting) (1d1c1d0)
  • Deobfuscate classes, entity hierarchy & core method renames (Day 1) (0b10715)
  • Add prompt.txt: full handoff/todo doc with tooling usage, remaining cleanup (vars+javadoc), and pitfall rules (8eacb41)
  • MCP deobfuscation: MCP-named MC+geckolib compile jars, SRG reobfuscation build step (tools/MCRepack + stable_39 mappings), func_XXX/field_XXX -> readable names project-wide (c10d2bd)
  • Document cleanup pass (dead wrappers + renames) (eb3d9c2)
  • Deobfuscate early obfuscated methods (Day 1) (88ff1f1)
  • Cleanup: remove 232 dead exception wrappers + rename 60 obfuscated methods to meaningful names (getCurrentAction, getTargetPosition, setInteractionPlayerUUID, isAnchored, etc.) (67372b4)
  • Fix GENERAL scene-killer: l_clash514 invented hasPlayer reset branch (not in jar) reset every hasPlayer scene action to NULL on first tick (6825e14)
  • Fix ResetGirlPacket boolean inversion (a==true=full reset per jar) - root cause of all sex scenes dying; keybind sends (uuid,true) + resets any...
Read more