From 86c486720636a4f41d2a49316327d756223da45c Mon Sep 17 00:00:00 2001 From: Auxilor Date: Thu, 4 Nov 2021 20:28:47 +0000 Subject: [PATCH] Added BungeeDataListener and IridiumSkyblock support --- build.gradle | 3 + eco-core/core-plugin/build.gradle | 2 + .../com/willfp/eco/spigot/EcoSpigotPlugin.kt | 12 +++- .../willfp/eco/spigot/data/DataListener.kt | 14 +++++ .../antigrief/AntigriefIridiumSkyblock.kt | 60 +++++++++++++++++++ .../core-plugin/src/main/resources/plugin.yml | 1 + 6 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/integrations/antigrief/AntigriefIridiumSkyblock.kt diff --git a/build.gradle b/build.gradle index c0f34d81..6b162465 100644 --- a/build.gradle +++ b/build.gradle @@ -54,6 +54,9 @@ allprojects { // CombatLogX maven { url 'https://nexus.sirblobman.xyz/repository/public/' } + + // IridiumSkyblock + maven { url 'https://nexus.iridiumdevelopment.net/repository/maven-releases/' } } dependencies { diff --git a/eco-core/core-plugin/build.gradle b/eco-core/core-plugin/build.gradle index 7b10f3d6..753b0a26 100644 --- a/eco-core/core-plugin/build.gradle +++ b/eco-core/core-plugin/build.gradle @@ -40,6 +40,8 @@ dependencies { compileOnly 'com.github.MilkBowl:VaultAPI:1.7' compileOnly 'world.bentobox:bentobox:1.17.3-SNAPSHOT' compileOnly 'com.google.guava:guava:31.0.1-jre' + compileOnly 'com.iridium:IridiumSkyblock:3.1.2' + compileOnly 'net.md-5:bungeecord-api:1.16-R0.5-SNAPSHOT' // CombatLogX V10 + NewbieHelper Expansion compileOnly 'com.SirBlobman.combatlogx:CombatLogX-API:10.0.0.0-SNAPSHOT' diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/EcoSpigotPlugin.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/EcoSpigotPlugin.kt index 1d29997e..e4afd9e5 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/EcoSpigotPlugin.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/EcoSpigotPlugin.kt @@ -24,6 +24,7 @@ import com.willfp.eco.proxy.FastItemStackFactoryProxy import com.willfp.eco.proxy.SkullProxy import com.willfp.eco.proxy.TPSProxy import com.willfp.eco.spigot.arrows.ArrowDataListener +import com.willfp.eco.spigot.data.BungeeDataListener import com.willfp.eco.spigot.data.DataListener import com.willfp.eco.spigot.data.EcoPlayerProfileHandler import com.willfp.eco.spigot.data.PlayerBlockListener @@ -58,6 +59,7 @@ import com.willfp.eco.spigot.integrations.antigrief.AntigriefCombatLogXV11 import com.willfp.eco.spigot.integrations.antigrief.AntigriefDeluxeCombat import com.willfp.eco.spigot.integrations.antigrief.AntigriefFactionsUUID import com.willfp.eco.spigot.integrations.antigrief.AntigriefGriefPrevention +import com.willfp.eco.spigot.integrations.antigrief.AntigriefIridiumSkyblock import com.willfp.eco.spigot.integrations.antigrief.AntigriefKingdoms import com.willfp.eco.spigot.integrations.antigrief.AntigriefLands import com.willfp.eco.spigot.integrations.antigrief.AntigriefSuperiorSkyblock2 @@ -75,6 +77,7 @@ import com.willfp.eco.spigot.integrations.multiverseinventories.MultiverseInvent import com.willfp.eco.spigot.integrations.shop.ShopShopGuiPlus import com.willfp.eco.spigot.recipes.ShapedRecipeListener import com.willfp.eco.util.BlockUtils +import com.willfp.eco.util.ClassUtils import com.willfp.eco.util.ServerUtils import com.willfp.eco.util.SkullUtils import net.kyori.adventure.platform.bukkit.BukkitAudiences @@ -178,6 +181,7 @@ abstract class EcoSpigotPlugin : EcoPlugin( override fun loadIntegrationLoaders(): List { return listOf( // AntiGrief + IntegrationLoader("IridiumSkyblock") { AntigriefManager.register(AntigriefIridiumSkyblock()) }, IntegrationLoader("DeluxeCombat") { AntigriefManager.register(AntigriefDeluxeCombat()) }, IntegrationLoader("SuperiorSkyblock2") { AntigriefManager.register(AntigriefSuperiorSkyblock2()) }, IntegrationLoader("BentoBox") { AntigriefManager.register(AntigriefBentoBox()) }, @@ -254,7 +258,7 @@ abstract class EcoSpigotPlugin : EcoPlugin( } override fun loadListeners(): List { - return listOf( + val listeners = mutableListOf( NaturalExpGainListeners(), ArmorListener(), EntityDeathByEntityListeners(this), @@ -266,5 +270,11 @@ abstract class EcoSpigotPlugin : EcoPlugin( DataListener(), PlayerBlockListener(this) ) + + if (ClassUtils.exists("net.md_5.bungee.api.event.ServerConnectedEvent")) { + listeners.add(BungeeDataListener()) + } + + return listeners } } \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/data/DataListener.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/data/DataListener.kt index d4d7dbf9..52453e78 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/data/DataListener.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/data/DataListener.kt @@ -2,6 +2,8 @@ package com.willfp.eco.spigot.data import com.willfp.eco.core.Eco import com.willfp.eco.util.PlayerUtils +import net.md_5.bungee.api.event.ServerConnectedEvent +import net.md_5.bungee.api.event.ServerSwitchEvent import org.bukkit.event.EventHandler import org.bukkit.event.Listener import org.bukkit.event.player.PlayerJoinEvent @@ -19,4 +21,16 @@ class DataListener : Listener { (Eco.getHandler().playerProfileHandler as EcoPlayerProfileHandler).unloadPlayer(event.player.uniqueId) PlayerUtils.updateSavedDisplayName(event.player) } +} + +class BungeeDataListener : Listener { + @EventHandler + fun onConnected(event: ServerConnectedEvent) { + (Eco.getHandler().playerProfileHandler as EcoPlayerProfileHandler).unloadPlayer(event.player.uniqueId) + } + + @EventHandler + fun onSwitch(event: ServerSwitchEvent) { + (Eco.getHandler().playerProfileHandler as EcoPlayerProfileHandler).unloadPlayer(event.player.uniqueId) + } } \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/integrations/antigrief/AntigriefIridiumSkyblock.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/integrations/antigrief/AntigriefIridiumSkyblock.kt new file mode 100644 index 00000000..768e4e6e --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/integrations/antigrief/AntigriefIridiumSkyblock.kt @@ -0,0 +1,60 @@ +package com.willfp.eco.spigot.integrations.antigrief + +import com.iridium.iridiumskyblock.PermissionType +import com.iridium.iridiumskyblock.api.IridiumSkyblockAPI +import com.willfp.eco.core.integrations.antigrief.AntigriefWrapper +import org.bukkit.Location +import org.bukkit.block.Block +import org.bukkit.entity.LivingEntity +import org.bukkit.entity.Player + +class AntigriefIridiumSkyblock : AntigriefWrapper { + private val api = IridiumSkyblockAPI.getInstance() + + override fun canBreakBlock( + player: Player, + block: Block + ): Boolean { + return api.getIslandPermission(api.getIslandViaLocation(block.location).orElse(null) ?: return true, api.getUser(player), PermissionType.BLOCK_BREAK) + } + + override fun canCreateExplosion( + player: Player, + location: Location + ): Boolean { + return api.getIslandPermission(api.getIslandViaLocation(location).orElse(null) ?: return true, api.getUser(player), PermissionType.BLOCK_BREAK) + } + + override fun canPlaceBlock( + player: Player, + block: Block + ): Boolean { + return api.getIslandPermission(api.getIslandViaLocation(block.location).orElse(null) ?: return true, api.getUser(player), PermissionType.BLOCK_PLACE) + } + + override fun canInjure( + player: Player, + victim: LivingEntity + ): Boolean { + return when (victim) { + is Player -> api.getIslandViaLocation(victim.location).orElse(null) != null + else -> api.getIslandPermission(api.getIslandViaLocation(victim.location).orElse(null) ?: return true, api.getUser(player), PermissionType.KILL_MOBS) + } + } + + override fun getPluginName(): String { + return "IridiumSkyblock" + } + + override fun equals(other: Any?): Boolean { + if (other !is AntigriefWrapper) { + return false + } + + return other.pluginName == this.pluginName + } + + override fun hashCode(): Int { + return this.pluginName.hashCode() + } +} \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/resources/plugin.yml b/eco-core/core-plugin/src/main/resources/plugin.yml index 10b71ba7..9f0397f8 100644 --- a/eco-core/core-plugin/src/main/resources/plugin.yml +++ b/eco-core/core-plugin/src/main/resources/plugin.yml @@ -34,6 +34,7 @@ softdepend: - Vault - BentoBox - DeluxeCombat + - IridiumSkyblock libraries: - 'org.reflections:reflections:0.9.12' - 'org.apache.maven:maven-artifact:3.0.3'