Re-added PlayerEvent.NameFormat (#6992)

This commit is contained in:
Tschipp 2020-07-27 23:16:35 +02:00 committed by GitHub
parent 27798c5804
commit 941b9a1d1f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 44 additions and 11 deletions

View file

@ -288,19 +288,20 @@
this.field_71068_ca += p_82242_1_; this.field_71068_ca += p_82242_1_;
if (this.field_71068_ca < 0) { if (this.field_71068_ca < 0) {
this.field_71068_ca = 0; this.field_71068_ca = 0;
@@ -1704,7 +1745,10 @@ @@ -1704,7 +1745,11 @@
} }
public ITextComponent func_145748_c_() { public ITextComponent func_145748_c_() {
- IFormattableTextComponent iformattabletextcomponent = ScorePlayerTeam.func_237500_a_(this.func_96124_cp(), this.func_200200_C_()); - IFormattableTextComponent iformattabletextcomponent = ScorePlayerTeam.func_237500_a_(this.func_96124_cp(), this.func_200200_C_());
+ if (this.displayname == null) this.displayname = net.minecraftforge.event.ForgeEventFactory.getPlayerDisplayName(this, this.func_200200_C_());
+ IFormattableTextComponent iformattabletextcomponent = new StringTextComponent(""); + IFormattableTextComponent iformattabletextcomponent = new StringTextComponent("");
+ iformattabletextcomponent = prefixes.stream().reduce(iformattabletextcomponent, IFormattableTextComponent::func_230529_a_); + iformattabletextcomponent = prefixes.stream().reduce(iformattabletextcomponent, IFormattableTextComponent::func_230529_a_);
+ iformattabletextcomponent = iformattabletextcomponent.func_230529_a_(ScorePlayerTeam.func_237500_a_(this.func_96124_cp(), this.func_200200_C_())); + iformattabletextcomponent = iformattabletextcomponent.func_230529_a_(ScorePlayerTeam.func_237500_a_(this.func_96124_cp(), this.displayname));
+ iformattabletextcomponent = suffixes.stream().reduce(iformattabletextcomponent, IFormattableTextComponent::func_230529_a_); + iformattabletextcomponent = suffixes.stream().reduce(iformattabletextcomponent, IFormattableTextComponent::func_230529_a_);
return this.func_208016_c(iformattabletextcomponent); return this.func_208016_c(iformattabletextcomponent);
} }
@@ -1956,4 +2000,37 @@ @@ -1956,4 +2001,45 @@
return this.field_221260_g; return this.field_221260_g;
} }
} }
@ -314,6 +315,14 @@
+ return this.suffixes; + return this.suffixes;
+ } + }
+ +
+ private ITextComponent displayname = null;
+ /**
+ * Force the displayed name to refresh, by firing {@link net.minecraftforge.event.entity.player.PlayerEvent.NameFormat}, using the real player name as event parameter.
+ */
+ public void refreshDisplayName() {
+ this.displayname = net.minecraftforge.event.ForgeEventFactory.getPlayerDisplayName(this, this.func_200200_C_());
+ }
+
+ private final net.minecraftforge.common.util.LazyOptional<net.minecraftforge.items.IItemHandler> + private final net.minecraftforge.common.util.LazyOptional<net.minecraftforge.items.IItemHandler>
+ playerMainHandler = net.minecraftforge.common.util.LazyOptional.of( + playerMainHandler = net.minecraftforge.common.util.LazyOptional.of(
+ () -> new net.minecraftforge.items.wrapper.PlayerMainInvWrapper(field_71071_by)); + () -> new net.minecraftforge.items.wrapper.PlayerMainInvWrapper(field_71071_by));

View file

@ -245,7 +245,7 @@ public class ForgeEventFactory
return maxCanSpawnEvent.getResult() == Result.ALLOW ? maxCanSpawnEvent.getMaxPackSize() : entity.getMaxSpawnedInChunk(); return maxCanSpawnEvent.getResult() == Result.ALLOW ? maxCanSpawnEvent.getMaxPackSize() : entity.getMaxSpawnedInChunk();
} }
public static String getPlayerDisplayName(PlayerEntity player, String username) public static ITextComponent getPlayerDisplayName(PlayerEntity player, ITextComponent username)
{ {
PlayerEvent.NameFormat event = new PlayerEvent.NameFormat(player, username); PlayerEvent.NameFormat event = new PlayerEvent.NameFormat(player, username);
MinecraftForge.EVENT_BUS.post(event); MinecraftForge.EVENT_BUS.post(event);

View file

@ -33,6 +33,7 @@ import net.minecraft.block.BlockState;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.event.entity.living.LivingEvent; import net.minecraftforge.event.entity.living.LivingEvent;
import net.minecraftforge.eventbus.api.Event; import net.minecraftforge.eventbus.api.Event;
@ -152,26 +153,27 @@ public class PlayerEvent extends LivingEvent
**/ **/
public static class NameFormat extends PlayerEvent public static class NameFormat extends PlayerEvent
{ {
private final String username; private final ITextComponent username;
private String displayname; private ITextComponent displayname;
public NameFormat(PlayerEntity player, String username) { public NameFormat(PlayerEntity player, ITextComponent username)
{
super(player); super(player);
this.username = username; this.username = username;
this.setDisplayname(username); this.setDisplayname(username);
} }
public String getUsername() public ITextComponent getUsername()
{ {
return username; return username;
} }
public String getDisplayname() public ITextComponent getDisplayname()
{ {
return displayname; return displayname;
} }
public void setDisplayname(String displayname) public void setDisplayname(ITextComponent displayname)
{ {
this.displayname = displayname; this.displayname = displayname;
} }

View file

@ -0,0 +1,20 @@
package net.minecraftforge.debug.entity.player;
import net.minecraft.util.text.StringTextComponent;
import net.minecraftforge.event.entity.player.PlayerEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
@Mod("player_name_event_test")
@Mod.EventBusSubscriber()
public class PlayerNameEventTest
{
private static final boolean ENABLE = false;
@SubscribeEvent
public static void onPlayerNameEvent(PlayerEvent.NameFormat event)
{
if (!ENABLE) return;
event.setDisplayname(new StringTextComponent("Test Name"));
}
}

View file

@ -71,5 +71,7 @@ loaderVersion="[28,)"
modId="ender_mask_test" modId="ender_mask_test"
[[mods]] [[mods]]
modId="raid_enum_test" modId="raid_enum_test"
[[mods]]
modId="player_name_event_test"
[[mods]] [[mods]]
modId="modded_overworld_biomes_test" modId="modded_overworld_biomes_test"