Skip to content

Commit

Permalink
feat: Update getters to use FunctionExpression
Browse files Browse the repository at this point in the history
  • Loading branch information
0ffz committed Aug 3, 2024
1 parent 25d4834 commit ac33061
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 18 deletions.
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
package com.mineinabyss.geary.papermc.features.common.getters

import com.mineinabyss.geary.actions.Action
import com.mineinabyss.geary.actions.ActionGroupContext
import com.mineinabyss.geary.actions.expressions.FunctionExpression
import com.mineinabyss.geary.datatypes.GearyEntity
import com.mineinabyss.idofront.typealiases.BukkitEntity
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import org.bukkit.Location
import org.bukkit.entity.LivingEntity


@Serializable
@SerialName("geary:get.location")
class GetLocation : Action {
override fun ActionGroupContext.execute(): Location? = entity.get<BukkitEntity>()?.location
@SerialName("geary:get_location")
class GetLocation : FunctionExpression<GearyEntity, Location?> {
override fun ActionGroupContext.map(input: GearyEntity): Location? {
return input.get<BukkitEntity>()?.location
}
}
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
package com.mineinabyss.geary.papermc.features.common.getters

import com.mineinabyss.geary.actions.Action
import com.mineinabyss.geary.actions.ActionGroupContext
import com.mineinabyss.geary.actions.expressions.Expression
import com.mineinabyss.geary.actions.expressions.FunctionExpression
import com.mineinabyss.geary.datatypes.GearyEntity
import com.mineinabyss.geary.papermc.tracking.entities.toGearyOrNull
import com.mineinabyss.idofront.typealiases.BukkitEntity
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
@SerialName("geary:get.nearby_entities")
@SerialName("geary:get_nearby_entities")
class GetNearbyEntities(
val radius: Expression<Double>,
) : Action {
override fun ActionGroupContext.execute(): List<GearyEntity> {
) : FunctionExpression<GearyEntity, List<GearyEntity>> {
override fun ActionGroupContext.map(input: GearyEntity): List<GearyEntity> {
val radius = eval(radius)
val bukkit = entity.get<BukkitEntity>() ?: return emptyList()
val bukkit = input.get<BukkitEntity>() ?: return emptyList()
return bukkit
.getNearbyEntities(radius, radius, radius)
.mapNotNull { it.toGearyOrNull().takeIf { it != entity } }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package com.mineinabyss.geary.papermc.features.common.getters

import com.mineinabyss.geary.actions.Action
import com.mineinabyss.geary.actions.ActionGroupContext
import com.mineinabyss.geary.actions.expressions.Expression
import com.mineinabyss.geary.actions.expressions.FunctionExpression
import com.mineinabyss.geary.datatypes.GearyEntity
import com.mineinabyss.idofront.typealiases.BukkitEntity
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
Expand All @@ -11,11 +12,11 @@ import org.bukkit.entity.LivingEntity


@Serializable
@SerialName("geary:get.target_block")
@SerialName("geary:get_target_block")
class GetTargetBlock(
val maxDistance: Expression<Int>,
) : Action {
override fun ActionGroupContext.execute(): Location? {
) : FunctionExpression<GearyEntity, Location?> {
override fun ActionGroupContext.map(input: GearyEntity): Location? {
val bukkit = entity.get<BukkitEntity>() ?: return null
return (bukkit as? LivingEntity)?.getTargetBlock(null, eval(maxDistance))?.location
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class MythicSkillsAction(
serialName = "geary:mythic_skills",
inner = ListSerializer(String.serializer()),
inverseTransform = { it.keys },
transform = ::MythicSkillsAction
transform = { MythicSkillsAction(it) }
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class MythicSkillsCondition(
serialName = "geary:mythic_conditions",
inner = ListSerializer(String.serializer()),
inverseTransform = { it.keys },
transform = ::MythicSkillsCondition
transform = { MythicSkillsCondition(it) }
)

override fun ActionGroupContext.execute(): Boolean {
Expand All @@ -29,4 +29,4 @@ class MythicSkillsCondition(
condition.evaluateEntity(entity)
}
}
}
}
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[versions]
geary = "0.26.3-dev.4"
geary = "0.26.3-dev.5"

[libraries]
geary-core = { module = "com.mineinabyss:geary-core", version.ref = "geary" }
Expand Down

0 comments on commit ac33061

Please sign in to comment.