diff --git a/build.gradle b/build.gradle index 14acb13..f9ea5e5 100644 --- a/build.gradle +++ b/build.gradle @@ -1,3 +1,13 @@ +buildscript { + repositories { + mavenCentral() + } + + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31" + } +} + plugins { id 'java-library' id 'com.github.johnrengelman.shadow' version '7.0.0' @@ -11,6 +21,7 @@ dependencies { allprojects { apply plugin: 'java' + apply plugin: 'kotlin' apply plugin: 'maven-publish' apply plugin: 'com.github.johnrengelman.shadow' @@ -51,7 +62,7 @@ allprojects { dependencies { compileOnly 'com.willfp:eco:6.13.10' - compileOnly 'com.willfp:libreforge:0.1.2' + compileOnly 'com.willfp:libreforge:0.3.0' compileOnly 'org.jetbrains:annotations:23.0.0' @@ -60,6 +71,8 @@ allprojects { testCompileOnly 'org.projectlombok:lombok:1.18.20' testAnnotationProcessor 'org.projectlombok:lombok:1.18.20' + + compileOnly 'org.jetbrains.kotlin:kotlin-stdlib:1.5.31' } tasks.withType(JavaCompile) { diff --git a/eco-core/core-plugin/build.gradle b/eco-core/core-plugin/build.gradle index 67e4568..4b55c7b 100644 --- a/eco-core/core-plugin/build.gradle +++ b/eco-core/core-plugin/build.gradle @@ -2,7 +2,7 @@ group 'com.willfp' version rootProject.version dependencies { - compileOnly 'org.spigotmc:spigot-api:1.16.4-R0.1-SNAPSHOT' + compileOnly 'org.spigotmc:spigot-api:1.16.5-R0.1-SNAPSHOT' } publishing { diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/EcoArmorPlugin.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/EcoArmorPlugin.java index 1c1009b..1962a50 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/EcoArmorPlugin.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/EcoArmorPlugin.java @@ -8,18 +8,22 @@ import com.willfp.ecoarmor.commands.CommandEcoarmor; import com.willfp.ecoarmor.config.EcoArmorJson; import com.willfp.ecoarmor.display.ArmorDisplay; import com.willfp.ecoarmor.sets.ArmorSets; +import com.willfp.ecoarmor.sets.util.ArmorUtils; import com.willfp.ecoarmor.sets.util.EffectiveDurabilityListener; import com.willfp.ecoarmor.sets.util.PreventSkullPlaceListener; import com.willfp.ecoarmor.upgrades.Tiers; import com.willfp.ecoarmor.upgrades.listeners.AdvancementShardListener; import com.willfp.ecoarmor.upgrades.listeners.CrystalListener; import com.willfp.ecoarmor.util.DiscoverRecipeListener; -import com.willfp.libreforge.api.LibReforge; +import com.willfp.ecoarmor.util.EffectListener; +import com.willfp.libreforge.Holder; +import com.willfp.libreforge.LibReforge; import lombok.Getter; import org.bukkit.event.Listener; import org.jetbrains.annotations.Nullable; import java.util.Arrays; +import java.util.Collections; import java.util.List; @SuppressWarnings("unused") @@ -31,7 +35,7 @@ public class EcoArmorPlugin extends EcoPlugin { private static EcoArmorPlugin instance; /** - * tiers.json. + * ecoarmor.json. */ @Getter private final EcoArmorJson ecoArmorJson; @@ -46,6 +50,14 @@ public class EcoArmorPlugin extends EcoPlugin { this.ecoArmorJson = new EcoArmorJson(this); LibReforge.init(this); + LibReforge.registerHolderProvider(player -> { + Holder active = ArmorUtils.getActiveSet(player); + if (active == null) { + return Collections.emptyList(); + } else { + return Collections.singletonList(active); + } + }); } @Override @@ -53,6 +65,11 @@ public class EcoArmorPlugin extends EcoPlugin { LibReforge.enable(this); } + @Override + protected void handleDisable() { + LibReforge.disable(this); + } + @Override protected void handleReload() { this.getLogger().info(Tiers.values().size() + " Tiers Loaded"); @@ -73,7 +90,8 @@ public class EcoArmorPlugin extends EcoPlugin { new AdvancementShardListener(this), new EffectiveDurabilityListener(this), new DiscoverRecipeListener(this), - new PreventSkullPlaceListener() + new PreventSkullPlaceListener(), + new EffectListener() ); } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/display/ArmorDisplay.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/display/ArmorDisplay.java deleted file mode 100644 index abfa1d5..0000000 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/display/ArmorDisplay.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.willfp.ecoarmor.display; - -import com.willfp.eco.core.EcoPlugin; -import com.willfp.eco.core.display.DisplayModule; -import com.willfp.eco.core.display.DisplayPriority; -import com.willfp.eco.core.fast.FastItemStack; -import com.willfp.eco.util.SkullUtils; -import com.willfp.ecoarmor.sets.ArmorSet; -import com.willfp.ecoarmor.sets.meta.ArmorSlot; -import com.willfp.ecoarmor.sets.util.ArmorUtils; -import com.willfp.ecoarmor.upgrades.Tier; -import org.bukkit.Bukkit; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.inventory.meta.LeatherArmorMeta; -import org.bukkit.inventory.meta.SkullMeta; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -public class ArmorDisplay extends DisplayModule { - /** - * Create armor display. - * - * @param plugin Instance of EcoArmor. - */ - public ArmorDisplay(@NotNull final EcoPlugin plugin) { - super(plugin, DisplayPriority.LOWEST); - } - - @Override - public void display(@NotNull final ItemStack itemStack, - @NotNull final Object... args) { - ItemMeta meta = itemStack.getItemMeta(); - if (meta == null) { - return; - } - FastItemStack fis = FastItemStack.wrap(itemStack); - - ArmorSet set = ArmorUtils.getSetOnItem(meta); - - if (set == null) { - Tier crystalTier = ArmorUtils.getCrystalTier(meta); - - if (crystalTier != null) { - List lore = fis.getLore(); - lore.addAll(FastItemStack.wrap(crystalTier.getCrystal()).getLore()); - fis.setLore(lore); - } - - ArmorSet shardSet = ArmorUtils.getShardSet(meta); - - if (shardSet != null) { - List lore = fis.getLore(); - lore.addAll(FastItemStack.wrap(shardSet.getAdvancementShardItem()).getLore()); - - itemStack.setItemMeta(shardSet.getAdvancementShardItem().getItemMeta()); - FastItemStack.wrap(itemStack).setLore(lore); - } - - return; - } - - ArmorSlot slot = ArmorSlot.getSlot(itemStack); - if (slot == null) { - return; - } - - ItemStack slotStack; - - if (ArmorUtils.isAdvanced(meta)) { - slotStack = set.getAdvancedItemStack(slot); - } else { - slotStack = set.getItemStack(slot); - } - ItemMeta slotMeta = slotStack.getItemMeta(); - assert slotMeta != null; - - Tier tier = ArmorUtils.getTier(meta); - - List lore = new ArrayList<>(); - - for (String s : FastItemStack.wrap(slotStack).getLore()) { - s = s.replace("%tier%", tier.getDisplayName()); - lore.add(s); - } - - if (meta.hasLore()) { - lore.addAll(fis.getLore()); - } - meta.setDisplayName(slotMeta.getDisplayName()); - - if (meta instanceof SkullMeta && slotMeta instanceof SkullMeta) { - if (set.getSkullBase64() != null) { - SkullUtils.setSkullTexture((SkullMeta) meta, set.getSkullBase64()); - } - } - - if (meta instanceof LeatherArmorMeta && slotMeta instanceof LeatherArmorMeta) { - ((LeatherArmorMeta) meta).setColor(((LeatherArmorMeta) slotMeta).getColor()); - } - - itemStack.setItemMeta(meta); - FastItemStack.wrap(itemStack).setLore(lore); - } -} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/ArmorSet.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/ArmorSet.java index 3c1176e..0855280 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/ArmorSet.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/ArmorSet.java @@ -15,13 +15,11 @@ import com.willfp.ecoarmor.sets.meta.ArmorSlot; import com.willfp.ecoarmor.sets.util.ArmorUtils; import com.willfp.ecoarmor.upgrades.Tier; import com.willfp.ecoarmor.upgrades.Tiers; -import com.willfp.libreforge.api.conditions.Condition; -import com.willfp.libreforge.api.conditions.Conditions; -import com.willfp.libreforge.api.conditions.ConfiguredCondition; -import com.willfp.libreforge.api.effects.ConfiguredEffect; -import com.willfp.libreforge.api.effects.Effect; -import com.willfp.libreforge.api.effects.Effects; -import com.willfp.libreforge.api.provider.Holder; +import com.willfp.libreforge.Holder; +import com.willfp.libreforge.conditions.Conditions; +import com.willfp.libreforge.conditions.ConfiguredCondition; +import com.willfp.libreforge.effects.ConfiguredEffect; +import com.willfp.libreforge.effects.Effects; import lombok.AccessLevel; import lombok.Getter; import org.bukkit.Bukkit; @@ -32,7 +30,6 @@ import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.persistence.PersistentDataType; -import org.bukkit.potion.PotionEffectType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -48,7 +45,7 @@ import java.util.stream.Collectors; /* TODO: Split off ArmorSet between two separate armorset objects (one advanced, one not) */ -public class ArmorSet implements Holder { +public class ArmorSet { /** * Instance of EcoArmor. */ @@ -68,34 +65,16 @@ public class ArmorSet implements Holder { private final String name; /** - * Conditions and their values. + * The advanced holder. */ @Getter - private final Set conditions = new HashSet<>(); + private final Holder advancedHoler; /** - * Effects and their strengths. + * The regular holder. */ @Getter - private final Set effects = new HashSet<>(); - - /** - * Effects and their strengths on advanced armor. - */ - @Getter - private final Set advancedEffects = new HashSet<>(); - - /** - * Potion effects to be applied on equip. - */ - @Getter - private final Map potionEffects = new HashMap<>(); - - /** - * Potion effects to be applied on equipping advanced. - */ - @Getter - private final Map advancedPotionEffects = new HashMap<>(); + private final Holder regularHolder; /** * The base64 texture of a skull used as a helmet. @@ -134,32 +113,32 @@ public class ArmorSet implements Holder { this.plugin = plugin; this.name = config.getString("name"); + Set conditions = new HashSet<>(); for (JSONConfig cfg : this.getConfig().getSubsections("conditions")) { - Condition effect = Conditions.INSTANCE.getByID(cfg.getString("id")); - conditions.add(new ConfiguredCondition(effect, cfg.getSubsection("args"))); + ConfiguredCondition conf = Conditions.compile(cfg, "Armor Set " + this.name); + if (conf != null) { + conditions.add(conf); + } } + Set effects = new HashSet<>(); for (JSONConfig cfg : this.getConfig().getSubsections("effects")) { - Effect effect = Effects.INSTANCE.getByID(cfg.getString("id")); - effects.add(new ConfiguredEffect(effect, cfg.getSubsection("args"))); + ConfiguredEffect conf = Effects.compile(cfg, "Armor Set " + this.name); + if (conf != null) { + effects.add(conf); + } } + Set advancedEffects = new HashSet<>(); for (JSONConfig cfg : this.getConfig().getSubsections("advancedEffects")) { - Effect effect = Effects.INSTANCE.getByID(cfg.getString("id")); - advancedEffects.add(new ConfiguredEffect(effect, cfg.getSubsection("args"))); + ConfiguredEffect conf = Effects.compile(cfg, "Armor Set " + this.name + " (Advanced)"); + if (conf != null) { + effects.add(conf); + } } - for (JSONConfig cfg : this.getConfig().getSubsections("potionEffects")) { - PotionEffectType effect = PotionEffectType.getByName(cfg.getString("id").toUpperCase()); - int level = cfg.getInt("level"); - potionEffects.put(effect, level); - } - - for (JSONConfig cfg : this.getConfig().getSubsections("advancedPotionEffects")) { - PotionEffectType effect = PotionEffectType.getByName(cfg.getString("id").toUpperCase()); - int level = cfg.getInt("level"); - advancedPotionEffects.put(effect, level); - } + this.regularHolder = new RegularHolder(conditions, effects); + this.advancedHoler = new AdvancedHolder(conditions, advancedEffects); ArmorSets.addNewSet(this); diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/ArmorSetHolder.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/ArmorSetHolder.java new file mode 100644 index 0000000..a850fdd --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/ArmorSetHolder.java @@ -0,0 +1,4 @@ +package com.willfp.ecoarmor.sets; + +public class ArmorSetHolder { +} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/util/ArmorUtils.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/util/ArmorUtils.java index 68f6816..bb948db 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/util/ArmorUtils.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/util/ArmorUtils.java @@ -6,6 +6,7 @@ import com.willfp.ecoarmor.sets.ArmorSets; import com.willfp.ecoarmor.sets.meta.ArmorSlot; import com.willfp.ecoarmor.upgrades.Tier; import com.willfp.ecoarmor.upgrades.Tiers; +import com.willfp.libreforge.Holder; import lombok.experimental.UtilityClass; import org.bukkit.attribute.Attribute; import org.bukkit.attribute.AttributeModifier; @@ -63,6 +64,24 @@ public class ArmorUtils { return ArmorSets.getByName(setName); } + /** + * Get active holder for a player. + * + * @param player The player to check. + * @return The holder, or null if not found. + */ + @Nullable + public Holder getActiveSet(@NotNull final Player player) { + ArmorSet armorSet = getSetOnPlayer(player); + boolean advanced = isWearingAdvanced(player); + + if (armorSet != null) { + return advanced ? armorSet.getAdvancedHoler() : armorSet.getRegularHolder(); + } else { + return null; + } + } + /** * Get armor set that player is wearing. * diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/display/ArmorDisplay.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/display/ArmorDisplay.kt new file mode 100644 index 0000000..c6d3f27 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/display/ArmorDisplay.kt @@ -0,0 +1,76 @@ +package com.willfp.ecoarmor.display + +import com.willfp.eco.core.EcoPlugin +import com.willfp.eco.core.display.DisplayModule +import com.willfp.eco.core.display.DisplayPriority +import com.willfp.eco.core.fast.FastItemStack +import com.willfp.eco.util.SkullUtils +import com.willfp.ecoarmor.sets.meta.ArmorSlot +import com.willfp.ecoarmor.sets.util.ArmorUtils +import org.bukkit.inventory.ItemStack +import org.bukkit.inventory.meta.LeatherArmorMeta +import org.bukkit.inventory.meta.SkullMeta + +class ArmorDisplay(plugin: EcoPlugin) : DisplayModule(plugin, DisplayPriority.LOWEST) { + override fun display( + itemStack: ItemStack, + vararg args: Any + ) { + val meta = itemStack.itemMeta ?: return + + val fis = FastItemStack.wrap(itemStack) + + val set = ArmorUtils.getSetOnItem(meta) + + if (set == null) { + val crystalTier = ArmorUtils.getCrystalTier(meta) + if (crystalTier != null) { + val lore = fis.lore + lore.addAll(FastItemStack.wrap(crystalTier.crystal).lore) + fis.setLore(lore) + } + + val shardSet = ArmorUtils.getShardSet(meta) + if (shardSet != null) { + val lore = fis.lore + lore.addAll(FastItemStack.wrap(shardSet.advancementShardItem).lore) + itemStack.itemMeta = shardSet.advancementShardItem.itemMeta + FastItemStack.wrap(itemStack).setLore(lore) + } + + return + } + + val slot = ArmorSlot.getSlot(itemStack) ?: return + + val slotStack: ItemStack = if (ArmorUtils.isAdvanced(meta)) { + set.getAdvancedItemStack(slot) + } else { + set.getItemStack(slot) + } + + val slotMeta = slotStack.itemMeta ?: return + + val tier = ArmorUtils.getTier(meta)!! + + val lore = (FastItemStack.wrap(slotStack).lore).map { it.replace("%tier%", tier.displayName) }.toMutableList() + + if (meta.hasLore()) { + lore.addAll(fis.lore) + } + + meta.setDisplayName(slotMeta.displayName) + if (meta is SkullMeta && slotMeta is SkullMeta) { + if (set.skullBase64 != null) { + SkullUtils.setSkullTexture(meta, set.skullBase64!!) + } + } + + if (meta is LeatherArmorMeta && slotMeta is LeatherArmorMeta) { + meta.setColor(slotMeta.color) + } + + itemStack.itemMeta = meta + FastItemStack.wrap(itemStack).lore = lore + } +} \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/sets/AdvancedHolder.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/sets/AdvancedHolder.kt new file mode 100644 index 0000000..790c5e0 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/sets/AdvancedHolder.kt @@ -0,0 +1,9 @@ +package com.willfp.ecoarmor.sets + +import com.willfp.libreforge.Holder +import com.willfp.libreforge.conditions.ConfiguredCondition +import com.willfp.libreforge.effects.ConfiguredEffect + +class AdvancedHolder(override val conditions: Set, override val effects: Set) : + Holder { +} diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/sets/RegularHolder.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/sets/RegularHolder.kt new file mode 100644 index 0000000..799b983 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/sets/RegularHolder.kt @@ -0,0 +1,9 @@ +package com.willfp.ecoarmor.sets + +import com.willfp.libreforge.Holder +import com.willfp.libreforge.conditions.ConfiguredCondition +import com.willfp.libreforge.effects.ConfiguredEffect + +class RegularHolder(override val conditions: Set, override val effects: Set) : + Holder { +} diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/util/EffectListener.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/util/EffectListener.kt new file mode 100644 index 0000000..35c80a5 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoarmor/util/EffectListener.kt @@ -0,0 +1,15 @@ +package com.willfp.ecoarmor.util + +import com.willfp.eco.core.events.ArmorChangeEvent +import com.willfp.libreforge.updateEffects +import org.bukkit.event.EventHandler +import org.bukkit.event.Listener + +class EffectListener: Listener { + @EventHandler + fun armorEquipListener(event: ArmorChangeEvent) { + val player = event.player + + player.updateEffects() + } +} \ 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 e7a0365..21620f3 100644 --- a/eco-core/core-plugin/src/main/resources/config.yml +++ b/eco-core/core-plugin/src/main/resources/config.yml @@ -8,62 +8,9 @@ discover-recipes: true # If all recipes should be automatically discovered. advancement-shard-material: prismarine_shard # The material for advancement shards. upgrade-crystal-material: end_crystal # The material for upgrade crystals. -# Effects are passive abilities that happen when wearing a full set with the effect present. -effects: - attack-speed-multiplier: - # Changes attack speed by some multiplier +cooldown: + in-actionbar: true + sound: enabled: true - bonus-hearts: - # Extra hearts given to a player - enabled: true - bow-damage-multiplier: - # Changes bow damage by some multiplier - enabled: true - damage-multiplier: - # Changes damage from any form by some multiplier - enabled: true - damage-taken-multiplier: - # Changes incoming damage by some multiplier - enabled: true - durability-multiplier: - # Changes durability for **all items in inventory** by some multiplier - enabled: true - evade-chance: - # Chance of avoiding attack, as a percentage - enabled: true - experience-multiplier: - # Changes experience gained by some multiplier - enabled: true - fall-damage-multiplier: - # Changes fall damage by some multiplier - enabled: true - flight: - # Allows flight - enabled: true - melee-damage-multiplier: - # Changes melee damage by some multiplier - enabled: true - regeneration-multiplier: - # Changes regeneration by some multiplier - enabled: true - speed-multiplier: - # Changes movement speed by some multiplier - enabled: true - trident-damage-multiplier: - # Changes trident damage by some multiplier - enabled: true - warp-chance: - # Chance to warp behind your opponent after damaging them, as a percentage - enabled: true - hunger-loss-multiplier: - # Modify hunger loss by some multiplier - enabled: true - boss-damage-multiplier: - # Modify boss damage by some multiplier - enabled: true - knockback-multiplier: - # Modify knockback by some multiplier - enabled: true - telekinesis: - # Drops and xp go straight to your inventory - enabled: true \ No newline at end of file + sound: "BLOCK_NOTE_BLOCK_PLING" + pitch: 0.5 diff --git a/eco-core/core-plugin/src/main/resources/ecoarmor.json b/eco-core/core-plugin/src/main/resources/ecoarmor.json index 2d8d244..6e6b5f0 100644 --- a/eco-core/core-plugin/src/main/resources/ecoarmor.json +++ b/eco-core/core-plugin/src/main/resources/ecoarmor.json @@ -5,18 +5,28 @@ "conditions": [], "effects": [ { - "id": "damage-multiplier", - "args": 1.25 + "id": "damage_multiplier", + "args": { + "multiplier": 1.25 + }, + "triggers": [ + "melee_attack", + "bow_attack", + "trident_attack" + ] } ], "advancedEffects": [ { - "id": "damage-taken-multiplier", - "args": 0.9 + "id": "damage_multiplier", + "args": { + "multiplier": 0.9 + }, + "triggers": [ + "take_damage" + ] } ], - "potionEffects": [], - "advancedPotionEffects": [], "advancedLore": [ "", "&lADVANCED BONUS", @@ -246,26 +256,54 @@ "conditions": [], "effects": [ { - "id": "boss-damage-multiplier", - "args": 1.5 + "id": "damage_multiplier", + "args": { + "multiplier": 1.5 + }, + "triggers": [ + "melee_attack", + "bow_attack", + "trident_attack" + ], + "filters": { + "onlyBosses": true + } }, { - "id": "damage-taken-multiplier", - "args": 0.9 + "id": "damage_multiplier", + "args": { + "multiplier": 0.9 + }, + "triggers": [ + "take_damage" + ] } ], "advancedEffects": [ { - "id": "damage-taken-multiplier", - "args": 0.8 + "id": "damage_multiplier", + "args": { + "multiplier": 0.8 + }, + "triggers": [ + "take_damage" + ] }, { - "id": "boss-damage-multiplier", - "args": 2 + "id": "damage_multiplier", + "args": { + "multiplier": 2 + }, + "triggers": [ + "melee_attack", + "bow_attack", + "trident_attack" + ], + "filters": { + "onlyBosses": true + } } ], - "potionEffects": [], - "advancedPotionEffects": [], "advancedLore": [ "", "&lADVANCED BONUS", @@ -525,34 +563,36 @@ "conditions": [], "effects": [ { - "id": "bonus-hearts", - "args": 10.0 + "id": "bonus_health", + "args": { + "health": 20 + } }, { - "id": "melee-damage-multiplier", - "args": 0.9 + "id": "damage_multiplier", + "args": { + "multiplier": 0.9 + }, + "triggers": [ + "melee_attack" + ] } ], "advancedEffects": [ { - "id": "bonus-hearts", - "args": 20.0 + "id": "bonus_health", + "args": { + "health": 40 + } }, { - "id": "hunger-loss-multiplier", - "args": 0.5 - } - ], - "potionEffects": [ - { - "id": "regeneration", - "level": 1.0 - } - ], - "advancedPotionEffects": [ - { - "id": "regeneration", - "level": 1.0 + "id": "hunger_multiplier", + "args": { + "multiplier": 0.5 + }, + "triggers": [ + "lose_hunger" + ] } ], "advancedLore": [ @@ -819,26 +859,51 @@ "conditions": [], "effects": [ { - "id": "melee-damage-multiplier", - "args": 0.85 + "id": "damage_multiplier", + "args": { + "multiplier": 0.85 + }, + "triggers": [ + "melee_attack" + ] }, { - "id": "trident-damage-multiplier", - "args": 2.5 + "id": "damage_multiplier", + "args": { + "multiplier": 2.5 + }, + "triggers": [ + "trident_attack" + ] }, { - "id": "bow-damage-multiplier", - "args": 1.5 + "id": "damage_multiplier", + "args": { + "multiplier": 1.5 + }, + "triggers": [ + "bow_attack" + ] } ], "advancedEffects": [ { - "id": "bow-damage-multiplier", - "args": 1.75 + "id": "damage_multiplier", + "args": { + "multiplier": 3.5 + }, + "triggers": [ + "trident_attack" + ] }, { - "id": "trident-damage-multiplier", - "args": 3.5 + "id": "damage_multiplier", + "args": { + "multiplier": 1.75 + }, + "triggers": [ + "bow_attack" + ] } ], "potionEffects": [], diff --git a/eco-core/core-plugin/src/main/resources/lang.yml b/eco-core/core-plugin/src/main/resources/lang.yml index 925c0e8..e33dc26 100644 --- a/eco-core/core-plugin/src/main/resources/lang.yml +++ b/eco-core/core-plugin/src/main/resources/lang.yml @@ -9,4 +9,5 @@ messages: needs-item: "&cYou must specify an item!" invalid-item: "&cInvalid item!" give-success: "Gave &a%item%&r to &a%recipient%" - open-editor: "Open the editor here: &a%url%" \ No newline at end of file + open-editor: "Open the editor here: &a%url%" + on-cooldown: "&cThis effect is on cooldown! &fTime left: &a%seconds% seconds" \ 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 d0f771c..844e8ff 100644 --- a/eco-core/core-plugin/src/main/resources/plugin.yml +++ b/eco-core/core-plugin/src/main/resources/plugin.yml @@ -7,20 +7,8 @@ website: willfp.com load: STARTUP depend: - eco - - ProtocolLib -softdepend: - - WorldGuard - - GriefPrevention - - Towny - - FactionsUUID - - Lands - - Kingdoms - - NoCheatPlus - - AAC - - Matrix - - Spartan - - PlaceholderAPI - - EcoEnchants +libraries: + - org.jetbrains.kotlin:kotlin-stdlib:1.5.21 commands: ecoarmor: diff --git a/settings.gradle b/settings.gradle index 0c64138..3273c33 100644 --- a/settings.gradle +++ b/settings.gradle @@ -3,7 +3,3 @@ rootProject.name = 'EcoArmor' // Core include ':eco-core' include ':eco-core:core-plugin' - -// Extensions -include ':eco-extensions' -include ':eco-extensions:mcmmo' \ No newline at end of file