package net.minecraft.world.level.block.state.properties; import com.mojang.serialization.Codec; import io.netty.buffer.ByteBuf; import java.util.function.IntFunction; import net.minecraft.network.chat.Component; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.util.ByIdMap; import net.minecraft.util.StringRepresentable; import net.minecraft.util.ByIdMap.OutOfBoundsStrategy; public enum TestBlockMode implements StringRepresentable { START(0, "start"), LOG(1, "log"), FAIL(2, "fail"), ACCEPT(3, "accept"); private static final IntFunction BY_ID = ByIdMap.continuous(testBlockMode -> testBlockMode.id, values(), OutOfBoundsStrategy.ZERO); public static final Codec CODEC = StringRepresentable.fromEnum(TestBlockMode::values); public static final StreamCodec STREAM_CODEC = ByteBufCodecs.idMapper(BY_ID, testBlockMode -> testBlockMode.id); private final int id; private final String name; private final Component displayName; private final Component detailedMessage; private TestBlockMode(final int id, final String name) { this.id = id; this.name = name; this.displayName = Component.translatable("test_block.mode." + name); this.detailedMessage = Component.translatable("test_block.mode_info." + name); } @Override public String getSerializedName() { return this.name; } public Component getDisplayName() { return this.displayName; } public Component getDetailedMessage() { return this.detailedMessage; } }