Skip to content

Commit

Permalink
Experimental | Restructure Script Module
Browse files Browse the repository at this point in the history
  • Loading branch information
TheFloodDragon committed Jul 15, 2024
1 parent 81975d4 commit 7e57572
Show file tree
Hide file tree
Showing 30 changed files with 450 additions and 439 deletions.
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
package cn.fd.ratziel.module.item.impl.feature.action

import cn.fd.ratziel.core.Identifier
import cn.fd.ratziel.function.argument.SimpleArgumentContext
import cn.fd.ratziel.module.item.api.feature.ItemTrigger
import cn.fd.ratziel.module.item.impl.feature.action.triggers.*
import cn.fd.ratziel.module.item.impl.service.NativeServiceRegistry
import cn.fd.ratziel.script.ScriptEnvironment
import cn.fd.ratziel.script.SimpleScriptEnv
import cn.fd.ratziel.script.api.ScriptEnvironment
import cn.fd.ratziel.script.impl.SimpleScriptEnvironment
import java.util.concurrent.ConcurrentHashMap

/**
Expand Down Expand Up @@ -42,15 +43,17 @@ object ActionManager {
fun trigger(identifier: Identifier, trigger: ItemTrigger, environment: ScriptEnvironment) {
// 获取物品动作
val action = actionMap[identifier]?.get(trigger)
// 设置绑定键
environment.context.add(environment.bindings)
// // 设置绑定键
// environment.context.add(environment.bindings)
// // 执行物品动作
// action?.execute(environment.context)//
// 执行物品动作
action?.execute(environment.context)
action?.execute(SimpleArgumentContext(environment))
}

@JvmStatic
fun trigger(identifier: Identifier, trigger: ItemTrigger, function: ScriptEnvironment.() -> Unit) =
trigger(identifier, trigger, SimpleScriptEnv().apply(function))
trigger(identifier, trigger, SimpleScriptEnvironment().apply(function))

/**
* 匹配 [TriggerMap]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@ package cn.fd.ratziel.module.item.impl.feature.action

import cn.fd.ratziel.function.argument.ArgumentContext
import cn.fd.ratziel.module.item.api.feature.ItemAction
import cn.fd.ratziel.script.ScriptBlockBuilder
import cn.fd.ratziel.script.ScriptManager
import cn.fd.ratziel.script.SimpleScriptEnv
import javax.script.Bindings
import javax.script.SimpleBindings
import cn.fd.ratziel.script.ScriptTypes
import cn.fd.ratziel.script.api.EvaluableScript
import cn.fd.ratziel.script.api.ScriptEnvironment
import cn.fd.ratziel.script.impl.SimpleScriptEnvironment

/**
* ScriptedAction
Expand All @@ -18,16 +17,14 @@ open class ScriptedAction(
/**
* 脚本动作块
*/
val script: ScriptBlockBuilder.Block,
val script: EvaluableScript,
) : ItemAction {

override fun execute(context: ArgumentContext) {
// 获取绑定键
val bindings: Bindings = context.popOr(Bindings::class.java, SimpleBindings())
// 环境
val env = SimpleScriptEnv(bindings, context)
// 执行
script.evaluate(ScriptManager.defaultLang, env)
val env = context.popOr(ScriptEnvironment::class.java, SimpleScriptEnvironment())
// 评估
script.evaluate(ScriptTypes.KETHER.executor, env)
}

}
1 change: 0 additions & 1 deletion project/module-script/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
dependencies {
// Kotlin Script
compileOnly(kotlin("main-kts"))
compileOnly(kotlin("scripting-common"))
compileOnly(kotlin("scripting-jvm"))
compileOnly(kotlin("scripting-jvm-host"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
transitive = false
),
@RuntimeDependency(
value = "!org.jetbrains.kotlin:kotlin-compiler-embeddable:" + CoreEnv.KOTLIN_VERSION,
value = "!org.jetbrains.kotlin:kotlin-compiler:" + CoreEnv.KOTLIN_VERSION,
transitive = false
),
@RuntimeDependency(
Expand All @@ -33,19 +33,19 @@
transitive = false
),
@RuntimeDependency(
value = "!org.jetbrains.kotlin:kotlin-scripting-jvm-host:" + CoreEnv.KOTLIN_VERSION,
value = "!org.jetbrains.kotlin:kotlin-scripting-jvm-host-unshaded:" + CoreEnv.KOTLIN_VERSION,
transitive = false
),
@RuntimeDependency(
value = "!org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:" + CoreEnv.KOTLIN_VERSION,
value = "!org.jetbrains.kotlin:kotlin-scripting-compiler:" + CoreEnv.KOTLIN_VERSION,
transitive = false
),
@RuntimeDependency(
value = "!org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:" + CoreEnv.KOTLIN_VERSION,
value = "!org.jetbrains.kotlin:kotlin-scripting-compiler-impl:" + CoreEnv.KOTLIN_VERSION,
transitive = false
),
@RuntimeDependency(
value = "!org.jetbrains.kotlin:kotlin-scripting-jsr223:" + CoreEnv.KOTLIN_VERSION,
value = "!org.jetbrains.kotlin:kotlin-scripting-jsr223-unshaded:" + CoreEnv.KOTLIN_VERSION,
transitive = false
),
@RuntimeDependency(
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package cn.fd.ratziel.script.api;


import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import javax.script.ScriptException;

/**
* EvaluableScript
*
* @author TheFloodDragon
* @since 2024/7/15 13:14
*/
public interface EvaluableScript {

/**
* 评估脚本
*
* @param executor 覆写的脚本执行器
* @param environment 覆写的的脚本环境
* @throws ScriptException 当脚本评估中产生错误时抛出
*/
@Nullable
Object evaluate(@NotNull ScriptExecutor executor, @NotNull ScriptEnvironment environment) throws ScriptException;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package cn.fd.ratziel.script.api;

/**
* ScriptContent
*
* @author TheFloodDragon
* @since 2024/7/14 21:28
*/
public interface ScriptContent {

/**
* 获取脚本原始内容
*/
String getContent();

}
Loading

0 comments on commit 7e57572

Please sign in to comment.