Compare commits

...

101 Commits

Author SHA1 Message Date
Auxilor
d36551a94b libreforge-updater 2022-10-18 14:15:28 +01:00
Auxilor
42ed601fd7 libreforge-updater 2022-10-16 23:27:52 +01:00
Auxilor
3cd800aeac libreforge-updater 2022-10-13 20:13:29 +01:00
Auxilor
a8e4f886a5 Updated to 1.50.2 2022-10-11 13:06:54 +01:00
Auxilor
fffdca4515 libreforge-updater 2022-10-10 21:05:04 +01:00
Auxilor
03fe0f6116 libreforge-updater 2022-10-09 15:03:50 +01:00
Auxilor
93ff547fcf libreforge-updater 2022-10-07 19:52:35 +01:00
Auxilor
60af2e8414 libreforge-updater 2022-10-06 12:05:31 +01:00
Auxilor
37b3aab105 libreforge-updater 2022-10-04 15:53:58 +01:00
Auxilor
1065989f7b libreforge-updater 2022-10-03 18:30:41 +01:00
Auxilor
39545ac9bd libreforge-updater 2022-10-02 14:59:26 +01:00
Auxilor
273b7ee712 libreforge-updater 2022-09-28 17:53:38 +01:00
Auxilor
6dfaf353b2 Fixed 2022-09-28 15:57:24 +01:00
Auxilor
6abcf482f1 Updated to 1.44.0 2022-09-28 15:56:33 +01:00
Auxilor
6f56b11b21 Refined PR 2022-09-28 15:56:20 +01:00
Will FP
6c1b283b1b Merge pull request #30
Custom default animation feature
2022-09-28 14:33:39 +01:00
Auxilor
864c909f18 Added custom GUI slots 2022-09-28 12:43:11 +01:00
Auxilor
6fc68f2121 Added custom GUI slots 2022-09-28 12:42:57 +01:00
mani123
27bef81957 Merge branch 'Auxilor:master' into master 2022-09-28 12:31:04 +02:00
Auxilor
73c9d85f61 Updated to 1.42.0 2022-09-28 09:01:38 +01:00
Auxilor
87e4669e29 Added /pets activate and /pets deactivate 2022-09-28 09:00:06 +01:00
mani1232
b1fcadc46d remove , and ; 2022-09-27 15:31:24 +02:00
mani1232
571b39f0a7 refactor default animation walk if not set 2022-09-27 11:54:40 +02:00
mani1232
db3120f1de add default animation walk if not set 2022-09-27 11:50:18 +02:00
mani1232
f1b5bac9cd add else if model animation not found 2022-09-27 11:29:40 +02:00
mani1232
c67eee5af9 small changes 2022-09-27 11:07:38 +02:00
mani123
068ca3e4d6 Merge branch 'Auxilor:master' into master 2022-09-27 11:05:17 +02:00
mani1232
f10084d523 Custom default animation feature 2022-09-27 11:04:39 +02:00
Auxilor
99d4b13715 libreforge-updater 2022-09-26 18:28:24 +01:00
Auxilor
03dcdb895e libreforge-updater 2022-09-26 14:42:58 +01:00
Auxilor
a166fe9457 Updated to 1.40.2 2022-09-26 13:51:26 +01:00
Will FP
a2f3ec89b8 Merge pull request #29 from mani1232/master
I think it's time to update modelengine to R3.0.0
2022-09-26 13:49:40 +01:00
Auxilor
28597a8777 libreforge-updater 2022-09-26 10:53:20 +01:00
mani1232
c9755066b4 I think it's time to update modelengine to R3.0.0 2022-09-25 21:59:47 +02:00
Auxilor
4215dafafd libreforge-updater 2022-09-22 17:31:36 +01:00
Auxilor
c09c7ae312 libreforge-updater 2022-09-21 15:29:24 +01:00
Auxilor
6e3933ff72 libreforge-updater 2022-09-20 10:57:52 +01:00
Auxilor
30595783e3 libreforge-updater 2022-09-17 15:46:12 +01:00
Auxilor
9898118bf1 libreforge-updater 2022-09-15 12:16:29 +01:00
Auxilor
2a301158b8 libreforge-updater 2022-09-15 12:10:13 +01:00
Auxilor
ba29170e32 libreforge-updater 2022-09-14 18:53:48 +01:00
Auxilor
94ebc73687 libreforge-updater 2022-09-14 15:12:55 +01:00
Auxilor
1cc853e498 libreforge-updater 2022-09-14 15:10:01 +01:00
Auxilor
d6fef2f64c libreforge-updater 2022-09-14 13:00:15 +01:00
Auxilor
bc341b0a86 libreforge-updater 2022-09-13 19:15:43 +01:00
Auxilor
d5d2e3fd00 libreforge-updater 2022-09-12 21:21:50 +01:00
Auxilor
00d2664653 libreforge-updater 2022-09-12 17:15:40 +01:00
Auxilor
b8e1d55242 libreforge-updater 2022-09-11 19:28:00 +01:00
Auxilor
26f381fcfc libreforge-updater 2022-09-10 12:58:52 +01:00
Auxilor
ad84ce7d45 libreforge-updater 2022-09-10 10:51:51 +01:00
Auxilor
dc1bd7ebcb libreforge-updater 2022-09-06 15:43:50 +01:00
Auxilor
0b658c72ee Updated libreforge 2022-09-06 13:47:47 +01:00
Auxilor
03c0d0e444 libreforge-updater 2022-09-06 13:46:33 +01:00
Auxilor
afd0b76b42 libreforge-updater 2022-09-06 11:25:55 +01:00
Auxilor
2736d1fc7a libreforge-updater 2022-09-05 18:01:01 +01:00
Auxilor
71ef09d9f8 libreforge-updater 2022-09-04 17:23:04 +01:00
Auxilor
233f5398d8 libreforge-updater 2022-09-04 16:22:32 +01:00
Auxilor
0b98694b25 libreforge-updater 2022-09-03 14:20:51 +01:00
Auxilor
3fc9d3ecf3 libreforge-updater 2022-09-01 13:05:58 +01:00
Auxilor
7a3c459335 libreforge-updater 2022-08-31 12:46:03 +01:00
Auxilor
67c4c02b36 libreforge-updater 2022-08-30 20:29:24 +01:00
Auxilor
093a0509fa libreforge-updater 2022-08-30 19:22:02 +01:00
Auxilor
159f4ab14c libreforge-updater 2022-08-29 10:59:24 +01:00
Auxilor
d48288efa5 libreforge-updater 2022-08-28 15:41:27 +01:00
Auxilor
7ed96fe6ac libreforge-updater 2022-08-27 11:27:12 +01:00
Auxilor
3146344f39 libreforge-updater 2022-08-24 12:53:09 +02:00
Auxilor
7f6ed7aa89 libreforge-updater 2022-08-24 12:50:33 +02:00
Auxilor
8839d1e2d9 libreforge-updater 2022-08-24 11:58:00 +02:00
Auxilor
f83d646e02 libreforge-updater 2022-08-23 11:08:06 +02:00
Auxilor
6c4437e0cb libreforge-updater 2022-08-22 12:46:54 +02:00
Auxilor
8b8bc294e4 libreforge-updater 2022-08-20 10:00:27 +02:00
Auxilor
94cc573114 libreforge-updater 2022-08-17 14:22:18 +02:00
Auxilor
4f3da3ae84 libreforge-updater 2022-08-17 12:10:10 +02:00
Auxilor
19b52eaaa7 libreforge-updater 2022-08-16 18:46:26 +02:00
Auxilor
e9f33fd298 libreforge-updater 2022-08-14 17:30:58 +02:00
Auxilor
fc66efff53 Downgraded modelengine 2022-08-13 12:33:20 +02:00
Auxilor
1409620b92 Updated to 1.18.1 2022-08-13 12:01:19 +02:00
Will FP
f1acc877b7 Merge pull request #20 from 0ft3n/patch-1
Fixed default pets yml
2022-08-13 11:59:54 +02:00
Will FP
d7e725822c Merge pull request #21 from Wesley51/master
Fix ModelEngine dependency
2022-08-13 11:59:49 +02:00
Auxilor
d613e569ed libreforge-updater 2022-08-13 11:58:28 +02:00
WesleyTrain
22274a9bdf Update ModelEnginePetEntity.kt 2022-08-11 14:27:17 -04:00
WesleyTrain
2ef337d4ca Update ModelEngine dependency 2022-08-11 14:25:57 -04:00
0ft3n
aacd247c54 Fixed default pets yml (vampire) 2022-08-11 04:16:52 +03:00
Auxilor
1aa419bce7 libreforge-updater 2022-08-05 18:42:13 +01:00
Auxilor
56f948e898 libreforge-updater 2022-08-05 18:40:40 +01:00
Auxilor
d92472c0a4 libreforge-updater 2022-08-04 13:04:16 +01:00
Auxilor
7de03c1459 effects 2022-08-04 12:39:04 +01:00
Auxilor
9109e11791 effects 2022-08-04 12:35:17 +01:00
Auxilor
a0381e113c effects 2022-08-04 12:34:42 +01:00
Auxilor
2d6128eca9 lang 2022-08-04 12:33:58 +01:00
Auxilor
985608791b libreforge-updater 2022-08-04 12:27:13 +01:00
Auxilor
dd65bfa58d libreforge-updater 2022-08-04 12:25:02 +01:00
Auxilor
a61cce53c1 Updated to 1.16.2 2022-08-03 15:09:52 +01:00
Auxilor
e7cc186e9c Jank fix 2022-08-03 15:09:45 +01:00
Auxilor
7fb3df354d libreforge-updater 2022-08-02 16:27:25 +01:00
Auxilor
971c643203 libreforge-updater 2022-08-02 16:22:01 +01:00
Auxilor
b2381c33fe libreforge-updater 2022-08-02 16:17:45 +01:00
Auxilor
0642ff1421 libreforge-updater 2022-08-01 11:19:55 +01:00
Auxilor
7dc5caec57 libreforge-updater 2022-07-29 17:51:31 +01:00
Auxilor
b006ebab53 libreforge-updater 2022-07-27 20:17:58 +01:00
Auxilor
3bd774265d libreforge-updater 2022-07-25 17:54:31 +01:00
30 changed files with 1166 additions and 841 deletions

View File

@@ -47,8 +47,8 @@ allprojects {
} }
dependencies { dependencies {
compileOnly 'com.willfp:eco:6.37.1' compileOnly 'com.willfp:eco:6.42.0'
implementation 'com.willfp:libreforge:3.78.0' implementation 'com.willfp:libreforge:3.113.0'
implementation 'org.joml:joml:1.10.4' implementation 'org.joml:joml:1.10.4'
compileOnly 'org.jetbrains:annotations:23.0.0' compileOnly 'org.jetbrains:annotations:23.0.0'

View File

@@ -7,7 +7,7 @@ dependencies {
compileOnly 'net.kyori:adventure-api:4.10.1' compileOnly 'net.kyori:adventure-api:4.10.1'
compileOnly 'net.essentialsx:EssentialsX:2.19.0' compileOnly 'net.essentialsx:EssentialsX:2.19.0'
compileOnly 'com.github.ben-manes.caffeine:caffeine:3.0.6' compileOnly 'com.github.ben-manes.caffeine:caffeine:3.0.6'
compileOnly 'com.ticxo.modelengine:api:R2.5.0' compileOnly 'com.ticxo.modelengine:api:R3.0.0'
} }
build.dependsOn publishToMavenLocal build.dependsOn publishToMavenLocal

View File

@@ -6,7 +6,6 @@ import com.willfp.eco.core.placeholder.PlayerPlaceholder
import com.willfp.eco.util.toSingletonList import com.willfp.eco.util.toSingletonList
import com.willfp.ecopets.commands.CommandEcopets import com.willfp.ecopets.commands.CommandEcopets
import com.willfp.ecopets.commands.CommandPets import com.willfp.ecopets.commands.CommandPets
import com.willfp.ecopets.config.PetsYml
import com.willfp.ecopets.pets.DiscoverRecipeListener import com.willfp.ecopets.pets.DiscoverRecipeListener
import com.willfp.ecopets.pets.PetDisplay import com.willfp.ecopets.pets.PetDisplay
import com.willfp.ecopets.pets.PetLevelListener import com.willfp.ecopets.pets.PetLevelListener
@@ -20,17 +19,16 @@ import com.willfp.libreforge.LibReforgePlugin
import org.bukkit.event.Listener import org.bukkit.event.Listener
class EcoPetsPlugin : LibReforgePlugin() { class EcoPetsPlugin : LibReforgePlugin() {
val petsYml: PetsYml
private val petDisplay = PetDisplay(this) private val petDisplay = PetDisplay(this)
init { init {
instance = this instance = this
petsYml = PetsYml(this)
registerHolderProvider { it.activePetLevel?.toSingletonList() ?: emptyList() } registerHolderProvider { it.activePetLevel?.toSingletonList() ?: emptyList() }
} }
override fun handleEnableAdditional() { override fun handleEnableAdditional() {
this.copyConfigs("pets")
PlayerPlaceholder( PlayerPlaceholder(
this, this,
"pet" "pet"
@@ -56,7 +54,7 @@ class EcoPetsPlugin : LibReforgePlugin() {
return listOf( return listOf(
IntegrationLoader("ModelEngine") { IntegrationLoader("ModelEngine") {
PetEntity.registerPetEntity("modelengine") { pet, id -> PetEntity.registerPetEntity("modelengine") { pet, id ->
ModelEnginePetEntity(pet, id) ModelEnginePetEntity(pet, id, this)
} }
} }
) )

View File

@@ -0,0 +1,65 @@
package com.willfp.ecopets.commands
import com.willfp.eco.core.EcoPlugin
import com.willfp.eco.core.command.impl.Subcommand
import com.willfp.eco.util.StringUtils
import com.willfp.ecopets.pets.Pets
import com.willfp.ecopets.pets.activePet
import com.willfp.ecopets.pets.hasPet
import org.bukkit.command.CommandSender
import org.bukkit.entity.Player
import org.bukkit.util.StringUtil
class CommandActivate(plugin: EcoPlugin) : Subcommand(plugin, "activate", "ecopets.command.activate", true) {
override fun onExecute(player: CommandSender, args: List<String>) {
player as Player
if (args.isEmpty()) {
player.sendMessage(plugin.langYml.getMessage("needs-pet"))
return
}
val id = args[0]
val pet = Pets.getByID(id)
if (pet == null || !player.hasPet(pet)) {
player.sendMessage(plugin.langYml.getMessage("invalid-pet"))
return
}
if (player.activePet == pet) {
player.sendMessage(plugin.langYml.getMessage("pet-already-active"))
return
}
player.sendMessage(
plugin.langYml.getMessage("activated-pet", StringUtils.FormatOption.WITHOUT_PLACEHOLDERS)
.replace("%pet%", pet.name)
)
player.activePet = pet
}
override fun tabComplete(sender: CommandSender, args: List<String>): List<String> {
if (sender !is Player) {
return emptyList()
}
val completions = mutableListOf<String>()
if (args.isEmpty()) {
// Currently, this case is not ever reached
return Pets.values().filter { sender.hasPet(it) }.map { it.id }
}
if (args.size == 1) {
StringUtil.copyPartialMatches(
args[1],
Pets.values().filter { sender.hasPet(it) }.map { it.id },
completions
)
return completions
}
return emptyList()
}
}

View File

@@ -0,0 +1,26 @@
package com.willfp.ecopets.commands
import com.willfp.eco.core.EcoPlugin
import com.willfp.eco.core.command.impl.Subcommand
import com.willfp.eco.util.StringUtils
import com.willfp.ecopets.pets.activePet
import org.bukkit.command.CommandSender
import org.bukkit.entity.Player
class CommandDeactivate(plugin: EcoPlugin) : Subcommand(plugin, "deactivate", "ecopets.command.deactivate", true) {
override fun onExecute(player: CommandSender, args: List<String>) {
player as Player
if (player.activePet == null) {
player.sendMessage(plugin.langYml.getMessage("no-pet-active"))
return
}
player.sendMessage(
plugin.langYml.getMessage("deactivated-pet", StringUtils.FormatOption.WITHOUT_PLACEHOLDERS)
.replace("%pet%", player.activePet?.name ?: "")
)
player.activePet = null
}
}

View File

@@ -1,16 +1,29 @@
package com.willfp.ecopets.commands package com.willfp.ecopets.commands
import com.willfp.eco.core.EcoPlugin
import com.willfp.eco.core.command.impl.PluginCommand import com.willfp.eco.core.command.impl.PluginCommand
import com.willfp.ecopets.pets.Pets
import com.willfp.libreforge.LibReforgePlugin
import com.willfp.libreforge.lrcdb.CommandExport
import com.willfp.libreforge.lrcdb.CommandImport
import com.willfp.libreforge.lrcdb.ExportableConfig
import org.bukkit.command.CommandSender import org.bukkit.command.CommandSender
class CommandEcopets(plugin: EcoPlugin) : PluginCommand(plugin, "ecopets", "ecopets.command.ecopets", false) { class CommandEcopets(plugin: LibReforgePlugin) : PluginCommand(plugin, "ecopets", "ecopets.command.ecopets", false) {
init { init {
this.addSubcommand(CommandReload(plugin)) this.addSubcommand(CommandReload(plugin))
.addSubcommand(CommandGive(plugin)) .addSubcommand(CommandGive(plugin))
.addSubcommand(CommandGiveEgg(plugin)) .addSubcommand(CommandGiveEgg(plugin))
.addSubcommand(CommandGiveXP(plugin)) .addSubcommand(CommandGiveXP(plugin))
.addSubcommand(CommandReset(plugin)) .addSubcommand(CommandReset(plugin))
.addSubcommand(CommandImport("pets", plugin))
.addSubcommand(CommandExport(plugin) {
Pets.values().map {
ExportableConfig(
it.id,
it.config
)
}
})
} }
override fun onExecute(sender: CommandSender, args: List<String>) { override fun onExecute(sender: CommandSender, args: List<String>) {

View File

@@ -7,6 +7,11 @@ import org.bukkit.command.CommandSender
import org.bukkit.entity.Player import org.bukkit.entity.Player
class CommandPets(plugin: EcoPlugin) : PluginCommand(plugin, "pets", "ecopets.command.pets", true) { class CommandPets(plugin: EcoPlugin) : PluginCommand(plugin, "pets", "ecopets.command.pets", true) {
init {
this.addSubcommand(CommandActivate(plugin))
.addSubcommand(CommandDeactivate(plugin))
}
override fun onExecute(player: CommandSender, args: List<String>) { override fun onExecute(player: CommandSender, args: List<String>) {
player as Player player as Player
PetsGUI.open(player) PetsGUI.open(player)

View File

@@ -1,7 +0,0 @@
package com.willfp.ecopets.config
import com.willfp.eco.core.EcoPlugin
import com.willfp.eco.core.config.BaseConfig
import com.willfp.eco.core.config.ConfigType
class PetsYml(plugin: EcoPlugin) : BaseConfig("pets", plugin, false, ConfigType.YAML)

View File

@@ -32,15 +32,15 @@ import org.bukkit.OfflinePlayer
import org.bukkit.entity.Player import org.bukkit.entity.Player
import org.bukkit.inventory.ItemStack import org.bukkit.inventory.ItemStack
import org.bukkit.persistence.PersistentDataType import org.bukkit.persistence.PersistentDataType
import java.util.* import java.util.Objects
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
import kotlin.math.abs import kotlin.math.abs
class Pet( class Pet(
val id: String,
val config: Config, val config: Config,
private val plugin: EcoPetsPlugin private val plugin: EcoPetsPlugin
) { ) {
val id = config.getString("id")
val name = config.getFormattedString("name") val name = config.getFormattedString("name")
val description = config.getFormattedString("description") val description = config.getFormattedString("description")
@@ -113,6 +113,7 @@ class Pet(
} }
val entityTexture = config.getString("entity-texture") val entityTexture = config.getString("entity-texture")
val modelEngineAnimation = config.getStringOrNull("modelengine-animation")
private val levelXpRequirements = listOf(0) + config.getInts("level-xp-requirements") private val levelXpRequirements = listOf(0) + config.getInts("level-xp-requirements")

View File

@@ -10,7 +10,7 @@ import org.bukkit.entity.Player
import org.bukkit.event.EventHandler import org.bukkit.event.EventHandler
import org.bukkit.event.Listener import org.bukkit.event.Listener
import org.bukkit.event.player.PlayerQuitEvent import org.bukkit.event.player.PlayerQuitEvent
import java.util.* import java.util.UUID
import kotlin.math.PI import kotlin.math.PI
import kotlin.math.abs import kotlin.math.abs
@@ -44,7 +44,19 @@ class PetDisplay(
location.y += NumberUtils.fastSin(tick / (2 * PI) * 0.5) * 0.15 location.y += NumberUtils.fastSin(tick / (2 * PI) * 0.5) * 0.15
stand.teleport(location) if (location.world != null) {
try {
stand.teleport(location)
} catch (_: Throwable) {
/*
For anyone reading - I KNOW TO NEVER CATCH THROWABLE
but NMS is really stupid and does this sometimes:
java.lang.Throwable: null
at net.minecraft.world.entity.Entity.teleportTo(Entity.java:3336) ~[paper-1.19.2.jar:git-Paper-186]
so I guess that's what has to be done. Not sure what the actual cause is.
*/
}
}
if (!pet.entityTexture.contains(":")) { if (!pet.entityTexture.contains(":")) {
stand.setRotation((20 * tick / (2 * PI)).toFloat(), 0f) stand.setRotation((20 * tick / (2 * PI)).toFloat(), 0f)

View File

@@ -4,6 +4,7 @@ import com.willfp.eco.core.EcoPlugin
import com.willfp.eco.core.gui.menu import com.willfp.eco.core.gui.menu
import com.willfp.eco.core.gui.menu.Menu import com.willfp.eco.core.gui.menu.Menu
import com.willfp.eco.core.gui.slot import com.willfp.eco.core.gui.slot
import com.willfp.eco.core.gui.slot.ConfigSlot
import com.willfp.eco.core.gui.slot.FillerMask import com.willfp.eco.core.gui.slot.FillerMask
import com.willfp.eco.core.gui.slot.MaskItems import com.willfp.eco.core.gui.slot.MaskItems
import com.willfp.eco.core.items.Items import com.willfp.eco.core.items.Items
@@ -178,6 +179,14 @@ class PetLevelGUI(
} }
} }
) )
for (config in plugin.configYml.getSubsections("level-gui.custom-slots")) {
setSlot(
config.getInt("row"),
config.getInt("column"),
ConfigSlot(config)
)
}
} }
} }

View File

@@ -3,7 +3,7 @@ package com.willfp.ecopets.pets
import com.willfp.eco.core.config.interfaces.Config import com.willfp.eco.core.config.interfaces.Config
import com.willfp.libreforge.conditions.ConfiguredCondition import com.willfp.libreforge.conditions.ConfiguredCondition
import com.willfp.libreforge.events.TriggerPreProcessEvent import com.willfp.libreforge.events.TriggerPreProcessEvent
import com.willfp.libreforge.filters.ConfiguredFilter import com.willfp.libreforge.filters.Filter
import com.willfp.libreforge.triggers.Trigger import com.willfp.libreforge.triggers.Trigger
import org.bukkit.event.EventHandler import org.bukkit.event.EventHandler
import org.bukkit.event.Listener import org.bukkit.event.Listener
@@ -31,7 +31,7 @@ object PetTriggerXPGainListener : Listener {
return return
} }
if (!ConfiguredFilter(xpGain.filters).matches(data)) { if (!Filter.matches(data, xpGain.filters)) {
return return
} }

View File

@@ -3,9 +3,11 @@ package com.willfp.ecopets.pets
import com.google.common.collect.BiMap import com.google.common.collect.BiMap
import com.google.common.collect.HashBiMap import com.google.common.collect.HashBiMap
import com.google.common.collect.ImmutableList import com.google.common.collect.ImmutableList
import com.willfp.eco.core.config.ConfigType
import com.willfp.eco.core.config.TransientConfig
import com.willfp.eco.core.config.updating.ConfigUpdater import com.willfp.eco.core.config.updating.ConfigUpdater
import com.willfp.ecopets.EcoPetsPlugin import com.willfp.ecopets.EcoPetsPlugin
import com.willfp.libreforge.chains.EffectChains import java.io.File
object Pets { object Pets {
private val BY_ID: BiMap<String, Pet> = HashBiMap.create() private val BY_ID: BiMap<String, Pet> = HashBiMap.create()
@@ -39,14 +41,18 @@ object Pets {
@ConfigUpdater @ConfigUpdater
@JvmStatic @JvmStatic
fun update(plugin: EcoPetsPlugin) { fun update(plugin: EcoPetsPlugin) {
plugin.petsYml.getSubsections("chains").mapNotNull {
EffectChains.compile(it, "Effect Chains")
}
for (set in values()) { for (set in values()) {
removePet(set) removePet(set)
} }
for (petConfig in plugin.petsYml.getSubsections("pets")) {
addNewPet(Pet(petConfig, plugin)) val petsYml = TransientConfig(File(plugin.dataFolder, "pets.yml"), ConfigType.YAML)
for ((id, petConfig) in plugin.fetchConfigs("pets")) {
addNewPet(Pet(id, petConfig, plugin))
}
for (petConfig in petsYml.getSubsections("pets")) {
addNewPet(Pet(petConfig.getString("id"), petConfig, plugin))
} }
} }

View File

@@ -4,6 +4,7 @@ import com.willfp.eco.core.config.updating.ConfigUpdater
import com.willfp.eco.core.gui.menu import com.willfp.eco.core.gui.menu
import com.willfp.eco.core.gui.menu.Menu import com.willfp.eco.core.gui.menu.Menu
import com.willfp.eco.core.gui.slot import com.willfp.eco.core.gui.slot
import com.willfp.eco.core.gui.slot.ConfigSlot
import com.willfp.eco.core.gui.slot.FillerMask import com.willfp.eco.core.gui.slot.FillerMask
import com.willfp.eco.core.gui.slot.MaskItems import com.willfp.eco.core.gui.slot.MaskItems
import com.willfp.eco.core.items.Items import com.willfp.eco.core.items.Items
@@ -200,6 +201,14 @@ object PetsGUI {
} }
} }
) )
for (config in plugin.configYml.getSubsections("gui.custom-slots")) {
setSlot(
config.getInt("row"),
config.getInt("column"),
ConfigSlot(config)
)
}
} }
} }

View File

@@ -1,20 +1,41 @@
package com.willfp.ecopets.pets.entity package com.willfp.ecopets.pets.entity
import com.ticxo.modelengine.api.ModelEngineAPI import com.ticxo.modelengine.api.ModelEngineAPI
import com.willfp.ecopets.EcoPetsPlugin
import com.willfp.ecopets.pets.Pet import com.willfp.ecopets.pets.Pet
import org.bukkit.Location import org.bukkit.Location
import org.bukkit.entity.ArmorStand import org.bukkit.entity.ArmorStand
class ModelEnginePetEntity( class ModelEnginePetEntity(
pet: Pet, pet: Pet,
private val modelID: String private val modelID: String,
private val plugin: EcoPetsPlugin
) : PetEntity(pet) { ) : PetEntity(pet) {
override fun spawn(location: Location): ArmorStand { override fun spawn(location: Location): ArmorStand {
val stand = emptyArmorStandAt(location, pet) val stand = emptyArmorStandAt(location, pet)
val meAnimation = pet.modelEngineAnimation
val model = ModelEngineAPI.createActiveModel(modelID) val model = ModelEngineAPI.createActiveModel(modelID)
if (meAnimation != null) {
val animationHandler = model.animationHandler
val animationProperty = animationHandler.getAnimation(meAnimation)
if (animationProperty != null) {
animationHandler.playAnimation(animationProperty, true)
} else {
plugin.logger.warning("Animation $meAnimation not found in model $modelID, defaulting to walk!")
val animationPropertyWalk = animationHandler.getAnimation("walk")
if (animationPropertyWalk != null) {
animationHandler.playAnimation(animationPropertyWalk, true)
} else {
plugin.logger.warning("Walk animation not found in $modelID!")
}
}
}
val modelled = ModelEngineAPI.createModeledEntity(stand) val modelled = ModelEngineAPI.createModeledEntity(stand)
modelled.addActiveModel(model) modelled.addModel(model, true)
return stand return stand
} }

View File

@@ -0,0 +1,21 @@
# Read more about chains: https://plugins.auxilor.io/effects/configuring-an-effect#effect-chains
chains:
- id: example_chain
effects:
- id: teleport
- id: potion_effect
args:
effect: blindness
level: 3
duration: 30
apply_to_player: true
- id: send_message
args:
message: "&fYou have been teleported!"
action_bar: true
- id: play_sound
args:
sound: entity_dragon_fireball_explode
pitch: 1.5
volume: 4

View File

@@ -116,6 +116,9 @@ gui:
row: 6 row: 6
column: 2 column: 2
# Custom GUI slots; see here for a how-to: https://plugins.auxilor.io/all-plugins/custom-gui-slots
custom-slots: [ ]
level-gui: level-gui:
rows: 6 rows: 6
@@ -210,6 +213,9 @@ level-gui:
row: 6 row: 6
column: 5 column: 5
# Custom GUI slots; see here for a how-to: https://plugins.auxilor.io/all-plugins/custom-gui-slots
custom-slots: [ ]
pet-entity: pet-entity:
name: "%player%&f's %pet%&f (Lvl. %level%)" name: "%player%&f's %pet%&f (Lvl. %level%)"
@@ -257,7 +263,6 @@ point-names: # If you have point names that look ugly (eg g_souls) then you can
use-faster-move-trigger: true # Disable if you want move trigger to detect sub-1-block movements use-faster-move-trigger: true # Disable if you want move trigger to detect sub-1-block movements
raytrace-distance: 80 # The distance that alt_click should check for a location raytrace-distance: 80 # The distance that alt_click should check for a location
block-item-drop-place-check: true # If the block_item_drop trigger should only fire on naturally placed blocks (prevents dupes)
potions: potions:
icon: icon:
@@ -268,4 +273,4 @@ potions:
triggered: true triggered: true
particles: particles:
permanent: false permanent: false
triggered: true triggered: true

View File

@@ -21,6 +21,17 @@ messages:
gave-pet-egg: "&fSuccessfully gave %player%&f the %pet%&f pet egg!" gave-pet-egg: "&fSuccessfully gave %player%&f the %pet%&f pet egg!"
cannot-spawn-pet: "&cYou already have this pet unlocked!" cannot-spawn-pet: "&cYou already have this pet unlocked!"
invalid-amount: "&cInvalid amount!" invalid-amount: "&cInvalid amount!"
pet-already-active: "&cYou already have this pet active!"
no-pet-active: "&cYou don't have a pet active!"
activated-pet: "&fYou have activated the %pet%&f pet!"
deactivated-pet: "&fYou have deactivated the %pet%&f pet!"
must-specify-lrcdb-id: "&cYou must specify the ID of the config to download! Not sure what this means? Go to &alrcdb.auxilor.io"
lrcdb-import-error: "&cError importing config: &f%message%"
lrcdb-import-success: "&fImported &a%name%&f! Reload the plugin to install it"
must-specify-config-name: "&cYou must specify the config name!"
invalid-config-name: "&cInvalid config name!"
lrcdb-export-error: "&cError exporting config: &f%message%"
lrcdb-export-success: "&fExported &a%name%&f! View it on &alrcdb.auxilor.io&f, or share your config ID: &f%id%"
menu: menu:
title: "Pets" title: "Pets"

View File

@@ -0,0 +1,19 @@
# Options for lrcdb (https://lrcdb.auxilor.io), a website to share configs
# with other server owners, so you can get more configs without making them
# yourself!
author: "Unknown Author" # The name attached to configs you export
# Options about automatically sharing configs you create
share-configs:
# If you want all your configs to automatically be publicly available,
# set this to true. This really helps out other users!
publicly: false
# If you don't want your configs to be usable to gather information about
# plugin usage or to improve the plugins in the future, disable this.
# Nothing identifying is shared.
enabled: true
# If you disable share-configs, you can still share select configs publicly
# with /ecopets export <config>.

View File

@@ -1,806 +0,0 @@
pets:
- id: tiger
# The display name of the pet
name: "&6Tiger"
# The description of the pet
description: "&8&oLevel up by dealing melee damage"
# The xp requirements for each pet level - add new levels by adding more to this list
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
# An XP Gain method takes a trigger as the ID and a multiplier
# The multiplier takes the value produced by the trigger and multiplies it
# by some value to calculate the experience that should be given
xp-gain-methods:
- id: melee_attack
multiplier: 0.5
conditions: [ ] # You can add a list of conditions that must be met on xp gain
# Custom placeholders to be used in descriptions,
# Don't add % to the IDs, this is done automatically
# The value takes a %level% placeholder and is a mathetmatical expression
level-placeholders:
- id: "damage_multiplier"
value: "%level%"
# The text shown with the %effects% placeholder
# The number dictates the minimum level for this text to show for
# Adding new levels will override this text on those levels or above
effects-description:
1:
- "&8» &8Gives a &a+%damage_multiplier%%&8 bonus to"
- " &8melee damage"
# Same as above, but for %rewards%
rewards-description:
1:
- "&8» &8Gives a &a+%damage_multiplier%%&8 bonus to"
- " &8melee damage"
# Same as above, but for %level_up_messages%
level-up-messages:
1:
- "&8» &8Gives a &a+%damage_multiplier%%&8 bonus to"
- " &8melee damage"
# Commands to be sent on levelup, can be formatted two ways:
# level:command (e.g. 10:eco give %player% 1000), which would execute that command for level 10
# command (e.g. eco give %player% 5000), which would execute that command for all levels
level-commands: [ ]
# The effects for the pet, has %level% as a placeholder
effects:
- id: damage_multiplier
args:
multiplier: "%level% * 0.01 + 1"
triggers:
- melee_attack
# The conditions for the pet, also has %level% as a placeholder
conditions: [ ]
# The texture of the pet entity in game
# If you're using modelengine, use modelengine:id as the texture
entity-texture: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTA5NWZjYzFlM2Q3Y2JkMzUwZjE5YjM4OTQ5OGFiOGJiOTZjNjVhZDE4NWQzNDU5MjA2N2E3ZDAzM2FjNDhkZSJ9fX0="
# The icon in GUIs
icon: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTA5NWZjYzFlM2Q3Y2JkMzUwZjE5YjM4OTQ5OGFiOGJiOTZjNjVhZDE4NWQzNDU5MjA2N2E3ZDAzM2FjNDhkZSJ9fX0=
# The spawn egg
spawn-egg:
enabled: true # If the pet should have a spawn egg
item: blaze_spawn_egg unbreaking:1 hide_enchants
name: "&6Tiger&f Pet Spawn Egg"
lore:
- ""
- "&8&oPlace on the ground to"
- "&8&ounlock the &r&6Tiger&8&o pet!"
craftable: false
recipe: [ ]
# recipe-permission: ecopets.craft.tiger
- id: skeleton
name: "<gradient:#F2F2F2>Skeleton</gradient:#DBDBDB>"
description: "&8&oLevel up by dealing bow damage"
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: bow_attack
multiplier: 0.5
level-placeholders:
- id: "damage_multiplier"
value: "%level%"
effects-description:
1:
- "&8» &8Gives a &a+%damage_multiplier%%&8 bonus to"
- " &8bow damage"
rewards-description:
1:
- "&8» &8Gives a &a+%damage_multiplier%%&8 bonus to"
- " &8bow damage"
level-up-messages:
1:
- "&8» &8Gives a &a+%damage_multiplier%%&8 bonus to"
- " &8bow damage"
level-commands: [ ]
effects:
- id: damage_multiplier
args:
multiplier: "%level% * 0.01 + 1"
triggers:
- bow_attack
conditions: [ ]
entity-texture: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOWQ0NmViNjQyZGMzYTRkZmJiNWFkNTI5N2VkYWUyOTk2ZWE0Y2ZmZjkyYWMyZWI1NmRmYWU5ZWUxZDU4ZTQwOCJ9fX0="
icon: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOWQ0NmViNjQyZGMzYTRkZmJiNWFkNTI5N2VkYWUyOTk2ZWE0Y2ZmZjkyYWMyZWI1NmRmYWU5ZWUxZDU4ZTQwOCJ9fX0=
spawn-egg:
enabled: true # If the pet should have a spawn egg
item: skeleton_spawn_egg unbreaking:1 hide_enchants
name: "<gradient:#F2F2F2>Skeleton</gradient:#DBDBDB>&f Pet Spawn Egg"
lore:
- ""
- "&8&oPlace on the ground to"
- "&8&ounlock the &r<gradient:#F2F2F2>Skeleton</gradient:#DBDBDB>&8&o pet!"
craftable: false
recipe: [ ]
- id: ravager
name: "<gradient:#1e3c72>Ravager</gradient:#2a5298>"
description: "&8&oLevel up by successfully defending against village raids"
level-xp-requirements:
- 50
- 150
- 300
- 500
- 750
- 1000
- 1300
- 1650
- 2050
- 2500
- 3000
- 3550
- 4150
- 4800
- 5500
- 6250
- 7050
- 7900
- 8800
- 9750
- 10750
- 11800
- 12900
- 14050
- 15250
- 16500
- 17800
- 19150
- 20550
- 22000
- 23500
- 25050
- 26650
- 28300
- 30000
- 31750
- 33550
- 35400
- 37300
- 39250
- 41250
- 43300
- 45400
- 47550
- 49700
- 51950
- 53250
- 55600
- 57000
xp-gain-methods:
- id: win_raid
multiplier: 50
level-placeholders:
- id: "health_boost"
value: "%level%"
effects-description:
1:
- "&8» &8Gives a &a+%health_boost%%&8 bonus"
rewards-description:
1:
- "&8» &8Gives a &a+%health_boost%%&8 bonus"
level-up-messages:
1:
- "&8» &8Gives a &a+%health_boost%%&8 bonus"
level-commands: [ ]
effects:
- id: bonus_health
args:
health: "%level%"
conditions: [ ]
entity-texture: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2QyMGJmNTJlYzM5MGEwNzk5Mjk5MTg0ZmM2NzhiZjg0Y2Y3MzJiYjFiZDc4ZmQxYzRiNDQxODU4ZjAyMzVhOCJ9fX0="
icon: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2QyMGJmNTJlYzM5MGEwNzk5Mjk5MTg0ZmM2NzhiZjg0Y2Y3MzJiYjFiZDc4ZmQxYzRiNDQxODU4ZjAyMzVhOCJ9fX0=
spawn-egg:
enabled: true
item: ravager_spawn_egg unbreaking:1 hide_enchants
name: "<gradient:#1e3c72>Ravager</gradient:#2a5298>&f Pet Spawn Egg"
lore:
- ""
- "&8&oPlace on the ground to"
- "&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

@@ -0,0 +1,135 @@
# The ID of the pet is the name of the .yml file,
# for example vampire.yml has the ID of vampire
# You can place pets anywhere in this folder,
# including in subfolders if you want to organize your pet configs
# _example.yml is not loaded.
# The display name of the pet
name: "&6Tiger"
# The description of the pet
description: "&8&oLevel up by dealing melee damage"
# The xp requirements for each pet level - add new levels by adding more to this list
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
# An XP Gain method takes a trigger as the ID and a multiplier
# The multiplier takes the value produced by the trigger and multiplies it
# by some value to calculate the experience that should be given
xp-gain-methods:
- id: melee_attack
multiplier: 0.5
conditions: [ ] # You can add a list of conditions that must be met on xp gain
# Custom placeholders to be used in descriptions,
# Don't add % to the IDs, this is done automatically
# The value takes a %level% placeholder and is a mathetmatical expression
level-placeholders:
- id: "damage_multiplier"
value: "%level%"
# The text shown with the %effects% placeholder
# The number dictates the minimum level for this text to show for
# Adding new levels will override this text on those levels or above
effects-description:
1:
- "&8» &8Gives a &a+%damage_multiplier%%&8 bonus to"
- " &8melee damage"
# Same as above, but for %rewards%
rewards-description:
1:
- "&8» &8Gives a &a+%damage_multiplier%%&8 bonus to"
- " &8melee damage"
# Same as above, but for %level_up_messages%
level-up-messages:
1:
- "&8» &8Gives a &a+%damage_multiplier%%&8 bonus to"
- " &8melee damage"
# Commands to be sent on levelup, can be formatted two ways:
# level:command (e.g. 10:eco give %player% 1000), which would execute that command for level 10
# command (e.g. eco give %player% 5000), which would execute that command for all levels
level-commands: [ ]
# The effects for the pet, has %level% as a placeholder
effects:
- id: damage_multiplier
args:
multiplier: "%level% * 0.01 + 1"
triggers:
- melee_attack
# The conditions for the pet, also has %level% as a placeholder
conditions: [ ]
# The texture of the pet entity in game
# If you're using modelengine, use modelengine:id as the texture
entity-texture: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTA5NWZjYzFlM2Q3Y2JkMzUwZjE5YjM4OTQ5OGFiOGJiOTZjNjVhZDE4NWQzNDU5MjA2N2E3ZDAzM2FjNDhkZSJ9fX0="
modelengine-animation: "fly" # If you're using ModelEngine, you can specify an animation here
# The icon in GUIs
icon: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTA5NWZjYzFlM2Q3Y2JkMzUwZjE5YjM4OTQ5OGFiOGJiOTZjNjVhZDE4NWQzNDU5MjA2N2E3ZDAzM2FjNDhkZSJ9fX0=
# The spawn egg
spawn-egg:
enabled: true # If the pet should have a spawn egg
item: blaze_spawn_egg unbreaking:1 hide_enchants
name: "&6Tiger&f Pet Spawn Egg"
lore:
- ""
- "&8&oPlace on the ground to"
- "&8&ounlock the &r&6Tiger&8&o pet!"
craftable: false
recipe: [ ]
# recipe-permission: ecopets.craft.tiger

View File

@@ -0,0 +1,81 @@
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

View File

@@ -0,0 +1,104 @@
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

View File

@@ -0,0 +1,97 @@
name: "<gradient:#1e3c72>Ravager</gradient:#2a5298>"
description: "&8&oLevel up by successfully defending against village raids"
level-xp-requirements:
- 50
- 150
- 300
- 500
- 750
- 1000
- 1300
- 1650
- 2050
- 2500
- 3000
- 3550
- 4150
- 4800
- 5500
- 6250
- 7050
- 7900
- 8800
- 9750
- 10750
- 11800
- 12900
- 14050
- 15250
- 16500
- 17800
- 19150
- 20550
- 22000
- 23500
- 25050
- 26650
- 28300
- 30000
- 31750
- 33550
- 35400
- 37300
- 39250
- 41250
- 43300
- 45400
- 47550
- 49700
- 51950
- 53250
- 55600
- 57000
xp-gain-methods:
- id: win_raid
multiplier: 50
level-placeholders:
- id: "health_boost"
value: "%level%"
effects-description:
1:
- "&8» &8Gives a &a+%health_boost%%&8 bonus"
rewards-description:
1:
- "&8» &8Gives a &a+%health_boost%%&8 bonus"
level-up-messages:
1:
- "&8» &8Gives a &a+%health_boost%%&8 bonus"
level-commands: [ ]
effects:
- id: bonus_health
args:
health: "%level%"
conditions: [ ]
entity-texture: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2QyMGJmNTJlYzM5MGEwNzk5Mjk5MTg0ZmM2NzhiZjg0Y2Y3MzJiYjFiZDc4ZmQxYzRiNDQxODU4ZjAyMzVhOCJ9fX0="
icon: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2QyMGJmNTJlYzM5MGEwNzk5Mjk5MTg0ZmM2NzhiZjg0Y2Y3MzJiYjFiZDc4ZmQxYzRiNDQxODU4ZjAyMzVhOCJ9fX0=
spawn-egg:
enabled: true
item: ravager_spawn_egg unbreaking:1 hide_enchants
name: "<gradient:#1e3c72>Ravager</gradient:#2a5298>&f Pet Spawn Egg"
lore:
- ""
- "&8&oPlace on the ground to"
- "&8&ounlock the &r<gradient:#1e3c72>Ravager</gradient:#2a5298>&8&o pet!"
craftable: false
recipe: [ ]

View File

@@ -0,0 +1,120 @@
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: [ ]

View File

@@ -0,0 +1,101 @@
name: "<gradient:#F2F2F2>Skeleton</gradient:#DBDBDB>"
description: "&8&oLevel up by dealing bow damage"
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: bow_attack
multiplier: 0.5
level-placeholders:
- id: "damage_multiplier"
value: "%level%"
effects-description:
1:
- "&8» &8Gives a &a+%damage_multiplier%%&8 bonus to"
- " &8bow damage"
rewards-description:
1:
- "&8» &8Gives a &a+%damage_multiplier%%&8 bonus to"
- " &8bow damage"
level-up-messages:
1:
- "&8» &8Gives a &a+%damage_multiplier%%&8 bonus to"
- " &8bow damage"
level-commands: [ ]
effects:
- id: damage_multiplier
args:
multiplier: "%level% * 0.01 + 1"
triggers:
- bow_attack
conditions: [ ]
entity-texture: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOWQ0NmViNjQyZGMzYTRkZmJiNWFkNTI5N2VkYWUyOTk2ZWE0Y2ZmZjkyYWMyZWI1NmRmYWU5ZWUxZDU4ZTQwOCJ9fX0="
icon: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOWQ0NmViNjQyZGMzYTRkZmJiNWFkNTI5N2VkYWUyOTk2ZWE0Y2ZmZjkyYWMyZWI1NmRmYWU5ZWUxZDU4ZTQwOCJ9fX0=
spawn-egg:
enabled: true # If the pet should have a spawn egg
item: skeleton_spawn_egg unbreaking:1 hide_enchants
name: "<gradient:#F2F2F2>Skeleton</gradient:#DBDBDB>&f Pet Spawn Egg"
lore:
- ""
- "&8&oPlace on the ground to"
- "&8&ounlock the &r<gradient:#F2F2F2>Skeleton</gradient:#DBDBDB>&8&o pet!"
craftable: false
recipe: [ ]

View File

@@ -0,0 +1,103 @@
name: "&6Tiger"
description: "&8&oLevel up by dealing melee damage"
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: melee_attack
multiplier: 0.5
conditions: [ ]
level-placeholders:
- id: "damage_multiplier"
value: "%level%"
effects-description:
1:
- "&8» &8Gives a &a+%damage_multiplier%%&8 bonus to"
- " &8melee damage"
rewards-description:
1:
- "&8» &8Gives a &a+%damage_multiplier%%&8 bonus to"
- " &8melee damage"
level-up-messages:
1:
- "&8» &8Gives a &a+%damage_multiplier%%&8 bonus to"
- " &8melee damage"
level-commands: [ ]
effects:
- id: damage_multiplier
args:
multiplier: "%level% * 0.01 + 1"
triggers:
- melee_attack
conditions: [ ]
entity-texture: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTA5NWZjYzFlM2Q3Y2JkMzUwZjE5YjM4OTQ5OGFiOGJiOTZjNjVhZDE4NWQzNDU5MjA2N2E3ZDAzM2FjNDhkZSJ9fX0="
icon: player_head texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTA5NWZjYzFlM2Q3Y2JkMzUwZjE5YjM4OTQ5OGFiOGJiOTZjNjVhZDE4NWQzNDU5MjA2N2E3ZDAzM2FjNDhkZSJ9fX0=
spawn-egg:
enabled: true
item: blaze_spawn_egg unbreaking:1 hide_enchants
name: "&6Tiger&f Pet Spawn Egg"
lore:
- ""
- "&8&oPlace on the ground to"
- "&8&ounlock the &r&6Tiger&8&o pet!"
craftable: false
recipe: [ ]

View File

@@ -0,0 +1,160 @@
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

@@ -52,6 +52,10 @@ permissions:
ecopets.command.giveegg: true ecopets.command.giveegg: true
ecopets.command.givexp: true ecopets.command.givexp: true
ecopets.command.reset: true ecopets.command.reset: true
ecopets.command.activate: true
ecopets.command.deactivate: true
ecopets.command.import: true
ecopets.command.export: true
ecopets.command.reload: ecopets.command.reload:
description: Allows reloading the config description: Allows reloading the config
@@ -74,6 +78,18 @@ permissions:
ecopets.command.reset: ecopets.command.reset:
description: Allows the use of /ecopets reset. description: Allows the use of /ecopets reset.
default: op default: op
ecopets.command.import:
description: Allows the use of /ecopets import.
default: op
ecopets.command.export:
description: Allows the use of /ecopets export.
default: op
ecopets.command.activate:
description: Allows the use of /pets activate.
default: true
ecopets.command.deactivate:
description: Allows the use of /pets deactivate.
default: true
ecopets.xpmultiplier.50percent: ecopets.xpmultiplier.50percent:
description: Gives the player 50% more skill experience description: Gives the player 50% more skill experience

View File

@@ -1,4 +1,4 @@
#libreforge-updater #libreforge-updater
#Mon Jul 25 17:03:22 BST 2022 #Tue Oct 18 14:15:28 BST 2022
version=1.14.0 version=1.52.0
plugin-name=EcoPets plugin-name=EcoPets