fancyholograms v3: Add trait command type

This commit is contained in:
Oliver
2025-09-28 13:48:54 +02:00
parent e8cc799f20
commit 203d77db3d
2 changed files with 62 additions and 1 deletions

View File

@@ -0,0 +1,56 @@
package com.fancyinnovations.fancyholograms.commands.lampCommands.types;
import com.fancyinnovations.fancyholograms.api.FancyHolograms;
import com.fancyinnovations.fancyholograms.api.trait.HologramTraitRegistry;
import com.fancyinnovations.fancyholograms.main.FancyHologramsPlugin;
import org.jetbrains.annotations.NotNull;
import revxrsal.commands.autocomplete.SuggestionProvider;
import revxrsal.commands.bukkit.actor.BukkitCommandActor;
import revxrsal.commands.bukkit.exception.BukkitExceptionHandler;
import revxrsal.commands.exception.InvalidValueException;
import revxrsal.commands.node.ExecutionContext;
import revxrsal.commands.parameter.ParameterType;
import revxrsal.commands.stream.MutableStringStream;
public class TraitCommandType extends BukkitExceptionHandler implements ParameterType<BukkitCommandActor, HologramTraitRegistry.TraitInfo> {
public static final TraitCommandType INSTANCE = new TraitCommandType();
private static final HologramTraitRegistry REGISTRY = FancyHolograms.get().getTraitRegistry();
private TraitCommandType() {
}
@Override
public HologramTraitRegistry.TraitInfo parse(@NotNull MutableStringStream input, @NotNull ExecutionContext<@NotNull BukkitCommandActor> context) {
String id = input.readString();
HologramTraitRegistry.TraitInfo trait = REGISTRY.getTrait(id);
if (trait != null) {
return trait;
}
throw new InvalidTraitException(id);
}
@HandleException
public void onInvalidTrait(InvalidTraitException e, BukkitCommandActor actor) {
FancyHologramsPlugin.get().getTranslator()
.translate("commands.hologram.edit.trait.not_found")
.replace("name", e.input())
.send(actor.sender());
}
@Override
public @NotNull SuggestionProvider<@NotNull BukkitCommandActor> defaultSuggestions() {
return (ctx) -> REGISTRY.getTraits().stream()
.map(HologramTraitRegistry.TraitInfo::name)
.toList();
}
public static class InvalidTraitException extends InvalidValueException {
public InvalidTraitException(@NotNull String input) {
super(input);
}
}
}

View File

@@ -10,3 +10,8 @@ messages:
settings_header: "<dark_gray> <gray>FancyHolograms settings:"
experimental_header: "<dark_gray> <gray>FancyHolograms experimental features:"
entry: "<dark_gray> <gray> - {warningColor}{path}<gray>: {value} (default: {default})"
hologram:
edit:
trait:
not_found: "<dark_gray> <gray>Could not find trait {warningColor}{name}<gray>."