feat: remap and filter tags
This commit is contained in:
parent
3c517a97c9
commit
0cf22e3d10
|
@ -52,11 +52,9 @@ public class CreateDestiSubCommand extends CreateTaggedSubCommand {
|
||||||
sender.sendMessage("");
|
sender.sendMessage("");
|
||||||
sender.sendMessage(Lang.translate("command.create.tags"));
|
sender.sendMessage(Lang.translate("command.create.tags"));
|
||||||
|
|
||||||
if(destinationTags.isEmpty()) {
|
if(!destinationTags.isEmpty()) {
|
||||||
sender.sendMessage(Lang.translate("desti.info.noargs"));
|
this.filterAndProcessTags(destinationTags);
|
||||||
}
|
this.printTags(sender, destinationTags);
|
||||||
else {
|
|
||||||
this.printTags(sender, destinationTags, Tag.TagType.DESTINATION);
|
|
||||||
}
|
}
|
||||||
sender.sendMessage("");
|
sender.sendMessage("");
|
||||||
Destination destination = destinationServices.createDesti(player, player.getLoc(), destinationTags);
|
Destination destination = destinationServices.createDesti(player, player.getLoc(), destinationTags);
|
||||||
|
|
|
@ -45,7 +45,7 @@ public class CreatePortalSubCommand extends CreateTaggedSubCommand {
|
||||||
sender.sendMessage(Lang.translate("messageprefix.positive") + Lang.translate("command.create.complete"));
|
sender.sendMessage(Lang.translate("messageprefix.positive") + Lang.translate("command.create.complete"));
|
||||||
sender.sendMessage(Lang.translate("command.create.tags"));
|
sender.sendMessage(Lang.translate("command.create.tags"));
|
||||||
sender.sendMessage("\u00A7a" + "triggerBlock\u00A77:\u00A7e" + Arrays.toString(portal.getTriggerBlocks()));
|
sender.sendMessage("\u00A7a" + "triggerBlock\u00A77:\u00A7e" + Arrays.toString(portal.getTriggerBlocks()));
|
||||||
this.printTags(sender, portal.getArgs(), Tag.TagType.PORTAL);
|
this.printTags(sender, portal.getArgs());
|
||||||
}
|
}
|
||||||
sender.sendMessage(Lang.translate("messageprefix.negative") + Lang.translate("command.create.error"));
|
sender.sendMessage(Lang.translate("messageprefix.negative") + Lang.translate("command.create.error"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -102,7 +102,41 @@ public abstract class CreateTaggedSubCommand implements SubCommand {
|
||||||
return suggestions;
|
return suggestions;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void printTags(CommandSenderContainer sender, List<DataTag> dataTags, Tag.TagType tagType) {
|
protected void filterAndProcessTags(List<DataTag> dataTags) {
|
||||||
|
List<Tag> relatedTags = this.getRelatedTags();
|
||||||
|
List<DataTag> processedTags = new ArrayList<>();
|
||||||
|
|
||||||
|
for (DataTag dataTag : dataTags) {
|
||||||
|
for (Tag tag : relatedTags) {
|
||||||
|
if (dataTag.NAME.equals(tag.getName())) {
|
||||||
|
// DataTag name matches the tag's main name, add as is
|
||||||
|
processedTags.add(dataTag);
|
||||||
|
break;
|
||||||
|
} else if (tag.getAliases() != null && Arrays.asList(tag.getAliases()).contains(dataTag.NAME)) {
|
||||||
|
// DataTag name matches an alias, create a new DataTag with the main name
|
||||||
|
processedTags.add(new DataTag(tag.getName(), dataTag.VALUES));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Replace the original dataTags list with the processed tags
|
||||||
|
dataTags.clear();
|
||||||
|
dataTags.addAll(processedTags);
|
||||||
|
// Sort the tags by name however make sure name is first
|
||||||
|
dataTags.sort((o1, o2) -> {
|
||||||
|
if(o1.NAME.equals("name")) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if(o2.NAME.equals("name")) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return o1.NAME.compareTo(o2.NAME);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected void printTags(CommandSenderContainer sender, List<DataTag> dataTags) {
|
||||||
for (DataTag tag : dataTags) {
|
for (DataTag tag : dataTags) {
|
||||||
if(tag.VALUES.length == 1) {
|
if(tag.VALUES.length == 1) {
|
||||||
sender.sendMessage(" \u00A7a" + tag.NAME + "\u00A77:\u00A7e" + tag.VALUES[0]);
|
sender.sendMessage(" \u00A7a" + tag.NAME + "\u00A77:\u00A7e" + tag.VALUES[0]);
|
||||||
|
@ -112,6 +146,5 @@ public abstract class CreateTaggedSubCommand implements SubCommand {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO add a note saying if tags were ignored due to not being valid for the type
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ public class Destination implements TagTarget {
|
||||||
private PlayerLocation loc;
|
private PlayerLocation loc;
|
||||||
|
|
||||||
@SerializedName("a")
|
@SerializedName("a")
|
||||||
transient private HashMap<String, String[]> args = new HashMap<>();
|
private HashMap<String, String[]> args = new HashMap<>();
|
||||||
|
|
||||||
private transient Set<String> argsCol;
|
private transient Set<String> argsCol;
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ import java.util.List;
|
||||||
* <p>
|
* <p>
|
||||||
* Most tags shouldn't be like this unless they are to be paired with another tag.
|
* Most tags shouldn't be like this unless they are to be paired with another tag.
|
||||||
*/
|
*/
|
||||||
public class NameTag implements Tag.Activation, Tag.AutoComplete {
|
public class NameTag implements Tag.AutoComplete {
|
||||||
|
|
||||||
private final TagType[] tagTypes = new TagType[]{ TagType.PORTAL, TagType.DESTINATION };
|
private final TagType[] tagTypes = new TagType[]{ TagType.PORTAL, TagType.DESTINATION };
|
||||||
|
|
||||||
|
@ -39,21 +39,6 @@ public class NameTag implements Tag.Activation, Tag.AutoComplete {
|
||||||
return Lang.translate("tag.name.description");
|
return Lang.translate("tag.name.description");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean preActivated(TagTarget target, PlayerContainer player, ActivationData activeData, String[] argData) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void postActivated(TagTarget target, PlayerContainer player, ActivationData activeData, String[] argData) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean activated(TagTarget target, PlayerContainer player, ActivationData activeData, String[] argData) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> autoComplete(String argData) {
|
public List<String> autoComplete(String argData) {
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -109,7 +109,7 @@ desti.error.noname= You must specify a name. (name:someNameHere)
|
||||||
|
|
||||||
error.notplayer=Only players can do that.
|
error.notplayer=Only players can do that.
|
||||||
|
|
||||||
portal.selector.poschange=&eYou have selected pos%1$s X:%2$s Y:%3$s Z:%4$s
|
portal.selector.poschange=&aYou have selected &epos%1$s &aX&7:&e%2$s &aY&7:&e%3$s &aZ&7:&e%4$s
|
||||||
|
|
||||||
command.lang.help=Update the translation file
|
command.lang.help=Update the translation file
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue