fix:修复 Components not bound yet问题
This commit is contained in:
parent
4d2b856553
commit
cc1a4153e0
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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') ?: ''
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user