Skip to content

Commit

Permalink
refactor/fix: scriptapi API provider
Browse files Browse the repository at this point in the history
fixes #1811
  • Loading branch information
1zun4 committed Jan 17, 2024
1 parent ebcda36 commit d434d7f
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 51 deletions.
8 changes: 2 additions & 6 deletions src/main/kotlin/net/ccbluex/liquidbounce/script/Script.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,11 @@ package net.ccbluex.liquidbounce.script

import net.ccbluex.liquidbounce.features.command.CommandManager
import net.ccbluex.liquidbounce.features.command.builder.CommandBuilder
import net.ccbluex.liquidbounce.features.command.builder.ParameterBuilder
import net.ccbluex.liquidbounce.features.module.Module
import net.ccbluex.liquidbounce.features.module.ModuleManager
import net.ccbluex.liquidbounce.script.bindings.api.JsApiProvider
import net.ccbluex.liquidbounce.script.bindings.api.JsContextProvider
import net.ccbluex.liquidbounce.script.bindings.features.JsModule
import net.ccbluex.liquidbounce.script.bindings.features.JsSetting
import net.ccbluex.liquidbounce.script.bindings.globals.JsClient
import net.ccbluex.liquidbounce.utils.client.logger
import net.ccbluex.liquidbounce.utils.client.mc
import org.graalvm.polyglot.Context
import org.graalvm.polyglot.HostAccess
import java.io.File
Expand All @@ -48,7 +44,7 @@ class Script(val scriptFile: File) {
// Global instances
val jsBindings = getBindings("js")

JsApiProvider.setupUsefulContext(jsBindings)
JsContextProvider.setupUsefulContext(jsBindings)

// Global functions
jsBindings.putMember("registerScript", RegisterScript())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,15 @@ import net.ccbluex.liquidbounce.script.bindings.globals.JsClient
import net.ccbluex.liquidbounce.utils.client.mc
import net.minecraft.util.Hand
import net.minecraft.util.math.BlockPos
import net.minecraft.util.math.MathHelper
import net.minecraft.util.math.Vec3d
import net.minecraft.util.math.Vec3i
import org.graalvm.polyglot.Value

/**
* The main hub of the ScriptAPI that provides access to all kind of useful APIs.
* The main hub of the ScriptAPI that provides access to a useful set of members.
*/
object JsApiProvider {
object JsContextProvider {

internal fun setupUsefulContext(context: Value) = context.apply {
// Class bindings
Expand All @@ -40,50 +42,24 @@ object JsApiProvider {
putMember("CommandBuilder", CommandBuilder)
putMember("ParameterBuilder", ParameterBuilder)
// -> Minecraft API
// todo: test if this works
putMember("Vec3i", Vec3i::class.java)
putMember("Vec3d", Vec3d::class.java)
putMember("MathHelper", MathHelper::class.java)
putMember("BlockPos", BlockPos::class.java)
putMember("Hand", Hand::class.java)

// Variable bindings
putMember("mc", mc)
putMember("client", JsClient)
putMember("api", JsApiProvider)
}

/**
* A collection of useful rotation utilities for the ScriptAPI.
* This SHOULD not be changed in a way that breaks backwards compatibility.
*
* This is a singleton object, so it can be accessed from the script API like this:
* ```js
* api.rotationUtil.newRaytracedRotationEntity(entity, 4.2, 0.0)
* api.rotationUtil.newRotationEntity(entity)
* api.rotationUtil.aimAtRotation(rotation, true)
* ```
*/
@JvmField
val rotationUtil = JsRotationUtil

/**
* Object used by the script API to provide an idiomatic way of creating module values.
*/
@JvmField
val itemUtil = JsItemUtil

@JvmField
val networkUtil = JsNetworkUtil

@JvmField
val interactionUtil = JsInteractionUtil

@JvmField
val blockUtil = JsBlockUtil

@JvmField
val reflectionUtil = JsReflectionUtil

@JvmField
val movementUtil = JsMovementUtil
// Register utilities
putMember("rotationUtil", JsRotationUtil)
putMember("itemUtil", JsItemUtil)
putMember("networkUtil", JsNetworkUtil)
putMember("interactionUtil", JsInteractionUtil)
putMember("blockUtil", JsBlockUtil)
putMember("movementUtil", JsMovementUtil)
putMember("reflectionUtil", JsReflectionUtil)
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,30 @@
package net.ccbluex.liquidbounce.script.bindings.api

import net.ccbluex.liquidbounce.utils.client.player
import net.ccbluex.liquidbounce.utils.entity.moving
import net.ccbluex.liquidbounce.utils.entity.sqrtSpeed
import net.ccbluex.liquidbounce.utils.entity.strafe

object JsMovementUtil {

fun strafe() = player.strafe()
fun speed(): Double = player.sqrtSpeed

fun strafeSpeed(speed: Double) = player.strafe(speed.toFloat())
fun moving(): Boolean = player.moving

fun velocity() = player.velocity
fun strafe() {
player.strafe()
}

fun addVelocity(x: Double, y: Double, z: Double) = player.addVelocity(x, y, z)
fun strafeWithSpeed(speed: Double) {
player.strafe(speed = speed)
}

fun stopVelocity() = player.setVelocity(0.0, 0.0, 0.0)
fun strafeWithStrength(strength: Double) {
player.strafe(strength = strength)
}

fun jump() = player.jump()
fun strafeWithSpeedAndStrength(speed: Double, strength: Double) {
player.strafe(speed = speed, strength = strength)
}

}

0 comments on commit d434d7f

Please sign in to comment.