9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-30 12:29:15 +00:00

修复原版方块映射

This commit is contained in:
XiaoMoMi
2025-09-28 21:31:30 +08:00
parent 1da35c6bb5
commit 4cca5288e4
3 changed files with 28 additions and 4 deletions

View File

@@ -20,6 +20,7 @@ import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
import net.momirealms.craftengine.core.item.behavior.ItemBehaviorFactory;
import net.momirealms.craftengine.core.item.context.UseOnContext;
import net.momirealms.craftengine.core.pack.Pack;
import net.momirealms.craftengine.core.pack.PendingConfigSection;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.plugin.context.ContextHolder;
import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext;
@@ -185,9 +186,9 @@ public class FurnitureItemBehavior extends ItemBehavior {
if (id instanceof Map<?,?> map) {
if (map.containsKey(key.toString())) {
// 防呆
BukkitFurnitureManager.instance().parser().parseSection(pack, path, node, key, MiscUtils.castToMap(map.get(key.toString()), false));
BukkitFurnitureManager.instance().parser().addPendingConfigSection(new PendingConfigSection(pack, path, node, key, MiscUtils.castToMap(map.get(key.toString()), false)));
} else {
BukkitFurnitureManager.instance().parser().parseSection(pack, path, node, key, MiscUtils.castToMap(map, false));
BukkitFurnitureManager.instance().parser().addPendingConfigSection(new PendingConfigSection(pack, path, node, key, MiscUtils.castToMap(map, false)));
}
return new FurnitureItemBehavior(key);
} else {

View File

@@ -253,7 +253,7 @@ public abstract class AbstractBlockManager extends AbstractModelGenerator implem
String after = entry.getValue().toString();
// 先解析为唯一的wrapper
BlockStateWrapper beforeState = createVanillaBlockState(before);
BlockStateWrapper afterState = createVanillaBlockState(before);
BlockStateWrapper afterState = createVanillaBlockState(after);
if (beforeState == null) {
exceptionCollector.add(new LocalizedResourceConfigException("warning.config.block_state_mapping.invalid_state", before));
continue;

View File

@@ -1,20 +1,25 @@
package net.momirealms.craftengine.core.entity.furniture;
import net.momirealms.craftengine.core.block.AbstractBlockManager;
import net.momirealms.craftengine.core.entity.Billboard;
import net.momirealms.craftengine.core.entity.ItemDisplayContext;
import net.momirealms.craftengine.core.loot.LootTable;
import net.momirealms.craftengine.core.pack.LoadingSequence;
import net.momirealms.craftengine.core.pack.Pack;
import net.momirealms.craftengine.core.pack.PendingConfigSection;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.plugin.config.Config;
import net.momirealms.craftengine.core.plugin.config.IdSectionConfigParser;
import net.momirealms.craftengine.core.plugin.context.event.EventFunctions;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
import net.momirealms.craftengine.core.util.GsonHelper;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
import org.incendo.cloud.suggestion.Suggestion;
import org.joml.Vector3f;
import java.io.IOException;
import java.nio.file.Path;
import java.util.*;
@@ -31,7 +36,7 @@ public abstract class AbstractFurnitureManager implements FurnitureManager {
}
@Override
public IdSectionConfigParser parser() {
public FurnitureParser parser() {
return this.furnitureParser;
}
@@ -76,6 +81,24 @@ public abstract class AbstractFurnitureManager implements FurnitureManager {
public class FurnitureParser implements IdSectionConfigParser {
public static final String[] CONFIG_SECTION_NAME = new String[] { "furniture" };
private final List<PendingConfigSection> pendingConfigSections = new ArrayList<>();
public void addPendingConfigSection(PendingConfigSection section) {
this.pendingConfigSections.add(section);
}
@Override
public void preProcess() {
for (PendingConfigSection section : this.pendingConfigSections) {
ResourceConfigUtils.runCatching(
section.path(),
section.node(),
() -> parseSection(section.pack(), section.path(), section.node(), section.id(), section.config()),
() -> GsonHelper.get().toJson(section.config())
);
}
this.pendingConfigSections.clear();
}
@Override
public String[] sectionId() {