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.FancyHologramsTestCMD;
|
||||||
import com.fancyinnovations.fancyholograms.commands.HologramCMD;
|
import com.fancyinnovations.fancyholograms.commands.HologramCMD;
|
||||||
import com.fancyinnovations.fancyholograms.commands.lampCommands.fancyholograms.ConfigCMD;
|
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.config.FHConfiguration;
|
||||||
import com.fancyinnovations.fancyholograms.controller.HologramControllerImpl;
|
import com.fancyinnovations.fancyholograms.controller.HologramControllerImpl;
|
||||||
import com.fancyinnovations.fancyholograms.converter.FHConversionRegistry;
|
import com.fancyinnovations.fancyholograms.converter.FHConversionRegistry;
|
||||||
@@ -275,10 +276,10 @@ public final class FancyHologramsPlugin extends JavaPlugin implements FancyHolog
|
|||||||
Lamp.Builder<BukkitCommandActor> lampBuilder = BukkitLamp
|
Lamp.Builder<BukkitCommandActor> lampBuilder = BukkitLamp
|
||||||
.builder(this);
|
.builder(this);
|
||||||
|
|
||||||
// lampBuilder.parameterTypes(builder -> {
|
lampBuilder.parameterTypes(builder -> {
|
||||||
// builder.addParameterType(Dialog.class, DialogCommandType.INSTANCE);
|
builder.addParameterType(Hologram.class, HologramCommandType.INSTANCE);
|
||||||
// });
|
});
|
||||||
// lampBuilder.exceptionHandler(DialogCommandType.INSTANCE);
|
lampBuilder.exceptionHandler(HologramCommandType.INSTANCE);
|
||||||
|
|
||||||
Lamp<BukkitCommandActor> lamp = lampBuilder.build();
|
Lamp<BukkitCommandActor> lamp = lampBuilder.build();
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
language_name: default
|
language_name: default
|
||||||
messages:
|
messages:
|
||||||
|
common:
|
||||||
|
hologram:
|
||||||
|
not_found: "<dark_gray>› <gray>Could not find hologram {warningColor}{name}<gray>."
|
||||||
commands:
|
commands:
|
||||||
fancyholograms:
|
fancyholograms:
|
||||||
config:
|
config:
|
||||||
|
|||||||
Reference in New Issue
Block a user