Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.mattmx.nametags.entity.trait.SneakTrait;
import com.mattmx.nametags.event.NameTagEntityCreateEvent;
import me.tofaa.entitylib.meta.display.AbstractDisplayMeta;
import org.bukkit.Bukkit;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
Expand All @@ -25,8 +26,22 @@ public ConfigDefaultsListener(@NotNull NameTags plugin) {
.getEntityManager()
.setDefaultProvider(((entity, meta) -> {
meta.setUseDefaultBackground(false);
meta.setTransformationInterpolationDuration(5);
meta.setPositionRotationInterpolationDuration(5);

// Version-specific interpolation handling
String version = Bukkit.getMinecraftVersion();
int defaultTransformation = 10;
int defaultPositionRotation = 10;

// For 1.21.5+ use higher interpolation values for smoother movement
if (isVersion1215OrLater(version)) {
defaultTransformation = 15;
defaultPositionRotation = 15;
}

int transformationDuration = plugin.getConfig().getInt("options.interpolation.transformation-duration", defaultTransformation);
int positionRotationDuration = plugin.getConfig().getInt("options.interpolation.position-rotation-duration", defaultPositionRotation);
meta.setTransformationInterpolationDuration(transformationDuration);
meta.setPositionRotationInterpolationDuration(positionRotationDuration);
TextDisplayMetaConfiguration.applyMeta(defaultSection(), meta);
}));
}
Expand Down Expand Up @@ -109,4 +124,24 @@ public void registerDefaultRefreshListener(@NotNull NameTagEntity tag, long refr
);
}

private boolean isVersion1215OrLater(String version) {
try {
// Parse version string like "1.21.5" or "1.21"
String[] parts = version.split("\\.");
if (parts.length >= 2) {
int major = Integer.parseInt(parts[0]);
int minor = Integer.parseInt(parts[1]);
int patch = parts.length > 2 ? Integer.parseInt(parts[2]) : 0;

if (major > 1) return true;
if (major == 1 && minor > 21) return true;
if (major == 1 && minor == 21 && patch >= 5) return true;
}
} catch (NumberFormatException e) {
// If we can't parse the version, assume it's a newer version
return true;
}
return false;
}

}
11 changes: 10 additions & 1 deletion src/main/resources/config.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
options:
threads: 2
relative-placeholders-support: true
# Interpolation settings for smoother movement (1.21.5+)
# Minecraft 1.21.5 changed how text display entities handle interpolation
# Higher values = smoother movement but slightly more delayed updates
# Lower values = more responsive but potentially choppy movement
# Recommended: 15-20 for 1.21.5+, 5-10 for older versions
interpolation:
transformation-duration: 15
position-rotation-duration: 15

# Base default options applied first
defaults:
Expand All @@ -10,7 +18,8 @@ defaults:
enabled: true
# How often should we refresh tags (in milliseconds)
# Do not go lower than 50ms (1 tick) or clients may be kicked.
refresh-every: 500
# For 1.21.5+, consider using 250ms for smoother movement
refresh-every: 250
# Lines of text to display.
text:
- "<white>%player_name%</white>"
Expand Down