diff --git a/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/abilities/ChickenMissileAbility.kt b/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/abilities/ChickenMissileAbility.kt new file mode 100644 index 00000000..aa85667c --- /dev/null +++ b/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/abilities/ChickenMissileAbility.kt @@ -0,0 +1,14 @@ +package dev.betrix.superSmashMobsBrawl.abilities + +import org.bukkit.entity.Player + +class ChickenMissileAbility(player: Player) : BrawlAbility("chicken_missile", player) { + + override fun activate() { + super.activate() + + TODO("Implement Chicken Missile Ability") + } +} + + diff --git a/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/abilities/EggBlasterAbility.kt b/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/abilities/EggBlasterAbility.kt new file mode 100644 index 00000000..d414d9d7 --- /dev/null +++ b/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/abilities/EggBlasterAbility.kt @@ -0,0 +1,8 @@ +package dev.betrix.superSmashMobsBrawl.abilities + +import org.bukkit.entity.Player + +class EggBlasterAbility(player: Player) : BrawlAbility("egg_blaster", player) {} + + + diff --git a/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/disguises/BrawlDisguiseFactory.kt b/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/disguises/BrawlDisguiseFactory.kt index c9d3ce4a..b72a455a 100644 --- a/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/disguises/BrawlDisguiseFactory.kt +++ b/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/disguises/BrawlDisguiseFactory.kt @@ -8,6 +8,7 @@ object BrawlDisguiseFactory { "creeper" to ::CreeperDisguise, "skeleton" to ::SkeletonDisguise, "cow" to ::CowDisguise, + "chicken" to ::ChickenDisguise, "enderman" to ::EndermanDisguise, "mooshroom" to ::MooshroomDisguise, "mushroom_cow" to ::MooshroomDisguise, diff --git a/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/disguises/ChickenDisguise.kt b/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/disguises/ChickenDisguise.kt new file mode 100644 index 00000000..3f2a2d6e --- /dev/null +++ b/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/disguises/ChickenDisguise.kt @@ -0,0 +1,14 @@ +package dev.betrix.superSmashMobsBrawl.disguises + +import dev.betrix.superSmashMobsBrawl.models.Hitbox +import me.libraryaddict.disguise.disguisetypes.DisguiseType +import me.libraryaddict.disguise.disguisetypes.MobDisguise +import org.bukkit.entity.Player + +class ChickenDisguise(player: Player) : BrawlDisguise(player) { + override val disguise = MobDisguise(DisguiseType.CHICKEN) + override val hitbox = Hitbox(0.4, 0.7) +} + + + diff --git a/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/kits/BrawlKit.kt b/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/kits/BrawlKit.kt index 831958b8..87ae1307 100644 --- a/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/kits/BrawlKit.kt +++ b/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/kits/BrawlKit.kt @@ -62,6 +62,8 @@ open class BrawlKit(val id: String, val player: Player) : KoinComponent { "milk_spiral" -> MilkSpiralAbility(player) "blink" -> BlinkAbility(player) "block_toss" -> BlockTossAbility(player) + "egg_blaster" -> EggBlasterAbility(player) + "chicken_missile" -> ChickenMissileAbility(player) else -> { logger.severe( "No ability found with id ${it.id} reference on kit ${kitData.id}" @@ -86,6 +88,7 @@ open class BrawlKit(val id: String, val player: Player) : KoinComponent { "barrage" -> BarragePassive(player) "stampede" -> StampedePassive(player) "potion_effect" -> PotionEffectPassive(player) + "flap" -> FlapPassive(player) else -> { logger.severe( "No passive found with id ${it.id} reference on kit ${kitData.id}" diff --git a/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/passives/FlapPassive.kt b/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/passives/FlapPassive.kt new file mode 100644 index 00000000..d3ac59d5 --- /dev/null +++ b/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/passives/FlapPassive.kt @@ -0,0 +1,10 @@ +package dev.betrix.superSmashMobsBrawl.passives + +import org.bukkit.entity.Player + +class FlapPassive(player: Player) : BrawlPassive("flap", player) { + override fun setup() {} +} + + + diff --git a/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/passives/RegenerationPassive.kt b/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/passives/RegenerationPassive.kt index 2f5e4dd9..dbda7a34 100644 --- a/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/passives/RegenerationPassive.kt +++ b/plugin/src/main/kotlin/dev/betrix/superSmashMobsBrawl/passives/RegenerationPassive.kt @@ -6,8 +6,8 @@ import org.bukkit.entity.Player class RegenerationPassive(player: Player) : BrawlPassive("regeneration", player) { - private val healAmount = 1.0 - private val healIntervalTicks = 60L + private val healAmount: Double = (metadata.double("healAmount") ?: 1.0) + private val healIntervalTicks: Long = ((metadata.long("healIntervalTicks") ?: 60L)).coerceAtLeast(1L) override fun setup() { val regenTask = diff --git a/plugin/src/main/resources/data/abilities.yml b/plugin/src/main/resources/data/abilities.yml index 0036214a..0259639c 100644 --- a/plugin/src/main/resources/data/abilities.yml +++ b/plugin/src/main/resources/data/abilities.yml @@ -108,4 +108,33 @@ abilities: maxDamage: 9.0 damage: 8.0 knockbackMultiplier: 2.5 - blockRotationStepSpeedTicks: 4 \ No newline at end of file + blockRotationStepSpeedTicks: 4 + + - id: egg_blaster + cooldown: 2.0 + itemSlot: 0 + type: projectile + usage: right_click + hotbarItem: iron_sword + displayItem: egg + metadata: + eggPairs: 8 + eggDamage: 1.0 + slownessLevel: 1 + slownessDuration: 40 + cooldownTicks: 40 + + - id: chicken_missile + cooldown: 8.0 + itemSlot: 1 + type: projectile + usage: right_click + hotbarItem: iron_axe + displayItem: chicken_spawn_egg + metadata: + missileDamage: 3.0 + missileKnockback: 1.5 + aoeRadius: 2.5 + cooldownTicks: 160 + earlyDeathTimeMin: 20 + earlyDeathTimeMax: 60 \ No newline at end of file diff --git a/plugin/src/main/resources/data/disguises.yml b/plugin/src/main/resources/data/disguises.yml index 8d5086ff..91026a9c 100644 --- a/plugin/src/main/resources/data/disguises.yml +++ b/plugin/src/main/resources/data/disguises.yml @@ -5,4 +5,6 @@ disguises: - id: cow + - id: chicken + - id: enderman \ No newline at end of file diff --git a/plugin/src/main/resources/data/kits.yml b/plugin/src/main/resources/data/kits.yml index 11dc4eb8..dce139f4 100644 --- a/plugin/src/main/resources/data/kits.yml +++ b/plugin/src/main/resources/data/kits.yml @@ -115,4 +115,26 @@ kits: helmet: chainmail_helmet chestplate: chainmail_chestplate leggings: chainmail_leggings + boots: chainmail_boots + + # Chicken + - id: chicken + meleeDamage: 9.0 # 4.5 hearts + armor: 2.5 + knockbackMultiplier: 2.0 + disguiseId: "chicken" + selectionSound: "entity.chicken.ambient" + displayItem: "feather" + passives: + - id: flap + - id: regeneration + overrides: + metadata: + healAmount: 0.2 + healIntervalTicks: 20 + abilities: + - id: egg_blaster + - id: chicken_missile + armorItems: + chestplate: chainmail_chestplate boots: chainmail_boots \ No newline at end of file diff --git a/plugin/src/main/resources/data/lang/en.yml b/plugin/src/main/resources/data/lang/en.yml index 546031b5..3b6be8ff 100644 --- a/plugin/src/main/resources/data/lang/en.yml +++ b/plugin/src/main/resources/data/lang/en.yml @@ -10,6 +10,9 @@ kits: description: "He got bones" cow: name: "Cow" + chicken: + name: "Chicken" + description: "High mobility flier with eggs and a peck of explosives" enderman: name: "Enderman" abilities: @@ -37,6 +40,12 @@ abilities: milk_spiral: name: "Milk Spiral" description: "" + egg_blaster: + name: "Egg Blaster" + description: "Hold to fire rapid eggs that slow foes" + chicken_missile: + name: "Chicken Missile" + description: "Launch a baby chick that explodes on impact" maps: blue_forest: name: "Blue Forest" diff --git a/plugin/src/main/resources/data/passives.yml b/plugin/src/main/resources/data/passives.yml index 2792ad50..3fd5efa7 100644 --- a/plugin/src/main/resources/data/passives.yml +++ b/plugin/src/main/resources/data/passives.yml @@ -18,6 +18,16 @@ passives: healAmount: 1.0 healIntervalTicks: 60 + - id: flap + displayItem: feather + userFacing: true + metadata: + maxFlaps: 8 + energyPerFlap: 12.5 + maxEnergy: 100.0 + energyRegenRate: 4.0 + flapStrengthMultiplier: 0.95 + - id: arrow_recharge displayItem: bundle userFacing: true