diff --git a/build.gradle b/build.gradle index ef161f6..5dfe32c 100644 --- a/build.gradle +++ b/build.gradle @@ -38,11 +38,11 @@ dependencies { modCompileOnly("net.fabricmc.fabric-api:fabric-api:${project.fabric_version}") modLocalRuntime("net.fabricmc.fabric-api:fabric-api:${project.fabric_version}") - modImplementation include("eu.pb4:placeholder-api:2.0.0-pre.2+1.19.3") - modImplementation include("eu.pb4:player-data-api:0.2.2+1.19.3") + modImplementation include("eu.pb4:placeholder-api:2.2.0+1.20.2") + modImplementation include("eu.pb4:player-data-api:0.3.0+1.20.2") modImplementation include("me.lucko:fabric-permissions-api:0.2-SNAPSHOT") - modImplementation "maven.modrinth:vanish:1.4.0+1.19.4" + modCompileOnly("maven.modrinth:vanish:1.4.0+1.19.4") //modRuntime "supercoder79:databreaker:0.2.7" // PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs. diff --git a/gradle.properties b/gradle.properties index 7896c96..73a34f0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,14 +3,14 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use -minecraft_version=1.20-rc1 -yarn_mappings=1.20-rc1+build.2 +minecraft_version=1.20.2-rc2 +yarn_mappings=1.20.2-rc2+build.1 loader_version=0.14.21 #Fabric api -fabric_version=0.83.0+1.20 +fabric_version=0.89.0+1.20.2 # Mod Properties - mod_version = 1.2.1+1.20 + mod_version = 1.3.0+1.20.2 maven_group = eu.pb4 archives_base_name = styled-nicknames diff --git a/src/main/java/eu/pb4/stylednicknames/mixin/PlayerEntityMixin.java b/src/main/java/eu/pb4/stylednicknames/mixin/PlayerEntityMixin.java index f9951b0..662fce6 100644 --- a/src/main/java/eu/pb4/stylednicknames/mixin/PlayerEntityMixin.java +++ b/src/main/java/eu/pb4/stylednicknames/mixin/PlayerEntityMixin.java @@ -2,8 +2,11 @@ import eu.pb4.stylednicknames.NicknameHolder; import eu.pb4.stylednicknames.config.ConfigManager; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.text.Text; +import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; @@ -11,13 +14,23 @@ @Mixin(PlayerEntity.class) -public abstract class PlayerEntityMixin { - @Unique boolean styledNicknames$ignoreNextCall = false; +public abstract class PlayerEntityMixin extends LivingEntity { + @Unique private boolean styledNicknames$ignoreNextCall = false; + @Unique private Text styledNicknames$cachedName = null; + @Unique private int styledNicknames$cachedAge = -999; + + protected PlayerEntityMixin(EntityType entityType, World world) { + super(entityType, world); + } @ModifyArg(method = "getDisplayName", at = @At(value = "INVOKE", target = "Lnet/minecraft/scoreboard/Team;decorateName(Lnet/minecraft/scoreboard/AbstractTeam;Lnet/minecraft/text/Text;)Lnet/minecraft/text/MutableText;")) private Text styledNicknames$replaceName(Text text) { try { if (ConfigManager.isEnabled() && ConfigManager.getConfig().configData.changeDisplayName) { + if (this.styledNicknames$cachedAge == this.age) { + return this.styledNicknames$cachedName; + } + if (!this.styledNicknames$ignoreNextCall) { this.styledNicknames$ignoreNextCall = true; var holder = NicknameHolder.of(this); @@ -25,13 +38,15 @@ public abstract class PlayerEntityMixin { Text name = holder.styledNicknames$getOutput(); if (name != null) { this.styledNicknames$ignoreNextCall = false; + this.styledNicknames$cachedName = name; + this.styledNicknames$cachedAge = this.age; return name; } } this.styledNicknames$ignoreNextCall = false; } } - } catch (Exception e) { + } catch (Throwable e) { e.printStackTrace(); } return text; diff --git a/src/main/java/eu/pb4/stylednicknames/mixin/PlayerManagerMixin.java b/src/main/java/eu/pb4/stylednicknames/mixin/PlayerManagerMixin.java index ddd5dbb..8c292ce 100644 --- a/src/main/java/eu/pb4/stylednicknames/mixin/PlayerManagerMixin.java +++ b/src/main/java/eu/pb4/stylednicknames/mixin/PlayerManagerMixin.java @@ -3,6 +3,7 @@ import eu.pb4.stylednicknames.NicknameHolder; import net.minecraft.network.ClientConnection; import net.minecraft.server.PlayerManager; +import net.minecraft.server.network.ConnectedClientData; import net.minecraft.server.network.ServerPlayerEntity; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -12,7 +13,7 @@ @Mixin(PlayerManager.class) public class PlayerManagerMixin { @Inject(method = "onPlayerConnect", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/PlayerManager;sendCommandTree(Lnet/minecraft/server/network/ServerPlayerEntity;)V", shift = At.Shift.AFTER)) - private void styledNicknames$loadNickname(ClientConnection connection, ServerPlayerEntity player, CallbackInfo ci) { + private void styledNicknames$loadNickname(ClientConnection connection, ServerPlayerEntity player, ConnectedClientData clientData, CallbackInfo ci) { NicknameHolder.of(player).styledNicknames$loadData(); } }