From 0e3037e85ded360939c56a108e5ef9836a236f9f Mon Sep 17 00:00:00 2001 From: MachineMuse Date: Tue, 3 Sep 2013 14:55:11 -0600 Subject: [PATCH 1/2] Added display name hook --- .../net/minecraftforge/event/ForgeEventFactory.java | 7 +++++++ .../event/entity/player/PlayerEvent.java | 12 ++++++++++++ .../minecraft/entity/player/EntityPlayer.java.patch | 9 +++++++++ 3 files changed, 28 insertions(+) diff --git a/common/net/minecraftforge/event/ForgeEventFactory.java b/common/net/minecraftforge/event/ForgeEventFactory.java index d67cbeddeb..8158c59d96 100644 --- a/common/net/minecraftforge/event/ForgeEventFactory.java +++ b/common/net/minecraftforge/event/ForgeEventFactory.java @@ -75,4 +75,11 @@ public class ForgeEventFactory MinecraftForge.EVENT_BUS.post(maxCanSpawnEvent); return maxCanSpawnEvent.getResult() == Result.ALLOW ? maxCanSpawnEvent.maxPackSize : entity.getMaxSpawnedInChunk(); } + + public static String getPlayerDisplayName(EntityPlayer player, String username) + { + PlayerEvent.NameFormat event = new PlayerEvent.NameFormat(player, username); + MinecraftForge.EVENT_BUS.post(event); + return event.displayname; + } } diff --git a/common/net/minecraftforge/event/entity/player/PlayerEvent.java b/common/net/minecraftforge/event/entity/player/PlayerEvent.java index a63f074923..8100318de7 100644 --- a/common/net/minecraftforge/event/entity/player/PlayerEvent.java +++ b/common/net/minecraftforge/event/entity/player/PlayerEvent.java @@ -45,4 +45,16 @@ public class PlayerEvent extends LivingEvent this.newSpeed = original; } } + + public static class NameFormat extends PlayerEvent + { + public final String username; + public String displayname; + + public NameFormat(EntityPlayer player, String username) { + super(player); + this.username = username; + this.displayname = username; + } + } } diff --git a/patches/minecraft/net/minecraft/entity/player/EntityPlayer.java.patch b/patches/minecraft/net/minecraft/entity/player/EntityPlayer.java.patch index a1d0e4a84f..d5fd44adc0 100644 --- a/patches/minecraft/net/minecraft/entity/player/EntityPlayer.java.patch +++ b/patches/minecraft/net/minecraft/entity/player/EntityPlayer.java.patch @@ -543,3 +543,12 @@ } @SideOnly(Side.CLIENT) +@@ -2235,7 +2438,7 @@ + */ + public String getTranslatedEntityName() + { +- return ScorePlayerTeam.formatPlayerName(this.getTeam(), this.username); ++ return ScorePlayerTeam.formatPlayerName(this.getTeam(), ForgeEventFactory.getPlayerDisplayName(this, this.username)); + } + + public void func_110149_m(float par1) From cb9c26d49cf431d76e3d62da339b14004fddfca8 Mon Sep 17 00:00:00 2001 From: MachineMuse Date: Wed, 4 Sep 2013 14:22:22 -0600 Subject: [PATCH 2/2] Memoization of display name result --- .../entity/player/EntityPlayer.java.patch | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/patches/minecraft/net/minecraft/entity/player/EntityPlayer.java.patch b/patches/minecraft/net/minecraft/entity/player/EntityPlayer.java.patch index d5fd44adc0..808e72395a 100644 --- a/patches/minecraft/net/minecraft/entity/player/EntityPlayer.java.patch +++ b/patches/minecraft/net/minecraft/entity/player/EntityPlayer.java.patch @@ -548,7 +548,30 @@ public String getTranslatedEntityName() { - return ScorePlayerTeam.formatPlayerName(this.getTeam(), this.username); -+ return ScorePlayerTeam.formatPlayerName(this.getTeam(), ForgeEventFactory.getPlayerDisplayName(this, this.username)); ++ return ScorePlayerTeam.formatPlayerName(this.getTeam(), this.getDisplayName()); } public void func_110149_m(float par1) +@@ -2257,4 +2460,22 @@ + { + FMLNetworkHandler.openGui(this, mod, modGuiId, world, x, y, z); + } ++ /** ++ * Forge-added fields ++ */ ++ private String displayname; ++ ++ public String getDisplayName() ++ { ++ if(this.displayname == null) ++ { ++ this.displayname = ForgeEventFactory.getPlayerDisplayName(this, this.username); ++ } ++ return this.displayname; ++ } ++ ++ public void refreshDisplayName() ++ { ++ this.displayname = ForgeEventFactory.getPlayerDisplayName(this, this.username); ++ } + }