Advertisement
Zephlon

UserMap.java

Nov 2nd, 2016
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.97 KB | None | 0 0
  1. import java.util.Collection;
  2. import java.util.HashMap;
  3. import java.util.HashSet;
  4. import java.util.Map;
  5. import java.util.Optional;
  6. import java.util.Set;
  7. import java.util.UUID;
  8. import org.spongepowered.api.Sponge;
  9. import org.spongepowered.api.entity.living.player.Player;
  10. import org.spongepowered.api.entity.living.player.User;
  11. import org.spongepowered.api.service.user.UserStorageService;
  12.  
  13. /**
  14.  * A wrapper map for correctly storing user/player information using UUIDs instead of using User or Player directly.
  15.  * You can do without using this class, but this is meant for lazy and new plugin developers.
  16.  * @author Zephlon
  17.  * @param <T>
  18.  */
  19. public class UserMap<T> implements Map<UUID, T> {
  20.  
  21.     private final Map<UUID, T> map;
  22.    
  23.     public UserMap() {
  24.         this.map = new HashMap();
  25.     }
  26.     private UserMap(Map<UUID, T> map) {
  27.         this.map = map;
  28.     }
  29.    
  30.     public static <E> UserMap<E> wrap(Map<UUID, E> map) {
  31.         return new UserMap(map);
  32.     }
  33.  
  34.     //<editor-fold defaultstate="collapsed" desc=" Wrapper Implementation ">
  35.     @Override
  36.     public int size() {
  37.         return map.size();
  38.     }
  39.    
  40.     @Override
  41.     public boolean isEmpty() {
  42.         return map.isEmpty();
  43.     }
  44.    
  45.     @Override
  46.     public boolean containsKey(Object key) {
  47.         return map.containsKey(key);
  48.     }
  49.    
  50.     @Override
  51.     public boolean containsValue(Object value) {
  52.         return map.containsValue(value);
  53.     }
  54.    
  55.     @Override
  56.     public T get(Object key) {
  57.         return map.get(key);
  58.     }
  59.    
  60.     @Override
  61.     public T put(UUID key, T value) {
  62.         return map.put(key, value);
  63.     }
  64.    
  65.     @Override
  66.     public T remove(Object key) {
  67.         return map.remove(key);
  68.     }
  69.    
  70.     @Override
  71.     public void putAll(Map<? extends UUID, ? extends T> m) {
  72.         map.putAll(m);
  73.     }
  74.    
  75.     @Override
  76.     public void clear() {
  77.         map.clear();
  78.     }
  79.    
  80.     @Override
  81.     public Set<UUID> keySet() {
  82.         return map.keySet();
  83.     }
  84.    
  85.     @Override
  86.     public Collection<T> values() {
  87.         return map.values();
  88.     }
  89.    
  90.     @Override
  91.     public Set<Entry<UUID, T>> entrySet() {
  92.         return map.entrySet();
  93.     }
  94.     //</editor-fold>
  95.    
  96.     public boolean containsKey(UUID key) {
  97.         return map.containsKey(key);
  98.     }
  99.     public boolean containsKey(User key) {
  100.         return map.containsKey(key.getUniqueId());
  101.     }
  102.    
  103.     public T get(UUID key) {
  104.         return map.get(key);
  105.     }
  106.     public T get(User key) {
  107.         return map.get(key.getUniqueId());
  108.     }
  109.    
  110.     public T getOrDefault(UUID key, T defaultValue) {
  111.         if (containsKey(key)) {
  112.             return get(key);
  113.         } else {
  114.             return defaultValue;
  115.         }
  116.     }
  117.     public T getOrDefault(User key, T defaultValue) {
  118.         return getOrDefault(key.getUniqueId(), defaultValue);
  119.     }
  120.    
  121.     public T put(User key, T value) {
  122.         return map.put(key.getUniqueId(), value);
  123.     }
  124.    
  125.     public T remove(UUID key) {
  126.         return map.remove(key);
  127.     }
  128.     public T remove(User key) {
  129.         return map.remove(key.getUniqueId());
  130.     }
  131.    
  132.     public Set<User> userSet() {
  133.         Optional<UserStorageService> userStorage = Sponge.getServiceManager().provide(UserStorageService.class);
  134.         Set<User> users = new HashSet();
  135.        
  136.         for (UUID uuid : map.keySet()) {
  137.             Optional<User> user = userStorage.get().get(uuid);
  138.            
  139.             if (user.isPresent()) {
  140.                 users.add(user.get());
  141.             }
  142.         }
  143.        
  144.         return users;
  145.     }
  146.    
  147.     public Set<Player> playerSet() {
  148.         Set<Player> players = new HashSet();
  149.        
  150.         for (UUID uuid : map.keySet()) {
  151.             Optional<Player> player = Sponge.getServer().getPlayer(uuid);
  152.            
  153.             if (player.isPresent()) {
  154.                 players.add(player.get());
  155.             }
  156.         }
  157.        
  158.         return players;
  159.     }
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement