HookSkyblockEarth.java 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package xyz.spaceio.hooks;
  2. import java.io.File;
  3. import java.lang.reflect.Field;
  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.configuration.file.FileConfiguration;
  10. import me.goodandevil.skyblock.config.FileManager.Config;
  11. import me.goodandevil.skyblock.island.Island;
  12. import me.goodandevil.skyblock.island.IslandEnvironment;
  13. import me.goodandevil.skyblock.island.IslandManager;
  14. import me.goodandevil.skyblock.island.IslandWorld;
  15. import me.goodandevil.skyblock.utils.world.LocationUtil;
  16. public class HookSkyblockEarth implements SkyblockAPIHook {
  17. private me.goodandevil.skyblock.SkyBlock mainClass;
  18. private IslandManager api;
  19. public HookSkyblockEarth() {
  20. mainClass = (me.goodandevil.skyblock.SkyBlock) Bukkit.getPluginManager().getPlugin("SkyBlock");
  21. api = mainClass.getIslandManager();
  22. // disabling the default generator of this skyblock plugin
  23. try {
  24. Field f1 = mainClass.getClass().getDeclaredField("generatorManager");
  25. f1.setAccessible(true);
  26. f1.set(mainClass, null);
  27. } catch (Exception e) {
  28. e.printStackTrace();
  29. }
  30. }
  31. @Override
  32. public int getIslandLevel(UUID uuid, String world) {
  33. if (api.getIsland(Bukkit.getOfflinePlayer(uuid)) == null)
  34. return 0;
  35. return api.getIsland(Bukkit.getOfflinePlayer(uuid)).getLevel().getLevel();
  36. }
  37. @Override
  38. public Optional<UUID> getIslandOwner(Location loc) {
  39. Optional<UUID> optional = api.getIslands().values().stream().filter(i -> isIslandAtLocation(i, loc)).findFirst().map(i -> i.getOwnerUUID());
  40. return optional;
  41. }
  42. private boolean isIslandAtLocation(Island island, Location loc) {
  43. for(IslandWorld iw : IslandWorld.values()) {
  44. if (LocationUtil.isLocationAtLocationRadius(loc, island.getLocation(iw, IslandEnvironment.Island), island.getRadius())) {
  45. return true;
  46. }
  47. }
  48. return false;
  49. }
  50. @Override
  51. public String[] getSkyBlockWorldNames() {
  52. // took from source code of SkyBlock.jar
  53. Config var1 = mainClass.getFileManager().getConfig(new File(mainClass.getDataFolder(), "config.yml"));
  54. FileConfiguration var2 = var1.getFileConfiguration();
  55. String var3 = var2.getString("Island.World.Nether.Name");
  56. String var4 = var2.getString("Island.World.Normal.Name");
  57. String var5 = var2.getString("Island.World.End.Name");
  58. return new String[] {var3, var4, var5};
  59. }
  60. }