mirror of
https://github.com/FancyInnovations/FancyPlugins.git
synced 2025-12-05 23:33:36 +00:00
fancyholograms v3: Add trait command type
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -9,4 +9,9 @@ messages:
|
||||
show:
|
||||
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})"
|
||||
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>."
|
||||
|
||||
Reference in New Issue
Block a user