--- ../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 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); }