From cc1a4153e045f94a8f3698f18bf5a4c54984d101 Mon Sep 17 00:00:00 2001 From: 3944Realms Date: Wed, 27 May 2026 23:21:33 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=20Components=20not=20bou?= =?UTF-8?q?nd=20yet=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/modeloverride/ModelOverride.java | 28 ++++++++++++++++--- .../tschipp/carryon/config/ConfigLoader.java | 1 + .../tschipp/carryon/events/CommonEvents.java | 1 + .../src/main/groovy/multiloader-common.gradle | 10 +++++++ gradle.properties | 2 +- 5 files changed, 37 insertions(+), 5 deletions(-) diff --git a/Common/src/main/java/tschipp/carryon/client/modeloverride/ModelOverride.java b/Common/src/main/java/tschipp/carryon/client/modeloverride/ModelOverride.java index f4e691c..102c050 100644 --- a/Common/src/main/java/tschipp/carryon/client/modeloverride/ModelOverride.java +++ b/Common/src/main/java/tschipp/carryon/client/modeloverride/ModelOverride.java @@ -34,6 +34,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.Property; +import tschipp.carryon.Constants; import tschipp.carryon.common.scripting.Matchables.NBTCondition; import javax.annotation.Nullable; @@ -42,22 +43,40 @@ import java.util.Map; public class ModelOverride { private BlockResult parsedBlock; private Either renderObject; + private Either parsedRHS; // 保存原始数据 + private boolean initialized = false; + private ModelOverride(String raw, BlockResult parsedBlock, Type type, Either parsedRHS) { this.parsedBlock = parsedBlock; + this.parsedRHS = parsedRHS; + // 延迟创建renderObject + this.renderObject = null; + } + + // 延迟初始化方法 + private void ensureInitialized() { + if (initialized) return; parsedRHS.ifLeft(res -> { - ItemStack stack = new ItemStack(res.item()); - if(res.components() != null) - stack.applyComponents(res.components()); - this.renderObject = Either.left(stack); + try { + ItemStack stack = new ItemStack(res.item()); + if(res.components() != null) + stack.applyComponents(res.components()); + this.renderObject = Either.left(stack); + } catch (NullPointerException e) { + this.renderObject = Either.left(ItemStack.EMPTY); + Constants.LOG.warn("Delayed init failed for item: {}", res.item().getRegisteredName()); + } }); parsedRHS.ifRight(res -> { BlockState state = res.blockState(); this.renderObject = Either.right(state); }); + + initialized = true; } public static DataResult of(String str, HolderLookup.Provider provider) @@ -114,6 +133,7 @@ public class ModelOverride { public Either getRenderObject() { + ensureInitialized(); return this.renderObject; } diff --git a/Common/src/main/java/tschipp/carryon/config/ConfigLoader.java b/Common/src/main/java/tschipp/carryon/config/ConfigLoader.java index 6931459..8562bab 100644 --- a/Common/src/main/java/tschipp/carryon/config/ConfigLoader.java +++ b/Common/src/main/java/tschipp/carryon/config/ConfigLoader.java @@ -23,6 +23,7 @@ package tschipp.carryon.config; //Many Thanks to ThatGravyBoat for this template! import net.minecraft.core.HolderLookup; +import net.neoforged.api.distmarker.Dist; import tschipp.carryon.client.modeloverride.ModelOverrideHandler; import tschipp.carryon.common.config.ListHandler; import tschipp.carryon.common.pickupcondition.PickupConditionHandler; diff --git a/NeoForge/src/main/java/tschipp/carryon/events/CommonEvents.java b/NeoForge/src/main/java/tschipp/carryon/events/CommonEvents.java index cf58e28..a1b30a0 100644 --- a/NeoForge/src/main/java/tschipp/carryon/events/CommonEvents.java +++ b/NeoForge/src/main/java/tschipp/carryon/events/CommonEvents.java @@ -34,6 +34,7 @@ import net.minecraft.world.level.ServerLevelAccessor; import net.neoforged.bus.api.EventPriority; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.fml.loading.FMLEnvironment; import net.neoforged.neoforge.common.NeoForge; import net.neoforged.neoforge.common.util.BlockSnapshot; import net.neoforged.neoforge.event.AddServerReloadListenersEvent; diff --git a/buildSrc/src/main/groovy/multiloader-common.gradle b/buildSrc/src/main/groovy/multiloader-common.gradle index 77ac880..a8e36b3 100644 --- a/buildSrc/src/main/groovy/multiloader-common.gradle +++ b/buildSrc/src/main/groovy/multiloader-common.gradle @@ -116,8 +116,18 @@ publishing { } } repositories { + maven { + name = 'local' + url = layout.buildDirectory.dir("repo") + } maven { url System.getenv('local_maven_url') + name = 'LTDNexus' + url = 'https://nexus.bot.leisuretimedock.top/repository/maven-releases/' + credentials { + username = System.getenv('LTDNexusUsername') ?: '' + password = System.getenv('LTDNexusPassword') ?: '' + } } } } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index f6c2244..121f357 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,7 +19,7 @@ mod_dev_version=2.0.141 # Fabric fabric_version=0.148.0+26.1.2 fabric_loader_version=0.18.4 -loom_version=1.16-SNAPSHOT +loom_version=1.15.5 # Neoforge neoforge_version=26.1.2.43-beta