T-Rex Mod 1.0.56 - Animated City Citizens
Minecraft Java 1.20.1 / Forge 47.x

INSTALL
Back up your world. Replace the previous T-Rex mod JAR with this JAR.
Do not keep multiple T-Rex mod versions installed.
Keep gltf_renderer_api-1.0.0-beta.6.jar installed. Restart Minecraft.
For multiplayer, update the server and all clients.
Run /the real end with commands enabled to replay/test the ending.

CHANGES IN 1.0.56
- Adds the custom rexmod:city_citizen entity using the two user-supplied male
  locomotion models: Male Basic Walk (30 frames loop) and Male Running
  (20 frames loop), authored by Denys Almaral. Original licenses included.
- Automatically populates the generated city with up to 12 citizens after
  arrival, gradually adding up to two per second. Existing city ground
  markers are supported too. A per-loaded-level cap of 96 limits auto-spawns.
- Citizens walk along paved outdoor streets/sidewalks. Their grounded entity
  collision box and Minecraft ground navigation handle blocks and gravity.
  Spawn checks require solid paving, headroom, open sky, no liquid and a
  clear 0.64x1.88 space near the stored street height, not a rooftop heightmap.
- When the owned city T-Rex returns, citizens switch to the supplied running
  clip and choose routes away from its position. Nearby returning city Rexes
  also frighten unowned/manual citizens. A five-second fear memory avoids
  walk/run flicker; they calm down after the threat is gone.
- Navigation targets and all path nodes must remain on paving, outdoors,
  within two blocks of city ground and inside the city boundary. Escape paths
  that first move substantially closer to the Rex are rejected. A blocked
  citizen can pause rather than walk through a wall or jump to a rooftop.
- Walking/running clip timing follows actual horizontal movement; animations
  stop advancing when blocked/stationary. No artificial root-motion drift.
- Citizen home/ownership is saved. The cumulative spawn count is saved on
  the owned city anchor, not recomputed from currently loaded citizens, so
  walking away and returning/reloading chunks does not duplicate the crowd.
  Dead citizens are not automatically replaced beyond the initial population.
- No new chat/title announcements. Existing T-Rex AI still targets players;
  this adds civilian fleeing, not a citizen combat or trading system.
- The 1.0.55 clean-neck texture, camera fixes, ending, and T-Rex physics/
  block-contact code remain unchanged. Both clients and server need this
  version in multiplayer because it adds an entity type.

CITIZEN TESTS (OFFLINE, NOT IN-GAME)
- Java 17-target compilation and ASM verification: 40 patched/new classes.
- Both 31-joint glTF assets pass validation with zero errors. The source
  exporter leaves 24 non-fatal warnings per model: non-root skinned mesh
  hierarchy and unused influences with zero weight. The original hierarchy
  is deliberately preserved. The illegal animation byteStride is repaired
  by tightly repacking accessors without changing their sampled values.
- Actual supplied glTF API loader: 121 animated bounds samples per clip,
  including loop endpoints, all finite. These are conservative skin bounds,
  not measurements of the actual rendered human's dimensions.
- Inspected actual-model walk and run renders for orientation/feet/scale.
- 200,000 movement/animation wrap cases, 360 escape-direction cases, city
  bounds and stationary/speed checks pass in the pure-rules harness.
- Existing classes, T-Rex rig/texture, helicopter scene and gameplay functions
  are verified unchanged in the packaged JAR.
- Minecraft was not launched. Runtime spawning/pathfinding/multiplayer have
  been compiled and reviewed, but not exercised inside a live game/server.

MANUAL CITIZEN TEST
- Enter the generated city normally; population fills only on safe loaded
  streets. Wait a few seconds. During the 35-second exploration phase the
  civilians walk. They should flee when the city T-Rex returns (including
  its five-second attack warmup).
- Optional operator test on a street: /summon rexmod:city_citizen ~ ~ ~
  A manual citizen is not counted as part of an owned city's population;
  it still flees from a returning city T-Rex within 72 blocks.
- After walking away/rejoining, verify citizens were saved rather than a
  second crowd being added. After the Rex dies, fear expires in five seconds.

CHANGES IN 1.0.55
- Completely removes the added neck/throat fold texture, rather than moving
  it again. Restores the clean charcoal skin from 1.0.52 across the neck.
  The actual neck mesh and its original fine skin detail remain intact.
- Removes the added top-center forehead plates marked X. The center snout
  plates below the brow junction remain, with a soft transition at the top.
- Corrects the outer brow plate ends with rounded, source-derived cap detail
  that follows each eyebrow contour. Preserves the inner brow scale clusters.
- Applies the same changes to the normal T-Rex and the helicopter cutscene.
- Preserves white eyes, dark sockets, teeth, overall charcoal palette, all
  previous code fixes, camera behavior and collision/physics behavior.
- Texture edit only: no mesh/UV/rig/animation or hitbox changes.

1.0.55 VALIDATION (OFFLINE, NOT IN-GAME)
- Inspected actual-mesh front and three-quarter renders of the final texture.
- Verified every valid neck atlas texel (rest z below 3.75) matches the clean
  1.0.52 base skin exactly, and the crossed top-center forehead is restored.
- Unchanged alpha channel and 699 white eye-core texels; 2048x2048 RGBA atlas.
- Cutscene passes Khronos validation with zero errors/warnings; supplied glTF
  API loader passes 161 animated pose/bounds checks.
- All scene non-image geometry/skin/animation/camera data and MD500 material
  remain byte-identical; all Java classes and gameplay functions unchanged.
- Minecraft was not launched; preview lighting is an offline model render.

CHANGES IN 1.0.54
- Corrects placement according to the marked-up 1.0.53 preview.
- Broadens the brow scale clusters into tapered, inward-pointing bands above
  the eyes, rather than a narrow line on the top edge of each eyebrow.
  Source sampling follows the original reference's actual brow plate chain.
- Removes the long diagonal crease pattern from the upper/back neck marked X.
- Restricts added folds to the lower front neck/throat behind the jaw, in the
  circled location. Blends into the untouched upper neck and shoulder skin.
- Preserves the center snout plates, white eyes, dark sockets, teeth and
  charcoal palette. No guide lines or annotations are included in the texture.
- Uses the same revised skin for the normal T-Rex and cutscene model.
- Texture placement only: no changes to geometry, animations, camera,
  gameplay code, hitboxes, tail physics or chest/head block reactions.

1.0.54 VALIDATION (OFFLINE, NOT IN-GAME)
- Inspected actual-mesh front and three-quarter rendered previews.
- Verified 2048x2048 RGBA atlas, unchanged alpha and 699 white eye-core texels.
- Cutscene: Khronos validation zero errors/warnings and supplied glTF API
  loader passes 161 animated pose/bounds evaluations.
- Existing scene geometry/skin/animation/camera data and MD500 material remain
  byte-identical. All Java classes, model binary and gameplay functions unchanged.
- Minecraft was not launched; these are offline checks and model previews.

CHANGES IN 1.0.53
- Adds the missing detail marked in the user's reference: segmented center
  snout plates, scale clusters along the Y-shaped brow ridge, and deep
  diagonal throat/neck folds with subtle raised-edge highlights.
- These are painted texture details sampled from the original UNMARKED
  reference image and anatomically remapped into the existing UV layout.
  The annotated white guide lines are not included in the skin.
- Snout mapping follows the muzzle surface; brow sampling is limited to
  the source scale clusters, excluding the reference's eyes and background.
- Neck folds wrap around the throat/sides and fade into the shoulders.
  Deep creases remain charcoal rather than broad white zebra markings.
- Preserves the previous small white eyes, dark eye sockets, teeth, nostrils,
  overall charcoal palette and existing fine skin detail.
- Matches normal entity and helicopter cutscene skin. Eye emission remains
  confined to the original 699 white iris/pupil atlas texels.
- Texture/albedo relief only: does not add physical plates, displacement,
  change the head silhouette, alter collision meshes or replace animations.
- All Java classes, rig/UV data, gameplay functions, camera settings and prior
  tail/chest/head contact behavior remain unchanged from 1.0.52.

1.0.53 VALIDATION (OFFLINE, NOT IN-GAME)
- Visually inspected actual-mesh front and three-quarter close-up renders.
- Verified 2048x2048 RGBA atlas, unchanged alpha and white eye-core pixels.
- Cutscene passes Khronos validator with zero errors and zero warnings.
- Supplied glTF API loader passes 161 animated pose/bounds checks.
- All original non-image scene buffer views, mesh/skin/animation/camera data
  and the helicopter material remain byte-identical to the preceding scene.
- Minecraft was not launched; these are offline model previews and tests.

CHANGES IN 1.0.52
- Repaints the active 2048x2048 T-Rex UV atlas to match the supplied horror
  reference's palette: charcoal skin, paler muzzle and throat, dark sockets,
  and small white eyes. Removes broad brown tiger/leopard markings while
  retaining subtle detail from the existing skin texture.
- Fits reference facial detail to the existing mirrored head UVs. Retains
  tooth detail and anatomical nostrils. This is a reference-inspired texture,
  not an exact reconstruction of the illustration or a change to head shape.
- White iris/pupil texels use the mod's existing alpha-coded fullbright eye
  shader path. The unused separate white eyes PNG is not relied upon.
- Updates the T-Rex's embedded cutscene diffuse texture too, with a standard
  eye-only glTF emissive map. The supplied glTF API supports that material.
- Model vertices, UV coordinates, bones, animations, authored camera,
  helicopter texture, all Java classes, gameplay functions, and previous
  collision/camera fixes remain byte-for-byte unchanged.

TEXTURE TESTS (OFFLINE, NOT IN-GAME)
- Inspected actual-mesh front and three-quarter rendered previews.
- Verified RGBA 2048x2048 atlas, monochrome RGB, and exactly 699 emissive
  eye-core texels (alpha 220); all other atlas texels have alpha 255.
- Updated GLB passes Khronos validator: zero errors and zero warnings.
- Actual supplied glTF API loader passes 161 animated pose/bounds checks.
- Every original non-image GLB buffer view is byte-identical after repacking;
  skin palettes, meshes, animation data, camera and MD500 material unchanged.
- Minecraft was not launched; lighting and post-processing can differ in game.

CHANGES IN 1.0.51
- Upgrades torso/chest and head/neck block reactions. Uses 108 mobile torso
  and 216 head/neck/jaw surface probes derived from the actual model vertices
  with their four original skin weights, rather than a few fixed probe points.
- Uses actual block collision shapes, previous-frame swept surface samples
  and bounded translation/yaw/pitch/roll projection. Contact correction applies
  immediately; a critically damped spring releases the pose when clear.
- The torso/chest can lean, compress and recoil. The head/neck can independently
  turn, tuck or retract. Skull and jaw receive the same final rigid transform,
  preserving the original jaw opening and bite animation instead of closing it.
- Fixed leg/hip/neck-base blend bands are excluded from mobile probes so the
  solver does not attempt to pull a fixed attachment away from its anchor.
  Bone matrices for feet/legs and the previously solved tail remain unchanged.
- Query cache refreshes at 20 Hz or on leaving cached contact bounds; adult
  and baby scales and the actual smoothed render yaw are respected.
- Visual reactions only: normal entity collision box, server AI, damage and
  block destruction are unchanged. Tight enclosure/deep penetration can still
  exceed the bounded bend/recoil range. Not a whole-mesh rigid body simulation.
- Authored cutscenes, tail physics, turn lean and no-pulse camera are unchanged.

BODY / HEAD TESTS (OFFLINE, NOT IN-GAME)
- 60 front/side/ceiling shallow-contact fixtures pass at five render yaw angles
  and adult/baby scale with the actual 12-pass solver setting. Maximum measured
  probe penetration is under .04 blocks in these controlled fixtures.
- Both profiles react to swept thin-plane contacts and settle smoothly after
  release. Clear, zero-offset contact state preserves the exact authored pose.
- All 699 original animation poses remain finite with combined tail, torso and
  head deformation. Feet/leg matrices and tail output are not overwritten.
- Jaw-to-skull relative-transform error stays below 3e-5 (measured maximum
  about 2.73e-7), preserving authored jaw articulation under head recoil.
- Tail-contact, no-pulse and turn-lean regression tests still pass.
- Java 17-target compilation and ASM verification: 34 patched/new classes.
  Math tests use the original rig and actual compiled deformation code; the
  Minecraft block-query adapter is compiled/verified, not run inside the game.

CHANGES IN 1.0.50
- Upgrades the existing 12-joint normal-renderer tail springs with stronger
  turn and acceleration lag, softer tip response and gentle gravity sag.
  Uses damped integration with substeps <=1/120 second and filtered velocity.
- Replaces sparse, smoothed tail contacts with tapered capsule samples along
  every segment, actual block collision-shape AABBs, joint-limited bending
  and previous-frame swept sample tests for thin/fast-moving contacts.
- Contact correction applies immediately instead of smoothing into a wall.
  Offsets ease out when released. Nearby block shapes are cached, refreshed
  at 20 Hz or when the deformed/swept bounds leave the cache.
- Supports adult/baby scale and smoothed render body yaw. Resets stale spring
  and contact state on death, large teleports and time discontinuities.
- These are visual block collisions: no new tail hitbox, tail damage, block
  breaking, entity pushing or server AI changes. Deep enclosure or a body
  forcing the tail into a wall can still exceed its bending limits.
- Authored helicopter/jumpscare clips are unchanged. Turning tilt, no-pulse
  FOV, quiet announcements, sounds, model mesh and other bones are retained.

TAIL TESTS (OFFLINE, NOT IN-GAME)
- Wall, floor and thin-obstacle contact depth reduced below .025 blocks in
  the test fixtures; ten yaw/adult/baby-scaled contacts pass too.
- A swept thin-wall fixture causes a deflection even when the current sample
  has already passed beyond the thin wall between frames.
- All 699 original idle/walk/run/attack poses remain finite after deformation,
  and all matrices outside tail joints 152..163 remain unchanged.
- Spring response tested at 20/30/60/144 fps; teleport reset verified.
- The 30,000 no-pulse and turn-lean regression tests still pass.
- Java 17-target compilation and ASM verification: 26 patched/new classes.
  The pure math is tested directly; the Minecraft block-query adapter is
  compiled/bytecode-verified, not exercised in a running Minecraft world.

CHANGES IN 1.0.49
- Restores only first-person turn-driven camera roll. Uses the original
  DynamicCamera's turn-rate coefficient plus 15% (0.012 -> 0.0138), with an
  8-degree maximum instead of 7. Turn-speed/roll smoothing stays at 14/9.
- Tilt follows horizontal turns and eases back to level after turning stops.
  It does not add yaw/pitch offsets, strafe lean, landing kicks, random shake,
  an independent bob, dynamic zoom or a repeating pulse.
- A single CameraFx dispatch avoids stacking two turn handlers. Turn lean
  resets for menus, death, world/player changes, long frame gaps, large view
  jumps, third-person view, scripted jumpscares and the Blender ending.
- The no-pulse fixed world FOV and heartbeat removal remain. The authored
  Blender camera, scene placement, sounds, gameplay and quiet text remain.
- Turn-only tests cover five frame rates, +15% gain, smooth idle settling,
  10,000 bounded random turns, angle wrap, discontinuity reset, actual handler
  roll-only dispatch and exclusion from menus/third-person/ending shots.
  The 30,000 no-pulse FOV regression cases also pass. These tests use pure
  math and minimal event/Minecraft stubs, not a running game client.

CHANGES IN 1.0.48
- Disables the vanilla movement FOV multiplier (sprint/speed attributes,
  flight and item-use zoom), which previous camera patches left enabled.
- Outside the authored helicopter ending, the world projection uses your
  configured FOV directly. Sprint/stop transitions, dynamic zoom, additive
  scare FOV and death/water FOV offsets cannot make that projection pulse.
- Removes the AttackTension heartbeat border entirely, including its animated
  width/alpha, legacy zoom helpers and extra shake. No tension scan runs.
- Preserves the Blender ending camera/FOV and normal hand projection. Explicit
  jumpscare positioning/rotation remains, without its additive FOV beat.
- Does not write or permanently change saved camera/accessibility options.
  Standard view bobbing is still controlled by your own Minecraft setting.
- This is a camera/HUD change only. Movement speed, stamina, T-Rex AI, sounds,
  event triggers, scene animation and the quiet-announcement patch remain.

CHANGES IN 1.0.47
- Removes routine helicopter chat instructions/boarding announcements, city
  welcome/revenge/countdown text, ladder-failure titles, and the ending title
  and success subtitle. Removes the Air support incoming chat announcement.
- Suppresses the /the end function command-summary feedback for this command
  only; no global chat or command-feedback settings are changed.
- Technical errors and placement-failure explanations remain available.
- Timers, boarding, sounds, T-Rex behavior and camera playback are unchanged.

CAMERA AND GROUND FIXES RETAINED FROM 1.0.46
- Uses the active Camera from the supplied helicopter attack.blend, evaluated
  at 30 fps from frame 1 through 211 (7 seconds). Includes position, animated
  quaternion orientation, roll and the 50 mm lens / vertical field of view.
  Camera and actors share the same ground translation, rotation and scale.
- Synchronizes the original T-Rex animation to that Blender timeline; removes
  the invented 1.5-second animation lead-in. The added MD500 helicopter is
  placed behind the T-Rex to fit the authored lens during the attack.
- Preserves the authored 16:9 framing with aspect-correct bars when needed.
- Never uses the player's airborne Y as the scene height. Does not raise the
  scene onto roofs, and has no alternate overhead/orbit camera fallback.
- Saves an owned street-height marker for future city arrivals. Older cities
  can use their landed helicopter's street level; otherwise placement searches
  natural terrain with four solid natural layers rather than accepting roofs.
- Chooses a supported ground footprint with empty space for the T-Rex, checks
  29 sampled helicopter flight volumes, and checks the camera eye and subject
  sightlines. Tries four common scene rotations, keeping the authored camera
  relative to the actors. The complete scene may relocate to an open area.
- If no safe ground site exists, playback is refused with a message instead
  of floating or clipping into a building. A new obstruction during playback
  cancels the shot and restores the player's original position and game mode.
- Retains the 1.0.45 normal-gameplay camera fix: no forced ambient turn-roll,
  strafe lean, shake, landing kick or fear/speed-driven FOV pulses. Normal
  mouse-look/preferences and explicitly scripted jumpscares remain.
- Retains the 64-joint GPU palette repair: all 90 original animated bones and
  all original T-Rex triangles remain, split into palettes of 64 and 49 joints.
- Keeps the dedicated spectator camera, player-state recovery, scene-only HUD
  suppression and rex_vision suspension. Normal mod effects resume afterward.

TRIGGERS
- Survive 3,600 active city chase gameplay ticks in Survival/Adventure
  (3 minutes at 20 TPS). If space is obstructed, placement retries periodically.
- Early death of the associated city T-Rex also requests the ending.
- /the real end plays/replays it manually, including as a visual preview with
  no nearby T-Rex. Completion kills the associated real T-Rex when present.
- /the end retains its original helicopter recall behavior.

VALIDATION / LIMITS
No Minecraft client or server was launched here. No in-game recording is
claimed. The following are isolated code/asset tests, not gameplay testing:
- Java 17-target compilation and ASM verification for 34 patched/new classes.
- Khronos glTF validation: zero errors and zero warnings.
- Actual supplied glTF API loader: model loads and 161 animated pose/bounds
  evaluations pass. Its isolated test uses a ResourceLocation name shim;
  no OpenGL rendering or game networking is tested by it.
- 844 camera transforms (211 frames x four scene rotations) agree with the
  evaluated Blender camera to <1e-7 world units and <2e-6 direction-vector
  error; original lens and up/roll are included.
- Pure-Java placement tests reject enclosed/unsupported/blocked views and
  find ground-only placements for six starts using obstacle columns extracted
  from all 36 supplied city structure templates. This conservative column
  simulation is not the game's actual voxel collision engine.
- Current camera handlers pass 30,000 isolated no-pulse event cases: stable
  configured world FOV across randomized dynamic inputs; movement multiplier
  fixed at 1; hand and Blender-ending FOV unchanged; no additive/heartbeat
  zoom; scripted positioning isolated. These use minimal event/state stubs,
  not a Minecraft client. The older 1.0.45 unchanged-input FOV test is replaced
  because the normal world projection now intentionally uses configured FOV.
- ZIP integrity and required entries verified after packaging.

Actual GPU rendering, chunk/entity packet synchronization, server performance,
city framing and multiplayer behavior still need testing in your Minecraft
installation. If a shot is refused, move to an open street/clearing and retry.

Maintenance sources: rexmod-ending-sources/
Original uploaded mod content and credits have been preserved.
