1. 添加了远程Maven仓库,如何使用见 README.MD
2. 修复了Forge Server端加载本模组会导致非法的类加载错误 3. 更改了版本命名,现在是 jsonem-模组加载器端-mc版本-模组版本
This commit is contained in:
parent
9229bbfd71
commit
409573cd4e
29
README.MD
29
README.MD
|
|
@ -3,5 +3,34 @@ Port from [JsonEM](https://github.com/FoundationGames/JsonEM)
|
|||
|
||||
Support Forge Mod Loader (Recommended FML Version is 1.20.1-47.4.1)
|
||||
|
||||
# For Developer
|
||||
You can integrate and automatically download JsonEM for your mod project using Gradle.
|
||||
Just add the following to your build script (`build.gradle`):
|
||||
|
||||
## Repositories
|
||||
```gradle
|
||||
repositories {
|
||||
maven {
|
||||
name = "LTD Maven"
|
||||
url = "https://nexus.bot.leisuretimedock.top/repository/maven-public/"
|
||||
}
|
||||
}
|
||||
```
|
||||
### Forge
|
||||
```gradle
|
||||
dependencies {
|
||||
implementation fg.deobf("com.leisuretimedock:jsonem-forge-${minecraft_version}:${jsonem_version})"
|
||||
}
|
||||
```
|
||||
### Fabric And Quilt
|
||||
```gradle
|
||||
dependencies {
|
||||
modImplementation "com.leisuretimedock:jsonem-fabric-${minecraft_version}:${jsonem_version}"
|
||||
}
|
||||
```
|
||||
### Choose a Version
|
||||
|
||||
`${mc_version}` gets replaced by the current Minecraft version. (i.e. `1.20.1`)
|
||||
`${jsonem_version}` gets replaced by the version of JEI you want to use (i.e `0.2.4`)
|
||||
# License
|
||||
MIT
|
||||
29
build.gradle
29
build.gradle
|
|
@ -43,7 +43,7 @@ subprojects {
|
|||
|
||||
base {
|
||||
// Set up a suffixed format for the mod jar names, e.g. `example-fabric`.
|
||||
archivesName = "${mod_id}-mc${minecraft_version}"
|
||||
archivesName = "${mod_id}-${minecraft_version}"
|
||||
}
|
||||
|
||||
repositories {
|
||||
|
|
@ -87,8 +87,25 @@ subprojects {
|
|||
publishing {
|
||||
publications {
|
||||
mavenJava(MavenPublication) {
|
||||
artifactId = base.archivesName.get()
|
||||
from components.java
|
||||
artifactId = "${mod_id}-${project.name}-${minecraft_version}"
|
||||
|
||||
pom {
|
||||
name = rootProject.mod_id
|
||||
description = "The json definition for entity"
|
||||
url = rootProject.mod_source
|
||||
licenses {
|
||||
license {
|
||||
name = rootProject.mod_licence
|
||||
}
|
||||
}
|
||||
developers {
|
||||
developer {
|
||||
id = rootProject.mod_id
|
||||
name = rootProject.mod_authors
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -98,6 +115,14 @@ subprojects {
|
|||
// Notice: This block does NOT have the same function as the block in the top level.
|
||||
// The repositories here will be used for publishing your artifact, not for
|
||||
// retrieving dependencies.
|
||||
maven {
|
||||
name = 'LTDNexus'
|
||||
url = 'https://nexus.bot.leisuretimedock.top/repository/maven-releases/'
|
||||
credentials {
|
||||
username = System.getenv('LTDNexusUsername') ?: ''
|
||||
password = System.getenv('LTDNexusPassword') ?: ''
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,6 +45,6 @@ shadowJar {
|
|||
remapJar {
|
||||
input.set shadowJar.archiveFile
|
||||
dependsOn shadowJar
|
||||
archiveBaseName.set "${rootProject.archives_base_name}-${project.name}"
|
||||
// archiveBaseName.set "${rootProject.archives_base_name}-${project.name}"
|
||||
archiveClassifier.set null
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
"license": "${mod_licence}",
|
||||
"icon": "icon.png",
|
||||
"environment": "*",
|
||||
"environment": "client",
|
||||
"entrypoints": {
|
||||
"client": [
|
||||
"com.leisuretimedock.jsonem.fabric.JsonEmFabric"
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ shadowJar {
|
|||
remapJar {
|
||||
input.set shadowJar.archiveFile
|
||||
dependsOn shadowJar
|
||||
archiveBaseName.set "${rootProject.archives_base_name}-${project.name}"
|
||||
// archiveBaseName.set "${rootProject.archives_base_name}-${project.name}"
|
||||
archiveClassifier.set null
|
||||
}
|
||||
jar {
|
||||
|
|
|
|||
|
|
@ -7,13 +7,16 @@ import net.minecraftforge.fml.ModLoadingContext;
|
|||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.config.ModConfig;
|
||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||
import net.minecraftforge.fml.loading.FMLEnvironment;
|
||||
|
||||
@Mod(JsonEm.MOD_ID)
|
||||
public final class JsonEmForge {
|
||||
public JsonEmForge() {
|
||||
FMLJavaModLoadingContext fmlJavaModLoadingContext = FMLJavaModLoadingContext.get();
|
||||
ModLoadingContext.get().registerConfig(ModConfig.Type.CLIENT, JsonEmConfig.spec, "jsonem.toml");
|
||||
JsonEm.commonSetUp();
|
||||
fmlJavaModLoadingContext.getModEventBus().register(ForgePlatformHelper.class);
|
||||
if (FMLEnvironment.dist.isClient()) {
|
||||
ModLoadingContext.get().registerConfig(ModConfig.Type.CLIENT, JsonEmConfig.spec, "jsonem.toml");
|
||||
JsonEm.commonSetUp();
|
||||
fmlJavaModLoadingContext.getModEventBus().register(ForgePlatformHelper.class);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
package com.leisuretimedock.jsonem.forge.mixin;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.leisuretimedock.jsonem.forge.platform.EntityModelImpl;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
||||
|
||||
import net.minecraft.client.model.geom.LayerDefinitions;
|
||||
import net.minecraft.client.model.geom.ModelLayerLocation;
|
||||
import net.minecraft.client.model.geom.builders.LayerDefinition;
|
||||
|
||||
@Mixin(LayerDefinitions.class)
|
||||
abstract class EntityModelsMixin {
|
||||
@SuppressWarnings("InvalidInjectorMethodSignature")
|
||||
@Inject(method = "createRoots", at = @At(value = "INVOKE", target = "Lcom/google/common/collect/ImmutableMap$Builder;build()Lcom/google/common/collect/ImmutableMap;", remap = false), locals = LocalCapture.CAPTURE_FAILEXCEPTION)
|
||||
private static void registerExtraModelData(CallbackInfoReturnable<Map<ModelLayerLocation, LayerDefinition>> cir, ImmutableMap.Builder<ModelLayerLocation, LayerDefinition> builder) {
|
||||
for (Map.Entry<ModelLayerLocation, LayerDefinition> entry : EntityModelImpl.PROVIDERS.entrySet()) {
|
||||
builder.put(entry.getKey(), entry.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
package com.leisuretimedock.jsonem.forge.platform;
|
||||
|
||||
import net.minecraft.client.model.geom.ModelLayerLocation;
|
||||
import net.minecraft.client.model.geom.builders.LayerDefinition;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class EntityModelImpl {
|
||||
public static final Map<ModelLayerLocation, LayerDefinition> PROVIDERS = new HashMap<>();
|
||||
}
|
||||
|
|
@ -11,9 +11,11 @@ import net.minecraft.client.model.geom.builders.MeshDefinition;
|
|||
import net.minecraftforge.client.event.EntityRenderersEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.loading.FMLPaths;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
|
|
@ -37,7 +39,7 @@ public class ForgePlatformHelper implements IPlatFormHelper {
|
|||
public void registerModelLayer(ModelLayerLocation layer) {
|
||||
DEFINITIONS.put(layer, ForgePlatformHelper::createPlaceholderDefinition);
|
||||
}
|
||||
private static LayerDefinition createPlaceholderDefinition() {
|
||||
private static @NotNull LayerDefinition createPlaceholderDefinition() {
|
||||
MeshDefinition mesh = new MeshDefinition();
|
||||
var root = mesh.getRoot();
|
||||
// 加入 main root,防止 bakeLayer().getChild("main") 为 null
|
||||
|
|
@ -48,9 +50,16 @@ public class ForgePlatformHelper implements IPlatFormHelper {
|
|||
@SubscribeEvent
|
||||
public static void registerLayerDefinitions(EntityRenderersEvent.RegisterLayerDefinitions event) {
|
||||
for (Map.Entry<ModelLayerLocation, Supplier<LayerDefinition>> modelLayerLocationSupplierEntry : DEFINITIONS.entrySet()) {
|
||||
event.registerLayerDefinition(modelLayerLocationSupplierEntry.getKey(), modelLayerLocationSupplierEntry.getValue());
|
||||
EntityModelLayersAccessor.getLayers().add(modelLayerLocationSupplierEntry.getKey());
|
||||
registerModelLayer(modelLayerLocationSupplierEntry.getKey(), modelLayerLocationSupplierEntry.getValue().get());
|
||||
}
|
||||
}
|
||||
private static void registerModelLayer(ModelLayerLocation layer, LayerDefinition definition) {
|
||||
Objects.requireNonNull(layer, "EntityModelLayer cannot be null");
|
||||
Objects.requireNonNull(definition, "ModelLayerDefinition cannot be null");
|
||||
if (EntityModelImpl.PROVIDERS.putIfAbsent(layer, definition) != null) {
|
||||
throw new IllegalArgumentException(String.format("Cannot replace registration for entity model layer \"%s\"", layer));
|
||||
}
|
||||
EntityModelLayersAccessor.getLayers().add(layer);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,11 +20,11 @@ modId = "forge"
|
|||
mandatory = true
|
||||
versionRange = "[47,)"
|
||||
ordering = "NONE"
|
||||
side = "BOTH"
|
||||
side = "CLIENT"
|
||||
|
||||
[[dependencies.jsonem]]
|
||||
modId = "minecraft"
|
||||
mandatory = true
|
||||
versionRange = "[1.20.1,)"
|
||||
ordering = "NONE"
|
||||
side = "BOTH"
|
||||
side = "CLIENT"
|
||||
|
|
@ -4,7 +4,8 @@
|
|||
"compatibilityLevel": "JAVA_17",
|
||||
"minVersion": "0.8",
|
||||
"client": [
|
||||
"EntityModelLayersAccessor"
|
||||
"EntityModelLayersAccessor",
|
||||
"EntityModelsMixin"
|
||||
],
|
||||
"mixins": [
|
||||
],
|
||||
|
|
|
|||
|
|
@ -4,15 +4,15 @@ org.gradle.parallel=true
|
|||
# Mod properties
|
||||
mod_id=jsonem
|
||||
mod_name=jsonEM
|
||||
mod_version=0.2.1+1.20-fabrge
|
||||
mod_version=0.2.4
|
||||
mod_source=https://github.com/LeisureTimeDock/JsonEM_Neo_Forge
|
||||
mod_credits=
|
||||
mod_authors= FoundationGames, R3944Realms
|
||||
mod_description=Migrate from Fabric 1.20.1 [Json Entity Models]
|
||||
mod_licence=MIT
|
||||
maven_group=com.leisuretimedock
|
||||
archives_name=jsonem_fabrge
|
||||
archives_base_name=jsonem_1.20.1_fabrge
|
||||
archives_name=jsonem
|
||||
archives_base_name=jsonem
|
||||
enabled_platforms=fabric,forge
|
||||
# Minecraft properties
|
||||
minecraft_version=1.20.1
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user