Commit Graph
93 Commits
Author SHA1 Message Date
Algent dcca20df0a docs: drop port-only material from compatibility audit
The port is done; keep what consumer migration and Scala removal need.

- Remove the port plan Q&A; keep its one real constraint (ProjectRed's
  external Scala trait needs registerScalaTrait) in the retention rules
- Remove the superseded +700 installed revision table
- Remove the pre-conversion test gates; move the two still unmet ones
  (builder/editor round trip, UtilitiesInExcess fixture) to MANUAL_CHECKS
- Reword progress notes as current facts, fix stale JPartialOcclusion and
  IDWriter notes and the Scala-typed descriptor count
2026-10-16 15:48:28 +02:00
Algent 6ebec208df feat: add TileMultipart.refreshInventorySlots for AE2
AE2 casts the tile to the raw scalatraits TIInventoryTile to call
rebuildSlotMap after its cable bus inventory size changes. Give it a
supported entry point on TileMultipart instead.

- refreshInventorySlots is a no-op on base tiles; the generated inventory
  trait rebuilds its flattened slot mapping without rebinding parts
- rebuildSlotMap stays supported for released AE2 jars
- Functional tests cover resize, tiles without inventories, and a
  slotted plus inventory tile; smoke test freezes the new trait method
- Document it in the tile trait guide, API index and adoption ledger
2026-10-16 15:17:42 +02:00
Algent 7c6d4b9c88 feat: add BlockMultipart.hitPartIndex as Java reduceMOP index
GT5U 5.09.54.205 casts reduceMOP(hit)._1() to Integer to find the struck
ProjectRed wire. Give Java callers the same index without Scala types.

- hitPartIndex returns the jPartList index recorded by rayTraceAll, or -1
  when the hit carries no part index
- reduceMOP and its companion are unchanged and not deprecated; tests now
  pin the boxed Integer index and the rebased hit
- Add HitPartExample and the HIT_PART guide, link it from the API index
- Record the replacement in the compatibility ledger
2026-10-16 14:06:50 +02:00
Algent addb1a2c1d docs: refresh consumer scan against GTNH 2.9.0-RC-2
Rescan 240 jars of the 2.9.0-RC-2 instance and freeze the result as a new
ABI baseline next to the +678 one. All baseline rows are still present and
every scanned type and member resolves against the port.

- 28 consumer jars: ThaumicEnergistics is new (Class.forName on
  TileMultipart for Waila providers)
- GT5U now calls BlockMultipart.reduceMOP (Scala Tuple2) for ProjectRed
  wire recoloring; no Java replacement yet, recorded in the ledger
- GuideNH 1.3.41 replaced its reflection with direct links
- AE2 links JCuboidPart.bind from its host refresh fix
- Source heads refreshed to 2026-10-16; only GT5U, ProjectRed and
  ProjectBlue changed FMP-referencing files
- Add manual checks for GT5U spray cans and ThaumicEnergistics Waila
2026-10-16 13:56:56 +02:00
Algent ed861b6ca5 docs: trim audit noise from API guides
- drop per-guide Validation sections; manual gates stay in MANUAL_CHECKS
- drop audit/provenance lines (reference checkouts, dated refreshes, commit pins)
- state version status and Scala-free compile check once in API.md
- replace API.md status prose with link to migration status
- fix RELEASE_NOTES dangling sentence
- rewrite README for GTNH fork and Java port
2026-10-15 16:39:36 +02:00
Algent 255b817c92 fix: re-resolve microblock icons after texture stitch
loadIcons runs in TextureStitchEvent.Post and could cache icons before
other mods finished theirs in the same event (Chisel CTMLib -v4 submaps),
leaving microblocks with missing or previous-stitch textures.

loadIcons now marks icons stale; the first icont() read after a stitch
rebuilds them once. Icons set through icont_$eq are kept. Addon materials
reading icont() get the fix without API changes.

Fixes GTNH issue 27183 without relying on handler priority (upstream #63).
2026-10-14 16:37:20 +02:00
Algent ac2cd5017c Merge master into algent/java and port client conversion fix
Keep the existing Java recipe fix for PR #61. Port PR #62 so client additions reuse multipart tiles without converting stale blocks, preserving server-side conversion. Add a regression for stale client torches and subsequent additions.

Validation: full build, formatting, checkstyleTest and Scala-free API examples passed; 588 unit tests and 300 Forge functional tests passed without skips. The new Forge regression failed before the fix by retaining an extra converted torch.
2026-10-07 17:03:55 +02:00
Algent 965f1e1e20 test: refresh consumer audit and binding coverage 2026-09-21 23:30:12 +02:00
Algent 9a6d1ec4fc feat: add inverse button orientation lookup 2026-09-21 23:23:47 +02:00
Algent ebbc92378d docs: record consumer migration traps 2026-09-16 13:56:09 +02:00
Algent e13389f26f feat: add client multipart preview API 2026-09-16 12:44:33 +02:00
Algent f14668d81a docs: record late migration divergences 2026-09-16 12:16:33 +02:00
Algent 12eb146d02 build: compile directly for Java 8
Keep modern java out of that for now, it make build script too complicated as long as scala still here to force J8 path
2026-09-15 22:48:00 +02:00
Algent d509537584 docs: streamline migration guidance 2026-09-14 19:49:13 +02:00
Algent 0372a7f701 test: pin multipart block name before upstream rename 2026-09-14 16:52:21 +02:00
Algent f96faff85e fix: retain the saved multipart scheduler clock 2026-09-14 16:51:45 +02:00
Algent a4e50ac85c fix: reactivate scheduled ticks restored from chunk NBT 2026-09-14 16:51:12 +02:00
Algent 74eb0ea7ba fix: register all requested microblock metadata variants 2026-09-14 16:50:33 +02:00
Algent 4e0d7a684e fix: exclude missing placeholder from raw material recipes 2026-09-14 16:49:47 +02:00
Algent e2122ad822 docs: record why the plugin modern java mode cannot be used
The convention plugin's jvmDowngrader mode forces a project wide Java 25
toolchain and Scala 2.11.5 cannot run above Java 8, so compileScala fails
outright. forceToolchainVersion cannot bridge it because the mode refuses a
toolchain below its multi release maximum and that list refuses entries below
9. Also note why the modern helpers cannot simply move to src/main/java.
2026-09-14 16:32:13 +02:00
Algent 78be94b0b3 ci: report test counts and keep the run log clean
Upload functional test reports, JUnit XML and server logs on every run so a
CI failure has something to read beyond aggregate counts. Print unit and
functional test summaries, naming each failed functional test.

Repackage the JUnit stack into the test mod jar without module descriptors so
FML stops logging a LoaderException per jar while scanning the classpath, and
silence the two ERROR lines that passing tests drive on purpose.

Refresh the handoff counts and record which migration documents are deleted
when the port closes.
2026-09-14 16:32:11 +02:00
Algent 00834daccf docs: group Java migration documents 2026-09-14 13:10:40 +02:00
Algent 1de11db82d docs: add consumer migration checklist 2026-09-14 12:04:03 +02:00
Algent bf4343d1fc docs: add custom part lifecycle guide 2026-09-14 12:01:54 +02:00
Algent 7a9b05c6b1 build: verify Java API examples compile without Scala 2026-09-14 11:52:31 +02:00
Algent 402434190c Merge master callback ownership fix into Java port 2026-09-14 11:36:28 +02:00
Algent 367ecac68c docs: clarify slot refresh version requirement 2026-09-10 11:40:32 +02:00
Algent d22b1433b2 fix: preserve scheduler callbacks and inventory size bounds 2026-09-09 17:13:30 +02:00
Algent 92a1f82427 docs: answer whether consumers migrate twice
The notes told consumers what breaks on rebuild but not whether the
migration they are being asked to make is final. Without that, the
reasonable reading is that adopting the Java surface now buys a second
migration when the Scala runtime is removed later.

State the guarantee: the removal release drops the Scala-shaped entry
points and keeps their Java siblings, so one migration to the documented
surface is the whole cost. Name the one way to pay it twice, which is
aiming at a raw dev-jar class such as scalatraits.TRedstoneTile instead
of the stable IRedstoneTile capability interface. That is the mistake a
failing rebuild invites, and it fails at runtime in between.

Record two limits honestly: the guarantee covers the documented and
audited surface, which is why removal waits on adoption evidence rather
than source patches, and the source-layout move out of src/main/scala
changes no class, package or descriptor and so is invisible.
2026-09-09 16:46:23 +02:00
Algent 94633dee92 docs: consolidate the migration documentation set 2026-09-09 16:39:31 +02:00
Algent 3a5f3a3b8d docs: add consumer recompile release notes 2026-09-09 15:58:22 +02:00
Algent 638d90c4f0 feat: add saw strength API 2026-09-09 00:52:19 +02:00
Algent 59149d7c69 feat: add button orientation API 2026-09-09 00:23:26 +02:00
Algent bd8e473c7f docs: cover custom Java tile traits 2026-09-08 23:41:17 +02:00
Algent f40a9bf90b feat: add slot refresh API 2026-09-08 22:58:56 +02:00
Algent 9e6add4fe4 docs: guide stable Java tile capability access 2026-09-05 21:02:03 +02:00
Algent 3efd603939 docs: demonstrate block converter lifecycle 2026-09-05 18:14:43 +02:00
Algent 9fd64d3db1 docs: demonstrate Java microblock extensions 2026-09-05 17:45:57 +02:00
Algent 98f09d4d18 docs: clarify remaining work and consumer support 2026-09-05 16:20:32 +02:00
Algent 4ec29ec49f docs: mark the internal API boundary 2026-09-05 15:11:34 +02:00
Algent 37d5ea98f6 docs: define direct Java material access 2026-09-05 14:58:24 +02:00
Algent b7d28fb794 docs: define Java microblock creation contract 2026-09-05 14:28:06 +02:00
Algent 3399a52202 feat: add staged Java tile generation 2026-09-05 14:00:24 +02:00
Algent e0886ff6af feat: expose registered part factory lookup 2026-09-05 13:42:51 +02:00
Algent fbef5d4653 feat: add named Java tile conversion result 2026-09-05 11:53:28 +02:00
Algent 92cd381392 docs: plan measured performance pass 2026-09-05 11:34:58 +02:00
Algent 4df9badc4f feat: add Java render ID accessors 2026-09-05 11:32:24 +02:00
Algent 542e910faf feat: add Java part factory registration 2026-09-05 11:03:27 +02:00
Algent 9a06eac87f feat: add Java box occlusion API 2026-09-05 10:41:17 +02:00
Algent d70f69e79f feat: add Java collection occlusion query 2026-09-05 00:48:38 +02:00