package net.minecraft.server.dialog.action; import com.mojang.serialization.MapCodec; import java.util.Collections; import java.util.EnumMap; import java.util.Map; import java.util.Optional; import net.minecraft.Util; import net.minecraft.network.chat.ClickEvent; public record StaticAction(ClickEvent value) implements Action { public static final Map> WRAPPED_CODECS = Util.make(() -> { Map> map = new EnumMap(ClickEvent.Action.class); for (ClickEvent.Action action : (ClickEvent.Action[])ClickEvent.Action.class.getEnumConstants()) { if (action.isAllowedFromServer()) { MapCodec mapCodec = action.valueCodec(); map.put(action, mapCodec.xmap(StaticAction::new, StaticAction::value)); } } return Collections.unmodifiableMap(map); }); @Override public MapCodec codec() { return (MapCodec)WRAPPED_CODECS.get(this.value.action()); } @Override public Optional createAction(Map valueGetters) { return Optional.of(this.value); } }