Skip to content
This repository was archived by the owner on Mar 22, 2026. It is now read-only.

Commit b02a779

Browse files
committed
完成 ArmorStand 的 neoforge 移植
1 parent 99fa884 commit b02a779

18 files changed

Lines changed: 290 additions & 29 deletions

File tree

.github/workflows/build.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ jobs:
2222
bazel build \
2323
--verbose_failures \
2424
@//mod:mod_fabric \
25+
@//mod:mod_neoforge \
2526
@//blazerod:blazerod_fabric \
27+
@//blazerod:blazerod_neoforge \
2628
@//blazerod/model/model-base \
2729
@//blazerod/model/model-formats \
2830
@//blazerod/model/model-gltf \
@@ -44,7 +46,9 @@ jobs:
4446
name: artifacts-bazel
4547
path: |
4648
bazel-bin/mod/mod_fabric.jar
49+
bazel-bin/mod/mod_neoforge.jar
4750
bazel-bin/blazerod/blazerod_fabric.jar
51+
bazel-bin/blazerod/blazerod_neoforge.jar
4852
bazel-bin/blazerod/model/model-base/model-base.jar
4953
bazel-bin/blazerod/model/model-formats/model-formats.jar
5054
bazel-bin/blazerod/model/model-gltf/model-gltf.jar

MODULE.bazel

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ maven.install(
3131
"org.ow2.asm:asm:9.8",
3232
"org.ow2.asm:asm-commons:9.8",
3333
"org.vineflower:vineflower:1.11.1",
34-
"com.fasterxml.jackson.core:jackson-databind:2.9.6",
35-
"com.fasterxml.jackson.core:jackson-databind:2.9.6",
34+
"com.fasterxml.jackson.core:jackson-core:2.9.6",
35+
"com.fasterxml.jackson.core:jackson-annotations:2.9.6",
3636
"com.fasterxml.jackson.core:jackson-databind:2.9.6",
3737
"de.swiesend:secret-service:2.0.1-alpha",
3838
"ch.qos.logback:logback-classic:1.5.18",

blazerod/BUILD.bazel

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ load("@rules_java//java:defs.bzl", "java_library")
55
load("//:properties.bzl", "blazerod_version", "issue_tracker", "home_page", "license")
66
load("//rule:merge_jar.bzl", "merge_jar")
77
load("//rule/fabric:merge_jij.bzl", "fabric_merge_jij")
8+
load("//rule/neoforge:merge_jij.bzl", "neoforge_merge_jij")
89

910
java_library(
1011
name = "icon",
@@ -85,6 +86,8 @@ fabric_merge_jij(
8586
visibility = ["//visibility:public"],
8687
input = ":blazerod_fabric_without_jij",
8788
deps = {
89+
"@mocha//:mocha": "team_unnamed_mocha:3.0.1",
90+
"@maven//:org_javassist_javassist": "org_javassist_javassist:3.30.2-GA",
8891
"//blazerod/model/model-base": "blazerod-model-base:=",
8992
"//blazerod/model/model-formats": "blazerod-model-formats:=",
9093
"//blazerod/model/model-gltf": "blazerod-model-formats-gltf:=",
@@ -95,3 +98,21 @@ fabric_merge_jij(
9598
"//blazerod/render:render_fabric_merged": "blazerod-render:=",
9699
},
97100
)
101+
102+
neoforge_merge_jij(
103+
name = "blazerod_neoforge",
104+
visibility = ["//visibility:public"],
105+
input = ":blazerod_neoforge_without_jij",
106+
deps = {
107+
"@mocha//:mocha": "team.unnamed:mocha:3.0.1:LIBRARY",
108+
"@maven//:org_javassist_javassist": "org.javassist:javassist:3.30.2-GA:LIBRARY",
109+
"//blazerod/model/model-base": "top.fifthlight.blazerod:blazerod-model-base:%s:" % blazerod_version,
110+
"//blazerod/model/model-formats": "top.fifthlight.blazerod:blazerod-model-formats:%s:" % blazerod_version,
111+
"//blazerod/model/model-gltf": "top.fifthlight.blazerod:blazerod-model-formats-gltf:%s:" % blazerod_version,
112+
"//blazerod/model/model-pmd": "top.fifthlight.blazerod:blazerod-model-formats-pmd:%s:" % blazerod_version,
113+
"//blazerod/model/model-pmx": "top.fifthlight.blazerod:blazerod-model-formats-pmx:%s:" % blazerod_version,
114+
"//blazerod/model/model-vmd": "top.fifthlight.blazerod:blazerod-model-formats-vmd:%s:" % blazerod_version,
115+
"//blazerod/model/model-bedrock": "top.fifthlight.blazerod:blazerod-model-formats-bedrock:%s:" % blazerod_version,
116+
"//blazerod/render:render_fabric_merged": "top.fifthlight.blazerod:blazerod-render:%s:" % blazerod_version,
117+
},
118+
)

blazerod/model/model-base/BUILD.bazel

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ model_info_jar(
1313

1414
kt_jvm_library(
1515
name = "model-base",
16-
srcs = glob(["src/main/kotlin/**/*.kt"]),
16+
srcs = glob([
17+
"src/main/java/**/*.java",
18+
"src/main/kotlin/**/*.kt",
19+
], allow_empty = True),
1720
deps = [
1821
"@maven//:org_joml_joml",
1922
"@maven//:it_unimi_dsi_fastutil",

blazerod/model/model-formats/BUILD.bazel

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@ model_info_jar(
2424

2525
kt_jvm_library(
2626
name = "model-formats",
27-
srcs = glob(["src/main/kotlin/**/*.kt"]),
27+
srcs = glob([
28+
"src/main/java/**/*.java",
29+
"src/main/kotlin/**/*.kt",
30+
], allow_empty = True),
2831
resource_jars = [
2932
":mod_info_json",
3033
"//blazerod:icon",

blazerod/render/src/neoforge/kotlin/top/fifthlight/blazerod/render/IrisApiWrapperImpl.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package top.fifthlight.blazerod.render
33
import com.mojang.blaze3d.vertex.VertexFormatElement
44
import net.irisshaders.iris.api.v0.IrisApi
55
import net.irisshaders.iris.vertices.IrisVertexFormats
6+
import net.neoforged.fml.ModList
67
import top.fifthlight.mergetools.api.ActualConstructor
78
import top.fifthlight.mergetools.api.ActualImpl
89

@@ -15,8 +16,7 @@ class IrisApiWrapperImpl @ActualConstructor("create") constructor() : IrisApiWra
1516
override val TANGENT_ELEMENT: VertexFormatElement
1617
get() = IrisVertexFormats.TANGENT_ELEMENT
1718

18-
// TODO
19-
private val irisApi = if (true) {
19+
private val irisApi = if (ModList.get().isLoaded("iris")) {
2020
IrisApi.getInstance()
2121
} else {
2222
null

blazerod/render/src/neoforge/resources/META-INF/neoforge.mods.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,9 @@ modId="kotlinforforge"
3535
type="required"
3636
ordering="NONE"
3737
side="CLIENT"
38+
39+
[[dependencies.blazerod_render]]
40+
modId="blazerod_model_base"
41+
type="required"
42+
ordering="NONE"
43+
side="CLIENT"

mod/BUILD.bazel

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
load("@rules_java//java:defs.bzl", "java_binary")
2-
load("//:properties.bzl", "game_version", "mod_version", "fabric_api_version_modrinth", "fabric_language_kotlin_version_modrinth")
2+
load("//:properties.bzl", "game_version", "blazerod_version", "mod_version", "fabric_api_version_modrinth", "fabric_language_kotlin_version_modrinth")
33
load("@//rule:upload_modrinth.bzl", "modrinth_dependency", "upload_modrinth")
44
load("//rule:generate_remap_classpath.bzl", "generate_remap_classpath")
55
load("//rule/fabric:merge_jij.bzl", "fabric_merge_jij")
6+
load("//rule/neoforge:merge_jij.bzl", "neoforge_merge_jij")
67
load("//rule:remap_jar.bzl", "remap_jar")
78

89
alias(
@@ -60,7 +61,6 @@ fabric_merge_jij(
6061
"@maven//:com_illposed_osc_javaosc_core": "com_illposed_osc_javaosc_core:0.9",
6162
"@mocha//:mocha": "team_unnamed_mocha:3.0.1",
6263
"@maven//:org_javassist_javassist": "org_javassist_javassist:3.30.2-GA",
63-
"//blazerod:blazerod_fabric_without_jij": "blazerod:=",
6464
"//blazerod/model/model-base": "blazerod-model-base:=",
6565
"//blazerod/model/model-formats": "blazerod-model-formats:=",
6666
"//blazerod/model/model-gltf": "blazerod-model-formats-gltf:=",
@@ -69,6 +69,28 @@ fabric_merge_jij(
6969
"//blazerod/model/model-vmd": "blazerod-model-formats-vmd:=",
7070
"//blazerod/model/model-bedrock": "blazerod-model-formats-bedrock:=",
7171
"//blazerod/render:render_fabric_merged": "blazerod-render:=",
72+
"//blazerod:blazerod_fabric_without_jij": "blazerod:=",
73+
},
74+
)
75+
76+
neoforge_merge_jij(
77+
name = "mod_neoforge",
78+
visibility = ["//visibility:public"],
79+
input = ":mod_neoforge_merged",
80+
deps = {
81+
"@maven//:com_h2database_h2": "com.h2database:h2:2.3.232:LIBRARY",
82+
"@maven//:com_illposed_osc_javaosc_core": "com.illposed.osc:javaosc.core:0.9:LIBRARY",
83+
"@mocha//:mocha": "team.unnamed:mocha:3.0.1:LIBRARY",
84+
"@maven//:org_javassist_javassist": "org.javassist:javassist:3.30.2-GA:LIBRARY",
85+
"//blazerod/model/model-base": "top.fifthlight.blazerod:blazerod-model-base:%s:" % blazerod_version,
86+
"//blazerod/model/model-formats": "top.fifthlight.blazerod:blazerod-model-formats:%s:" % blazerod_version,
87+
"//blazerod/model/model-gltf": "top.fifthlight.blazerod:blazerod-model-formats-gltf:%s:" % blazerod_version,
88+
"//blazerod/model/model-pmd": "top.fifthlight.blazerod:blazerod-model-formats-pmd:%s:" % blazerod_version,
89+
"//blazerod/model/model-pmx": "top.fifthlight.blazerod:blazerod-model-formats-pmx:%s:" % blazerod_version,
90+
"//blazerod/model/model-vmd": "top.fifthlight.blazerod:blazerod-model-formats-vmd:%s:" % blazerod_version,
91+
"//blazerod/model/model-bedrock": "top.fifthlight.blazerod:blazerod-model-formats-bedrock:%s:" % blazerod_version,
92+
"//blazerod/render:render_neoforge_merged": "top.fifthlight.blazerod:blazerod-render:%s:" % blazerod_version,
93+
"//blazerod:blazerod_neoforge_without_jij": "top.fifthlight.blazerod:blazerod:%s:" % blazerod_version,
7294
},
7395
)
7496

mod/src/client/kotlin/top/fifthlight/armorstand/state/AnimationSet.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -258,10 +258,6 @@ data object AnimationSetLoader {
258258
}
259259
}
260260

261-
if (idle == null) {
262-
return AnimationSet.EMPTY
263-
}
264-
265261
// Try embed
266262
if (animations != null) {
267263
for (animation in animations) {
@@ -289,6 +285,10 @@ data object AnimationSetLoader {
289285
}
290286
}
291287

288+
if (idle == null) {
289+
return AnimationSet.EMPTY
290+
}
291+
292292
return AnimationSet(
293293
idle = idle,
294294
walk = walk,

mod/src/neoforge_client/kotlin/top/fifthlight/armorstand/ArmorStandNeoForgeClient.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,6 @@ object ArmorStandNeoForgeClient : ArmorStandNeoForge(), ArmorStandClient {
7373
}
7474
}
7575

76-
ModelFileLoaders.initialize()
77-
78-
ConfigHolder.read()
79-
8076
NeoForge.EVENT_BUS.register(object {
8177
@SubscribeEvent
8278
fun onBeforeEntityRender(event: RenderLevelStageEvent.AfterOpaqueBlocks) {
@@ -128,10 +124,6 @@ object ArmorStandNeoForgeClient : ArmorStandNeoForge(), ArmorStandClient {
128124
}
129125
})
130126

131-
RenderEvents.FLIP_FRAME.register {
132-
RendererManager.rotate()
133-
}
134-
135127
ScreenEvents.UNLOCK_CURSOR.register { screen ->
136128
when (screen) {
137129
is ModelSwitchScreen -> false
@@ -149,6 +141,14 @@ object ArmorStandNeoForgeClient : ArmorStandNeoForge(), ArmorStandClient {
149141
val client = MinecraftClient.getInstance()
150142
mainDispatcher = ThreadExecutorDispatcher(client)
151143
scope = CoroutineScope(SupervisorJob() + mainDispatcher)
144+
145+
RenderEvents.FLIP_FRAME.register {
146+
RendererManager.rotate()
147+
}
148+
149+
ModelFileLoaders.initialize()
150+
ConfigHolder.read()
151+
152152
runBlocking {
153153
ModelManagerHolder.initialize()
154154
NetworkModelSyncer.initialize()

0 commit comments

Comments
 (0)