File Details
silence-in-the-forest-0.5.1+26.1.2.jar
- R
- Jun 22, 2026
- 155.76 KB
- 51
- 26.1.2
- Fabric
File Name
silence-in-the-forest-0.5.1+26.1.2.jar
Supported Versions
- 26.1.2
Curse Maven Snippet
Changelog
[0.5.1] — 2026-06-22
Fixed
-
Death vignette — replaced the broken
RenderPipelines.VIGNETTEblit (which rendered as a uniform full-screen overlay) with a programmatic alpha-gradient texture drawn viaGUI_TEXTURED. Centre is fully transparent; edges darken proportionally to countdown progress. -
Hatched block textures missing — five PNG textures for hatched infected oak variants were absent from the 26.1.2 build, causing the missing-texture checkerboard at hatch time.
[0.5.0] — 2026-06-22
Added
-
Village infection system — plains villages generate with a configurable chance of already being infected. Corrupted oak blocks spread outward over days, activate nearby trees, and convert villagers into Village Shadows on hatch.
-
Village Shadow entity — a hostile mob that replaces consumed villagers. Wears a skull mask and tattered cloth, patrols within the ruins of its former home, and attacks players on sight. Intentionally does not extend
Monsterso iron golems — having no villagers left to protect — do not proactively retaliate. -
village_infection_rateconfig option — controls the per-chunk seed probability (default 0.15). Set to 0 to disable village infection entirely. -
/sif debug villages— lists all recorded infected village centers sorted by distance to the player. -
/sif debug hatchin <seconds>— reschedules all infected blocks to hatch in N seconds, for testing the cascade without waiting days.
Fixed
-
VashtaShadow cloth layer — replaced
coloredCutoutModelCopyLayerRender(which forcesentityCutout) with directsubmitModelcalls usingmodel.renderType()(entityTranslucent), matchingPlayerModel's declared render type. Tattered cloth now renders correctly on the 26.x render graph. -
VillageShadow cloth layer —
EntityRenderDispatcher.getRenderer()has a fast-path forAvatarRenderStatethat bypasses the entity-type registry and routes to the vanilla player renderer. Extended the existing mixin to interceptVILLAGE_SHADOWsoVillageShadowRenderer(and its cloth layer) is actually used.
Port notes (MC 26.1.2)
This is the first release on the MC 26.x branch. The 1.20.1 build continues on master at version 0.4.x. Key rendering changes required for 26.1.2:
SubmitNodeCollectordeferred render graph replaces directBufferBuildercalls.- Any non-player entity using
AvatarRenderState+PlayerModelrequires a mixin intercept onEntityRenderDispatcher.getRenderer()to bypass the vanilla player-renderer fast-path. ClientAsset.ResourceTexture+PlayerSkin.insecuresupply a fixed skull texture independent of player skin resolution.
[0.4.0] — 2026-06-17
Added
-
JSON config file — server-side settings now live in
config/silence_in_the_forest.jsonand are loaded on startup. All values are clamped and written back on load so new fields appear automatically in existing configs. Configurable fields: death countdown, sprint-escape duration, hatch min/max days, proximity radius and window, night multiplier, shadow patrol radius. -
Grave soul particles — the
vashta_graveblock emits drifting soul particles above it (viaanimateTick) so the grave is visible from a distance without coordinates. -
Soul compass — on respawn after a marked death, the player receives a Soul Compass pointing to their grave (lodestone compass with
LodestoneTracked: false, no real lodestone required). Destroying the grave block also removes the compass from the breaker's inventory; breaking the grave before the player respawns cancels the pending compass. -
Grave drops bones —
vashta_gravenow drops 1–3 bones when broken instead of the block itself. -
Shadow companion animation — the second-shadow companion entity now mirrors the tracked player's full limb animation (walk cycle, arm swing, body poses) via
PlayerModel.setupAnim, so its silhouette matches the real player under shaders. -
Shadow debug commands (cheats required): -
/sif debug shadow visible— toggles the companion entity visible with a Steve skin for in-game tuning -/sif debug shadow tilt <0–30>— sets the companion's sideways lean in degrees (live, no restart) -/sif debug shadow distance <0.1–3.0>— sets the perpendicular offset from the player in blocks (live)
Changed
- Shadow companion defaults — tilt 30°, distance 0.4 blocks (tuned from in-game testing).
- Shadow companion scale — companion model now renders at the correct 0.9375× scale to match the vanilla player renderer. Companion entity sized to player proportions (0.6 × 1.8).
- Shadow companion lag fix — position was frozen at spawn because
putNonPlayerEntitydoes not add entities to the tick list. Fixed: position is now pushed directly each render frame viapushPosition(), bypassing the broken tick path.
[0.3.0] — 2026-06-17
Added
-
Vashta Shadow skin rendering — the shadow mob now wears the dead player's actual Minecraft skin. - Per-region cloth tinting: sleeve, pants, and jacket colors are sampled directly from the player's skin texture via GPU readback (
glGetTexImage) and applied to the tattered cloth overlay. Outer-layer UV regions are checked first (with a minimum opaque-pixel threshold to avoid sparse/dark border pixels skewing the average); falls back to the base layer if the outer layer is too sparse. - Skin resolution: usesPlayerInfo.getSkinLocation()as a fast path (available immediately in-session), then firesSkinManager.registerSkinsonce to self-correct if PlayerInfo still held a loading placeholder. Offline fallback (save/reload with the player not in the session) uses asyncfillProfileProperties→registerSkinscallback. - Caches resolved skin and tint values per UUID; invalidates tint cache when a confirmed skin arrives, so colors re-resolve on the next frame. -
Shadow inventory — the Vashta Shadow carries the dead player's full inventory (36 main + 4 armor + 1 offhand slots). Items drop in full when the shadow is killed — the player must hunt down their own remains to recover gear. Inventory persists across world saves via NBT.
-
Grave marker block — a simple carved-bone marker block (
vashta_grave) is placed at the death position as a landmark. Drops itself when broken. Replaces the previous chest-like grave block entity. -
Death coordinates in chat — on death, the player receives a
[SiF] Your remains haunt X, Y, Zmessage so they can navigate back even if the grave is out of sight.
Changed
- Second shadow offset — positional side offset increased from 0.4 to 0.6 blocks (perpendicular to player facing) so the double shadow reads as clearly distinct rather than a subtle blur.
- Second shadow yaw skew removed — companion now faces the same direction as the player (with the existing rotation lag), giving a clean parallel double shadow instead of a tilted/angled silhouette variant.
- Grave block simplified —
VashtaGraveBlockandVashtaGraveBlockEntityremoved; replaced with a plainBlockusing bone block sound and no block entity. The shadow entity now owns the player's inventory, not the grave block.
[0.2.0] — 2026-06-16
Added
- Second shadow companion — a marked player now trails a second, subtly-wrong shadow. - Outside Iris (or with no shaderpack active), renders as the original flat blob-shadow quad — checked live each frame via Iris's
isShaderPackInUse()API (reflection-based, no hard dependency), so toggling a shaderpack on/off mid-session switches behavior immediately. - Under an active Iris shaderpack, instead spawns a client-only, never-networkedShadowCompanionEntityrendered with a fully invisible (zero-alpha translucent) player model, so Iris's shadow pass still picks up its depth geometry and casts a real, lit shadow. - Position tracks the player exactly plus a fixed sideways offset (avoids sitting on top of the player, which previously caused depth-buffer "cutout" artifacts through water and the player's own skin overlay layer). - Facing lags behind the player's actual yaw with a fixed skew, lerped wrap-safe each frame, so the companion turns late and never lines up with the player's own shadow. - Leans slightly (10°) to keep the silhouette from ever being a clean duplicate, while staying upright enough that the cast shadow doesn't read as visibly shortened or thin.
Changed
- Debug commands gated behind cheats —
/sif debug ...(mark, unmark, immune, hatchnow, etc.) now requires permission level 2, the same tier as vanilla's/gamemodeand/give. Previously usable by any player; now only reachable by ops, or a singleplayer host with "Allow Cheats" enabled.
[0.1.1] — 2026-06-14
Added
-
Vashta Shadow mob — a hostile entity that spawns at a player's grave when the infection countdown expires. - Wears the dead player's skin on the body (all skin layers: jacket, sleeves, pants). - Head is replaced by a custom skull texture. - Named "Remains of [player]" with the name tag always visible. - Patrols within 10 blocks of the grave block; returns to anchor if wandering too far. - Targets and attacks players on sight. - Does not burn in sunlight. - Persists across chunk unloads (
setPersistenceRequired). -
Hatched block proximity threat — once a placed infected block hatches (visually consumed), it begins exerting the same proximity infection pressure as active Vashta trees. Players must dismantle every hatched section of their base to make it safe again. Hatched block positions are saved to world data and persist across restarts.
-
Inventory contamination — picking up any infected wood item converts all matching vanilla wood items already in the player's inventory to their infected equivalents. Stacks are merged correctly so the hotbar does not fill with duplicate "Oak Log" entries.
-
Debug command:
/sif debug countdown <seconds>— sets the death countdown duration for testing without waiting the full five minutes. Also clamps any active countdowns to the new ceiling.
Changed
- Death sequence — on countdown expiry, the player's inventory is cleared into a grave chest before the kill. A Vashta Shadow is spawned and anchored to the grave position before
player.kill()is called. - Infected oak log block break — breaking a log from an active Vashta tree now adds the infected log directly to the player's inventory (discarding the vanilla drop entity) so it stacks immediately with any existing infected logs.
- Version scheme reset — previous build used
1.0.0; versioning restarted at0.1.1to reflect the mod's pre-release status.
Fixed
- Skull head rendering:
model.headandmodel.hatare now both suppressed in the main render pass and re-drawn by a dedicated skull layer, ensuring the outer hat UV region (eye sockets, jaw gaps) is applied correctly. - Arm transparency: switched renderer from
ZombieModeltoPlayerModelso all six skin layers (including outer sleeves and pants) are rendered, covering transparent base-layer pixels in the skull skin. - Hatched block positions now removed from world data when the player breaks them (
onRemoveadded to all six hatched block classes).
[0.1.0] — initial build
- Fabric 1.20.1 dev environment (Loom 1.16-SNAPSHOT, Gradle 8.8, JDK 21).
- Vashta Nerada tree infection system: forest oak trees randomly activated on chunk load; player proximity in forest biomes accumulates infection time and marks the player.
- Night multiplier: proximity accumulates twice as fast after midnight.
- Randomised proximity threshold: each fresh approach to a tree rolls a new 30–60 second window before the player is marked.
- Infection spread: small chance to activate a nearby unactivated tree when a player is marked.
- Death countdown: 5-minute timer with vignette effect that darkens and narrows vision as time runs out.
- Sprint escape: sprinting continuously for 10 seconds removes the mark.
- Infected wood blocks:
infected_oak_log,infected_oak_planks, stairs, slab, fence, fence gate — all with hatched variants that appear after the hatch timer fires. - Hatch timer: placed infected blocks convert to hatched variants after 2–5 in-game days; marks the nearest player within 16 blocks on hatch.
- Vashta grave block: placed at death position, stores player inventory in a chest-like block entity.
- Debug commands:
/sif debug mark,unmark,immune,activatetree,cleartrees,showtrees,hatchnow,trees. - Client-side vignette overlay synced from server via packet.
- Tree debug outlines: magenta bounding boxes around active trees and infected blocks (toggled with
/sif debug showtrees).