diff --git a/Spigot-Server-Patches/0143-Implement-PlayerLocaleChangeEvent.patch b/Spigot-Server-Patches/0143-Implement-PlayerLocaleChangeEvent.patch new file mode 100644 index 000000000..76b536fe8 --- /dev/null +++ b/Spigot-Server-Patches/0143-Implement-PlayerLocaleChangeEvent.patch @@ -0,0 +1,53 @@ +From 4da14a77ec64294d7255d0029f30a9db0e71f091 Mon Sep 17 00:00:00 2001 +From: Isaac Moore +Date: Tue, 19 Apr 2016 14:09:31 -0500 +Subject: [PATCH] Implement PlayerLocaleChangeEvent + + +diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java +index 1d302f5..a2681c3 100644 +--- a/src/main/java/net/minecraft/server/EntityPlayer.java ++++ b/src/main/java/net/minecraft/server/EntityPlayer.java +@@ -25,7 +25,7 @@ import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; + public class EntityPlayer extends EntityHuman implements ICrafting { + + private static final Logger bQ = LogManager.getLogger(); +- public String locale = "en_US"; // Spigot private -> public ++ public String locale = null; // Spigot private -> public // Paper - default to null + public PlayerConnection playerConnection; + public final MinecraftServer server; + public final PlayerInteractManager playerInteractManager; +@@ -1069,7 +1069,14 @@ public class EntityPlayer extends EntityHuman implements ICrafting { + } + + public void a(PacketPlayInSettings packetplayinsettings) { ++ // Paper start - add PlayerLocaleChangeEvent ++ // Since the field is initialized to null, this event should always fire the first time the packet is received ++ String oldLocale = this.locale; + this.locale = packetplayinsettings.a(); ++ if (!this.locale.equals(oldLocale)) { ++ CraftEventFactory.callEvent(new com.destroystokyo.paper.event.player.PlayerLocaleChangeEvent(this.getBukkitEntity(), oldLocale, this.locale)); ++ } ++ // Paper end + this.cf = packetplayinsettings.c(); + this.cg = packetplayinsettings.d(); + this.getDataWatcher().set(EntityPlayer.bp, Byte.valueOf((byte) packetplayinsettings.e())); +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +index b0e4800..7c63db1 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +@@ -1654,7 +1654,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player { + @Override + public String getLocale() + { +- return getHandle().locale; ++ // Paper start - Locale change event ++ final String locale = getHandle().locale; ++ return locale != null ? locale : "en_US"; ++ // Paper end + } + + @Override +-- +2.8.0 +