mirror of
https://github.com/FancyInnovations/FancyPlugins.git
synced 2025-12-06 07:43:36 +00:00
fancyholograms v3: Add hologram command type
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
package com.fancyinnovations.fancyholograms.commands.lampCommands.types;
|
||||
|
||||
import com.fancyinnovations.fancyholograms.api.FancyHolograms;
|
||||
import com.fancyinnovations.fancyholograms.api.HologramRegistry;
|
||||
import com.fancyinnovations.fancyholograms.api.hologram.Hologram;
|
||||
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;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public class HologramCommandType extends BukkitExceptionHandler implements ParameterType<BukkitCommandActor, Hologram> {
|
||||
|
||||
public static final HologramCommandType INSTANCE = new HologramCommandType();
|
||||
private static final HologramRegistry REGISTRY = FancyHolograms.get().getRegistry();
|
||||
|
||||
private HologramCommandType() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Hologram parse(@NotNull MutableStringStream input, @NotNull ExecutionContext<@NotNull BukkitCommandActor> context) {
|
||||
String id = input.readString();
|
||||
|
||||
Optional<Hologram> hologram = REGISTRY.get(id);
|
||||
if (hologram.isPresent()) {
|
||||
return hologram.get();
|
||||
}
|
||||
|
||||
throw new InvalidHologramException(id);
|
||||
}
|
||||
|
||||
@HandleException
|
||||
public void onInvalidHologram(InvalidHologramException e, BukkitCommandActor actor) {
|
||||
FancyHologramsPlugin.get().getTranslator()
|
||||
.translate("common.hologram.not_found")
|
||||
.replace("name", e.input())
|
||||
.send(actor.sender());
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull SuggestionProvider<@NotNull BukkitCommandActor> defaultSuggestions() {
|
||||
return (ctx) -> REGISTRY.getAll().stream()
|
||||
.map(hologram -> hologram.getData().getName())
|
||||
.toList();
|
||||
}
|
||||
|
||||
public static class InvalidHologramException extends InvalidValueException {
|
||||
public InvalidHologramException(@NotNull String input) {
|
||||
super(input);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -10,6 +10,7 @@ import com.fancyinnovations.fancyholograms.commands.FancyHologramsCMD;
|
||||
import com.fancyinnovations.fancyholograms.commands.FancyHologramsTestCMD;
|
||||
import com.fancyinnovations.fancyholograms.commands.HologramCMD;
|
||||
import com.fancyinnovations.fancyholograms.commands.lampCommands.fancyholograms.ConfigCMD;
|
||||
import com.fancyinnovations.fancyholograms.commands.lampCommands.types.HologramCommandType;
|
||||
import com.fancyinnovations.fancyholograms.config.FHConfiguration;
|
||||
import com.fancyinnovations.fancyholograms.controller.HologramControllerImpl;
|
||||
import com.fancyinnovations.fancyholograms.converter.FHConversionRegistry;
|
||||
@@ -275,10 +276,10 @@ public final class FancyHologramsPlugin extends JavaPlugin implements FancyHolog
|
||||
Lamp.Builder<BukkitCommandActor> lampBuilder = BukkitLamp
|
||||
.builder(this);
|
||||
|
||||
// lampBuilder.parameterTypes(builder -> {
|
||||
// builder.addParameterType(Dialog.class, DialogCommandType.INSTANCE);
|
||||
// });
|
||||
// lampBuilder.exceptionHandler(DialogCommandType.INSTANCE);
|
||||
lampBuilder.parameterTypes(builder -> {
|
||||
builder.addParameterType(Hologram.class, HologramCommandType.INSTANCE);
|
||||
});
|
||||
lampBuilder.exceptionHandler(HologramCommandType.INSTANCE);
|
||||
|
||||
Lamp<BukkitCommandActor> lamp = lampBuilder.build();
|
||||
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
language_name: default
|
||||
messages:
|
||||
common:
|
||||
hologram:
|
||||
not_found: "<dark_gray>› <gray>Could not find hologram {warningColor}{name}<gray>."
|
||||
commands:
|
||||
fancyholograms:
|
||||
config:
|
||||
|
||||
Reference in New Issue
Block a user