package net.minecraft.world.level.block; import com.mojang.serialization.Codec; import net.minecraft.util.StringRepresentable; import net.minecraft.world.level.block.state.BlockState; public interface HangingSignBlock { HangingSignBlock.Attachment attachmentPoint(BlockState state); static HangingSignBlock.Attachment getAttachmentPoint(final BlockState blockState) { return blockState.getBlock() instanceof HangingSignBlock hangingSignBlock ? hangingSignBlock.attachmentPoint(blockState) : HangingSignBlock.Attachment.CEILING; } public static enum Attachment implements StringRepresentable { WALL("wall"), CEILING("ceiling"), CEILING_MIDDLE("ceiling_middle"); public static final Codec CODEC = StringRepresentable.fromEnum(HangingSignBlock.Attachment::values); private final String name; private Attachment(final String name) { this.name = name; } @Override public String getSerializedName() { return this.name; } } }