Algent cacc9a30a8 refactor: port TileMultipart to Java
Converts the central tile class and its companion object. TileMultipartClient
moves to its own Scala file unchanged: it is registered with the ASM
generator through registerTrait, so converting it is Phase 5
registerJavaTrait work rather than part of this step.

Every public member of the reference survives except protected$worldObj,
the accessor Scala emitted so the dropItems closure could reach the
protected field; no jar references it, and TileMultipartClient lost
nothing including its generated super accessor for markRender. All five
Scala-typed descriptors are preserved: partList and its setter, operate,
getOrConvertTile2's Tuple2, loadParts, and the Tuple2 rayTraceAll stores
into ExtendedMOP.data.

partList stays an immutable Scala List republished on each mutation, which
matches the reference semantics exactly and takes no performance decision;
that belongs to Phase 4 with profiling. Internal callers still go through
operate rather than a private loop, so a trait overriding it still sees
every call.

Recompiled Scala consumers need four adjustments, all source-only:
partList.apply(i) for indexing, renderID_$eq for assignment, an explicit
cast on getOrConvertTile2._2, and an explicit AbstractFunction1 for
operate since 2.11 will not adapt a lambda to Function1[_, BoxedUnit].
Eleven, one, two and one in-repo call sites respectively.

31 anonfun classes collapse to one Java anonymous class.

Validated with 90 plain-JVM tests, a clean build, and the Java 8 Forge
dedicated-server suite, which is the load-bearing check here because the
ASM generator builds composite tiles on top of this class.
2026-08-15 11:15:03 +02:00
2026-04-27 13:42:24 +02:00
2026-08-15 11:15:03 +02:00
2023-01-19 15:33:54 +00:00
2025-06-03 12:52:42 -06:00
2026-08-14 16:52:22 +02:00
2022-01-17 22:09:17 -08:00
2026-04-27 13:42:24 +02:00
2026-03-08 19:23:42 +01:00
2021-11-19 23:01:31 +01:00
2013-06-26 21:26:28 +10:00
2013-07-31 20:55:14 +10:00
2023-06-27 17:23:32 +09:00
2026-04-27 13:42:24 +02:00

ForgeMultipart

An API for dynamically handling different functional parts in the one block space.

Requirements:

  • The latest version of CCL (files.minecraftforge.net/CodeChickenLib/)
  • Forge
  • A scala compatible IDE and project (For eclipse, download the scala eclipse plugin and right click on the project -> Add Scala Nature)

If you only want to use the API and not modify it:

  • Download the latest dev version from files.minecraftforge.net/ForgeMultipart/
  • Download the latest dev version of CCL.
  • Place both mods in your /libs/ folder and link them as libraries in your IDE.

Implementation of all parts of the API should be clean and easy in Java. The minecraft multipart mod is implemented in java as a test case.

S
Description
No description provided
Readme
4.1 MiB
0 Stars 1 Watchers 0 Forks
Languages
Scala 85.4%
Java 14.6%