mirror of
https://github.com/Auxilor/EcoArmor.git
synced 2025-12-26 18:39:24 +00:00
Updated libreforge
This commit is contained in:
15
build.gradle
15
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) {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -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<String> lore = fis.getLore();
|
||||
lore.addAll(FastItemStack.wrap(crystalTier.getCrystal()).getLore());
|
||||
fis.setLore(lore);
|
||||
}
|
||||
|
||||
ArmorSet shardSet = ArmorUtils.getShardSet(meta);
|
||||
|
||||
if (shardSet != null) {
|
||||
List<String> 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<String> 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);
|
||||
}
|
||||
}
|
||||
@@ -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<ConfiguredCondition> conditions = new HashSet<>();
|
||||
private final Holder advancedHoler;
|
||||
|
||||
/**
|
||||
* Effects and their strengths.
|
||||
* The regular holder.
|
||||
*/
|
||||
@Getter
|
||||
private final Set<ConfiguredEffect> effects = new HashSet<>();
|
||||
|
||||
/**
|
||||
* Effects and their strengths on advanced armor.
|
||||
*/
|
||||
@Getter
|
||||
private final Set<ConfiguredEffect> advancedEffects = new HashSet<>();
|
||||
|
||||
/**
|
||||
* Potion effects to be applied on equip.
|
||||
*/
|
||||
@Getter
|
||||
private final Map<PotionEffectType, Integer> potionEffects = new HashMap<>();
|
||||
|
||||
/**
|
||||
* Potion effects to be applied on equipping advanced.
|
||||
*/
|
||||
@Getter
|
||||
private final Map<PotionEffectType, Integer> 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<ConfiguredCondition> 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<ConfiguredEffect> 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<ConfiguredEffect> 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);
|
||||
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
package com.willfp.ecoarmor.sets;
|
||||
|
||||
public class ArmorSetHolder {
|
||||
}
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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<ConfiguredCondition>, override val effects: Set<ConfiguredEffect>) :
|
||||
Holder {
|
||||
}
|
||||
@@ -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<ConfiguredCondition>, override val effects: Set<ConfiguredEffect>) :
|
||||
Holder {
|
||||
}
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
sound: "BLOCK_NOTE_BLOCK_PLING"
|
||||
pitch: 0.5
|
||||
|
||||
@@ -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": [
|
||||
"",
|
||||
"<gradient:f12711>&lADVANCED BONUS</gradient:f5af19>",
|
||||
@@ -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": [
|
||||
"",
|
||||
"<gradient:f12711>&lADVANCED BONUS</gradient:f5af19>",
|
||||
@@ -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": [],
|
||||
|
||||
@@ -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%"
|
||||
open-editor: "Open the editor here: &a%url%"
|
||||
on-cooldown: "&cThis effect is on cooldown! &fTime left: &a%seconds% seconds"
|
||||
@@ -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:
|
||||
|
||||
@@ -3,7 +3,3 @@ rootProject.name = 'EcoArmor'
|
||||
// Core
|
||||
include ':eco-core'
|
||||
include ':eco-core:core-plugin'
|
||||
|
||||
// Extensions
|
||||
include ':eco-extensions'
|
||||
include ':eco-extensions:mcmmo'
|
||||
Reference in New Issue
Block a user