HookFabledSkyblock.java 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package xyz.spaceio.hooks;
  2. import java.util.Optional;
  3. import java.util.UUID;
  4. import org.bukkit.Bukkit;
  5. import org.bukkit.Location;
  6. import org.bukkit.OfflinePlayer;
  7. import com.songoda.skyblock.SkyBlock;
  8. import com.songoda.skyblock.island.Island;
  9. public class HookFabledSkyblock implements SkyblockAPIHook{
  10. private SkyBlock api;
  11. public HookFabledSkyblock() {
  12. api = (SkyBlock) Bukkit.getPluginManager().getPlugin("FabledSkyBlock");
  13. }
  14. @Override
  15. public int getIslandLevel(UUID uuid, String onWorld) {
  16. // create an offline player object because this plugin (unlike the others) does not have a method to obtain an island by UUID.
  17. OfflinePlayer skyblockPlayer = Bukkit.getOfflinePlayer(uuid);
  18. // api does not provide any optional, so doing a few checks here
  19. if(api.getIslandManager() != null) {
  20. if(api.getIslandManager().getIsland(skyblockPlayer) != null) {
  21. Island is = api.getIslandManager().getIsland(skyblockPlayer);
  22. if(is.getLevel() != null) {
  23. return (int) is.getLevel().getLevel();
  24. }
  25. }
  26. }
  27. return 0;
  28. }
  29. @Override
  30. public Optional<UUID> getIslandOwner(Location loc) {
  31. Optional<UUID> optional = Optional.empty();
  32. // some more classic null checks...
  33. if(api.getIslandManager() != null) {
  34. if(api.getIslandManager().getIslandAtLocation(loc) != null) {
  35. if(api.getIslandManager().getIslandAtLocation(loc).getOwnerUUID() != null) {
  36. optional = Optional.of(api.getIslandManager().getIslandAtLocation(loc).getOwnerUUID());
  37. }
  38. }
  39. }
  40. return optional;
  41. }
  42. @Override
  43. public String[] getSkyBlockWorldNames() {
  44. if(api.getWorldManager() != null) {
  45. // a method for getting the islands is missing, so using what we have
  46. return Bukkit.getWorlds().stream().filter(w -> api.getWorldManager().isIslandWorld(w)).map(w -> w.getName()).toArray(String[]::new);
  47. }
  48. return null;
  49. }
  50. }