Advertisement
Guest User

Untitled

a guest
May 20th, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.51 KB | None | 0 0
  1. package skinsrestorer.sponge.utils;
  2.  
  3. import org.spongepowered.api.Sponge;
  4. import org.spongepowered.api.data.key.Keys;
  5. import org.spongepowered.api.entity.living.player.Player;
  6. import org.spongepowered.api.entity.living.player.tab.TabListEntry;
  7. import org.spongepowered.api.world.Location;
  8. import org.spongepowered.api.world.World;
  9. import org.spongepowered.api.world.storage.WorldProperties;
  10.  
  11. import com.flowpowered.math.vector.Vector3d;
  12.  
  13. import skinsrestorer.sponge.SkinsRestorer;
  14.  
  15. /**
  16.  * Created by McLive on 02.04.2018.
  17.  */
  18. public class SkinApplier {
  19.    
  20.     private Player receiver;
  21.    
  22.     public SkinApplier(SkinsRestorer plugin) {
  23.     }
  24.    
  25.  
  26.     public void updatePlayerSkin(Player p) {
  27.         receiver = p;
  28.        
  29.         sendUpdate();
  30.     }
  31.    
  32.     private void sendUpdate() {
  33.         sendUpdateSelf();
  34.  
  35.         //triggers an update for others player to see the new skin
  36.         Sponge.getServer().getOnlinePlayers().stream()
  37.                 .filter(onlinePlayer -> onlinePlayer.canSee(receiver))
  38.                 .forEach(onlinePlayer -> {
  39.                     //removes the entity and display the new skin
  40.                     onlinePlayer.offer(Keys.VANISH, true);
  41.                     onlinePlayer.offer(Keys.VANISH, false);
  42.                 });
  43.     }
  44.  
  45.     private void sendUpdateSelf() {
  46.         receiver.getTabList().removeEntry(receiver.getUniqueId());
  47.         receiver.getTabList().addEntry(TabListEntry.builder()
  48.                 .displayName(receiver.getDisplayNameData().displayName().get())
  49.                 .latency(receiver.getConnection().getLatency())
  50.                 .list(receiver.getTabList())
  51.                 .gameMode(receiver.getGameModeData().type().get())
  52.                 .profile(receiver.getProfile())
  53.                 .build());
  54.  
  55.      // Simulate respawn to see skin active
  56.         Location<World> loc = receiver.getLocation();
  57.         Vector3d rotation = receiver.getRotation();
  58.  
  59.         WorldProperties other = null;
  60.         for (WorldProperties w : Sponge.getServer().getAllWorldProperties()) {
  61.             if (other != null) {
  62.                 break;
  63.             }
  64.            
  65.             if (!w.getUniqueId().equals(receiver.getWorld().getUniqueId())) {
  66.                 Sponge.getServer().loadWorld(w.getUniqueId());
  67.                 other = w;
  68.             }
  69.         }
  70.  
  71.         if (other != null) {
  72.             receiver.setLocation(Sponge.getServer().getWorld(other.getUniqueId()).get().getSpawnLocation());
  73.             receiver.setLocationAndRotation(loc, rotation);
  74. }
  75.     }
  76.    
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement