package net.minecraft.command.collections; import java.util.Arrays; import com.google.common.base.Function; import com.google.common.collect.Lists; import net.minecraft.command.completion.ProviderCompleter; import net.minecraft.command.construction.JsonConstructor; import net.minecraft.command.construction.JsonConstructor.ConstructionHelper; import net.minecraft.command.construction.JsonConstructorArray; import net.minecraft.command.type.custom.TypeScoreObjective; import net.minecraft.command.type.custom.json.JsonDescriptor.Element; import net.minecraft.event.ClickEvent; import net.minecraft.event.HoverEvent; import net.minecraft.util.IChatComponent; public class JsonDescriptors extends ConstructionHelper { public static final Element IChatComponent; private JsonDescriptors() { } static { final JsonConstructor SingleIChatComponent = object(IChatComponent.class); final JsonConstructorArray ArrayIChatComponent = array(); IChatComponent = merge(SingleIChatComponent, ArrayIChatComponent); ArrayIChatComponent.then(IChatComponent); SingleIChatComponent.key( "text", "translate", "selector", "insertion") .key("with", IChatComponent) .key("score", object() .key("name", Completers.scoreHolder) .key("objective", TypeScoreObjective.completer)) .key("color", ProviderCompleter.create(Completers.chatColors)) .key("bold", Completers.bool) .key("italic", Completers.bool) .key("underlined", Completers.bool) .key("strikethrough", Completers.bool) .key("obfuscated", Completers.bool) .key("hoverEvent", object() .key("action", ProviderCompleter.create(Lists.transform(Arrays.asList(HoverEvent.Action.values()), new Function<HoverEvent.Action, String>() { @Override public String apply(final HoverEvent.Action input) { return input.getCanonicalName(); } }))) .key("value")) .key("clickEvent", object() .key("action", ProviderCompleter.create(Lists.transform(Arrays.asList(ClickEvent.Action.values()), new Function<ClickEvent.Action, String>() { @Override public String apply(final ClickEvent.Action input) { return input.getCanonicalName(); } }))) .key("value")) .key("extra", IChatComponent); } }