Skip to content

Commit

Permalink
Add method for updating custom name
Browse files Browse the repository at this point in the history
  • Loading branch information
fullwall committed Nov 29, 2022
1 parent 7ba5ef3 commit bcdf8e5
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 4 deletions.
20 changes: 16 additions & 4 deletions src/main/java/net/citizensnpcs/api/npc/AbstractNPC.java
Expand Up @@ -7,10 +7,10 @@

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Nameable;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import org.bukkit.metadata.FixedMetadataValue;
Expand Down Expand Up @@ -329,6 +329,10 @@ public DataKey apply(String input) {
}

private void loadTraitFromKey(DataKey traitKey) {
if (traitKey.name().equals("smoothrotationtrait")) {
traitKey.removeKey("");
return;
}
Class<? extends Trait> clazz = CitizensAPI.getTraitFactory().getTraitClass(traitKey.name());
Trait trait;
if (hasTrait(clazz)) {
Expand Down Expand Up @@ -421,12 +425,13 @@ public void setFlyable(boolean flyable) {
@Override
public void setName(String name) {
this.name = name;

if (!isSpawned())
return;

Entity bukkitEntity = getEntity();
if (bukkitEntity instanceof LivingEntity) {
((LivingEntity) bukkitEntity).setCustomName(getFullName());
}
updateCustomName();

if (bukkitEntity.getType() == EntityType.PLAYER && !requiresNameHologram()) {
Location old = bukkitEntity.getLocation();
despawn(DespawnReason.PENDING_RESPAWN);
Expand Down Expand Up @@ -507,6 +512,13 @@ public void update() {
}
}

@Override
public void updateCustomName() {
if (getEntity() instanceof Nameable) {
((Nameable) getEntity()).setCustomName(getFullName());
}
}

@Override
public boolean useMinecraftAI() {
return data().get(NPC.USE_MINECRAFT_AI_METADATA, false);
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/net/citizensnpcs/api/npc/NPC.java
Expand Up @@ -360,6 +360,8 @@ public interface NPC extends Agent, Cloneable {
*/
public void teleport(Location location, TeleportCause cause);

void updateCustomName();

/**
* Whether the NPC is currently set to use Minecraft AI. Defaults to false.
*/
Expand Down
8 changes: 8 additions & 0 deletions src/main/java/net/citizensnpcs/api/util/Messaging.java
Expand Up @@ -28,6 +28,7 @@
import net.citizensnpcs.api.CitizensAPI;
import net.citizensnpcs.api.npc.NPC;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.kyori.adventure.platform.bukkit.MinecraftComponentSerializer;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.TextDecoration;
import net.kyori.adventure.text.minimessage.MiniMessage;
Expand Down Expand Up @@ -137,6 +138,13 @@ public static void logTr(String key, Object... msg) {
log(Level.INFO, Translator.translate(key, msg));
}

public static Object minecraftComponentFromRawMessage(String raw) {
if (AUDIENCES != null && MINIMESSAGE != null) {
return MinecraftComponentSerializer.get().serialize(MINIMESSAGE.deserialize(convertLegacyCodes(raw)));
}
return null;
}

private static String prettify(String message) {
String trimmed = message.trim();
String messageColour = MESSAGE_COLOUR;
Expand Down

0 comments on commit bcdf8e5

Please sign in to comment.