@@ -463,7 +463,9 @@ public void update(boolean force, Player... players) {
463463 hidePreviousIfNecessary ();
464464 List <Player > playerList = getPlayers (true , players );
465465 for (Player player : playerList ) {
466- if (renderer instanceof NmsTextHologramRenderer || (containsPlaceholders || force )) {
466+ if (renderer instanceof NmsTextHologramRenderer ) {
467+ updateTextIfNecessary (player , true );
468+ } else if (containsPlaceholders || force ) {
467469 renderer .updateContent (player , getPartData (player , true , true ));
468470 }
469471 }
@@ -498,7 +500,21 @@ public void updateAnimations(Player... players) {
498500 hidePreviousIfNecessary ();
499501 List <Player > playerList = getPlayers (true , players );
500502 for (Player player : playerList ) {
501- renderer .updateContent (player , getPartData (player , false , true ));
503+ if (renderer instanceof NmsTextHologramRenderer ) {
504+ updateTextIfNecessary (player , false );
505+ }
506+ }
507+ }
508+
509+ private void updateTextIfNecessary (Player player , boolean updatePlaceholders ) {
510+ UUID uuid = player .getUniqueId ();
511+ String lastText = lastTextMap .get (uuid );
512+ String updatedText = getText (player , updatePlaceholders );
513+ if (!updatedText .equals (lastText )) {
514+ lastTextMap .put (uuid , updatedText );
515+
516+ NmsHologramPartData <String > partData = new NmsHologramPartData <>(getPositionSupplier (), () -> updatedText );
517+ ((NmsTextHologramRenderer ) renderer ).updateContent (player , partData );
502518 }
503519 }
504520
0 commit comments