Fix an exception with tab completion of attributes

This commit is contained in:
fullwall 2025-01-31 01:48:40 +08:00
parent c92f13ce4f
commit 0a3ab06852
4 changed files with 13 additions and 51 deletions

View File

@ -69,7 +69,7 @@ import net.citizensnpcs.api.CitizensAPI;
import net.citizensnpcs.api.ai.speech.SpeechContext; import net.citizensnpcs.api.ai.speech.SpeechContext;
import net.citizensnpcs.api.ai.tree.StatusMapper; import net.citizensnpcs.api.ai.tree.StatusMapper;
import net.citizensnpcs.api.command.Arg; import net.citizensnpcs.api.command.Arg;
import net.citizensnpcs.api.command.Arg.CompletionsProvider.OptionalEnumCompletions; import net.citizensnpcs.api.command.Arg.CompletionsProvider.OptionalKeyedCompletions;
import net.citizensnpcs.api.command.Command; import net.citizensnpcs.api.command.Command;
import net.citizensnpcs.api.command.CommandContext; import net.citizensnpcs.api.command.CommandContext;
import net.citizensnpcs.api.command.CommandMessages; import net.citizensnpcs.api.command.CommandMessages;
@ -3799,17 +3799,9 @@ public class NPCCommands {
trait.isTamed(), trait.getCollarColor().name()); trait.isTamed(), trait.getCollarColor().name());
} }
public static class OptionalAttributeCompletions implements Arg.CompletionsProvider { public static class OptionalAttributeCompletions extends OptionalKeyedCompletions {
@Override public OptionalAttributeCompletions() {
public Collection<String> getCompletions(CommandContext args, CommandSender sender, NPC npc) { super("org.bukkit.attribute.Attribute");
return Arrays.stream(Attribute.values()).map(attr -> attr.getKey().toString()).collect(Collectors.toList());
}
}
public static class OptionalBoatTypeCompletions extends OptionalEnumCompletions {
@Override
public String getEnumClassName() {
return "org.bukkit.entity.Boat.Type";
} }
} }

View File

@ -1,35 +0,0 @@
package net.citizensnpcs.trait;
import org.bukkit.entity.Boat;
import net.citizensnpcs.api.persistence.Persist;
import net.citizensnpcs.api.trait.Trait;
import net.citizensnpcs.api.trait.TraitName;
@TraitName("boattrait")
public class BoatTrait extends Trait {
@Persist
private Boat.Type type;
public BoatTrait() {
super("boattrait");
}
public Boat.Type getType() {
return type;
}
@Override
public void onSpawn() {
if (npc.getEntity() instanceof Boat) {
if (type != null) {
((Boat) npc.getEntity()).setBoatType(type);
}
}
}
public void setType(Boat.Type type) {
this.type = type;
onSpawn();
}
}

View File

@ -679,7 +679,7 @@ public class ShopTrait extends Trait {
return; return;
InputMenus.runChatStringSetter(ctx.getMenu(), event, InputMenus.runChatStringSetter(ctx.getMenu(), event,
"Enter the new item description, currently:<br>[[" + (modified.display.getItemMeta().hasLore() "Type the new item description, currently:<br>[[" + (modified.display.getItemMeta().hasLore()
? Joiner.on("<br>").skipNulls().join(modified.display.getItemMeta().getLore()) ? Joiner.on("<br>").skipNulls().join(modified.display.getItemMeta().getLore())
: "Unset"), : "Unset"),
description -> { description -> {

View File

@ -3,6 +3,7 @@ package net.citizensnpcs.trait.versioned;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Boat; import org.bukkit.entity.Boat;
import net.citizensnpcs.api.command.Arg.CompletionsProvider.OptionalKeyedCompletions;
import net.citizensnpcs.api.command.Command; import net.citizensnpcs.api.command.Command;
import net.citizensnpcs.api.command.CommandContext; import net.citizensnpcs.api.command.CommandContext;
import net.citizensnpcs.api.command.Flag; import net.citizensnpcs.api.command.Flag;
@ -14,7 +15,6 @@ import net.citizensnpcs.api.trait.Trait;
import net.citizensnpcs.api.trait.TraitName; import net.citizensnpcs.api.trait.TraitName;
import net.citizensnpcs.api.util.Messaging; import net.citizensnpcs.api.util.Messaging;
import net.citizensnpcs.api.util.SpigotUtil; import net.citizensnpcs.api.util.SpigotUtil;
import net.citizensnpcs.commands.NPCCommands.OptionalBoatTypeCompletions;
import net.citizensnpcs.util.Messages; import net.citizensnpcs.util.Messages;
@TraitName("boattrait") @TraitName("boattrait")
@ -51,8 +51,8 @@ public class BoatTrait extends Trait {
@Override @Override
public void onSpawn() { public void onSpawn() {
int[] version = SpigotUtil.getVersion(); int[] version = SpigotUtil.getVersion();
if (version[1] > 21 || (version[1] == 21 && version[2] >= 2)) if (version[1] >= 21)
return; return; // technically this wasn't changed until 1.21.2 but 1.21 / 1.21.1 are no longer supported
if (npc.getEntity() instanceof Boat) { if (npc.getEntity() instanceof Boat) {
if (type != null) { if (type != null) {
((Boat) npc.getEntity()).setBoatType(type); ((Boat) npc.getEntity()).setBoatType(type);
@ -65,4 +65,9 @@ public class BoatTrait extends Trait {
onSpawn(); onSpawn();
} }
public static class OptionalBoatTypeCompletions extends OptionalKeyedCompletions {
public OptionalBoatTypeCompletions() {
super("org.bukkit.entity.Boat.Type");
}
}
} }