diff --git a/README.md b/README.md index 46eaf47..a269095 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,8 @@

Source code for EcoBosses, a premium spigot plugin.

- - spigot + + spigot diff --git a/build.gradle b/build.gradle index cffaf1b..c3dc3f5 100644 --- a/build.gradle +++ b/build.gradle @@ -39,6 +39,7 @@ allprojects { maven { url 'https://maven.sk89q.com/repo/' } maven { url 'https://github.com/factions-site/repo/raw/public/' } maven { url 'https://repo.extendedclip.com/content/repositories/placeholderapi/' } + maven { url 'https://mvn.lumine.io/repository/maven-public/' } } jar { @@ -46,7 +47,7 @@ allprojects { } dependencies { - compileOnly 'com.willfp:eco:6.8.0' + compileOnly 'com.willfp:eco:6.8.1' compileOnly 'org.jetbrains:annotations:19.0.0' @@ -85,7 +86,15 @@ shadowJar { } jar { - archiveFileName = findProperty("plugin-name") + " v" + findProperty("version") + " " + "unshaded" + ".jar" + archiveFileName = findProperty("plugin-name") + " v" + findProperty("version") + ".jar" +} + +publishing { + publications { + maven(MavenPublication) { + from(components.java) + } + } } group = 'com.willfp' diff --git a/eco-core/core-plugin/build.gradle b/eco-core/core-plugin/build.gradle index 9cb6f92..c463a83 100644 --- a/eco-core/core-plugin/build.gradle +++ b/eco-core/core-plugin/build.gradle @@ -6,4 +6,5 @@ dependencies { compileOnly 'commons-io:commons-io:2.8.0' compileOnly 'com.destroystokyo.paper:paper-api:1.16.3-R0.1-SNAPSHOT' compileOnly 'com.github.lokka30:LevelledMobs:3.1.4' + compileOnly 'io.lumine.xikage:MythicMobs:4.9.1' } \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/EcoBossesPlugin.java b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/EcoBossesPlugin.java index eab742d..7f1d29d 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/EcoBossesPlugin.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/EcoBossesPlugin.java @@ -3,12 +3,9 @@ package com.willfp.ecobosses; import com.willfp.eco.core.EcoPlugin; import com.willfp.eco.core.command.impl.PluginCommand; import com.willfp.eco.core.integrations.IntegrationLoader; -import com.willfp.ecobosses.bosses.listeners.AttackListeners; -import com.willfp.ecobosses.bosses.listeners.AutoSpawnTimer; -import com.willfp.ecobosses.bosses.listeners.DeathListeners; -import com.willfp.ecobosses.bosses.listeners.PassiveListeners; -import com.willfp.ecobosses.bosses.listeners.SpawnListeners; +import com.willfp.ecobosses.bosses.listeners.*; import com.willfp.ecobosses.bosses.util.BossUtils; +import com.willfp.ecobosses.bosses.util.bosstype.BossEntityUtils; import com.willfp.ecobosses.commands.CommandEcobosses; import com.willfp.ecobosses.integrations.levelledmobs.LevelledMobsListener; import com.willfp.ecobosses.util.DiscoverRecipeListener; @@ -30,7 +27,7 @@ public class EcoBossesPlugin extends EcoPlugin { * Internal constructor called by bukkit on plugin load. */ public EcoBossesPlugin() { - super(86576, 10635, "com.willfp.ecobosses.proxy", "&9"); + super(525, 10635, "com.willfp.ecobosses.proxy", "&9"); instance = this; } @@ -46,7 +43,7 @@ public class EcoBossesPlugin extends EcoPlugin { @Override protected List loadPluginCommands() { - return Arrays.asList( + return List.of( new CommandEcobosses(this) ); } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/EcoBoss.java b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/EcoBoss.java index a84a89c..ee99878 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/EcoBoss.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/EcoBoss.java @@ -20,6 +20,7 @@ import com.willfp.ecobosses.bosses.util.bosstype.BossEntityUtils; import com.willfp.ecobosses.bosses.util.bosstype.BossType; import com.willfp.ecobosses.bosses.util.obj.ArgumentedEffectName; import com.willfp.ecobosses.bosses.util.obj.BossbarProperties; +import com.willfp.ecobosses.bosses.util.obj.EquipmentPiece; import com.willfp.ecobosses.bosses.util.obj.ExperienceOptions; import com.willfp.ecobosses.bosses.util.obj.ImmunityOptions; import com.willfp.ecobosses.bosses.util.obj.OptionedSound; @@ -39,6 +40,7 @@ import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.persistence.PersistentDataType; @@ -122,6 +124,11 @@ public class EcoBoss extends PluginDependent { @Getter private final int attackDamage; + /** + * Age state. + */ + @Getter + private final boolean baby; /** * The follow range. @@ -293,7 +300,7 @@ public class EcoBoss extends PluginDependent { private final ItemStack spawnEgg; /** - * All the requirements needed in order to use the enchantment. + * All the requirements needed in order to spawn the boss. */ private final Map> requirements = new HashMap<>(); @@ -302,6 +309,12 @@ public class EcoBoss extends PluginDependent { */ private final Map cachedRequirements = new HashMap<>(); + /** + * The equipment for the boss. + */ + @Getter + private final Map equipment = new HashMap<>(); + /** * Create a new Boss. * @@ -317,6 +330,7 @@ public class EcoBoss extends PluginDependent { this.name = name; this.livingBosses = new HashMap<>(); this.isGlowing = this.getConfig().getBool("glowing"); + this.baby = this.getConfig().getBool("baby"); this.displayName = this.getConfig().getString("name"); @@ -337,6 +351,60 @@ public class EcoBoss extends PluginDependent { this.movementSpeedMultiplier = this.getConfig().getInt("movement-speed"); this.timeToLive = this.getConfig().getInt("time-to-live", -1); + // Equipment + ItemStack helmet = Items.lookup(this.getConfig().getString("gear.helmet.item")).getItem(); + ItemStack chestplate = Items.lookup(this.getConfig().getString("gear.chestplate.item")).getItem(); + ItemStack leggings = Items.lookup(this.getConfig().getString("gear.leggings.item")).getItem(); + ItemStack boots = Items.lookup(this.getConfig().getString("gear.boots.item")).getItem(); + ItemStack hand = Items.lookup(this.getConfig().getString("gear.hand.item")).getItem(); + + if (helmet.getType() != Material.AIR) { + this.equipment.put( + EquipmentSlot.HEAD, + new EquipmentPiece( + helmet, + this.getConfig().getDouble("gear.helmet.chance") + ) + ); + } + if (chestplate.getType() != Material.AIR) { + this.equipment.put( + EquipmentSlot.CHEST, + new EquipmentPiece( + chestplate, + this.getConfig().getDouble("gear.chestplate.chance") + ) + ); + } + if (leggings.getType() != Material.AIR) { + this.equipment.put( + EquipmentSlot.LEGS, + new EquipmentPiece( + leggings, + this.getConfig().getDouble("gear.leggings.chance") + ) + ); + } + if (boots.getType() != Material.AIR) { + this.equipment.put( + EquipmentSlot.FEET, + new EquipmentPiece( + boots, + this.getConfig().getDouble("gear.boots.chance") + ) + ); + } + if (hand.getType() != Material.AIR) { + this.equipment.put( + EquipmentSlot.HAND, + new EquipmentPiece( + hand, + this.getConfig().getDouble("gear.hand.chance") + ) + ); + } + + // Spawn Totem this.spawnTotemEnabled = this.getConfig().getBool("spawn-totem.enabled"); this.spawnTotem = new SpawnTotem( @@ -475,7 +543,12 @@ public class EcoBoss extends PluginDependent { this.effectNames = new ArrayList<>(); for (String string : this.getConfig().getStrings("effects")) { String effectName = string.split(":")[0]; - List args = Arrays.asList(string.replace(effectName + ":", "").split(":")); + List args = new ArrayList<>(Arrays.asList(string.replace(effectName + ":", "").split(":"))); + if (args.contains("mythicmobs")) { + String newArg = "mythicmobs:" + args.get(args.indexOf("mythicmobs")+1); + args.set(args.indexOf("mythicmobs"), newArg); + args.remove(args.get(args.indexOf(newArg)+1)); + } this.effectNames.add(new ArgumentedEffectName(effectName, args)); } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/LivingEcoBoss.java b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/LivingEcoBoss.java index d481371..8e8b33d 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/LivingEcoBoss.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/LivingEcoBoss.java @@ -11,15 +11,21 @@ import com.willfp.ecobosses.bosses.tick.tickers.BossBarTicker; import com.willfp.ecobosses.bosses.tick.tickers.DeathTimeTicker; import com.willfp.ecobosses.bosses.tick.tickers.NamePlaceholderTicker; import com.willfp.ecobosses.bosses.tick.tickers.TargetTicker; +import com.willfp.ecobosses.bosses.util.obj.EquipmentPiece; import com.willfp.ecobosses.bosses.util.obj.OptionedSound; +import io.lumine.xikage.mythicmobs.mobs.MythicMob; import lombok.Getter; import org.bukkit.Bukkit; import org.bukkit.attribute.Attribute; import org.bukkit.attribute.AttributeInstance; import org.bukkit.attribute.AttributeModifier; +import org.bukkit.block.Block; import org.bukkit.boss.BarFlag; +import org.bukkit.entity.Ageable; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; +import org.bukkit.inventory.EntityEquipment; +import org.bukkit.inventory.EquipmentSlot; import org.bukkit.persistence.PersistentDataType; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; @@ -102,6 +108,11 @@ public class LivingEcoBoss extends PluginDependent { if (boss.isGlowing()) entity.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, Integer.MAX_VALUE, 1, false, false, false)); + if (entity instanceof Ageable ageable) { + if (boss.isBaby()) ageable.setBaby(); + else ageable.setAdult(); + } + if (boss.getTimeToLive() > 0) { entity.setMetadata("death-time", this.getPlugin().getMetadataValueFactory().create(System.currentTimeMillis() + (boss.getTimeToLive() * 1000L))); } @@ -109,6 +120,35 @@ public class LivingEcoBoss extends PluginDependent { entity.setCustomName(boss.getDisplayName()); entity.setCustomNameVisible(true); + EntityEquipment equipment = entity.getEquipment(); + if (equipment != null) { + EquipmentPiece head = boss.getEquipment().get(EquipmentSlot.HEAD); + EquipmentPiece chest = boss.getEquipment().get(EquipmentSlot.CHEST); + EquipmentPiece legs = boss.getEquipment().get(EquipmentSlot.LEGS); + EquipmentPiece boots = boss.getEquipment().get(EquipmentSlot.FEET); + EquipmentPiece hand = boss.getEquipment().get(EquipmentSlot.HAND); + if (head != null) { + equipment.setHelmet(head.itemStack(), true); + equipment.setHelmetDropChance((float) head.chance()); + } + if (chest != null) { + equipment.setChestplate(chest.itemStack(), true); + equipment.setChestplateDropChance((float) chest.chance()); + } + if (legs != null) { + equipment.setLeggings(legs.itemStack(), true); + equipment.setLeggingsDropChance((float) legs.chance()); + } + if (boots != null) { + equipment.setBoots(boots.itemStack(), true); + equipment.setBootsDropChance((float) boots.chance()); + } + if (hand != null) { + equipment.setItemInMainHand(hand.itemStack(), true); + equipment.setItemInMainHandDropChance((float) hand.chance()); + } + } + AttributeInstance movementSpeed = entity.getAttribute(Attribute.GENERIC_MOVEMENT_SPEED); assert movementSpeed != null; movementSpeed.addModifier(new AttributeModifier(entity.getUniqueId(), "ecobosses-movement-multiplier", boss.getMovementSpeedMultiplier() - 1, AttributeModifier.Operation.MULTIPLY_SCALAR_1)); diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/bosstype/BossEntityUtils.java b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/bosstype/BossEntityUtils.java index 2f1a15e..cc50e7c 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/bosstype/BossEntityUtils.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/bosstype/BossEntityUtils.java @@ -1,10 +1,18 @@ package com.willfp.ecobosses.bosses.util.bosstype; +import io.lumine.xikage.mythicmobs.MythicMobs; +import io.lumine.xikage.mythicmobs.mobs.MythicMob; +import lombok.Getter; +import lombok.Setter; import lombok.experimental.UtilityClass; +import org.bukkit.entity.Creeper; import org.bukkit.entity.EntityType; import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Zombie; import org.jetbrains.annotations.NotNull; +import java.util.Arrays; + @UtilityClass @SuppressWarnings("unchecked") public class BossEntityUtils { @@ -14,7 +22,29 @@ public class BossEntityUtils { * @param id The name. * @return The boss type. */ - public static BossType getBossType(@NotNull final String id) { + public static BossType getBossType(@NotNull String id) { + + if (id.startsWith("mythicmobs:")) { + int level; + + try { + level = Integer.parseInt(Arrays.stream(id.split("_")).toList().get(id.split("_").length - 1)); + } catch (NumberFormatException exception) { + level = 1; + } + + MythicMob mob = MythicMobs.inst().getMobManager().getMythicMob(id.replace("mythicmobs:", "") + .replace("_" + level, "")); + + if (mob != null) { + return new MythicMobsBossType(mob, level); + } + } + + if (id.equalsIgnoreCase("charged_creeper")) { + return new ChargedCreeperBossType(); + } + try { Class type = (Class) EntityType.valueOf(id.toUpperCase()).getEntityClass(); assert type != null; @@ -22,6 +52,6 @@ public class BossEntityUtils { } catch (IllegalArgumentException ignored) { } - return null; + return new VanillaBossType(Zombie.class); } } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/bosstype/ChargedCreeperBossType.java b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/bosstype/ChargedCreeperBossType.java new file mode 100644 index 0000000..c867868 --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/bosstype/ChargedCreeperBossType.java @@ -0,0 +1,30 @@ +package com.willfp.ecobosses.bosses.util.bosstype; + +import org.bukkit.Location; +import org.bukkit.entity.Creeper; +import org.bukkit.entity.LivingEntity; +import org.jetbrains.annotations.NotNull; + +import java.util.Objects; + +class ChargedCreeperBossType extends VanillaBossType { + /** + * Create new Charged Creeper boss type. + */ + ChargedCreeperBossType() { + super(Creeper.class); + } + + /** + * Spawn a charged creeper. + * + * @param location The location. + * @return The entity. + */ + @Override + public LivingEntity spawnBossEntity(@NotNull final Location location) { + Creeper creeper = Objects.requireNonNull(location.getWorld()).spawn(location, Creeper.class); + creeper.setPowered(true); + return creeper; + } +} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/bosstype/MythicMobsBossType.java b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/bosstype/MythicMobsBossType.java new file mode 100644 index 0000000..1ef6a02 --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/bosstype/MythicMobsBossType.java @@ -0,0 +1,46 @@ +package com.willfp.ecobosses.bosses.util.bosstype; + +import io.lumine.xikage.mythicmobs.MythicMobs; +import io.lumine.xikage.mythicmobs.adapters.AbstractLocation; +import io.lumine.xikage.mythicmobs.adapters.AbstractWorld; +import io.lumine.xikage.mythicmobs.api.exceptions.InvalidMobTypeException; +import io.lumine.xikage.mythicmobs.mobs.MythicMob; +import org.bukkit.Location; +import org.bukkit.entity.LivingEntity; +import org.jetbrains.annotations.NotNull; + +public class MythicMobsBossType extends BossType { + + /** + * The entity type. + */ + private final MythicMob boss; + + /** + * Level of MythicMobs mob + */ + private final int level; + + /** + * Create new vanilla boss type. + * + * @param boss The MythicMob. + */ + public MythicMobsBossType(MythicMob boss, int level) { + this.boss = boss; + this.level = level; + } + + + @Override + public LivingEntity spawnBossEntity(@NotNull Location location) { + try { + return (LivingEntity) MythicMobs.inst().getAPIHelper().spawnMythicMob(boss, location, level); + } catch (InvalidMobTypeException e) { + e.printStackTrace(); + } + return null; + } + + +} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/bosstype/VanillaBossType.java b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/bosstype/VanillaBossType.java index 7899d6b..f1f3195 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/bosstype/VanillaBossType.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/bosstype/VanillaBossType.java @@ -1,6 +1,7 @@ package com.willfp.ecobosses.bosses.util.bosstype; import org.bukkit.Location; +import org.bukkit.entity.Creeper; import org.bukkit.entity.LivingEntity; import org.jetbrains.annotations.NotNull; @@ -23,6 +24,7 @@ class VanillaBossType extends BossType { @Override public LivingEntity spawnBossEntity(@NotNull final Location location) { - return Objects.requireNonNull(location.getWorld()).spawn(location, entityClass); + LivingEntity result = Objects.requireNonNull(location.getWorld()).spawn(location, entityClass); + return result; } } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/obj/EquipmentPiece.java b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/obj/EquipmentPiece.java new file mode 100644 index 0000000..798876b --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/util/obj/EquipmentPiece.java @@ -0,0 +1,8 @@ +package com.willfp.ecobosses.bosses.util.obj; + +import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.NotNull; + +public record EquipmentPiece(@NotNull ItemStack itemStack, + double chance) { +} diff --git a/eco-core/core-plugin/src/main/resources/bosses/alpha_wolf.yml b/eco-core/core-plugin/src/main/resources/bosses/alpha_wolf.yml index 6c40a06..09f7408 100644 --- a/eco-core/core-plugin/src/main/resources/bosses/alpha_wolf.yml +++ b/eco-core/core-plugin/src/main/resources/bosses/alpha_wolf.yml @@ -2,6 +2,7 @@ enabled: true name: "&fAlpha Wolf &7| &c%health%♥ &7| &e%time%" # Display name base-mob: wolf +baby: false # If set to true: will make the boss mob baby (if possible) bossbar: enabled: true @@ -91,6 +92,23 @@ effects: - "give-potion-effect:wither:4:200:10" - "give-potion-effect:hunger:10:600:10" +gear: + helmet: + item: "" + chance: 100 + chestplate: + item: "" + chance: 100 + leggings: + item: "" + chance: 100 + boots: + item: "" + chance: 100 + hand: + item: "" + chance: 100 + defence: immunities: explosion: false diff --git a/eco-core/core-plugin/src/main/resources/bosses/dark_guardian.yml b/eco-core/core-plugin/src/main/resources/bosses/dark_guardian.yml index 49a14ad..f134f64 100644 --- a/eco-core/core-plugin/src/main/resources/bosses/dark_guardian.yml +++ b/eco-core/core-plugin/src/main/resources/bosses/dark_guardian.yml @@ -2,6 +2,7 @@ enabled: true name: "&9Dark Guardian &7| &c%health%♥ &7| &e%time%" # Display name base-mob: ravager +baby: false # If set to true: will make the boss mob baby (if possible) bossbar: enabled: true @@ -94,6 +95,23 @@ effects: - "give-potion-effect:blindness:1:40:20" - "teleport:7:15" +gear: + helmet: + item: "" + chance: 100 + chestplate: + item: "" + chance: 100 + leggings: + item: "" + chance: 100 + boots: + item: "" + chance: 100 + hand: + item: "" + chance: 100 + defence: immunities: explosion: true diff --git a/eco-core/core-plugin/src/main/resources/bosses/steel_golem.yml b/eco-core/core-plugin/src/main/resources/bosses/steel_golem.yml index 8eee847..631c162 100644 --- a/eco-core/core-plugin/src/main/resources/bosses/steel_golem.yml +++ b/eco-core/core-plugin/src/main/resources/bosses/steel_golem.yml @@ -2,6 +2,7 @@ enabled: true name: "&8Steel Golem &7| &c%health%♥ &7| &e%time%" # Display name base-mob: iron_golem +baby: false # If set to true: will make the boss mob baby (if possible) bossbar: enabled: true @@ -95,6 +96,23 @@ effects: - "give-potion-effect:slow:5:100:20" - "give-potion-effect:levitation:3:50:10" +gear: + helmet: + item: "" + chance: 100 + chestplate: + item: "" + chance: 100 + leggings: + item: "" + chance: 100 + boots: + item: "" + chance: 100 + hand: + item: "" + chance: 100 + defence: immunities: explosion: true diff --git a/eco-core/core-plugin/src/main/resources/bosses/tarantula.yml b/eco-core/core-plugin/src/main/resources/bosses/tarantula.yml index ae4c3d4..91f1ff9 100644 --- a/eco-core/core-plugin/src/main/resources/bosses/tarantula.yml +++ b/eco-core/core-plugin/src/main/resources/bosses/tarantula.yml @@ -2,6 +2,7 @@ enabled: true name: "&4Tarantula &7| &c%health%♥ &7| &e%time%" # Display name base-mob: cave_spider +baby: false # If set to true: will make the boss mob baby (if possible) bossbar: enabled: true @@ -95,6 +96,23 @@ effects: - "give-potion-effect:hunger:5:400:10" - "give-potion-effect:slow_digging:3:40:10" +gear: + helmet: + item: "" + chance: 100 + chestplate: + item: "" + chance: 100 + leggings: + item: "" + chance: 100 + boots: + item: "" + chance: 100 + hand: + item: "" + chance: 100 + defence: immunities: explosion: false diff --git a/eco-core/core-plugin/src/main/resources/plugin.yml b/eco-core/core-plugin/src/main/resources/plugin.yml index 5f4310d..5e53d69 100644 --- a/eco-core/core-plugin/src/main/resources/plugin.yml +++ b/eco-core/core-plugin/src/main/resources/plugin.yml @@ -5,6 +5,9 @@ api-version: 1.16 authors: [Auxilor] website: willfp.com load: STARTUP +softdepend: + - MythicMobs + - LevelledMobs depend: - eco diff --git a/gradle.properties b/gradle.properties index 39c83ae..cc8a0c6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version = 6.5.5 +version = 6.6.2 plugin-name = EcoBosses \ No newline at end of file