use of com.mojang.authlib.properties.Property in project Denizen-For-Bukkit by DenizenScript.
the class BlockHelperImpl method setPlayerProfile.
@Override
public void setPlayerProfile(Skull skull, PlayerProfile playerProfile) {
GameProfile gameProfile = new GameProfile(playerProfile.getUniqueId(), playerProfile.getName());
if (playerProfile.hasTexture()) {
gameProfile.getProperties().put("textures", new Property("textures", playerProfile.getTexture(), playerProfile.getTextureSignature()));
}
try {
craftSkull_profile.set(skull, gameProfile);
} catch (Throwable ex) {
Debug.echoError(ex);
}
skull.update();
}
use of com.mojang.authlib.properties.Property in project Denizen-For-Bukkit by DenizenScript.
the class CustomEntityHelperImpl method spawnFakePlayer.
public static FakePlayer spawnFakePlayer(Location location, String name, String skin, boolean doAdd) throws IllegalArgumentException {
String fullName = name;
String prefix = null;
String suffix = null;
if (name == null) {
Debug.echoError("FAKE_PLAYER: null name, cannot spawn");
return null;
} else if (fullName.length() > 16) {
prefix = fullName.substring(0, 16);
if (fullName.length() > 30) {
int len = 30;
name = fullName.substring(16, 30);
if (name.matches(".*[^A-Za-z0-9_].*")) {
if (fullName.length() >= 32) {
len = 32;
name = fullName.substring(16, 32);
} else if (fullName.length() == 31) {
len = 31;
name = fullName.substring(16, 31);
}
} else if (name.length() > 46) {
throw new IllegalArgumentException("You must specify a name with no more than 46 characters for FAKE_PLAYER entities!");
} else {
name = ChatColor.RESET + name;
}
suffix = fullName.substring(len);
} else {
name = fullName.substring(16);
if (!name.matches(".*[^A-Za-z0-9_].*")) {
name = ChatColor.RESET + name;
}
if (name.length() > 16) {
suffix = name.substring(16);
name = name.substring(0, 16);
}
}
}
if (skin != null && skin.length() > 16) {
throw new IllegalArgumentException("You must specify a name with no more than 16 characters for FAKE_PLAYER entity skins!");
}
CraftWorld world = (CraftWorld) location.getWorld();
ServerLevel worldServer = world.getHandle();
PlayerProfile playerProfile = new PlayerProfile(name, null);
if (skin == null && !name.matches(".*[^A-Za-z0-9_].*")) {
playerProfile = NMSHandler.getInstance().fillPlayerProfile(playerProfile);
}
if (skin != null) {
PlayerProfile skinProfile = new PlayerProfile(skin, null);
skinProfile = NMSHandler.getInstance().fillPlayerProfile(skinProfile);
playerProfile.setTexture(skinProfile.getTexture());
playerProfile.setTextureSignature(skinProfile.getTextureSignature());
}
UUID uuid = UUID.randomUUID();
if (uuid.version() == 4) {
long msb = uuid.getMostSignificantBits();
msb &= ~0x0000000000004000L;
msb |= 0x0000000000002000L;
uuid = new UUID(msb, uuid.getLeastSignificantBits());
}
playerProfile.setUniqueId(uuid);
GameProfile gameProfile = new GameProfile(playerProfile.getUniqueId(), playerProfile.getName());
gameProfile.getProperties().put("textures", new Property("textures", playerProfile.getTexture(), playerProfile.getTextureSignature()));
final EntityFakePlayerImpl fakePlayer = new EntityFakePlayerImpl(worldServer.getServer(), worldServer, gameProfile, doAdd);
fakePlayer.forceSetPositionRotation(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch());
CraftFakePlayerImpl craftFakePlayer = fakePlayer.getBukkitEntity();
craftFakePlayer.fullName = fullName;
if (prefix != null) {
Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
String teamName = "FAKE_PLAYER_TEAM_" + fullName;
String hash = null;
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] bytes = teamName.getBytes(StandardCharsets.UTF_8);
md.update(bytes, 0, bytes.length);
hash = new BigInteger(1, md.digest()).toString(16).substring(0, 16);
} catch (Exception e) {
Debug.echoError(e);
}
if (hash != null) {
Team team = scoreboard.getTeam(hash);
if (team == null) {
team = scoreboard.registerNewTeam(hash);
team.setPrefix(prefix);
if (suffix != null) {
team.setSuffix(suffix);
}
}
team.addPlayer(craftFakePlayer);
}
}
return craftFakePlayer;
}
use of com.mojang.authlib.properties.Property in project Denizen-For-Bukkit by DenizenScript.
the class Handler method fillPlayerProfile.
@Override
public PlayerProfile fillPlayerProfile(PlayerProfile playerProfile) {
try {
if (playerProfile != null) {
GameProfile gameProfile = new GameProfile(playerProfile.getUniqueId(), playerProfile.getName());
gameProfile.getProperties().get("textures").clear();
if (playerProfile.getTextureSignature() != null) {
gameProfile.getProperties().put("textures", new Property("textures", playerProfile.getTexture(), playerProfile.getTextureSignature()));
} else {
gameProfile.getProperties().put("textures", new Property("textures", playerProfile.getTexture()));
}
MinecraftServer minecraftServer = ((CraftServer) Bukkit.getServer()).getServer();
GameProfile gameProfile1 = null;
if (gameProfile.getId() != null) {
gameProfile1 = minecraftServer.getProfileCache().get(gameProfile.getId()).orElse(null);
}
if (gameProfile1 == null && gameProfile.getName() != null) {
gameProfile1 = minecraftServer.getProfileCache().get(gameProfile.getName()).orElse(null);
}
if (gameProfile1 == null) {
gameProfile1 = gameProfile;
}
if (playerProfile.hasTexture()) {
gameProfile1.getProperties().get("textures").clear();
if (playerProfile.getTextureSignature() != null) {
gameProfile1.getProperties().put("textures", new Property("textures", playerProfile.getTexture(), playerProfile.getTextureSignature()));
} else {
gameProfile1.getProperties().put("textures", new Property("textures", playerProfile.getTexture()));
}
}
if (Iterables.getFirst(gameProfile1.getProperties().get("textures"), null) == null) {
gameProfile1 = minecraftServer.getSessionService().fillProfileProperties(gameProfile1, true);
}
Property property = Iterables.getFirst(gameProfile1.getProperties().get("textures"), null);
return new PlayerProfile(gameProfile1.getName(), gameProfile1.getId(), property != null ? property.getValue() : null, property != null ? property.getSignature() : null);
}
} catch (Exception e) {
if (Debug.verbose) {
Debug.echoError(e);
}
}
return null;
}
use of com.mojang.authlib.properties.Property in project QualityArmory by ZombieStriker.
the class SkullHandler method getURL.
public static String getURL(ItemStack is) {
if (is.getType() != MultiVersionLookup.getSkull())
return null;
ItemMeta headMeta = is.getItemMeta();
Class<?> headMetaClass = headMeta.getClass();
GameProfile prof = ReflectionsUtil.getField(headMetaClass, "profile", GameProfile.class).get(headMeta);
PropertyMap propertyMap = prof.getProperties();
Collection<Property> textures64 = propertyMap.get("textures");
String tex64 = null;
for (Property p : textures64) {
if (p.getName().equals("textures")) {
tex64 = p.getValue();
break;
}
}
if (tex64 != null) {
byte[] decode = null;
decode = Base64.getDecoder().decode(tex64);
String string = new String(decode);
String parsed = string.split("SKIN:{url:\"")[1].split("\"}}}")[0];
return parsed;
}
return null;
}
use of com.mojang.authlib.properties.Property in project Krothium-Launcher by DarkLBP.
the class YggdrasilMinecraftSessionService method getTextures.
public Map<Type, MinecraftProfileTexture> getTextures(GameProfile profile, boolean requireSecure) {
Property textureProperty = (Property) Iterables.getFirst(profile.getProperties().get("textures"), (Object) null);
if (textureProperty == null) {
return fetchCustomTextures(profile, requireSecure);
} else {
MinecraftTexturesPayload result;
try {
String json = new String(Base64.decodeBase64(textureProperty.getValue()), Charsets.UTF_8);
result = (MinecraftTexturesPayload) this.gson.fromJson(json, MinecraftTexturesPayload.class);
} catch (JsonParseException var7) {
LOGGER.error("Could not decode textures payload", var7);
return new HashMap();
}
if (result != null && result.getTextures() != null) {
Iterator var8 = result.getTextures().entrySet().iterator();
Map.Entry entry;
do {
if (!var8.hasNext()) {
return result.getTextures();
}
entry = (Map.Entry) var8.next();
} while (isWhitelistedDomain(((MinecraftProfileTexture) entry.getValue()).getUrl()));
LOGGER.error("Textures payload has been tampered with (non-whitelisted domain)");
return new HashMap();
} else {
return new HashMap();
}
}
}
Aggregations