Skip to content
This repository has been archived by the owner on Apr 12, 2022. It is now read-only.

Commit

Permalink
Tablist stuff!
Browse files Browse the repository at this point in the history
Command and tags
  • Loading branch information
Xenmai committed Feb 4, 2018
1 parent 2646968 commit 2078a89
Show file tree
Hide file tree
Showing 4 changed files with 116 additions and 1 deletion.
Expand Up @@ -160,6 +160,7 @@ public void onServerStart(GamePreInitializationEvent event) {
Denizen2Core.register(new NarrateCommand());
Denizen2Core.register(new PardonCommand());
Denizen2Core.register(new RemoveBossBarCommand());
Denizen2Core.register(new TabListCommand());
Denizen2Core.register(new TakeCommand());
Denizen2Core.register(new TellCommand());
Denizen2Core.register(new TitleCommand());
Expand Down
Expand Up @@ -73,7 +73,7 @@ public void execute(CommandQueue queue, CommandEntry entry) {
try {
Agent agent = (Agent) entityTag.getInternal();
TextTag type = TextTag.getFor(queue.error, entry.getArgumentObject(queue, 1));
// TODO: Swtich to these once Sponge fixes task types.
// TODO: Switch to this once Sponge fixes task types.
// Optional<AITaskType> opt = Sponge.getRegistry().getType(AITaskType.class, type.getInternal());
// if (!opt.isPresent()) {
// queue.handleError(entry, "Invalid task type '" + type.debug() + "' in RemoveAITask command!");
Expand Down
@@ -0,0 +1,83 @@
package com.denizenscript.denizen2sponge.commands.player;

import com.denizenscript.denizen2core.commands.AbstractCommand;
import com.denizenscript.denizen2core.commands.CommandEntry;
import com.denizenscript.denizen2core.commands.CommandQueue;
import com.denizenscript.denizen2core.tags.AbstractTagObject;
import com.denizenscript.denizen2core.utilities.debugging.ColorSet;
import com.denizenscript.denizen2sponge.Denizen2Sponge;
import com.denizenscript.denizen2sponge.tags.objects.FormattedTextTag;
import com.denizenscript.denizen2sponge.tags.objects.PlayerTag;
import org.spongepowered.api.text.Text;

public class TabListCommand extends AbstractCommand {

// <--[command]
// @Since 0.4.0
// @Name tablist
// @Arguments <player> <header> <footer>
// @Short sets the header or footer of a player's tablist.
// @Updated 2018/02/04
// @Group Player
// @Minimum 3
// @Maximum 3
// @Description
// Sets the header or footer of a player's tablist.
// @Example
// # This example changes both the header and footer of the player's tablist.
// - tablist <player> "Hello!" "Bye!"
// @Example
// # This example only changes the header of the player's tablist.
// - tablist <player> "I'm a header!" <player.tablist_footer>
// @Example
// # This example only changes the footer of the player's tablist.
// - tablist <player> <player.tablist_header> "I'm a footer!"
// -->

@Override
public String getName() {
return "tablist";
}

@Override
public String getArguments() {
return "<player> <header> <footer>";
}

@Override
public int getMinimumArguments() {
return 3;
}

@Override
public int getMaximumArguments() {
return 3;
}

@Override
public void execute(CommandQueue queue, CommandEntry entry) {
PlayerTag player = PlayerTag.getFor(queue.error, entry.getArgumentObject(queue, 0));
AbstractTagObject ato1 = entry.getArgumentObject(queue, 1);
Text header;
if (ato1 instanceof FormattedTextTag) {
header = ((FormattedTextTag) ato1).getInternal();
}
else {
header = Denizen2Sponge.parseColor(ato1.toString());
}
AbstractTagObject ato2 = entry.getArgumentObject(queue, 2);
Text footer;
if (ato2 instanceof FormattedTextTag) {
footer = ((FormattedTextTag) ato2).getInternal();
}
else {
footer = Denizen2Sponge.parseColor(ato2.toString());
}
player.getOnline(queue.error).getTabList().setHeaderAndFooter(header, footer);
if (queue.shouldShowGood()) {
queue.outGood("Setting the tablist header to '" + ColorSet.emphasis + ato1.debug()
+ ColorSet.good + "' and footer to '" + ColorSet.emphasis + ato2.debug()
+ ColorSet.good + "' for player '" + ColorSet.emphasis + player.debug());
}
}
}
Expand Up @@ -13,6 +13,7 @@
import org.spongepowered.api.item.inventory.entity.UserInventory;
import org.spongepowered.api.statistic.Statistic;
import org.spongepowered.api.statistic.StatisticType;
import org.spongepowered.api.text.Text;

import java.util.HashMap;
import java.util.Optional;
Expand Down Expand Up @@ -314,6 +315,36 @@ else if (map.getInternal().containsKey("item")) {
}
return new IntegerTag(pl.getStatisticData().get(statistic).orElse((long) 0));
});
// <--[tag]
// @Since 0.4.0
// @Name PlayerTag.tablist_header
// @Updated 2018/02/04
// @Group Properties
// @ReturnType FormattedTextTag
// @Returns whether the player's tablist header. ONLINE-PLAYERS-ONLY.
// -->
handlers.put("tablist_header", (dat, obj) -> {
Player pl = ((PlayerTag) obj).getOnline(dat);
if (pl == null) {
return new NullTag();
}
return new FormattedTextTag(pl.getTabList().getHeader().orElse(Text.of("")));
});
// <--[tag]
// @Since 0.4.0
// @Name PlayerTag.tablist_footer
// @Updated 2018/02/04
// @Group Properties
// @ReturnType FormattedTextTag
// @Returns whether the player's tablist footer. ONLINE-PLAYERS-ONLY.
// -->
handlers.put("tablist_footer", (dat, obj) -> {
Player pl = ((PlayerTag) obj).getOnline(dat);
if (pl == null) {
return new NullTag();
}
return new FormattedTextTag(pl.getTabList().getFooter().orElse(Text.of("")));
});
}

public static PlayerTag getFor(Action<String> error, String text) {
Expand Down

0 comments on commit 2078a89

Please sign in to comment.