diff --git a/build.gradle b/build.gradle index d24275c..71fc963 100644 --- a/build.gradle +++ b/build.gradle @@ -30,6 +30,7 @@ allprojects { maven { url 'https://jitpack.io' } maven { url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' } maven { url 'https://papermc.io/repo/repository/maven-public/' } + maven { url 'https://repo.rosewooddev.io/repository/public/' } } jar { @@ -37,6 +38,7 @@ allprojects { } dependencies { + compileOnly 'org.black_ixx:playerpoints:3.0.0' compileOnly 'com.willfp:eco:6.9.0' compileOnly 'org.jetbrains:annotations:19.0.0' diff --git a/eco-core/core-plugin/build.gradle b/eco-core/core-plugin/build.gradle index 9f02807..7c8c2ed 100644 --- a/eco-core/core-plugin/build.gradle +++ b/eco-core/core-plugin/build.gradle @@ -2,11 +2,14 @@ group 'com.willfp' version rootProject.version dependencies { + compileOnly fileTree(dir: '../../lib', include: ['*.jar']) compileOnly 'io.papermc.paper:paper-api:1.17.1-R0.1-SNAPSHOT' compileOnly 'com.github.MilkBowl:VaultAPI:1.7' compileOnly 'com.willfp:EcoSkills:1.4.0' compileOnly 'com.willfp:Talismans:4.6.0' compileOnly 'com.github.Archy-X:AureliumSkills:Beta1.2.4' + compileOnly 'org.black_ixx:playerpoints:3.0.0' + compileOnly fileTree(dir: '../../lib', include: ['*.jar']) } build.dependsOn publishToMavenLocal diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/ReforgesPlugin.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/ReforgesPlugin.java index 5007ddf..d94fea0 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/ReforgesPlugin.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/ReforgesPlugin.java @@ -16,6 +16,7 @@ import com.willfp.reforges.effects.Effects; import com.willfp.reforges.integrations.aureliumskills.AureliumSkillsIntegration; import com.willfp.reforges.integrations.ecoskills.EcoSkillsIntegration; import com.willfp.reforges.integrations.talismans.TalismansIntegration; +import com.willfp.reforges.integrations.ultimateskills.UltimateSkillsIntegration; import com.willfp.reforges.reforges.Reforge; import com.willfp.reforges.reforges.Reforges; import com.willfp.reforges.reforges.util.ReforgeArgParser; @@ -128,8 +129,10 @@ public class ReforgesPlugin extends EcoPlugin { @Override protected List loadIntegrationLoaders() { return Arrays.asList( + new IntegrationLoader("UltimateSkills", UltimateSkillsIntegration.INSTANCE::load), new IntegrationLoader("EcoSkills", EcoSkillsIntegration.INSTANCE::load), new IntegrationLoader("Talismans", TalismansIntegration.INSTANCE::registerProvider), + new IntegrationLoader("PlayerPoints", () -> EconomyHandler.setUsePlayerPoints(true)), new IntegrationLoader("AureliumSkills", AureliumSkillsIntegration.INSTANCE::load) ); } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/vault/EconomyHandler.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/vault/EconomyHandler.java index d019bd8..e3a9e12 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/vault/EconomyHandler.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/vault/EconomyHandler.java @@ -1,11 +1,18 @@ package com.willfp.reforges.vault; +import com.willfp.reforges.ReforgesPlugin; import lombok.Setter; import lombok.experimental.UtilityClass; import net.milkbowl.vault.economy.Economy; +import org.black_ixx.playerpoints.PlayerPoints; import org.bukkit.Bukkit; +import org.bukkit.entity.Player; import org.bukkit.plugin.RegisteredServiceProvider; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicReference; + @UtilityClass public final class EconomyHandler { /** @@ -13,6 +20,9 @@ public final class EconomyHandler { */ private static Economy instance = null; + @Setter + private static boolean usePlayerPoints = false; + @Setter private static boolean enabled = false; @@ -34,6 +44,18 @@ public final class EconomyHandler { return EconomyHandler.instance; } + public static boolean has(Player player, double amount) { + if (usePlayerPoints && ReforgesPlugin.getInstance().getConfigYml().getBool("reforge.use-player-points")) { + try { + return PlayerPoints.getInstance().getAPI().lookAsync(player.getUniqueId()).get() >= amount; + } catch (ExecutionException | InterruptedException e) { + return false; + } + } + return getInstance().has(player, amount); + + } + public static boolean isEnabled() { return EconomyHandler.enabled; } diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/integrations/ultimateskills/EffectAddAbility.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/integrations/ultimateskills/EffectAddAbility.kt new file mode 100644 index 0000000..12927c9 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/integrations/ultimateskills/EffectAddAbility.kt @@ -0,0 +1,41 @@ +package com.willfp.reforges.integrations.ultimateskills + +import com.willfp.eco.core.config.interfaces.JSONConfig +import com.willfp.eco.util.NumberUtils +import com.willfp.reforges.ReforgesPlugin +import com.willfp.reforges.effects.Effect +import mc.ultimatecore.skills.HyperSkills +import mc.ultimatecore.skills.objects.abilities.Ability +import mc.ultimatecore.skills.objects.perks.Perk +import org.bukkit.entity.Player +import org.bukkit.persistence.PersistentDataType + +class EffectAddAbility : Effect("add_ultimateskills_ability") { + + override fun handleEnable( + player: Player, + config: JSONConfig + ) { + HyperSkills.getInstance().api.addAbility( + player.uniqueId, + Ability.valueOf(config.getString("ability", false)), + config.getDouble("amount") + ) + player.persistentDataContainer.set( + ReforgesPlugin.getInstance().namespacedKeyFactory.create("addAbility"), PersistentDataType.STRING, + NumberUtils.format(config.getDouble("amount")) + "::" + config.getString("ability", false) + ) + } + + override fun handleDisable(player: Player) { + player.persistentDataContainer.get(ReforgesPlugin.getInstance().namespacedKeyFactory.create("addAbility"), PersistentDataType.STRING) + ?.let { + HyperSkills.getInstance().api.removeAbility( + player.uniqueId, + Ability.valueOf(it.split("::")[1]), + it.split("::")[0].toDouble() + ) + } + } + +} \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/integrations/ultimateskills/EffectAddPerk.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/integrations/ultimateskills/EffectAddPerk.kt new file mode 100644 index 0000000..c513b03 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/integrations/ultimateskills/EffectAddPerk.kt @@ -0,0 +1,43 @@ +package com.willfp.reforges.integrations.ultimateskills + +import com.archyx.aureliumskills.api.AureliumAPI +import com.archyx.aureliumskills.stats.Stats +import com.willfp.eco.core.config.interfaces.JSONConfig +import com.willfp.eco.util.NumberUtils +import com.willfp.reforges.ReforgesPlugin +import com.willfp.reforges.effects.Effect +import com.willfp.reforges.effects.getEffectAmount +import mc.ultimatecore.skills.HyperSkills +import mc.ultimatecore.skills.api.HyperSkillsAPI +import mc.ultimatecore.skills.objects.perks.Perk +import org.bukkit.entity.Player +import org.bukkit.persistence.PersistentDataType + +class EffectAddPerk : Effect("add_ultimateskills_perk") { + + override fun handleEnable( + player: Player, + config: JSONConfig + ) { + HyperSkills.getInstance().api.addPerk( + player.uniqueId, + Perk.valueOf(config.getString("perk", false)), + config.getDouble("amount") + ) + player.persistentDataContainer.set(ReforgesPlugin.getInstance().namespacedKeyFactory.create("addPerk"), PersistentDataType.STRING, + NumberUtils.format(config.getDouble("amount")) + "::" + config.getString("perk", false) + ) + } + + override fun handleDisable(player: Player) { + player.persistentDataContainer.get(ReforgesPlugin.getInstance().namespacedKeyFactory.create("addPerk"), PersistentDataType.STRING) + ?.let { + HyperSkills.getInstance().api.removePerk( + player.uniqueId, + Perk.valueOf(it.split("::")[1]), + it.split("::")[0].toDouble() + ) + } + } + +} \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/integrations/ultimateskills/UltimateSkillsIntegration.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/integrations/ultimateskills/UltimateSkillsIntegration.kt new file mode 100644 index 0000000..0ae9c51 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/integrations/ultimateskills/UltimateSkillsIntegration.kt @@ -0,0 +1,18 @@ +package com.willfp.reforges.integrations.ultimateskills + +import com.willfp.eco.core.integrations.Integration +import com.willfp.reforges.effects.Effect + +object UltimateSkillsIntegration : Integration { + private lateinit var ADD_PERK: Effect + private lateinit var ADD_ABILITY: Effect + + fun load() { + ADD_PERK = EffectAddPerk() + ADD_ABILITY = EffectAddAbility() + } + + override fun getPluginName(): String { + return "UltimateSkills" + } +} \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/resources/config.yml b/eco-core/core-plugin/src/main/resources/config.yml index 7d8848a..a87774b 100644 --- a/eco-core/core-plugin/src/main/resources/config.yml +++ b/eco-core/core-plugin/src/main/resources/config.yml @@ -123,6 +123,7 @@ gui: reforge: cost: 7500 xp-cost: 0 # In levels + use-player-points: false cost-exponent: 1.15 # (Reforges done ^ cost exponent) * cost diff --git a/eco-core/core-plugin/src/main/resources/plugin.yml b/eco-core/core-plugin/src/main/resources/plugin.yml index c4586a9..eb2db95 100644 --- a/eco-core/core-plugin/src/main/resources/plugin.yml +++ b/eco-core/core-plugin/src/main/resources/plugin.yml @@ -13,6 +13,7 @@ softdepend: - EcoSkills - Talismans - AureliumSkills + - PlayerPoints libraries: - 'org.jetbrains.kotlin:kotlin-stdlib:1.5.21' diff --git a/lib/UltimateHelper.jar b/lib/UltimateHelper.jar new file mode 100644 index 0000000..ae003d5 Binary files /dev/null and b/lib/UltimateHelper.jar differ diff --git a/lib/UltimateSkills.jar b/lib/UltimateSkills.jar new file mode 100644 index 0000000..fd06b79 Binary files /dev/null and b/lib/UltimateSkills.jar differ