Added a display name to Actors

This commit is contained in:
Matthew Miller 2018-12-18 17:36:53 +10:00
parent 700e41b706
commit 8f236afae9
4 changed files with 24 additions and 1 deletions

View File

@ -83,6 +83,11 @@ public class BukkitPlayer extends AbstractPlayerActor {
return player.getName(); return player.getName();
} }
@Override
public String getDisplayName() {
return player.getDisplayName();
}
@Override @Override
public void giveItem(BaseItemStack itemStack) { public void giveItem(BaseItemStack itemStack) {
player.getInventory().addItem(BukkitAdapter.adapt(itemStack)); player.getInventory().addItem(BukkitAdapter.adapt(itemStack));

View File

@ -38,6 +38,15 @@ public interface Actor extends Identifiable, SessionOwner, Subject {
*/ */
String getName(); String getName();
/**
* Gets the display name of the actor. This can be a nickname, and is not guaranteed to be unique.
*
* @return The display name
*/
default String getDisplayName() {
return getName();
}
/** /**
* Print a message. * Print a message.
* *

View File

@ -82,6 +82,11 @@ class PlayerProxy extends AbstractPlayerActor {
return basePlayer.getName(); return basePlayer.getName();
} }
@Override
public String getDisplayName() {
return basePlayer.getDisplayName();
}
@Override @Override
public BaseEntity getState() { public BaseEntity getState() {
throw new UnsupportedOperationException("Can't getState() on a player"); throw new UnsupportedOperationException("Can't getState() on a player");

View File

@ -35,7 +35,6 @@ import com.sk89q.worldedit.world.block.BlockStateHolder;
import com.sk89q.worldedit.world.gamemode.GameMode; import com.sk89q.worldedit.world.gamemode.GameMode;
import com.sk89q.worldedit.world.gamemode.GameModes; import com.sk89q.worldedit.world.gamemode.GameModes;
import com.sk89q.worldedit.world.item.ItemTypes; import com.sk89q.worldedit.world.item.ItemTypes;
import org.spongepowered.api.Sponge; import org.spongepowered.api.Sponge;
import org.spongepowered.api.data.type.HandTypes; import org.spongepowered.api.data.type.HandTypes;
import org.spongepowered.api.entity.living.player.Player; import org.spongepowered.api.entity.living.player.Player;
@ -79,6 +78,11 @@ public class SpongePlayer extends AbstractPlayerActor {
return this.player.getName(); return this.player.getName();
} }
@Override
public String getDisplayName() {
return player.getDisplayNameData().displayName().getDirect().map(TextSerializers.LEGACY_FORMATTING_CODE::serialize).orElse(getName());
}
@Override @Override
public BaseEntity getState() { public BaseEntity getState() {
throw new UnsupportedOperationException("Cannot create a state from this object"); throw new UnsupportedOperationException("Cannot create a state from this object");