001package com.ericlam.mc.bungee.hnmc.managers; 002 003import com.ericlam.mc.bungee.hnmc.container.PlayerSkin; 004import com.ericlam.mc.bungee.hnmc.exceptions.SkinUpdateTooFastException; 005import net.md_5.bungee.api.connection.ProxiedPlayer; 006import net.md_5.bungee.connection.LoginResult; 007 008import java.util.UUID; 009import java.util.concurrent.CompletableFuture; 010 011public interface SkinValueManager { 012 013 /** 014 * 更新玩家皮膚 015 * 016 * @param uuid 玩家UUID 017 * @return 玩家皮膚 018 * @throws SkinUpdateTooFastException 距離上次更新不夠一日拋出 019 */ 020 CompletableFuture<PlayerSkin> updateSkin(UUID uuid) throws SkinUpdateTooFastException; 021 022 /** 023 * @param uuid 玩家UUID 024 * @return 玩家皮膚 025 */ 026 CompletableFuture<PlayerSkin> getOrSaveSkinForPlayer(UUID uuid); 027 028 /** 029 * @param uuid 玩家UUID 030 * @param name 玩家名稱 031 * @return 玩家皮膚 032 */ 033 CompletableFuture<PlayerSkin> getOrSaveSkinForPlayer(UUID uuid, String name); 034 035 /** 036 * 刪除玩家皮膚資料 037 * 038 * @param uuid 玩家UUID 039 * @return 是否存在 040 */ 041 CompletableFuture<Boolean> dropSkin(UUID uuid); 042 043 044 /** 045 * 設置玩家皮膚 046 * 047 * @param player 玩家 048 * @param skin 皮膚設置 049 */ 050 void applySkin(final ProxiedPlayer player, final PlayerSkin skin); 051 052 053 /** 054 * 修改玩家 Profile 055 * 056 * @param result 登入 Profile 057 * @param skin 皮膚設置 058 * @return 登入 Profile 059 */ 060 LoginResult editResult(final LoginResult result, final PlayerSkin skin); 061 062}