public SkinModel checkAutoUpdate(SkinModel oldSkin) { if (oldSkin == null) { return null; } if (oldSkin.isOutdated(autoUpdateDiff)) { Optional<SkinModel> updatedSkin = skinApi.downloadSkin(oldSkin.getProfileId()); if (updatedSkin.isPresent() && !Objects.equals(updatedSkin.get(), oldSkin)) { return updatedSkin.get(); } } return oldSkin; }
@Override public String apply(String template, SkinModel skin) { if (template == null) { return null; } int rowId = skin.getRowId(); UUID ownerId = skin.getProfileId(); String ownerName = skin.getProfileName(); long timeFetched = skin.getTimestamp(); Map<TextureType, TextureModel> textures = skin.getTextures(); Optional<TextureModel> skinTexture = Optional.ofNullable(textures.get(TextureType.SKIN)); Optional<TextureModel> capeTexture = Optional.ofNullable(textures.get(TextureType.CAPE)); String skinUrl = skinTexture.map(TextureModel::getShortUrl).orElse(""); String slimModel = skinTexture.map(TextureModel::isSlim).map(slim -> "Alex").orElse("Steve"); String capeUrl = capeTexture.map(TextureModel::getShortUrl).orElse(" - "); String timeFormat = timeFormatter.format(Instant.ofEpochMilli(timeFetched)); return template.replace("{0}", Integer.toString(rowId)) .replace("{1}", ownerId.toString()) .replace("{2}", ownerName) .replace("{3}", timeFormat) .replace("{4}", skinUrl) .replace("{5}", slimModel) .replace("{6}", capeUrl); } }
private void loadDefaultSkins(Iterable<String> defaults) { for (String id : defaults) { Integer rowId = Ints.tryParse(id); if (rowId != null) { Optional.ofNullable(storage.getSkin(rowId)).ifPresent(defaultSkins::add); } UUID ownerUUID = UUID.fromString(id); SkinModel skinData = storage.getSkin(ownerUUID); if (skinData == null) { Optional<SkinModel> optSkin = skinApi.downloadSkin(ownerUUID); if (optSkin.isPresent()) { skinData = optSkin.get(); uuidCache.put(skinData.getProfileName(), skinData.getProfileId()); storage.save(skinData); } } defaultSkins.add(skinData); } }
@Override public void run() { UserPreference preferences = core.getStorage().getPreferences(receiverUUID); Optional<SkinModel> ownedSkin = preferences.getTargetSkin(); if (ownedSkin.isPresent()) { sendMessageInvoker("invalidate-request"); core.getSkinApi().downloadSkin(ownedSkin.get().getProfileId()).ifPresent(this::scheduleApplyTask); } else { sendMessageInvoker("dont-have-skin"); } }
stmt.setString(2, UUIDTypeAdapter.toMojangId(skinData.getProfileId())); stmt.setString(3, skinData.getProfileName()); stmt.setBoolean(4, slimModel);
private void checkPermissions(Player player, CheckPermMessage permMessage) { UUID receiverUUID = permMessage.getReceiverUUD(); boolean op = permMessage.isOp(); SkinModel targetSkin = permMessage.getTargetSkin(); UUID skinProfile = targetSkin.getProfileId(); boolean success = op || checkBungeePerms(player, receiverUUID, permMessage.isSkinPerm(), skinProfile); sendResultMessage(player, new PermResultMessage(success, targetSkin, receiverUUID)); }
@Override public void onPluginMessageReceived(String channel, Player player, byte[] data) { ByteArrayDataInput dataInput = ByteStreams.newDataInput(data); CheckPermMessage message = new CheckPermMessage(); message.readFrom(dataInput); UUID receiverUUID = message.getReceiverUUD(); boolean op = message.isOp(); SkinModel targetSkin = message.getTargetSkin(); UUID skinProfile = targetSkin.getProfileId(); boolean success = op || checkBungeePerms(player, receiverUUID, message.isSkinPerm(), skinProfile); plugin.sendPluginMessage(player, new PermResultMessage(success, targetSkin, receiverUUID)); }