You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
1.3 KiB
31 lines
1.3 KiB
--- ../src-base/minecraft/net/minecraftforge/common/util/FakePlayerFactory.java |
|
+++ ../src-work/minecraft/net/minecraftforge/common/util/FakePlayerFactory.java |
|
@@ -35,12 +35,24 @@ |
|
*/ |
|
public static FakePlayer get(WorldServer world, GameProfile username) |
|
{ |
|
- if (!fakePlayers.containsKey(username)) |
|
+ // Cauldron start - Refactored below to avoid a hashCode check with a null GameProfile ID |
|
+ if (username == null || username.getName() == null) return null; |
|
+ |
|
+ for (Map.Entry<GameProfile, FakePlayer> mapEntry : fakePlayers.entrySet()) |
|
{ |
|
- FakePlayer fakePlayer = new FakePlayer(world, username); |
|
- fakePlayers.put(username, fakePlayer); |
|
+ GameProfile gameprofile = mapEntry.getKey(); |
|
+ if (gameprofile.getName().equals(username.getName())) |
|
+ { |
|
+ return mapEntry.getValue(); |
|
+ } |
|
} |
|
- |
|
+ FakePlayer fakePlayer = new FakePlayer(world, username); |
|
+ if (username.getId() == null) // GameProfile hashCode check will fail with a null ID |
|
+ { |
|
+ username = new GameProfile(UUID.randomUUID(), username.getName()); // Create new GameProfile with random UUID |
|
+ } |
|
+ // Cauldron end |
|
+ fakePlayers.put(username, fakePlayer); |
|
return fakePlayers.get(username); |
|
} |
|
|
|
|