Skip to content

Commit

Permalink
Experimental | Move & Differentiate BukkitAction
Browse files Browse the repository at this point in the history
  • Loading branch information
TheFloodDragon committed Jul 21, 2024
1 parent 0e98697 commit 5721900
Show file tree
Hide file tree
Showing 8 changed files with 41 additions and 22 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package cn.fd.ratziel.module.item.impl.builder.resolver
package cn.fd.ratziel.module.item.api.builder

import cn.fd.ratziel.module.item.api.ArgumentResolver

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@ interface ItemTrigger {
/**
* 触发器名称列表
*/
val names: Array<String>
val names: Array<out String>

}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import cn.fd.ratziel.core.util.priority
import cn.fd.ratziel.core.util.sortPriority
import cn.fd.ratziel.function.ArgumentContext
import cn.fd.ratziel.module.item.api.builder.ItemResolver
import cn.fd.ratziel.module.item.api.builder.SectionResolver
import cn.fd.ratziel.module.item.impl.builder.DefaultItemSerializer
import cn.fd.ratziel.module.item.impl.builder.resolver.sectionResolvers.PapiResolver
import kotlinx.serialization.json.JsonElement
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package cn.fd.ratziel.module.item.impl.builder.resolver

import cn.fd.ratziel.core.util.splitNonEscaped
import cn.fd.ratziel.function.ArgumentContext
import cn.fd.ratziel.module.item.api.builder.SectionResolver
import cn.fd.ratziel.module.item.impl.builder.resolver.sectionResolvers.PapiResolver
import cn.fd.ratziel.module.item.impl.builder.resolver.sectionResolvers.RandomResolver
import taboolib.common.util.VariableReader
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package cn.fd.ratziel.module.item.impl.builder.resolver.sectionResolvers

import cn.fd.ratziel.function.ArgumentContext
import cn.fd.ratziel.function.popOrNull
import cn.fd.ratziel.module.item.impl.builder.resolver.SectionResolver
import cn.fd.ratziel.module.item.api.builder.SectionResolver
import org.bukkit.OfflinePlayer
import taboolib.common.platform.ProxyPlayer
import taboolib.platform.compat.replacePlaceholder
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package cn.fd.ratziel.module.item.impl.builder.resolver.sectionResolvers

import cn.fd.ratziel.function.ArgumentContext
import cn.fd.ratziel.module.item.impl.builder.resolver.SectionResolver
import cn.fd.ratziel.module.item.api.builder.SectionResolver
import taboolib.common.util.random

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,10 @@ object ActionManager {
*/
val triggers: MutableSet<ItemTrigger> = mutableSetOf(
AttackTrigger, DamageTrigger, BreakTrigger,
InteractTrigger.LeftClick, InteractTrigger.RightClick,
ReleaseTrigger,
)
).apply {
addAll(InteractTrigger.Triggers.values())
}

/**
* 物品唯一标识符 - 触发器表 (存有物品触发器和物品动作)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package cn.fd.ratziel.module.item.impl.feature.action.triggers

import cn.fd.ratziel.core.Identifier
import cn.fd.ratziel.module.item.api.feature.ItemTrigger
import cn.fd.ratziel.module.item.impl.feature.action.ActionManager
import cn.fd.ratziel.script.api.ScriptEnvironment
import cn.fd.ratziel.script.impl.SimpleScriptEnv
import org.bukkit.event.block.Action.*
import org.bukkit.event.player.PlayerInteractEvent
Expand Down Expand Up @@ -29,30 +31,44 @@ object InteractTrigger {
set("event", event)
set("item", item)
set("neoItem", neoItem)
set("block", event.clickedBlock)
set("position", event.clickedPosition)
}
// 触发触发器
when (event.action) {

// 左键
LEFT_CLICK_AIR, LEFT_CLICK_BLOCK ->
ActionManager.trigger(neoItem.identifier, LeftClick, env)

// 右键
RIGHT_CLICK_AIR, RIGHT_CLICK_BLOCK ->
ActionManager.trigger(neoItem.identifier, RightClick, env)

LEFT_CLICK_AIR -> Triggers.LEFT_CLICK_AIR.trigger(neoItem.identifier, env)
LEFT_CLICK_BLOCK -> Triggers.LEFT_CLICK_BLOCK.trigger(neoItem.identifier, env)
RIGHT_CLICK_AIR -> Triggers.RIGHT_CLICK_AIR.trigger(neoItem.identifier, env)
RIGHT_CLICK_BLOCK -> Triggers.RIGHT_CLICK_BLOCK.trigger(neoItem.identifier, env)
else -> {}
}
}

object LeftClick : ItemTrigger {
override val names = arrayOf("onLeft", "left", "onLeftClick", "leftClick")
}
enum class Triggers(
override vararg val names: String,
val parent: ItemTrigger? = null
) : ItemTrigger {

/**
* includes [LEFT_CLICK_AIR] [LEFT_CLICK_BLOCK]
*/
LEFT_CLICK("onLeft", "left", "onLeftClick", "leftClick"),

/**
* includes [RIGHT_CLICK_AIR] [RIGHT_CLICK_BLOCK]
*/
RIGHT_CLICK("onLeft", "left", "onLeftClick", "leftClick"),

LEFT_CLICK_AIR("onLeftClickedAir", "left-air", "left-click-air", parent = LEFT_CLICK),
LEFT_CLICK_BLOCK("onLeftClickedBlock", "left-block", "left-click-block", parent = LEFT_CLICK),
RIGHT_CLICK_AIR("onRightClickedAir", "right-air", "right-click-air", parent = RIGHT_CLICK),
RIGHT_CLICK_BLOCK("onRightClickedBlock", "right-block", "right-click-block", parent = RIGHT_CLICK);

fun trigger(identifier: Identifier, environment: ScriptEnvironment) {
// Trigger myself
ActionManager.trigger(identifier, this, environment)
// Trigger parent
if (parent != null) ActionManager.trigger(identifier, parent, environment)
}

object RightClick : ItemTrigger {
override val names = arrayOf("onRight", "right", "onRightClick", "rightClick")
}

}

0 comments on commit 5721900

Please sign in to comment.