129 lines
9.4 KiB
Markdown
129 lines
9.4 KiB
Markdown
## 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 reports `canSerialize() == false`.
|
|
- Handcrafted registered `Seat` with `EntityType.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 invisible `Seat` vehicle is not known client-side when the passenger update arrives.
|
|
- Removed the legacy custom `ClientboundAddEntityPacket`/`recreateFromPacket` override from `Seat` so Minecraft 26.2 uses its native entity spawn/tracking packet path.
|
|
- Kept one-passenger acceptance and the 26.2 passenger attachment implementation.
|
|
- `compile.bat` and `compile.sh` now read both `mod_version` and `archives_base_name` from `gradle.properties` when 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.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<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.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.
|
|
|
|
|
|
## 4.0.11-fabric-26.2
|
|
- Reworked seat interaction dispatch to mirror Refurbished Furniture: seating is performed from `useWithoutItem`; held-item paths return `TRY_WITH_EMPTY_HAND` after Handcrafted-specific cushion handling.
|
|
- Removed client-side fake success from `SittableBlock.sitOn`; `Seat.sit` is server-authoritative like the reference implementation.
|
|
- Seat blocks now return `SUCCESS` after 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`.
|