Skip to content

Commit

Permalink
Improve fake_player skin handling
Browse files Browse the repository at this point in the history
I fixed all the issues!
  • Loading branch information
Morphan1 committed Feb 25, 2015
1 parent 71c90e8 commit 1420206
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 19 deletions.
Expand Up @@ -163,22 +163,19 @@ public void adjust(Mechanism mechanism) {
}

public static GameProfile fillGameProfile(GameProfile gameProfile) {
if(gameProfile != null) {
GameProfile gameProfile1 = null;
if (gameProfile != null) {
GameProfile gameProfile1;
if (gameProfile.getName() != null) {
gameProfile1 = MinecraftServer.getServer().getUserCache().getProfile(gameProfile.getName());
} else if (gameProfile.getId() != null) {
gameProfile1 = MinecraftServer.getServer().getUserCache().a(gameProfile.getId());
}
if (gameProfile1 == null) {
return gameProfile;
} else {
com.mojang.authlib.properties.Property property = Iterables.getFirst(gameProfile1.getProperties().get("textures"), null);
if (property == null) {
gameProfile1 = MinecraftServer.getServer().aB().fillProfileProperties(gameProfile1, true);
}
return gameProfile1;
gameProfile1 = gameProfile;
}
if (Iterables.getFirst(gameProfile1.getProperties().get("textures"), null) == null) {
gameProfile1 = MinecraftServer.getServer().aB().fillProfileProperties(gameProfile1, true);
}
return gameProfile1;
}
return null;
}
Expand Down
Expand Up @@ -17,6 +17,7 @@
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.metadata.MetadataValue;
import org.bukkit.plugin.Plugin;
import org.bukkit.scheduler.BukkitRunnable;

import java.lang.reflect.Field;
import java.util.ArrayList;
Expand Down Expand Up @@ -69,7 +70,7 @@ else if (mechanism.matches("skin")) {
GameProfile gameProfile = new GameProfile(null, name);
gameProfile = ItemSkullskin.fillGameProfile(gameProfile);
if (skin != null) {
gameProfile.getProperties().get("textures").clear();
gameProfile = new GameProfile(gameProfile.getId(), gameProfile.getName());
GameProfile skinProfile = new GameProfile(null, skin);
skinProfile = ItemSkullskin.fillGameProfile(skinProfile);
for (Property texture : skinProfile.getProperties().get("textures"))
Expand All @@ -84,16 +85,21 @@ else if (mechanism.matches("skin")) {
}
setProfileId(gameProfile, uuid);

EntityFakePlayer fakePlayer = new EntityFakePlayer(worldServer.getMinecraftServer(), worldServer, gameProfile,
new PlayerInteractManager(worldServer));
final EntityFakePlayer fakePlayer = new EntityFakePlayer(worldServer.getMinecraftServer(), worldServer,
gameProfile, new PlayerInteractManager(worldServer));
fakePlayer.setPositionRotation(location.getX(), location.getY(), location.getZ(),
location.getYaw(), location.getPitch());
PacketPlayOutNamedEntitySpawn spawnPacket = new PacketPlayOutNamedEntitySpawn(fakePlayer);
PacketPlayOutPlayerInfo playerInfo = new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.ADD_PLAYER, fakePlayer);
for (Player player : Bukkit.getServer().getOnlinePlayers()) {
PacketHelper.sendPacket(player, spawnPacket);
PacketHelper.sendPacket(player, playerInfo);
}
new BukkitRunnable() {
@Override
public void run() {
PacketPlayOutNamedEntitySpawn spawnPacket = new PacketPlayOutNamedEntitySpawn(fakePlayer);
PacketPlayOutPlayerInfo playerInfo = new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.ADD_PLAYER, fakePlayer);
for (Player player : Bukkit.getServer().getOnlinePlayers()) {
PacketHelper.sendPacket(player, spawnPacket);
PacketHelper.sendPacket(player, playerInfo);
}
}
}.runTaskLater(DenizenAPI.getCurrentInstance(), 5);
return fakePlayer.getBukkitEntity();
}

Expand Down

0 comments on commit 1420206

Please sign in to comment.