🦈 New Neo Blåhaj
New Neo Blåhaj brings the iconic IKEA-style plush toys to NeoForge 26.x. Whether you want a bedside companion, a giant bread pillow, or a collection of pride-themed sharks, this mod has you covered.
Port chain: original Hibiii Blåhaj (Quilt) → DaFuqs / Fabric lineage → rhysdh540 NeoForge reference → this fork.
📜 Credits & License
- Original Mod: Hibiii's Blåhaj (Quilt).
- Lineage: Ported with love from the Fabric/Quilt versions to NeoForge.
- Art: Models and textures are derived from the original mod lineage.
- License: Released under the Unlicense (Public Domain).
All Versions
+ Add Version### Fixed
- Bed plushies** could go stale or disappear when traveling between dimensions (like through a nether portal) - they now stay in sync wherever you go.
- Sneaking at an empty bed with an empty hand could wrongly feel like it did something - it's now a normal bed interaction again.
- Placing a plushie on a bed in **creative mode** no longer removes it from your inventory.
### Added
- Bed plushies**: place a plushie on a bed's pillow with right-click, and retrieve it with shift-right-click. It nestles aside instead of clipping into you when you sleep, and drops as an item if the bed is destroyed.
### Added
- Removed Redundant png file**: Removed the fixed gray shark png as it was redundant.
## [1.0.2] - 2026-06-18
### Fixed
- Memory & Rendering Cache:** Added a secondary stack cache to avoid calling
updateForTopItemon unchanged plushies, preventing redundant model updates. - Multiplayer Sync Thread Safety:** Changed the attachment
STREAM_CODECmap factory to useConcurrentHashMapinstead of a plainHashMap, preventing potentialConcurrentModificationExceptionissues when syncing level attachments under concurrency. - Save Corruption Logging:** Replaced the silent exception swallow with active warnings in the plush data deserializer when keys are malformed.
- Client Resource Management:** Added logical client level verification when clearing renderer caches.
### Changed
- Code Quality:** Refactored internal rendering data structures to use modern Java
recordclasses and tightened field encapsulation. - Optimized Event Mutations:** Avoided copying level-attachment maps on plush additions or removals; mutated
ConcurrentHashMapentries in-place instead.
## [1.0.1] - 2026-06-18
### Added
- Rendering Caching Optimization:** Introduced an
ItemStackRenderStatecache mapping block coordinates. This significantly reduces GC overhead and memory allocations by avoiding creating new rendering states every frame. - Client Resource Management:** Added a level unload listener to safely clear cached render states and prevent resource leaks.
### Fixed
- Rendering State Conflict:** Resolved an issue where multiple beds in the same chunk would display the same plushie (or "flicker" between them) due to a shared
ItemStackRenderState. Each bed now uses a unique render state during submission. - Server Crash:** Fixed a critical
EncoderException("Empty ItemStack not allowed") that occurred when interacting with beds (e.g., clicking a bed with a bed item). This was caused by theBED_PLUSHattachment sync logic failing on empty stacks; it now correctly usesOPTIONAL_STREAM_CODEC. - Plushie Alignment:** Refined the vertical translation and offsets for plushies on beds to ensure they sit naturally on the pillow and correctly nestle under the player's head when the bed is occupied.
### Changed
- Version:** Ported mod to Minecraft 26.2 (NeoForge 26.2.0.1-beta) and bumped version to
1.0.1.
### Added
- Soft Toy Dog ("creature") plush**: Added block registry, item registry, crafting recipe, loot table, blockstate, item model, and tag inclusion (
#newblahaj:plushies).
### Added
PlushArmPoseHelper**: Shared client helper for detecting plush items (CuddlyItem/newblahaj:plushies) and applying cuddle arm rotations.PlayerEntityModelMixin**: LatesetAngleshook (priority 2100) so plush arm pose is reapplied after **Player Animator** (player-animator) updates the player model. No hard dependency on that mod.
### Changed
BipedEntityModelMixin**: Arm posing now usesTAILinjection onpositionRightArm/positionLeftArm(no cancellation), with per-armCROSSBOW_HOLDchecks.PlayerRendererMixin**: Plush arm pose override moved to@At("RETURN")with an explicit method descriptor.
### Fixed
- Plush **cuddle arm pose** no longer breaks when **Player Animator** is installed (arms were being overwritten mid-
setAngles). - Client startup crash from invalid
@Shadowfields onPlayerEntityModel(rightArm/leftArmlive onBipedEntityModel).
### Removed
- Bed plush attachment** (Fabric port cleanup):
BedPlushEvents, bed block/entity render mixins, and related client bed renderer hook — not carried over from the NeoForge bed feature set.
All changes implemented to port the mod to Fabric 1.20.1 and add the cuddling arm posing feature.
## [1.0.2] - 2026-05-24
### Added
- Cuddling Arm Animations**: Created [BipedEntityModelMixin.java](file:///d:/projects/newneoblahaj-26.1/src/client/java/com/mervyn/newblahaj/mixin/client/BipedEntityModelMixin.java) to apply custom arm rotations (adjusting pitch/yaw) when the player is holding a plushie item. This prevents the player from holding the plushie stiffly like a weapon and displays a natural hugging posture instead.
### Changed
- Fabric 1.20.1 Porting**: Ported all core blocks, items, registry references, and mixins from Forge/NeoForge (Mojang mappings) to Fabric 1.20.1 (Yarn mappings):
- Updated block classes (
AbstractBlock.Settings, voxel shapes, and right-click interaction events). - Updated item classes (
Item.Settings, translation texts, formatting, tooltips, and weapon damage attributes). - Adjusted item registries, creative group registrations, tag keys, and namespaced identifiers.
- Adapted
AllayEntityMixinandCuddlyBlockProjectileMixinto Fabric events and structures. - Adapted loot table modifications and trade offer registration in
NewBlahaj.java.
### Fixed
- Player Renderer Startup Crash**: Fixed a client-side startup crash in [PlayerRendererMixin.java](file:///d:/projects/newneoblahaj-26.1/src/client/java/com/mervyn/newblahaj/mixin/client/PlayerRendererMixin.java) by correcting the target method parameter from
ClientPlayerEntitytoAbstractClientPlayerEntity. - Log Spam**: Silenced rendering debug/trace logs in
PlayerRendererMixin.java.
### Fixed
- Rendering State Conflict:** Resolved an issue where multiple beds in the same chunk would display the same plushie (or "flicker" between them) due to a shared
ItemStackRenderState. Each bed now uses a unique render state during submission. - Server Crash:** Fixed a critical
EncoderException("Empty ItemStack not allowed") that occurred when interacting with beds (e.g., clicking a bed with a bed item). This was caused by theBED_PLUSHattachment sync logic failing on empty stacks; it now correctly usesOPTIONAL_STREAM_CODEC. - Plushie Alignment:** Refined the vertical translation and offsets for plushies on beds to ensure they sit naturally on the pillow and correctly nestle under the player's head when the bed is occupied.
### Changed
- Version:** Bumped mod version to
1.0.2.