1.20.1 Minecraft Forge自定义床方块旋转问题排查
自定义床方块旋转导致紫黑错误方块问题解决记录
问题场景
使用1.20.1版本Minecraft Forge开发服务器个人模组,目标实现自定义床模型。大部分功能正常,但方块旋转放置功能无法实现:未添加旋转相关方块状态时,方块显示正常;添加旋转配置后,方块变成紫黑错误纹理。
测试情况
- 仅使用如下方块状态配置时,床显示正常:
{ "variants": { "": { "model": "tutorial_testing:block/hope_bed" } } }
- 添加带旋转的方块状态配置后,方块变为错误方块:
{ "variants": { "facing = north": { "model": "tutorial_testing:block/hope_bed"}, "facing = east": { "model": "tutorial_testing:block/hope_bed", "y": 90 }, "facing = south": { "model": "tutorial_testing:block/hope_bed", "y": 180 }, "facing = west": { "model": "tutorial_testing:block/hope_bed", "y": 270 } } }
相关代码
方块注册类
import io.github.magikpups.testing.TestingMod; import io.github.magikpups.testing.block.advhopebed; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.material.MapColor; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; public class BlockRegistry { public static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, TestingMod.MOD_ID); public static final RegistryObject<Block> HOPE_BED = BLOCKS.register( "hope_bed", () -> new advhopebed(Block.Properties.copy(Blocks.BAMBOO_PLANKS) .mapColor(MapColor.COLOR_LIGHT_GREEN) .strength(5.0f) .sound(SoundType.BAMBOO_WOOD) .noLootTable() .dynamicShape() )); }
advhopebed类
import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.HorizontalDirectionalBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.DirectionProperty; public class advhopebed extends HorizontalDirectionalBlock { public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; public advhopebed(Properties properties) { super(properties); } public BlockState getStateForPlacement(BlockPlaceContext context) { return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite()); } @Override protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) { super.createBlockStateDefinition(builder); builder.add(FACING); } }
问题解决
经排查,问题根源在方块状态配置的格式错误:facing = north 中的空格不符合规范,正确写法为 facing=north。修改所有方向配置的格式后,方块旋转功能正常,不再显示紫黑错误纹理。
内容的提问来源于stack exchange,提问作者PupsiCola
相关产品推荐
相关产品推荐

