mirror of
https://github.com/FancyInnovations/FancyPlugins.git
synced 2025-12-06 07:43:36 +00:00
fancyholograms v3: Add trait commands
This commit is contained in:
@@ -22,7 +22,7 @@ public final class ConfigCMD {
|
|||||||
private ConfigCMD() {
|
private ConfigCMD() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command("fancyholograms config show")
|
@Command("fancyholograms-new config show")
|
||||||
@Description("Shows the current configuration")
|
@Description("Shows the current configuration")
|
||||||
@CommandPermission("fancyholograms.commands.fancyholograms.config.show")
|
@CommandPermission("fancyholograms.commands.fancyholograms.config.show")
|
||||||
public void show(
|
public void show(
|
||||||
|
|||||||
@@ -0,0 +1,73 @@
|
|||||||
|
package com.fancyinnovations.fancyholograms.commands.lampCommands.hologram;
|
||||||
|
|
||||||
|
import com.fancyinnovations.fancyholograms.api.hologram.Hologram;
|
||||||
|
import com.fancyinnovations.fancyholograms.api.trait.HologramTraitRegistry;
|
||||||
|
import com.fancyinnovations.fancyholograms.commands.lampCommands.suggestions.AttachedTraitsSuggestion;
|
||||||
|
import com.fancyinnovations.fancyholograms.commands.lampCommands.suggestions.DetachedTraitsSuggestion;
|
||||||
|
import com.fancyinnovations.fancyholograms.main.FancyHologramsPlugin;
|
||||||
|
import de.oliver.fancylib.translations.Translator;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import revxrsal.commands.annotation.Command;
|
||||||
|
import revxrsal.commands.annotation.Description;
|
||||||
|
import revxrsal.commands.annotation.SuggestWith;
|
||||||
|
import revxrsal.commands.bukkit.actor.BukkitCommandActor;
|
||||||
|
import revxrsal.commands.bukkit.annotation.CommandPermission;
|
||||||
|
|
||||||
|
public final class TraitCMD {
|
||||||
|
|
||||||
|
public static final TraitCMD INSTANCE = new TraitCMD();
|
||||||
|
|
||||||
|
private final FancyHologramsPlugin plugin = FancyHologramsPlugin.get();
|
||||||
|
private final Translator translator = FancyHologramsPlugin.get().getTranslator();
|
||||||
|
|
||||||
|
private TraitCMD() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Command("hologram-new edit <hologram> trait attach <trait>")
|
||||||
|
@Description("Attaches a trait to a hologram")
|
||||||
|
@CommandPermission("fancyholograms.commands.hologram.trait.attach")
|
||||||
|
public void attach(
|
||||||
|
final @NotNull BukkitCommandActor actor,
|
||||||
|
final @NotNull Hologram hologram,
|
||||||
|
final @NotNull @SuggestWith(AttachedTraitsSuggestion.class) HologramTraitRegistry.TraitInfo trait
|
||||||
|
) {
|
||||||
|
if (hologram.getData().getTraitTrait().isTraitAttached(trait.clazz())) {
|
||||||
|
translator.translate("commands.hologram.edit.trait.attach.already_attached")
|
||||||
|
.replace("hologram", hologram.getData().getName())
|
||||||
|
.replace("name", trait.name())
|
||||||
|
.send(actor.sender());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
hologram.getData().addTrait(trait.clazz());
|
||||||
|
|
||||||
|
translator.translate("commands.hologram.edit.trait.attach.success")
|
||||||
|
.replace("hologram", hologram.getData().getName())
|
||||||
|
.replace("name", trait.name())
|
||||||
|
.send(actor.sender());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Command("hologram-new edit <hologram> trait detach <trait>")
|
||||||
|
@Description("Detaches a trait to a hologram")
|
||||||
|
@CommandPermission("fancyholograms.commands.hologram.trait.detach")
|
||||||
|
public void detach(
|
||||||
|
final @NotNull BukkitCommandActor actor,
|
||||||
|
final @NotNull Hologram hologram,
|
||||||
|
final @SuggestWith(DetachedTraitsSuggestion.class) @NotNull HologramTraitRegistry.TraitInfo trait
|
||||||
|
) {
|
||||||
|
if (!hologram.getData().getTraitTrait().isTraitAttached(trait.clazz())) {
|
||||||
|
translator.translate("commands.hologram.edit.trait.detach.not_attached")
|
||||||
|
.replace("hologram", hologram.getData().getName())
|
||||||
|
.replace("name", trait.name())
|
||||||
|
.send(actor.sender());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
hologram.getData().getTraitTrait().removeTrait(trait.clazz());
|
||||||
|
|
||||||
|
translator.translate("commands.hologram.edit.trait.detach.success")
|
||||||
|
.replace("hologram", hologram.getData().getName())
|
||||||
|
.replace("name", trait.name())
|
||||||
|
.send(actor.sender());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package com.fancyinnovations.fancyholograms.commands.lampCommands.suggestions;
|
||||||
|
|
||||||
|
import com.fancyinnovations.fancyholograms.api.FancyHolograms;
|
||||||
|
import com.fancyinnovations.fancyholograms.api.hologram.Hologram;
|
||||||
|
import com.fancyinnovations.fancyholograms.api.trait.HologramTraitRegistry;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import revxrsal.commands.autocomplete.SuggestionProvider;
|
||||||
|
import revxrsal.commands.bukkit.actor.BukkitCommandActor;
|
||||||
|
import revxrsal.commands.node.ExecutionContext;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class AttachedTraitsSuggestion implements SuggestionProvider<BukkitCommandActor> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Collection<String> getSuggestions(@NotNull ExecutionContext<BukkitCommandActor> context) {
|
||||||
|
Hologram hologram = context.getResolvedArgumentOrNull(Hologram.class);
|
||||||
|
if (hologram == null) {
|
||||||
|
return List.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
return FancyHolograms.get().getTraitRegistry().getTraits().stream()
|
||||||
|
.filter(trait -> !trait.isDefault())
|
||||||
|
.filter(trait -> !hologram.getData().getTraitTrait().isTraitAttached(trait.clazz()))
|
||||||
|
.map(HologramTraitRegistry.TraitInfo::name)
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package com.fancyinnovations.fancyholograms.commands.lampCommands.suggestions;
|
||||||
|
|
||||||
|
import com.fancyinnovations.fancyholograms.api.hologram.Hologram;
|
||||||
|
import com.fancyinnovations.fancyholograms.api.trait.HologramTrait;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import revxrsal.commands.autocomplete.SuggestionProvider;
|
||||||
|
import revxrsal.commands.bukkit.actor.BukkitCommandActor;
|
||||||
|
import revxrsal.commands.node.ExecutionContext;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class DetachedTraitsSuggestion implements SuggestionProvider<BukkitCommandActor> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Collection<String> getSuggestions(@NotNull ExecutionContext<BukkitCommandActor> context) {
|
||||||
|
Hologram hologram = context.getResolvedArgumentOrNull(Hologram.class);
|
||||||
|
if (hologram == null) {
|
||||||
|
return List.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
return hologram.getData().getTraitTrait().getTraits()
|
||||||
|
.stream()
|
||||||
|
.map(HologramTrait::getName)
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,11 +6,14 @@ import com.fancyinnovations.fancyholograms.api.HologramController;
|
|||||||
import com.fancyinnovations.fancyholograms.api.HologramRegistry;
|
import com.fancyinnovations.fancyholograms.api.HologramRegistry;
|
||||||
import com.fancyinnovations.fancyholograms.api.data.HologramData;
|
import com.fancyinnovations.fancyholograms.api.data.HologramData;
|
||||||
import com.fancyinnovations.fancyholograms.api.hologram.Hologram;
|
import com.fancyinnovations.fancyholograms.api.hologram.Hologram;
|
||||||
|
import com.fancyinnovations.fancyholograms.api.trait.HologramTraitRegistry;
|
||||||
import com.fancyinnovations.fancyholograms.commands.FancyHologramsCMD;
|
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.hologram.TraitCMD;
|
||||||
import com.fancyinnovations.fancyholograms.commands.lampCommands.types.HologramCommandType;
|
import com.fancyinnovations.fancyholograms.commands.lampCommands.types.HologramCommandType;
|
||||||
|
import com.fancyinnovations.fancyholograms.commands.lampCommands.types.TraitCommandType;
|
||||||
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;
|
||||||
@@ -198,10 +201,9 @@ public final class FancyHologramsPlugin extends JavaPlugin implements FancyHolog
|
|||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
new FancyLib(INSTANCE);
|
new FancyLib(INSTANCE);
|
||||||
|
|
||||||
|
registerCommands();
|
||||||
if (configuration.useLampCommands()) {
|
if (configuration.useLampCommands()) {
|
||||||
registerLampCommands();
|
registerLampCommands();
|
||||||
} else {
|
|
||||||
registerCommands();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
registerListeners();
|
registerListeners();
|
||||||
@@ -278,12 +280,20 @@ public final class FancyHologramsPlugin extends JavaPlugin implements FancyHolog
|
|||||||
|
|
||||||
lampBuilder.parameterTypes(builder -> {
|
lampBuilder.parameterTypes(builder -> {
|
||||||
builder.addParameterType(Hologram.class, HologramCommandType.INSTANCE);
|
builder.addParameterType(Hologram.class, HologramCommandType.INSTANCE);
|
||||||
|
builder.addParameterType(HologramTraitRegistry.TraitInfo.class, TraitCommandType.INSTANCE);
|
||||||
});
|
});
|
||||||
lampBuilder.exceptionHandler(HologramCommandType.INSTANCE);
|
|
||||||
|
lampBuilder
|
||||||
|
.exceptionHandler(HologramCommandType.INSTANCE)
|
||||||
|
.exceptionHandler(TraitCommandType.INSTANCE);
|
||||||
|
|
||||||
Lamp<BukkitCommandActor> lamp = lampBuilder.build();
|
Lamp<BukkitCommandActor> lamp = lampBuilder.build();
|
||||||
|
|
||||||
|
// fancyholograms commands
|
||||||
lamp.register(ConfigCMD.INSTANCE);
|
lamp.register(ConfigCMD.INSTANCE);
|
||||||
|
|
||||||
|
// hologram commands
|
||||||
|
lamp.register(TraitCMD.INSTANCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void registerListeners() {
|
private void registerListeners() {
|
||||||
|
|||||||
@@ -15,3 +15,9 @@ messages:
|
|||||||
edit:
|
edit:
|
||||||
trait:
|
trait:
|
||||||
not_found: "<dark_gray>› <gray>Could not find trait {warningColor}{name}<gray>."
|
not_found: "<dark_gray>› <gray>Could not find trait {warningColor}{name}<gray>."
|
||||||
|
attach:
|
||||||
|
already_attached: "<dark_gray>› <gray>Hologram {warningColor}{hologram}<gray> already has trait {warningColor}{name}<gray> attached."
|
||||||
|
success: "<dark_gray>› <gray>Successfully attached trait {warningColor}{name}<gray> to hologram {warningColor}{hologram}<gray>."
|
||||||
|
detach:
|
||||||
|
not_attached: "<dark_gray>› <gray>Hologram {warningColor}{hologram}<gray> does not have trait {warningColor}{name}<gray> attached."
|
||||||
|
success: "<dark_gray>› <gray>Successfully detached trait {warningColor}{name}<gray> from hologram {warningColor}{hologram}<gray>."
|
||||||
|
|||||||
Reference in New Issue
Block a user