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.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<ItemStack, BlockState> renderObject;
private Either<ItemInput, BlockResult> parsedRHS; // 保存原始数据
private boolean initialized = false;
private ModelOverride(String raw, BlockResult parsedBlock, Type type, Either<ItemInput, BlockResult> 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<ModelOverride> of(String str, HolderLookup.Provider provider)
@ -114,6 +133,7 @@ public class ModelOverride {
public Either<ItemStack, BlockState> getRenderObject()
{
ensureInitialized();
return this.renderObject;
}

View File

@ -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;

View File

@ -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;

View File

@ -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') ?: ''
}
}
}
}

View File

@ -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