HookBentoBox.java 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package xyz.spaceio.hooks;
  2. import java.lang.reflect.InvocationTargetException;
  3. import java.lang.reflect.Method;
  4. import java.util.Arrays;
  5. import java.util.Optional;
  6. import java.util.UUID;
  7. import org.bukkit.Bukkit;
  8. import org.bukkit.Location;
  9. import org.bukkit.World;
  10. import org.bukkit.block.Block;
  11. import world.bentobox.bentobox.BentoBox;
  12. import world.bentobox.bentobox.database.objects.Island;
  13. public class HookBentoBox implements SkyblockAPIHook{
  14. private BentoBox api;
  15. public HookBentoBox() {
  16. api = (BentoBox) Bukkit.getPluginManager().getPlugin("BentoBox");
  17. }
  18. @Override
  19. public int getIslandLevel(UUID uuid, String onWorld) {
  20. int level[] = new int[]{0};
  21. // TODO: Access the API instead of using reflection
  22. api.getAddonsManager().getAddonByName("Level").ifPresent(addon -> {
  23. try {
  24. Method method = addon.getClass().getMethod("getIslandLevel", World.class, UUID.class);
  25. long rawLevel = (long) method.invoke(addon, Bukkit.getWorld(onWorld), uuid);
  26. level[0] = Math.toIntExact(rawLevel);
  27. } catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
  28. // TODO Auto-generated catch block
  29. e.printStackTrace();
  30. }
  31. });
  32. return level[0];
  33. }
  34. @Override
  35. public Optional<UUID> getIslandOwner(Location loc) {
  36. Optional<Island> optIsland = api.getIslands().getIslandAt(loc);
  37. Optional<UUID> optional = Optional.empty();
  38. if(optIsland.isPresent() && optIsland.get().getOwner() != null) {
  39. optional = Optional.of(optIsland.get().getOwner());
  40. }
  41. return optional;
  42. }
  43. @Override
  44. public String[] getSkyBlockWorldNames() {
  45. return api.getIWM().getOverWorlds().stream().map(w -> new String[]{w.getName(), w.getName() + "_nether", w.getName() + "_the_end"}).flatMap(s -> Arrays.stream(s)).toArray(String[]::new);
  46. }
  47. @Override
  48. public void sendBlockAcknowledge(Block block) {
  49. // TODO Auto-generated method stub
  50. }
  51. }