SkyblockAPICached.java 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package xyz.spaceio.hooks;
  2. import java.util.Map.Entry;
  3. import java.util.Optional;
  4. import java.util.UUID;
  5. import java.util.concurrent.ExecutionException;
  6. import java.util.concurrent.TimeUnit;
  7. import org.bukkit.Location;
  8. import org.bukkit.block.Block;
  9. import com.google.common.cache.CacheBuilder;
  10. import com.google.common.cache.CacheLoader;
  11. import com.google.common.cache.LoadingCache;
  12. import com.google.common.collect.Maps;
  13. public class SkyblockAPICached {
  14. private SkyblockAPIHook hook;
  15. public SkyblockAPICached(SkyblockAPIHook hook) {
  16. this.hook = hook;
  17. }
  18. LoadingCache<Entry<UUID, String>, Integer> cachedIslandLevel = CacheBuilder.newBuilder()
  19. .maximumSize(1000)
  20. .expireAfterWrite(10, TimeUnit.SECONDS)
  21. .build(
  22. new CacheLoader<Entry<UUID, String>, Integer>() {
  23. public Integer load(Entry<UUID, String> key) {
  24. return hook.getIslandLevel(key.getKey(), key.getValue());
  25. }
  26. });
  27. LoadingCache<Location, Optional<UUID>> cachedIslandOwner = CacheBuilder.newBuilder()
  28. .maximumSize(1000)
  29. .expireAfterWrite(100, TimeUnit.SECONDS)
  30. .build(
  31. new CacheLoader<Location, Optional<UUID>>() {
  32. public Optional<UUID> load(Location key) {
  33. return hook.getIslandOwner(key);
  34. }
  35. });
  36. public int getIslandLevel(UUID owner, String world) {
  37. Entry<UUID, String> entry = Maps.immutableEntry(owner, world);
  38. try {
  39. return cachedIslandLevel.get(entry);
  40. } catch (ExecutionException e) {
  41. // TODO Auto-generated catch block
  42. e.printStackTrace();
  43. return 0;
  44. }
  45. }
  46. public Optional<UUID> getIslandOwner(Location loc){
  47. try {
  48. return cachedIslandOwner.get(loc);
  49. } catch (ExecutionException e) {
  50. // TODO Auto-generated catch block
  51. e.printStackTrace();
  52. }
  53. return null;
  54. }
  55. public String[] getSkyBlockWorldNames() {
  56. return hook.getSkyBlockWorldNames();
  57. }
  58. public void sendBlockAcknowledge(Block block) {
  59. hook.sendBlockAcknowledge(block);
  60. }
  61. }