# Handcrafted Fabric 26.2 port Target: Minecraft 26.2 / Fabric only / Java 25. Dependencies: - Fabric Loader 0.19.3 - Fabric API 0.161.0+26.2 - Resourceful Lib 5.0.4 for Fabric 26.2 This workspace collapses the old common+Fabric Architectury build into one Fabric Loom project while preserving the original source/resource trees. The Architectury `@ExpectPlatform` client renderer bridge has been replaced by its direct Fabric implementation. NeoForge is intentionally excluded. ## Windows - `compile.bat` : clean build using Java 25 / Gradle 9.7.1 - `test.bat` : run development client or dedicated server ## Important Minecraft 26.2 contains substantial source/API changes relative to 1.21.1. The project configuration is ported to the 26.2 toolchain, but source-level migration must be driven by compiler errors against the real 26.2 dependencies. If a build error remains, keep the complete compiler output so the affected APIs can be migrated precisely. ## port.2 - Updated Gradle from 9.5.1 to 9.7.1 because the current Fabric Loom 1.18-SNAPSHOT resolves to Loom 1.18.2, whose plugin metadata requires Gradle Plugin API 9.7.x. - Kept Loom 1.18-SNAPSHOT, matching the current Fabric 26.2 example project. ## port.6 - Migrated 26.2 `BlockBehaviour#updateShape` signatures to `LevelReader` + `ScheduledTickAccess` + `RandomSource`. - Migrated removed `onRemove` overrides to `affectNeighborsAfterRemoval` for server-side removal cleanup. - Migrated `Painting` / `PaintingVariant` package to `world.entity.decoration.painting`. - Replaced removed `ItemNameBlockItem` with `BlockItem` (same constructor role in 26.x). - Migrated registry lookups from holder-returning `get` to value-returning `getValue` where an `Item` is required. - Migrated Crockery block-entity persistence to `ValueInput` / `ValueOutput` and `ItemStack.CODEC`. - Removed obsolete code-side chunk render-layer registration; 26.x determines chunk layer from model/material/texture transparency. - Removed legacy `javax.annotation.ParametersAreNonnullByDefault` usage. - Updated `Level#getMaxBuildHeight()` usage to `getMaxY()` for 26.x. The remaining major migration area is the 26.2 extract/submit rendering pipeline for FancyPainting and Crockery renderers. ## port.7 - Fixed malformed braces introduced during the port.6 removal-hook migration. - Removed stale `newState` comparisons from `affectNeighborsAfterRemoval`, whose 26.2 signature no longer supplies a replacement state. ## port.8 - Added missing 26.2 imports for `LevelReader`, `ScheduledTickAccess`, and `RandomSource`. - Migrated container persistence to `ValueInput` / `ValueOutput`. - Migrated furnace fuel duration signature to `FuelValues`. - Migrated block entity registration to FabricBlockEntityTypeBuilder (vanilla builder is no longer public). - Migrated entity type construction to `ResourceKey>`. - Updated comparator output methods for the new Direction parameter. - Started entity persistence migration (`Seat`, `FancyPainting`). - Replaced removed direct vanilla block constants used as property templates with registry lookups. - Fixed Unix helper scripts for macOS Bash 3.2 case handling. ## port.9 - Removed stale `net.minecraft.world.tick.ScheduledTickAccess` imports left alongside the 26.2 `net.minecraft.world.level.ScheduledTickAccess` type. - Updated shift-key detection to `Minecraft.getInstance().hasShiftDown()`. - Added the required 26.2 `Entity#hurtServer` implementation for seat entities. - Migrated custom painting entity data to `TypedEntityData`, `EntityTypes.PAINTING`, lookup-based painting variant access, and component-backed painting variant mutation. - Updated client/server interaction result handling and POI holder lookup for 26.2. - Removed obsolete FancyBed block-entity factory override and stale container open/close override annotations. - Renderer migration remains the next major compile category (26.2 render-state/submit pipeline). ## port.10 - Migrated renderer class signatures to the 26.2 render-state/submit API to expose remaining compile errors. - FancyPainting and Crockery custom drawing is temporarily no-op during compile isolation; it must be restored before final release. - Removed obsolete TypedEntityData application from CustomPaintingItem pending final data-component migration. ## port.11 - Fixed Minecraft 26.2 strict block/item instantiation: every Handcrafted BlockBehaviour.Properties / Item.Properties now receives its ResourceKey via setId before the object constructor runs. - This addresses the runtime crash `NullPointerException: Block id not set` seen first at OvenBlock. - Retains the Bash 3.2-safe compile.sh/test.sh scripts from port.10. ## 4.0.4-fabric-26.2 - Migrated legacy model resources rejected by Minecraft 26.2 model baking. - Normalized negative/out-of-range UV coordinates in all stackable-book base models. - Normalized the same legacy negative UVs in pillager/vindicator trophy models. - Rescaled witch trophy Y geometry to the modern cuboid boundary while preserving its proportions. - Removed the block-model dependency on the item-atlas `minecraft:item/bow` sprite in skeleton trophy. - Replaced the missing `minecraft:block/chain` reference in phantom trophy with an existing Handcrafted block-atlas texture. ## 4.0.4-fabric-26.2 - Added Minecraft 26.2 client item definitions under `assets/handcrafted/items/` for every legacy `models/item` entry. This fixes items that render as the magenta/black missing-model placeholder in inventory/hand while their placed block model renders normally. - Restored empty-hand seating interaction through `useWithoutItem(...)` for chairs, modular seats (benches/couches), and dining benches. On modern Minecraft, an empty-hand block interaction does not enter the item-specific `useItemOn(...)` path, which previously contained the only call to `sitOn(...)`. - Kept item-held interaction behavior intact so cushion customization still runs through `useItemOn(...)`. ## Port 14 runtime/data fixes - Migrated legacy recipe ingredient objects (`{item: ...}` / `{tag: ...}`) to the Minecraft 26.x ingredient string syntax. - Added `item.handcrafted.*` translation aliases for registered block-items so tooltips no longer expose raw translation keys. - Empty-hand seating now reports client-side success before the authoritative server creates the seat entity. - Retargeted the legacy oversized-model mixin to `CuboidModelElement.Deserializer#getPosition` used by 26.2. - Added missing particle references to fancy-bed item models. ## 4.0.4-fabric-26.2 - Switched from temporary port-number versioning to release-style `4.0.4-fabric-26.2`. - Updated Phantom Trophy recipe from removed `minecraft:chain` to `minecraft:iron_chain`. - Removed stale Java 21 compatibility declarations from Mixin configs; Minecraft 26.2 runs on Java 25. - Restored Seat.makeBoundingBox() lost during the API migration and made seating success conditional on Player.startRiding(). - Seat occupancy is now tracked after a successful mount. - Added missing Handcrafted item-tag display translations. ## 4.0.4 Fabric 26.2 build fix - Removed the legacy `Seat.makeBoundingBox()` override. In Minecraft 26.2, `Entity.makeBoundingBox()` is final and cannot be overridden. - The seat-specific AABB is still retained for seat height/passenger attachment calculations and is refreshed by the wrapped level callback.