fix:修复 Components not bound yet问题

This commit is contained in:
叁玖领域 2026-05-27 23:21:33 +08:00
parent 4d2b856553
commit cc1a4153e0
5 changed files with 37 additions and 5 deletions

View File

@ -34,6 +34,7 @@ import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.Property; import net.minecraft.world.level.block.state.properties.Property;
import tschipp.carryon.Constants;
import tschipp.carryon.common.scripting.Matchables.NBTCondition; import tschipp.carryon.common.scripting.Matchables.NBTCondition;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@ -42,22 +43,40 @@ import java.util.Map;
public class ModelOverride { public class ModelOverride {
private BlockResult parsedBlock; private BlockResult parsedBlock;
private Either<ItemStack, BlockState> renderObject; private Either<ItemStack, BlockState> renderObject;
private Either<ItemInput, BlockResult> parsedRHS; // 保存原始数据
private boolean initialized = false;
private ModelOverride(String raw, BlockResult parsedBlock, Type type, Either<ItemInput, BlockResult> parsedRHS) private ModelOverride(String raw, BlockResult parsedBlock, Type type, Either<ItemInput, BlockResult> parsedRHS)
{ {
this.parsedBlock = parsedBlock; this.parsedBlock = parsedBlock;
this.parsedRHS = parsedRHS;
// 延迟创建renderObject
this.renderObject = null;
}
// 延迟初始化方法
private void ensureInitialized() {
if (initialized) return;
parsedRHS.ifLeft(res -> { parsedRHS.ifLeft(res -> {
try {
ItemStack stack = new ItemStack(res.item()); ItemStack stack = new ItemStack(res.item());
if(res.components() != null) if(res.components() != null)
stack.applyComponents(res.components()); stack.applyComponents(res.components());
this.renderObject = Either.left(stack); 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 -> { parsedRHS.ifRight(res -> {
BlockState state = res.blockState(); BlockState state = res.blockState();
this.renderObject = Either.right(state); this.renderObject = Either.right(state);
}); });
initialized = true;
} }
public static DataResult<ModelOverride> of(String str, HolderLookup.Provider provider) public static DataResult<ModelOverride> of(String str, HolderLookup.Provider provider)
@ -114,6 +133,7 @@ public class ModelOverride {
public Either<ItemStack, BlockState> getRenderObject() public Either<ItemStack, BlockState> getRenderObject()
{ {
ensureInitialized();
return this.renderObject; return this.renderObject;
} }

View File

@ -23,6 +23,7 @@ package tschipp.carryon.config;
//Many Thanks to ThatGravyBoat for this template! //Many Thanks to ThatGravyBoat for this template!
import net.minecraft.core.HolderLookup; import net.minecraft.core.HolderLookup;
import net.neoforged.api.distmarker.Dist;
import tschipp.carryon.client.modeloverride.ModelOverrideHandler; import tschipp.carryon.client.modeloverride.ModelOverrideHandler;
import tschipp.carryon.common.config.ListHandler; import tschipp.carryon.common.config.ListHandler;
import tschipp.carryon.common.pickupcondition.PickupConditionHandler; import tschipp.carryon.common.pickupcondition.PickupConditionHandler;

View File

@ -34,6 +34,7 @@ import net.minecraft.world.level.ServerLevelAccessor;
import net.neoforged.bus.api.EventPriority; import net.neoforged.bus.api.EventPriority;
import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.fml.common.EventBusSubscriber;
import net.neoforged.fml.loading.FMLEnvironment;
import net.neoforged.neoforge.common.NeoForge; import net.neoforged.neoforge.common.NeoForge;
import net.neoforged.neoforge.common.util.BlockSnapshot; import net.neoforged.neoforge.common.util.BlockSnapshot;
import net.neoforged.neoforge.event.AddServerReloadListenersEvent; import net.neoforged.neoforge.event.AddServerReloadListenersEvent;

View File

@ -116,8 +116,18 @@ publishing {
} }
} }
repositories { repositories {
maven {
name = 'local'
url = layout.buildDirectory.dir("repo")
}
maven { maven {
url System.getenv('local_maven_url') 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') ?: ''
}
} }
} }
} }

View File

@ -19,7 +19,7 @@ mod_dev_version=2.0.141
# Fabric # Fabric
fabric_version=0.148.0+26.1.2 fabric_version=0.148.0+26.1.2
fabric_loader_version=0.18.4 fabric_loader_version=0.18.4
loom_version=1.16-SNAPSHOT loom_version=1.15.5
# Neoforge # Neoforge
neoforge_version=26.1.2.43-beta neoforge_version=26.1.2.43-beta