mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-27 02:49:15 +00:00
修复了新版本不加载
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package net.momirealms.craftengine.mod.block;
|
||||
|
||||
import net.minecraft.commands.arguments.blocks.BlockStateParser;
|
||||
import net.minecraft.core.Registry;
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
@@ -12,14 +13,15 @@ import net.momirealms.craftengine.mod.CraftEnginePlugin;
|
||||
import net.momirealms.craftengine.mod.util.NoteBlockUtils;
|
||||
import net.momirealms.craftengine.mod.util.Reflections;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.craftbukkit.block.data.CraftBlockData;
|
||||
|
||||
import java.io.StringReader;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
public class CustomBlocks {
|
||||
|
||||
@@ -120,8 +122,12 @@ public class CustomBlocks {
|
||||
|
||||
private static BlockState createBlockData(String blockState) {
|
||||
try {
|
||||
CraftBlockData data = CraftBlockData.newData(null, blockState);
|
||||
return data.getState();
|
||||
Object holderLookUp = BuiltInRegistries.BLOCK;
|
||||
if (Reflections.method$Registry$asLookup != null) {
|
||||
holderLookUp = Reflections.method$Registry$asLookup.invoke(holderLookUp);
|
||||
}
|
||||
BlockStateParser.BlockResult result = (BlockStateParser.BlockResult) Reflections.method$BlockStateParser$parseForBlock.invoke(null, holderLookUp, blockState, false);
|
||||
return result.blockState();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package net.momirealms.craftengine.mod.util;
|
||||
|
||||
import net.minecraft.commands.arguments.blocks.BlockStateParser;
|
||||
import net.minecraft.core.DefaultedRegistry;
|
||||
import net.minecraft.core.HolderLookup;
|
||||
import net.minecraft.core.Registry;
|
||||
import net.minecraft.resources.ResourceKey;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.block.state.BlockBehaviour;
|
||||
@@ -21,4 +24,14 @@ public class Reflections {
|
||||
public static final Field field$BlockBehaviour$Properties$id = ReflectionUtils.getDeclaredField(
|
||||
BlockBehaviour.Properties.class, ResourceKey.class, 0
|
||||
);
|
||||
|
||||
public static final Method method$BlockStateParser$parseForBlock = requireNonNull(
|
||||
ReflectionUtils.getStaticMethod(
|
||||
BlockStateParser.class, BlockStateParser.BlockResult.class, new String[]{"parseForBlock"}, HolderLookup.class, String.class, boolean.class
|
||||
)
|
||||
);
|
||||
|
||||
public static final Method method$Registry$asLookup = ReflectionUtils.getMethod(
|
||||
Registry.class, new String[]{"asLookup"}
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user