Skip to content

Commit

Permalink
Improved _example.yml, added permanent mob effects
Browse files Browse the repository at this point in the history
  • Loading branch information
WillFP committed Jan 6, 2024
1 parent 8745ee5 commit 57a4f1a
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import com.willfp.eco.core.command.impl.PluginCommand
import com.willfp.eco.core.display.DisplayModule
import com.willfp.eco.core.entities.ai.EntityGoals
import com.willfp.eco.core.integrations.IntegrationLoader
import com.willfp.eco.util.toSingletonList
import com.willfp.ecomobs.category.MobCategories
import com.willfp.ecomobs.category.spawning.spawnpoints.SpawnPointGenerator
import com.willfp.ecomobs.commands.CommandEcoMobs
Expand All @@ -19,8 +20,13 @@ import com.willfp.ecomobs.integrations.libsdisguises.IntegrationLibsDisguises
import com.willfp.ecomobs.integrations.modelengine.IntegrationModelEngine
import com.willfp.ecomobs.mob.EcoMobs
import com.willfp.ecomobs.mob.damage.TopDamagerHandler
import com.willfp.ecomobs.mob.impl.ecoMob
import com.willfp.libreforge.EmptyProvidedHolder.holder
import com.willfp.libreforge.EntityProvidedHolder
import com.willfp.libreforge.loader.LibreforgePlugin
import com.willfp.libreforge.loader.configs.ConfigCategory
import com.willfp.libreforge.registerSpecificHolderProvider
import org.bukkit.entity.Mob
import org.bukkit.event.Listener

internal lateinit var plugin: EcoMobsPlugin
Expand All @@ -34,6 +40,14 @@ class EcoMobsPlugin : LibreforgePlugin() {
plugin = this
}

override fun handleEnable() {
registerSpecificHolderProvider<Mob> {
it.ecoMob?.entityHolder.toSingletonList().map { holder ->
EntityProvidedHolder(holder, it)
}
}
}

override fun handleLoad() {
EntityGoals.register(EntityGoalRandomTeleport.Deserializer)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import com.willfp.ecomobs.category.MobCategory
import com.willfp.ecomobs.integrations.MobIntegration
import com.willfp.ecomobs.mob.event.MobEvent
import com.willfp.ecomobs.mob.options.SpawnEgg
import com.willfp.libreforge.Holder
import com.willfp.libreforge.triggers.DispatchedTrigger
import org.bukkit.Location
import org.bukkit.entity.Mob
Expand Down Expand Up @@ -50,6 +51,11 @@ interface EcoMob : KRegistrable {
*/
val customEntity: CustomEntity

/**
* The entity holder.
*/
val entityHolder: Holder

/**
* Get a living mob from a bukkit mob.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,19 @@ import com.willfp.ecomobs.tick.TickHandlerBossBar
import com.willfp.ecomobs.tick.TickHandlerDisplayName
import com.willfp.ecomobs.tick.TickHandlerLifespan
import com.willfp.libreforge.ConfigViolation
import com.willfp.libreforge.Holder
import com.willfp.libreforge.ViolationContext
import com.willfp.libreforge.conditions.ConditionList
import com.willfp.libreforge.conditions.Conditions
import com.willfp.libreforge.conditions.emptyConditionList
import com.willfp.libreforge.effects.EffectList
import com.willfp.libreforge.effects.Effects
import com.willfp.libreforge.enumValueOfOrNull
import com.willfp.libreforge.triggers.DispatchedTrigger
import net.kyori.adventure.bossbar.BossBar
import org.bukkit.Bukkit
import org.bukkit.Location
import org.bukkit.NamespacedKey
import org.bukkit.entity.Mob
import org.bukkit.entity.Player
import org.bukkit.event.entity.CreatureSpawnEvent
Expand Down Expand Up @@ -311,6 +316,17 @@ internal class ConfigDrivenEcoMob(
this.spawn(it, SpawnReason.COMMAND)!!.entity
}.apply { register() }

override val entityHolder = object : Holder {
override val id = plugin.createNamespacedKey(getID())

override val effects: EffectList = Effects.compile(
config.getSubsections("effects.permanent-effects"),
context.with("effects").with("permanent effects")
)

override val conditions = emptyConditionList()
}

/*
----------
*/
Expand Down
20 changes: 18 additions & 2 deletions eco-core/core-plugin/src/main/resources/mobs/_example.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,43 +52,59 @@ custom-ai:
# How the mob should behave.
entity-goals: [ ]

# Effects are done from the player's perspective: to treat the player as the victim,
# either use self_as_victim in args, or use player_as_victim in mutators.
# Some effects are ran from the perspective of the entity, and others from the perspective
# of the player - each section is marked with which perspective it is run from.

# You can use display name placeholders in effects
# You can also use top damager placeholders:
# %top_damager_<place>_name%, %top_damager_<place>_damage%, %top_damager_<place>_display%
effects:
# Effects that are active all the time
# Ran from the perspective of the entity
permanent-effects: [ ]

# Effects ran when the mob spawns
# Ran from the perspective of the entity
spawn: [ ]

# Effects ran when the mob despawns
# Ran from the perspective of the entity
despawn: [ ]

# Effects ran when the player interacts with the mob
# Ran from the perspective of the player
interact: [ ]

# Effects ran when the player melee attacks the mob
# Ran from the perspective of the player
melee-attack: [ ]

# Effects ran when the player does a ranged attack on the mob
# Ran from the perspective of the player
ranged-attack: [ ]

# Effects ran when the player attacks the mob
# Ran from the perspective of the player
any-attack: [ ]

# Effects ran when the mob takes damage
# Ran from the perspective of the entity
take-damage: [ ]

# Effects ran when the player is damaged by the mob
# Ran from the perspective of the player
damage-player: [ ]

# Effects ran when the player is killed by the mob
# Ran from the perspective of the player
kill-player: [ ]

# Effects ran when the mob dies
# Ran from the perspective of the entity
death: [ ]

# Effects ran when the mob is killed by the player
# Ran from the perspective of the player
kill: [ ]

# The lifespan of the mob, in seconds. Set to -1 to disable.
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#libreforge-updater
#Thu Jan 04 17:25:24 GMT 2024
kotlin.code.style=official
libreforge-version=4.53.1
libreforge-version=4.54.0
version=10.0.0-b6

0 comments on commit 57a4f1a

Please sign in to comment.