Compare commits

...

48 Commits

Author SHA1 Message Date
Auxilor
a27ebb1b5c libreforge-updater 2022-07-24 22:49:45 +01:00
Auxilor
afafd86eaf libreforge-updater 2022-07-24 21:51:44 +01:00
Auxilor
49a2713017 libreforge-updater 2022-07-23 17:43:45 +01:00
Auxilor
a4263e8397 libreforge-updater 2022-07-22 14:21:36 +01:00
Auxilor
17f3aa8862 Updated kotlin 2022-07-22 14:17:51 +01:00
Auxilor
c94024ea19 libreforge-updater 2022-07-21 20:15:00 +01:00
Auxilor
1daa52e1f4 Changed pet display 2022-07-21 16:39:47 +01:00
Auxilor
a06808f802 Updated to 1.11.2 2022-07-21 16:15:23 +01:00
Auxilor
91cf08f0ac Fixed pets obstructing the view when looking up 2022-07-21 16:15:17 +01:00
Auxilor
9a7ff1760c Updated to 1.11.1 2022-07-21 15:50:40 +01:00
Will FP
f2c3f569b7 Merge pull request #10 from Sedri05/master
Fixed Default Pets
2022-07-21 15:25:03 +01:00
Auxilor
508cb3e216 libreforge-updater 2022-07-20 00:11:07 +01:00
Auxilor
5f998f4bad libreforge-updater 2022-07-13 21:23:31 +01:00
Auxilor
e4b468b0da libreforge-updater 2022-07-12 14:59:32 +01:00
Auxilor
675d2b8508 libreforge-updater 2022-07-11 16:17:10 +01:00
Auxilor
edddd67f58 Updated to 1.9.1 2022-07-09 14:51:48 +01:00
Auxilor
ed676e50c7 Fixed armor stand persistence 2022-07-09 14:51:41 +01:00
Auxilor
b36551a179 Improved pet entities 2022-07-09 14:50:03 +01:00
Auxilor
053f22258a libreforge-updater 2022-07-09 12:11:28 +01:00
Auxilor
a3a0783ea2 libreforge-updater 2022-07-05 18:33:01 +01:00
Auxilor
c7f25f17cd libreforge-updater 2022-07-04 18:46:02 +01:00
Auxilor
a489aaa53a More fixes 2022-07-03 16:24:30 +01:00
Auxilor
9e9a68fc45 More fixes 2022-07-03 16:24:16 +01:00
Auxilor
53b24b9dbb Updated to 1.7.3 2022-07-03 16:20:50 +01:00
Auxilor
4977dc1012 Fixed pets.yml 2022-07-03 16:20:42 +01:00
Sedri05
0bb4aa6d51 Update pets.yml 2022-07-03 01:30:07 +02:00
Auxilor
5b1eda604d Added many new base pets! 2022-06-30 23:03:15 +01:00
Auxilor
10e9edc011 libreforge-updater 2022-06-30 22:55:14 +01:00
Auxilor
ec11e9c475 libreforge-updater 2022-06-30 22:35:09 +01:00
Auxilor
eebe7427bc Set version 2022-06-26 13:10:19 +01:00
Auxilor
d2fa50a08c libreforge-updater 2022-06-26 13:03:25 +01:00
Auxilor
9fb80c594a libreforge-updater 2022-06-25 22:23:38 +01:00
Auxilor
915778d63f libreforge-updater 2022-06-24 13:58:43 +01:00
Auxilor
44911d5f97 Updated to 1.6.2 2022-06-23 21:18:30 +01:00
Auxilor
11a79a5352 libreforge-updater 2022-06-22 22:25:33 +01:00
Auxilor
9473deda7c Updated to 1.6.2 2022-06-22 13:59:42 +01:00
Auxilor
44676515b2 Fixed craft permission 2022-06-22 13:59:33 +01:00
Auxilor
4e7317e69a Updated to 1.6.1 2022-06-22 12:51:00 +01:00
Auxilor
8ca8018ab2 Added filters to xp gain 2022-06-22 12:50:51 +01:00
Auxilor
78e033990b libreforge-updater 2022-06-22 12:43:42 +01:00
Auxilor
033ac785d6 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	gradle.properties
2022-06-21 18:49:52 +01:00
Auxilor
6ddf34f7f6 Updated to 1.5.1 2022-06-21 18:49:41 +01:00
Auxilor
fb889b2936 Added discover-recipes 2022-06-21 18:49:34 +01:00
Auxilor
dcf89687e3 libreforge-updater 2022-06-21 08:29:46 +01:00
Auxilor
2835eeaa5d libreforge-updater 2022-06-20 21:38:10 +01:00
Auxilor
1647a5dfaf 1.4.0 2022-06-20 21:36:33 +01:00
Auxilor
3d260e82ae Fixed pet GUI 2022-06-20 21:36:24 +01:00
Auxilor
1fdbd064a9 Updated libreforge 2022-06-20 18:06:02 +01:00
14 changed files with 578 additions and 65 deletions

View File

@@ -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.66.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) {

View File

@@ -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)
)
}

View File

@@ -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) }
}
}

View File

@@ -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()

View File

@@ -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
)
}

View File

@@ -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

View File

@@ -13,7 +13,6 @@ import org.bukkit.Material
import org.bukkit.Sound
import org.bukkit.entity.Player
import org.bukkit.inventory.ItemStack
import org.checkerframework.checker.units.qual.m
import kotlin.math.ceil
import kotlin.math.max
import kotlin.math.min
@@ -42,8 +41,8 @@ object PetsGUI {
val bottomRightColumn = plugin.configYml.getInt("gui.pet-area.bottom-right.column")
petAreaSlots.clear()
for (column in topLeftColumn..bottomRightColumn) {
for (row in topLeftRow..bottomRightRow) {
for (column in topLeftColumn..bottomRightColumn) {
petAreaSlots.add(Pair(row, column))
}
}

View File

@@ -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
}
}

View File

@@ -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
}

View File

@@ -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
}
}

View File

@@ -3,6 +3,8 @@
# by Auxilor
#
discover-recipes: true
gui:
rows: 6

View File

@@ -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: [ ]

View File

@@ -1,4 +1,4 @@
#libreforge-updater
#Mon Jun 20 14:17:42 BST 2022
version=1.4.0
#Sun Jul 24 22:49:45 BST 2022
version=1.13.0
plugin-name=EcoPets

0
gradlew vendored Normal file → Executable file
View File