9.8 KiB
4.0.12 — Minecraft 26.2 riding gate fix
- Diagnostic 4.0.11 isolated the failure to
player.startRiding(seat): the Seat spawned successfully but mounting returned false. - Verified against Minecraft 26.2
Entity.startRiding: server-side riding is rejected when the vehicle entity type reportscanSerialize() == false. - Handcrafted registered
SeatwithEntityType.Builder.noSave(), which makes the Seat non-serializable and therefore impossible to ride on 26.2. - Removed
.noSave()from the Seat entity registration. The Seat still self-discards when it has no passenger or its furniture block is gone, so it remains ephemeral during normal gameplay. - Kept the 4.0.11 diagnostic logging for this test build so the result can be confirmed from the next log.
4.0.9 — Seat synchronization fix
- Compared the Fabric 26.2 port directly against the original 1.21.x seating implementation.
- The current debug log proves server-side mounting already succeeds: the client reports
Received passengers for unknown entity. This means the failure is no longer the chair/bench/couch interaction callback; the invisibleSeatvehicle is not known client-side when the passenger update arrives. - Removed the legacy custom
ClientboundAddEntityPacket/recreateFromPacketoverride fromSeatso Minecraft 26.2 uses its native entity spawn/tracking packet path. - Kept one-passenger acceptance and the 26.2 passenger attachment implementation.
compile.batandcompile.shnow read bothmod_versionandarchives_base_namefromgradle.propertieswhen detecting an already-built JAR. Existing-JAR Compile/Git-only behavior and first-time Git guidance are preserved.
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.1test.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#updateShapesignatures toLevelReader+ScheduledTickAccess+RandomSource. - Migrated removed
onRemoveoverrides toaffectNeighborsAfterRemovalfor server-side removal cleanup. - Migrated
Painting/PaintingVariantpackage toworld.entity.decoration.painting. - Replaced removed
ItemNameBlockItemwithBlockItem(same constructor role in 26.x). - Migrated registry lookups from holder-returning
getto value-returninggetValuewhere anItemis required. - Migrated Crockery block-entity persistence to
ValueInput/ValueOutputandItemStack.CODEC. - Removed obsolete code-side chunk render-layer registration; 26.x determines chunk layer from model/material/texture transparency.
- Removed legacy
javax.annotation.ParametersAreNonnullByDefaultusage. - Updated
Level#getMaxBuildHeight()usage togetMaxY()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
newStatecomparisons fromaffectNeighborsAfterRemoval, whose 26.2 signature no longer supplies a replacement state.
port.8
- Added missing 26.2 imports for
LevelReader,ScheduledTickAccess, andRandomSource. - 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<EntityType<?>>. - 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.ScheduledTickAccessimports left alongside the 26.2net.minecraft.world.level.ScheduledTickAccesstype. - Updated shift-key detection to
Minecraft.getInstance().hasShiftDown(). - Added the required 26.2
Entity#hurtServerimplementation 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 setseen 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/bowsprite in skeleton trophy. - Replaced the missing
minecraft:block/chainreference 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 legacymodels/itementry. 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-specificuseItemOn(...)path, which previously contained the only call tositOn(...). - 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#getPositionused 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:chaintominecraft: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.
4.0.11-fabric-26.2
- Reworked seat interaction dispatch to mirror Refurbished Furniture: seating is performed from
useWithoutItem; held-item paths returnTRY_WITH_EMPTY_HANDafter Handcrafted-specific cushion handling. - Removed client-side fake success from
SittableBlock.sitOn;Seat.sitis server-authoritative like the reference implementation. - Seat blocks now return
SUCCESSafter the empty-hand interaction attempt, matching the reference block behavior. - Added concise server-side Seat attempt/result diagnostics so a failed mount is visible in
latest.log.
4.0.15-fabric-26.2
- Dining Bench now captures the player's horizontal facing when sitting, instead of creating a free-rotation seat with a fixed initial world yaw.
- This lets the same Dining Bench be used from either side: face north and sit north, face south and sit south, independent of the bench's placement facing.