Compare commits
44 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a27ebb1b5c | ||
|
|
afafd86eaf | ||
|
|
49a2713017 | ||
|
|
a4263e8397 | ||
|
|
17f3aa8862 | ||
|
|
c94024ea19 | ||
|
|
1daa52e1f4 | ||
|
|
a06808f802 | ||
|
|
91cf08f0ac | ||
|
|
9a7ff1760c | ||
|
|
f2c3f569b7 | ||
|
|
508cb3e216 | ||
|
|
5f998f4bad | ||
|
|
e4b468b0da | ||
|
|
675d2b8508 | ||
|
|
edddd67f58 | ||
|
|
ed676e50c7 | ||
|
|
b36551a179 | ||
|
|
053f22258a | ||
|
|
a3a0783ea2 | ||
|
|
c7f25f17cd | ||
|
|
a489aaa53a | ||
|
|
9e9a68fc45 | ||
|
|
53b24b9dbb | ||
|
|
4977dc1012 | ||
|
|
0bb4aa6d51 | ||
|
|
5b1eda604d | ||
|
|
10e9edc011 | ||
|
|
ec11e9c475 | ||
|
|
eebe7427bc | ||
|
|
d2fa50a08c | ||
|
|
9fb80c594a | ||
|
|
915778d63f | ||
|
|
44911d5f97 | ||
|
|
11a79a5352 | ||
|
|
9473deda7c | ||
|
|
44676515b2 | ||
|
|
4e7317e69a | ||
|
|
8ca8018ab2 | ||
|
|
78e033990b | ||
|
|
033ac785d6 | ||
|
|
6ddf34f7f6 | ||
|
|
fb889b2936 | ||
|
|
dcf89687e3 |
@@ -4,7 +4,7 @@ buildscript {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21"
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,12 +48,12 @@ allprojects {
|
||||
|
||||
dependencies {
|
||||
compileOnly 'com.willfp:eco:6.37.1'
|
||||
implementation 'com.willfp:libreforge:3.67.0'
|
||||
implementation 'com.willfp:libreforge:3.77.0'
|
||||
implementation 'org.joml:joml:1.10.4'
|
||||
|
||||
compileOnly 'org.jetbrains:annotations:23.0.0'
|
||||
|
||||
compileOnly 'org.jetbrains.kotlin:kotlin-stdlib:1.6.21'
|
||||
compileOnly 'org.jetbrains.kotlin:kotlin-stdlib:1.7.10'
|
||||
}
|
||||
|
||||
tasks.withType(JavaCompile) {
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.willfp.eco.util.toSingletonList
|
||||
import com.willfp.ecopets.commands.CommandEcopets
|
||||
import com.willfp.ecopets.commands.CommandPets
|
||||
import com.willfp.ecopets.config.PetsYml
|
||||
import com.willfp.ecopets.pets.DiscoverRecipeListener
|
||||
import com.willfp.ecopets.pets.PetDisplay
|
||||
import com.willfp.ecopets.pets.PetLevelListener
|
||||
import com.willfp.ecopets.pets.PetTriggerXPGainListener
|
||||
@@ -73,7 +74,8 @@ class EcoPetsPlugin : LibReforgePlugin() {
|
||||
PetLevelListener(this),
|
||||
PetTriggerXPGainListener,
|
||||
SpawnEggHandler(this),
|
||||
petDisplay
|
||||
petDisplay,
|
||||
DiscoverRecipeListener(this)
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.willfp.ecopets.pets
|
||||
|
||||
import com.willfp.eco.core.EcoPlugin
|
||||
import org.bukkit.Bukkit
|
||||
import org.bukkit.Keyed
|
||||
import org.bukkit.event.EventHandler
|
||||
import org.bukkit.event.Listener
|
||||
import org.bukkit.event.player.PlayerJoinEvent
|
||||
import org.bukkit.inventory.Recipe
|
||||
|
||||
class DiscoverRecipeListener(private val plugin: EcoPlugin) : Listener {
|
||||
@EventHandler
|
||||
fun onJoin(event: PlayerJoinEvent) {
|
||||
if (!plugin.configYml.getBool("discover-recipes")) {
|
||||
return
|
||||
}
|
||||
mutableListOf<Recipe>()
|
||||
.apply { Bukkit.getServer().recipeIterator().forEachRemaining(this::add) }
|
||||
.filterIsInstance<Keyed>().map { it.key }
|
||||
.filter { it.namespace == plugin.name.lowercase() }
|
||||
.filter { !it.key.contains("displayed") }
|
||||
.forEach { event.player.discoverRecipe(it) }
|
||||
}
|
||||
}
|
||||
@@ -107,7 +107,7 @@ class Pet(
|
||||
"${this.id}_spawn_egg",
|
||||
egg,
|
||||
config.getStrings("spawn-egg.recipe"),
|
||||
config.getString("spawn-egg.recipe-permission")
|
||||
config.getStringOrNull("spawn-egg.recipe-permission")
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -157,7 +157,8 @@ class Pet(
|
||||
trigger to PetXPGain(
|
||||
trigger,
|
||||
multiplier,
|
||||
conditions
|
||||
conditions,
|
||||
it.getSubsection("filters")
|
||||
)
|
||||
}.toMap()
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ class PetDisplay(
|
||||
) : Listener {
|
||||
private var tick = 0
|
||||
|
||||
private val trackedEntities = mutableMapOf<UUID, ArmorStand>()
|
||||
private val trackedEntities = mutableMapOf<UUID, PetArmorStand>()
|
||||
|
||||
fun tickAll() {
|
||||
for (player in Bukkit.getOnlinePlayers()) {
|
||||
@@ -55,15 +55,30 @@ class PetDisplay(
|
||||
private fun getLocation(player: Player): Location {
|
||||
val offset = player.eyeLocation.direction.clone().normalize()
|
||||
.multiply(-1)
|
||||
.apply { y = abs(y) }
|
||||
.apply {
|
||||
y = abs(y)
|
||||
|
||||
if (abs(x) < 0.5) {
|
||||
x = 0.5
|
||||
}
|
||||
|
||||
if (abs(z) < 0.5) {
|
||||
z = 0.5
|
||||
}
|
||||
}
|
||||
.rotateAroundY(PI / 6)
|
||||
|
||||
return player.eyeLocation.clone().add(offset)
|
||||
}
|
||||
|
||||
private fun getOrNew(player: Player): ArmorStand? {
|
||||
val existing = trackedEntities[player.uniqueId]
|
||||
val tracked = trackedEntities[player.uniqueId]
|
||||
val existing = tracked?.stand
|
||||
|
||||
val pet = player.activePet
|
||||
if (pet != tracked?.pet) {
|
||||
tracked?.stand?.remove()
|
||||
}
|
||||
|
||||
if (existing == null || existing.isDead || pet == null) {
|
||||
existing?.remove()
|
||||
@@ -76,15 +91,15 @@ class PetDisplay(
|
||||
val location = getLocation(player)
|
||||
val stand = pet.makePetEntity().spawn(location)
|
||||
|
||||
trackedEntities[player.uniqueId] = stand
|
||||
trackedEntities[player.uniqueId] = PetArmorStand(stand, pet)
|
||||
}
|
||||
|
||||
return trackedEntities[player.uniqueId]
|
||||
return trackedEntities[player.uniqueId]?.stand
|
||||
}
|
||||
|
||||
fun shutdown() {
|
||||
for (stand in trackedEntities.values) {
|
||||
stand.remove()
|
||||
stand.stand.remove()
|
||||
}
|
||||
|
||||
trackedEntities.clear()
|
||||
@@ -92,7 +107,12 @@ class PetDisplay(
|
||||
|
||||
@EventHandler
|
||||
fun onLeave(event: PlayerQuitEvent) {
|
||||
trackedEntities[event.player.uniqueId]?.remove()
|
||||
trackedEntities[event.player.uniqueId]?.stand?.remove()
|
||||
trackedEntities.remove(event.player.uniqueId)
|
||||
}
|
||||
|
||||
private data class PetArmorStand(
|
||||
val stand: ArmorStand,
|
||||
val pet: Pet
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package com.willfp.ecopets.pets
|
||||
|
||||
import com.willfp.eco.core.config.interfaces.Config
|
||||
import com.willfp.libreforge.conditions.ConfiguredCondition
|
||||
import com.willfp.libreforge.events.TriggerPreProcessEvent
|
||||
import com.willfp.libreforge.filters.ConfiguredFilter
|
||||
import com.willfp.libreforge.triggers.Trigger
|
||||
import org.bukkit.event.EventHandler
|
||||
import org.bukkit.event.Listener
|
||||
@@ -9,7 +11,8 @@ import org.bukkit.event.Listener
|
||||
data class PetXPGain(
|
||||
val trigger: Trigger,
|
||||
val multiplier: Double,
|
||||
val conditions: Iterable<ConfiguredCondition>
|
||||
val conditions: Iterable<ConfiguredCondition>,
|
||||
val filters: Config
|
||||
)
|
||||
|
||||
object PetTriggerXPGainListener : Listener {
|
||||
@@ -18,6 +21,7 @@ object PetTriggerXPGainListener : Listener {
|
||||
val player = event.player
|
||||
val trigger = event.trigger
|
||||
val value = event.value
|
||||
val data = event.data
|
||||
|
||||
val pet = event.player.activePet ?: return
|
||||
|
||||
@@ -27,6 +31,10 @@ object PetTriggerXPGainListener : Listener {
|
||||
return
|
||||
}
|
||||
|
||||
if (!ConfiguredFilter(xpGain.filters).matches(data)) {
|
||||
return
|
||||
}
|
||||
|
||||
player.givePetExperience(
|
||||
pet,
|
||||
value * xpGain.multiplier
|
||||
|
||||
@@ -4,34 +4,18 @@ import com.ticxo.modelengine.api.ModelEngineAPI
|
||||
import com.willfp.ecopets.pets.Pet
|
||||
import org.bukkit.Location
|
||||
import org.bukkit.entity.ArmorStand
|
||||
import org.bukkit.entity.EntityType
|
||||
import org.bukkit.inventory.EquipmentSlot
|
||||
|
||||
class ModelEnginePetEntity(
|
||||
pet: Pet,
|
||||
private val modelID: String
|
||||
) : PetEntity(pet) {
|
||||
override fun spawn(location: Location): ArmorStand {
|
||||
val stand = location.world!!.spawnEntity(location, EntityType.ARMOR_STAND) as ArmorStand
|
||||
stand.isVisible = false
|
||||
stand.isInvulnerable = true
|
||||
stand.isPersistent = true
|
||||
stand.removeWhenFarAway = false
|
||||
stand.isSmall = true
|
||||
stand.setGravity(false)
|
||||
stand.isCollidable = false
|
||||
|
||||
for (slot in EquipmentSlot.values()) {
|
||||
stand.addEquipmentLock(slot, ArmorStand.LockType.ADDING_OR_CHANGING)
|
||||
}
|
||||
val stand = emptyArmorStandAt(location, pet)
|
||||
|
||||
val model = ModelEngineAPI.createActiveModel(modelID)
|
||||
val modelled = ModelEngineAPI.createModeledEntity(stand)
|
||||
modelled.addActiveModel(model)
|
||||
|
||||
stand.isCustomNameVisible = true
|
||||
stand.customName = pet.name
|
||||
|
||||
return stand
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ package com.willfp.ecopets.pets.entity
|
||||
import com.willfp.ecopets.pets.Pet
|
||||
import org.bukkit.Location
|
||||
import org.bukkit.entity.ArmorStand
|
||||
import org.bukkit.entity.EntityType
|
||||
import org.bukkit.inventory.EquipmentSlot
|
||||
|
||||
abstract class PetEntity(
|
||||
val pet: Pet
|
||||
@@ -31,3 +33,23 @@ abstract class PetEntity(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal fun emptyArmorStandAt(location: Location, pet: Pet): ArmorStand {
|
||||
val stand = location.world!!.spawnEntity(location, EntityType.ARMOR_STAND) as ArmorStand
|
||||
|
||||
stand.isVisible = false
|
||||
stand.isInvulnerable = true
|
||||
stand.isSmall = true
|
||||
stand.setGravity(false)
|
||||
stand.isCollidable = false
|
||||
stand.isPersistent = false
|
||||
|
||||
for (slot in EquipmentSlot.values()) {
|
||||
stand.addEquipmentLock(slot, ArmorStand.LockType.ADDING_OR_CHANGING)
|
||||
}
|
||||
|
||||
stand.isCustomNameVisible = true
|
||||
stand.customName = pet.name
|
||||
|
||||
return stand
|
||||
}
|
||||
|
||||
@@ -4,35 +4,18 @@ import com.willfp.eco.core.items.builder.SkullBuilder
|
||||
import com.willfp.ecopets.pets.Pet
|
||||
import org.bukkit.Location
|
||||
import org.bukkit.entity.ArmorStand
|
||||
import org.bukkit.entity.Entity
|
||||
import org.bukkit.entity.EntityType
|
||||
import org.bukkit.inventory.EquipmentSlot
|
||||
import org.bukkit.inventory.ItemStack
|
||||
|
||||
class SkullPetEntity(pet: Pet) : PetEntity(pet) {
|
||||
override fun spawn(location: Location): ArmorStand {
|
||||
val newStand = location.world!!.spawnEntity(location, EntityType.ARMOR_STAND) as ArmorStand
|
||||
newStand.isVisible = false
|
||||
newStand.isInvulnerable = true
|
||||
newStand.isPersistent = true
|
||||
newStand.removeWhenFarAway = false
|
||||
newStand.isSmall = true
|
||||
newStand.setGravity(false)
|
||||
newStand.isCollidable = false
|
||||
|
||||
for (slot in EquipmentSlot.values()) {
|
||||
newStand.addEquipmentLock(slot, ArmorStand.LockType.ADDING_OR_CHANGING)
|
||||
}
|
||||
|
||||
val stand = emptyArmorStandAt(location, pet)
|
||||
|
||||
val skull: ItemStack = SkullBuilder()
|
||||
.setSkullTexture(pet.entityTexture)
|
||||
.build()
|
||||
|
||||
newStand.equipment?.helmet = skull
|
||||
newStand.isCustomNameVisible = true
|
||||
newStand.customName = pet.name
|
||||
stand.equipment?.helmet = skull
|
||||
|
||||
return newStand
|
||||
return stand
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
# by Auxilor
|
||||
#
|
||||
|
||||
discover-recipes: true
|
||||
|
||||
gui:
|
||||
rows: 6
|
||||
|
||||
|
||||
@@ -289,11 +289,7 @@ pets:
|
||||
- 57000
|
||||
|
||||
xp-gain-methods:
|
||||
- id: potion_effect
|
||||
conditions:
|
||||
- id: has_potion_effect
|
||||
args:
|
||||
effect: hero_of_the_village
|
||||
- id: win_raid
|
||||
multiplier: 50
|
||||
|
||||
level-placeholders:
|
||||
@@ -315,10 +311,9 @@ pets:
|
||||
level-commands: [ ]
|
||||
|
||||
effects:
|
||||
- id: potion_effect
|
||||
- id: bonus_health
|
||||
args:
|
||||
effect: health_boost
|
||||
level: "%level%"
|
||||
health: "%level%"
|
||||
|
||||
conditions: [ ]
|
||||
|
||||
@@ -336,3 +331,476 @@ pets:
|
||||
- "&8&ounlock the &r<gradient:#1e3c72>Ravager</gradient:#2a5298>&8&o pet!"
|
||||
craftable: false
|
||||
recipe: [ ]
|
||||
|
||||
- id: mancubus
|
||||
name: "&6Mancubus"
|
||||
description: "&8&oLevel up by taking damage while on fire"
|
||||
|
||||
level-xp-requirements:
|
||||
- 50
|
||||
- 125
|
||||
- 200
|
||||
- 300
|
||||
- 500
|
||||
- 750
|
||||
- 1000
|
||||
- 1500
|
||||
- 2000
|
||||
- 3500
|
||||
- 5000
|
||||
- 7500
|
||||
- 10000
|
||||
- 15000
|
||||
- 20000
|
||||
- 30000
|
||||
- 50000
|
||||
- 75000
|
||||
- 100000
|
||||
- 200000
|
||||
- 300000
|
||||
- 400000
|
||||
- 500000
|
||||
- 600000
|
||||
- 700000
|
||||
- 800000
|
||||
- 900000
|
||||
- 1000000
|
||||
- 1100000
|
||||
- 1200000
|
||||
- 1300000
|
||||
- 1400000
|
||||
- 1500000
|
||||
- 1600000
|
||||
- 1700000
|
||||
- 1800000
|
||||
- 1900000
|
||||
- 2000000
|
||||
- 2100000
|
||||
- 2200000
|
||||
- 2300000
|
||||
- 2400000
|
||||
- 2500000
|
||||
- 2600000
|
||||
- 2750000
|
||||
- 2900000
|
||||
- 3100000
|
||||
- 3400000
|
||||
- 3700000
|
||||
|
||||
xp-gain-methods:
|
||||
- id: take_damage
|
||||
multiplier: 0.5
|
||||
conditions:
|
||||
- id: on_fire
|
||||
|
||||
level-placeholders:
|
||||
- id: "ignite_chance"
|
||||
value: "1 - (%level% / 100)"
|
||||
|
||||
effects-description:
|
||||
1:
|
||||
- "&8» &8Gives a &a+%ignite_chance%%&8 chance to set enemy on fire"
|
||||
|
||||
rewards-description:
|
||||
1:
|
||||
- "&8» &8Gives a &a+%ignite_chance%%&8 chance to set enemy on fire"
|
||||
|
||||
level-up-messages:
|
||||
1:
|
||||
- "&8» &8Gives a &a+%ignite_chance%%&8 chance to set enemy on fire"
|
||||
|
||||
level-commands: [ ]
|
||||
|
||||
effects:
|
||||
- id: ignite
|
||||
args:
|
||||
damage_per_tick: 8
|
||||
ticks: 300
|
||||
chance: "%level%"
|
||||
triggers:
|
||||
- melee_attack
|
||||
|
||||
conditions: [ ]
|
||||
|
||||
entity-texture: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTA5NWZjYzFlM2Q3Y2JkMzUwZjE5YjM4OTQ5OGFiOGJiOTZjNjVhZDE4NWQzNDU5MjA2N2E3ZDAzM2FjNDhkZSJ9fX0="
|
||||
|
||||
icon: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTA5NWZjYzFlM2Q3Y2JkMzUwZjE5YjM4OTQ5OGFiOGJiOTZjNjVhZDE4NWQzNDU5MjA2N2E3ZDAzM2FjNDhkZSJ9fX0=
|
||||
|
||||
spawn-egg:
|
||||
enabled: true # If the pet should have a spawn egg
|
||||
item: magma_cube_spawn_egg unbreaking:1 hide_enchants
|
||||
name: "&6Mancubus&f Spawn Egg"
|
||||
lore:
|
||||
- ""
|
||||
- "&8&oPlace on the ground to"
|
||||
- "&8&ounlock the &r&6Mancubus&8&o pet!"
|
||||
craftable: false
|
||||
recipe: [ ]
|
||||
# recipe-permission: ecopets.craft.mancubus
|
||||
|
||||
- id: blaze
|
||||
name: "&#FF6600Blaze"
|
||||
description: "&7Earn more XP from killing mobs"
|
||||
level-xp-requirements:
|
||||
- 50
|
||||
- 125
|
||||
- 200
|
||||
- 300
|
||||
- 500
|
||||
- 750
|
||||
- 1000
|
||||
- 1500
|
||||
- 2000
|
||||
- 3500
|
||||
- 5000
|
||||
- 7500
|
||||
- 10000
|
||||
- 15000
|
||||
- 20000
|
||||
- 30000
|
||||
- 50000
|
||||
- 75000
|
||||
- 100000
|
||||
- 200000
|
||||
- 300000
|
||||
- 400000
|
||||
- 500000
|
||||
- 600000
|
||||
- 700000
|
||||
- 800000
|
||||
- 900000
|
||||
- 1000000
|
||||
- 1100000
|
||||
- 1200000
|
||||
- 1300000
|
||||
- 1400000
|
||||
- 1500000
|
||||
- 1600000
|
||||
- 1700000
|
||||
- 1800000
|
||||
- 1900000
|
||||
- 2000000
|
||||
- 2100000
|
||||
- 2200000
|
||||
- 2300000
|
||||
- 2400000
|
||||
- 2500000
|
||||
- 2600000
|
||||
- 2750000
|
||||
- 2900000
|
||||
- 3100000
|
||||
- 3400000
|
||||
- 3700000
|
||||
xp-gain-methods:
|
||||
- id: kill
|
||||
multiplier: 1
|
||||
level-placeholders:
|
||||
- id: "xp_multiplier"
|
||||
value: "%level% * 2"
|
||||
effects-description:
|
||||
1:
|
||||
- "&6» &7Increased XP gain by %xp_multiplier%%!"
|
||||
rewards-description: []
|
||||
level-up-messages: []
|
||||
level-commands: []
|
||||
effects:
|
||||
- id: xp_multiplier
|
||||
args:
|
||||
multiplier: "%level% * 0.02 + 1"
|
||||
entity-texture: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjIwNjU3ZTI0YjU2ZTFiMmY4ZmMyMTlkYTFkZTc4OGMwYzI0ZjM2Mzg4YjFhNDA5ZDBjZDJkOGRiYTQ0YWEzYiJ9fX0="
|
||||
icon: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjIwNjU3ZTI0YjU2ZTFiMmY4ZmMyMTlkYTFkZTc4OGMwYzI0ZjM2Mzg4YjFhNDA5ZDBjZDJkOGRiYTQ0YWEzYiJ9fX0=
|
||||
spawn-egg:
|
||||
enabled: true # If the pet should have a spawn egg
|
||||
item: blaze_spawn_egg unbreaking:1 hide_enchants
|
||||
name: "&#FF6600Blaze &fSpawn Egg"
|
||||
lore:
|
||||
- ""
|
||||
- "&8&oPlace on the ground to"
|
||||
- "&8&ounlock the &#FF6600Blaze pet!"
|
||||
craftable: false
|
||||
recipe: []
|
||||
recipe-permission: ecopets.craft.blaze
|
||||
|
||||
- id: sea_serpent
|
||||
name: "&9Sea Serpent"
|
||||
description: "&8&oIncrease swimming speed and damage in water. Level up by swimming"
|
||||
|
||||
level-xp-requirements:
|
||||
- 50
|
||||
- 125
|
||||
- 200
|
||||
- 300
|
||||
- 500
|
||||
- 750
|
||||
- 1000
|
||||
- 1500
|
||||
- 2000
|
||||
- 3500
|
||||
- 5000
|
||||
- 7500
|
||||
- 10000
|
||||
- 15000
|
||||
- 20000
|
||||
- 30000
|
||||
- 50000
|
||||
- 75000
|
||||
- 100000
|
||||
- 200000
|
||||
- 300000
|
||||
- 400000
|
||||
- 500000
|
||||
- 600000
|
||||
- 700000
|
||||
- 800000
|
||||
- 900000
|
||||
- 1000000
|
||||
- 1100000
|
||||
- 1200000
|
||||
- 1300000
|
||||
- 1400000
|
||||
- 1500000
|
||||
- 1600000
|
||||
- 1700000
|
||||
- 1800000
|
||||
- 1900000
|
||||
- 2000000
|
||||
- 2100000
|
||||
- 2200000
|
||||
- 2300000
|
||||
- 2400000
|
||||
- 2500000
|
||||
- 2600000
|
||||
- 2750000
|
||||
- 2900000
|
||||
- 3100000
|
||||
- 3400000
|
||||
- 3700000
|
||||
- 4000000
|
||||
- 4500000
|
||||
|
||||
xp-gain-methods:
|
||||
- id: move
|
||||
multiplier: 0.5
|
||||
conditions:
|
||||
- id: is_sprinting
|
||||
- id: in_water
|
||||
|
||||
level-placeholders:
|
||||
- id: "multiplier"
|
||||
value: "%level%"
|
||||
|
||||
effects-description:
|
||||
1:
|
||||
- "&8» &8Gives a &a+%multiplier%%&8 bonus to"
|
||||
- " &8melee damage when in water"
|
||||
2:
|
||||
- "&8» &8Gives a &a+%multiply_velocity%%&8 bonus to"
|
||||
- " &8movement speed when in water"
|
||||
|
||||
rewards-description:
|
||||
1:
|
||||
- "&8» &8Gives a &a+%multiplier%%&8 bonus to"
|
||||
- " &8melee damage when in water"
|
||||
2:
|
||||
- "&8» &8Gives a &a+%multiply_velocity%%&8 bonus to"
|
||||
- " &8movement speed when in water"
|
||||
|
||||
level-up-messages:
|
||||
1:
|
||||
- "&8» &8Gives a &a+%multiplier%%&8 bonus to"
|
||||
- " &8melee damage when in water"
|
||||
2:
|
||||
- "&8» &8Gives a &a+%multiply_velocity%%&8 bonus to"
|
||||
- " &8movement speed when in water"
|
||||
|
||||
level-commands: [ ]
|
||||
|
||||
effects:
|
||||
- id: damage_multiplier
|
||||
args:
|
||||
multiplier: "%level% * 0.01 + 1"
|
||||
triggers:
|
||||
- melee_attack
|
||||
- id: movement_speed_multiplier
|
||||
args:
|
||||
multiplier: "%level% * 1.3 + 1"
|
||||
|
||||
conditions:
|
||||
- id: in_water
|
||||
|
||||
entity-texture: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTA5NWZjYzFlM2Q3Y2JkMzUwZjE5YjM4OTQ5OGFiOGJiOTZjNjVhZDE4NWQzNDU5MjA2N2E3ZDAzM2FjNDhkZSJ9fX0="
|
||||
|
||||
icon: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTA5NWZjYzFlM2Q3Y2JkMzUwZjE5YjM4OTQ5OGFiOGJiOTZjNjVhZDE4NWQzNDU5MjA2N2E3ZDAzM2FjNDhkZSJ9fX0=
|
||||
|
||||
spawn-egg:
|
||||
enabled: true # If the pet should have a spawn egg
|
||||
item: drowned_spawn_egg unbreaking:1 hide_enchants
|
||||
name: "&9Sea Serpent&f Spawn Egg"
|
||||
lore:
|
||||
- ""
|
||||
- "&8&oPlace on the ground to"
|
||||
- "&8&ounlock the &r&9Sea Serpent&8&o pet!"
|
||||
craftable: false
|
||||
recipe: [ ]
|
||||
|
||||
- id: vampire
|
||||
name: "<gradient:#A50000>Vampire</gradient:#FD2424>"
|
||||
description: "&8&oLevel up by taking damage at night."
|
||||
|
||||
level-xp-requirements:
|
||||
- 50
|
||||
- 75
|
||||
- 100
|
||||
- 150
|
||||
- 200
|
||||
- 300
|
||||
- 400
|
||||
- 500
|
||||
- 750
|
||||
- 1000
|
||||
- 1300
|
||||
- 1500
|
||||
- 1750
|
||||
- 2000
|
||||
- 2300
|
||||
- 2500
|
||||
- 3000
|
||||
- 3500
|
||||
- 4000
|
||||
- 4500
|
||||
- 5000
|
||||
- 6000
|
||||
- 8000
|
||||
- 10000
|
||||
- 12000
|
||||
- 15000
|
||||
- 20000
|
||||
- 25000
|
||||
- 30000
|
||||
- 35000
|
||||
- 40000
|
||||
- 44500
|
||||
- 50000
|
||||
- 57000
|
||||
- 64000
|
||||
- 71000
|
||||
- 78000
|
||||
- 80000
|
||||
- 85000
|
||||
- 90000
|
||||
- 95000
|
||||
- 100000
|
||||
- 110000
|
||||
- 115000
|
||||
- 120000
|
||||
- 125000
|
||||
- 150000
|
||||
- 175000
|
||||
- 200000
|
||||
|
||||
xp-gain-methods:
|
||||
- id: take_damage
|
||||
multiplier: 10.0
|
||||
conditions:
|
||||
- id: is_night
|
||||
|
||||
|
||||
level-placeholders:
|
||||
- id: "lifesteal_chance"
|
||||
value: "%level%"
|
||||
- id: "lifesteal_cooldown"
|
||||
value: "1-(%level%/200)"
|
||||
- id: "lifesteal_heal"
|
||||
value: "%level%/20"
|
||||
- id: "bleed_damage"
|
||||
value: "(%level%-15)/10"
|
||||
- id: "bleed_chance"
|
||||
value: "%level%-10"
|
||||
|
||||
effects-description:
|
||||
1:
|
||||
- "&8» &#ff0000This pet can ONLY be levelled at night."
|
||||
- ""
|
||||
- "&8» &7When hitting enemies have a &#ff0000%lifesteal_chance% &7to gain"
|
||||
- " &7health from your enemy. Has a &#ff0000%lifesteal_cooldown% &7second cooldown."
|
||||
25:
|
||||
- "&8» &#ff0000This pet can ONLY be levelled at night."
|
||||
- ""
|
||||
- "&8» &7When hitting enemies have a &#ff0000%lifesteal_chance% &7to gain"
|
||||
- " &7health from your enemy. Has a &#ff0000%lifesteal_cooldown% &7second cooldown."
|
||||
- ""
|
||||
- "&8» &7When hitting enemies have a &#ff0000%bleed_chance% &7to bleed"
|
||||
- " &7your enemies dealing &#ff0000%bleed_damage%&7 damage twice."
|
||||
|
||||
rewards-description:
|
||||
1:
|
||||
- "&8» &#ff0000This pet can ONLY be levelled at night."
|
||||
- ""
|
||||
- "&8» &7When hitting enemies have a &#ff0000%lifesteal_chance% &7to gain &ff0000%lifesteal_heal%"
|
||||
- " &7health from your enemy. Has a &#ff0000%lifesteal_cooldown% &7second cooldown."
|
||||
25:
|
||||
- "&8» &#ff0000This pet can ONLY be levelled at night."
|
||||
- ""
|
||||
- "&8» &7When hitting enemies have a &#ff0000%lifesteal_chance% &7to gain"
|
||||
- " &7health from your enemy. Has a &#ff0000%lifesteal_cooldown% &7second cooldown."
|
||||
- ""
|
||||
- "&8» &7When hitting enemies have a &#ff0000%bleed_chance% &7to bleed"
|
||||
- " &7your enemies dealing &#ff0000%bleed_damage%&7 damage twice."
|
||||
|
||||
level-up-messages:
|
||||
1:
|
||||
- "&8» &#ff0000This pet can ONLY be levelled at night."
|
||||
- ""
|
||||
- "&8» &7When hitting enemies have a &#ff0000%lifesteal_chance% &7to gain"
|
||||
- " &7health from your enemy. Has a &#ff0000%lifesteal_cooldown% &7second cooldown."
|
||||
25:
|
||||
- "&8» &#ff0000This pet can ONLY be levelled at night."
|
||||
- ""
|
||||
- "&8» &7When hitting enemies have a &#ff0000%lifesteal_chance% &7to gain"
|
||||
- " &7health from your enemy. Has a &#ff0000%lifesteal_cooldown% &7second cooldown."
|
||||
- ""
|
||||
- "&8» &7When hitting enemies have a &#ff0000%bleed_chance% &7to bleed"
|
||||
- " &7your enemies dealing &#ff0000%bleed_damage%&7 damage twice."
|
||||
|
||||
level-commands: [ ]
|
||||
|
||||
effects:
|
||||
- id: give_health
|
||||
args:
|
||||
chance: "%level%"
|
||||
cooldown: "1-(%level%/200)"
|
||||
send_cooldown_message: false
|
||||
amount: "%level%/20"
|
||||
triggers:
|
||||
- melee_attack
|
||||
|
||||
- id: bleed
|
||||
args:
|
||||
chance: "%level%-10"
|
||||
damage: "(%level%-15)/10"
|
||||
interval: 15
|
||||
amount: 2
|
||||
conditions:
|
||||
- id: has_pet_level
|
||||
args:
|
||||
pet: vampire
|
||||
level: 25
|
||||
triggers:
|
||||
- melee_attack
|
||||
|
||||
conditions: []
|
||||
|
||||
entity-texture: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzgyMGExMGRiMjIyZjY5YWMyMjE1ZDdkMTBkY2E0N2VlYWZhMjE1NTUzNzY0YTJiODFiYWZkNDc5ZTc5MzNkMSJ9fX0="
|
||||
|
||||
icon: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzgyMGExMGRiMjIyZjY5YWMyMjE1ZDdkMTBkY2E0N2VlYWZhMjE1NTUzNzY0YTJiODFiYWZkNDc5ZTc5MzNkMSJ9fX0=
|
||||
|
||||
spawn-egg:
|
||||
enabled: true
|
||||
item: bat_spawn_egg unbreaking:2 hide_enchants
|
||||
name: "<gradient:#A50000>Vampire</gradient:#FD2424>&f Pet Spawn Egg"
|
||||
lore:
|
||||
- ""
|
||||
- "&8&oPlace on the ground to"
|
||||
- "&8&ounlock the &r<gradient:#A50000>Vampire</gradient:#FD2424>&8&o pet!"
|
||||
craftable: false
|
||||
recipe: [ ]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#libreforge-updater
|
||||
#Mon Jun 20 21:38:10 BST 2022
|
||||
version=1.5.0
|
||||
#Sun Jul 24 22:49:45 BST 2022
|
||||
version=1.13.0
|
||||
plugin-name=EcoPets
|
||||
|
||||
Reference in New Issue
Block a user