From b003ec96f7fc354c02c8d329d504d45a98daabc6 Mon Sep 17 00:00:00 2001 From: Kapitowa Date: Tue, 2 Aug 2022 18:33:18 +0300 Subject: [PATCH] Added FabledSkyBlock integration in AntigriefManager --- eco-core/core-plugin/build.gradle | 1 + .../eco/internal/spigot/EcoSpigotPlugin.kt | 2 + .../antigrief/AntigriefFabledSkyBlock.kt | 98 +++++++++++++++++++ 3 files changed, 101 insertions(+) create mode 100644 eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/integrations/antigrief/AntigriefFabledSkyBlock.kt diff --git a/eco-core/core-plugin/build.gradle b/eco-core/core-plugin/build.gradle index fce2af94..a6bd1870 100644 --- a/eco-core/core-plugin/build.gradle +++ b/eco-core/core-plugin/build.gradle @@ -42,6 +42,7 @@ dependencies { compileOnly 'com.gmail.filoghost.holographicdisplays:holographicdisplays-api:2.4.0' compileOnly 'com.github.EssentialsX:Essentials:2.18.2' compileOnly 'com.bgsoftware:SuperiorSkyblockAPI:1.8.3' + compileOnly 'com.songoda:skyblock:2.3.30' compileOnly 'com.github.MilkBowl:VaultAPI:1.7' compileOnly 'com.github.WhipDevelopment:CrashClaim:f9cd7d92eb' compileOnly 'com.wolfyscript.wolfyutilities:wolfyutilities:3.16.0.0' diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/EcoSpigotPlugin.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/EcoSpigotPlugin.kt index 7127c7da..06f5b16d 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/EcoSpigotPlugin.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/EcoSpigotPlugin.kt @@ -93,6 +93,7 @@ import com.willfp.eco.internal.spigot.integrations.antigrief.AntigriefRPGHorses import com.willfp.eco.internal.spigot.integrations.antigrief.AntigriefSuperiorSkyblock2 import com.willfp.eco.internal.spigot.integrations.antigrief.AntigriefTowny import com.willfp.eco.internal.spigot.integrations.antigrief.AntigriefWorldGuard +import com.willfp.eco.internal.spigot.integrations.antigrief.AntigriefFabledSkyBlock import com.willfp.eco.internal.spigot.integrations.customentities.CustomEntitiesMythicMobs import com.willfp.eco.internal.spigot.integrations.customitems.CustomItemsCustomCrafting import com.willfp.eco.internal.spigot.integrations.customitems.CustomItemsExecutableItems @@ -264,6 +265,7 @@ abstract class EcoSpigotPlugin : EcoPlugin() { IntegrationLoader("IridiumSkyblock") { AntigriefManager.register(AntigriefIridiumSkyblock()) }, IntegrationLoader("DeluxeCombat") { AntigriefManager.register(AntigriefDeluxeCombat()) }, IntegrationLoader("SuperiorSkyblock2") { AntigriefManager.register(AntigriefSuperiorSkyblock2()) }, + IntegrationLoader("FabledSkyBlock") { AntigriefManager.register(AntigriefFabledSkyBlock()) }, IntegrationLoader("BentoBox") { AntigriefManager.register(AntigriefBentoBox()) }, IntegrationLoader("WorldGuard") { AntigriefManager.register(AntigriefWorldGuard()) }, IntegrationLoader("GriefPrevention") { AntigriefManager.register(AntigriefGriefPrevention()) }, diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/integrations/antigrief/AntigriefFabledSkyBlock.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/integrations/antigrief/AntigriefFabledSkyBlock.kt new file mode 100644 index 00000000..f48d8b2d --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/integrations/antigrief/AntigriefFabledSkyBlock.kt @@ -0,0 +1,98 @@ +package com.willfp.eco.internal.spigot.integrations.antigrief + +import com.songoda.skyblock.SkyBlock +import com.willfp.eco.core.integrations.antigrief.AntigriefIntegration +import org.bukkit.Location +import org.bukkit.block.Block +import org.bukkit.entity.LivingEntity +import org.bukkit.entity.Monster +import org.bukkit.entity.Player + +class AntigriefFabledSkyBlock : AntigriefIntegration { + + override fun getPluginName(): String { + return "FabledSkyBlock" + } + + override fun canBreakBlock(player: Player, block: Block): Boolean { + + val skyblock = SkyBlock.getInstance() + val island = skyblock.islandManager.getIslandAtLocation(block.location) ?: return true + + if (!player.hasPermission("fabledskyblock.bypass.destroy")) { + return false + } + + if (!skyblock.permissionManager.hasPermission(island, "Destroy", island.getRole(player))) { + return false + } + + return true + } + + override fun canCreateExplosion(player: Player, location: Location): Boolean { + val skyblock = SkyBlock.getInstance() + val island = skyblock.islandManager.getIslandAtLocation(location) ?: return true + + if (!player.hasPermission("fabledskyblock.bypass.explosions")) { + return false + } + + if (!skyblock.permissionManager.hasPermission(island, "Explosions", island.getRole(player))) { + return false + } + + return true + } + + override fun canPlaceBlock(player: Player, block: Block): Boolean { + + val skyblock = SkyBlock.getInstance() + val island = skyblock.islandManager.getIslandAtLocation(block.location) ?: return true + + if (!player.hasPermission("fabledskyblock.bypass.place")) { + return false + } + + if (!skyblock.permissionManager.hasPermission(island, "Place", island.getRole(player))) { + return false + } + + return true + } + + override fun canInjure(player: Player, victim: LivingEntity): Boolean { + + val skyblock = SkyBlock.getInstance() + val island = SkyBlock.getInstance().islandManager.getIslandAtLocation(victim.location) ?: return true + + if (victim is Player) return skyblock.permissionManager.hasPermission(island, "PvP", island.getRole(player)) + + val islandPermission = when (victim) { + is Monster -> "MonsterHurting" + else -> "MobHurting" + } + + if (!skyblock.permissionManager.hasPermission(island, islandPermission, island.getRole(player))) { + return false + } + + return true + } + + override fun canPickupItem(player: Player, location: Location): Boolean { + + val skyblock = SkyBlock.getInstance() + val island = SkyBlock.getInstance().islandManager.getIslandAtLocation(location) ?: return true + + if (!player.hasPermission("fabledskyblock.bypass.itempickup")) { + return false + } + + if (!skyblock.permissionManager.hasPermission(island, "ItemPickup", island.getRole(player))) { + return false + } + + return true + } +} \ No newline at end of file