IntellectualSites / IntellectualSites/FastAsyncWorldEdit

CraftScript imports are completely broken

Open
#3,432 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Requires Testing
Dominant language
Java
Stars
806
Forks
394
Avg merge
22h 19m
Merged PRs (30d)
14

Description

Server Implementation

Paper

Server Version

1.21.8

Describe the bug

Importing any Java classes completely doesn't work. Using importPackage(Packages.com.sk89q.worldedit.math) and trying to access something from those packages (like BlockVector3.at()) throws a 'BlockVector3 is not defined' error. Accessing it directly (Packages.com.sk89q.worldedit.math.BlockVector3.at()) throws the error TypeError: Cannot call property at in object [JavaPackage com.sk89q.worldedit.math.BlockVector3] It is not a function. It is "object". It seems as if the importer has created some way to access it, but has not actually retrieved it; it is always just an object. You can even try to access things that don't exist at all, and nothing changes.

To Reproduce

I've included the Script setup in case I've done something horribly wrong.

  1. Download the zip at https://github.com/mozilla/rhino/releases/tag/Rhino1_7_15_1_Release, extract, and retrieve the runtime jar (This was the latest version that has built downloads, but previous versions didn't change anything), naming it js.jar in the plugins/FastAsyncWorldEdit folder.
  2. Create the craftscripts folder and create a script (script.js).
  3. Add this code (or something similar that uses an import):
importPackage(Packages.com.sk89q.worldedit.math)
var pos = BlockVector3.at(0, 100, 0)
  1. Run (/cs script.js) and notice the error.
  2. Try the following code (another recommended way in case of broken importPackage):
var pos = Packages.com.sk89q.worldedit.math.BlockVector3.at(0, 100, 0)
  1. Notice the error
Expected behaviour

Java packages should be possible to use; in my example, getting a BlockVector3 to use elsewhere.

Screenshots / Videos
Image Image
Error log (if applicable)
[18:03:20] [Server thread/INFO]: UplandJacob issued server command: /.s
[18:03:20] [AsyncNotifyKeyedQueue - 10/WARN]: Failed to execute script
javax.script.ScriptException: TypeError: Cannot call property at in object [JavaPackage com.sk89q.worldedit.math.BlockVector3]. It is not a function, it is "object". (C:\Users\jacob\Desktop\BWSMP-Test-Server\plugins\FastAsyncWorldEdit\craftscripts\script.js#1) in C:\Users\jacob\Desktop\BWSMP-Test-Server\plugins\FastAsyncWorldEdit\craftscripts\script.js at line number 1
	at FastAsyncWorldEdit-Paper-2.14.4-SNAPSHOT-1257.jar//com.sk89q.worldedit.scripting.RhinoCraftScriptEngine.evaluate(RhinoCraftScriptEngine.java:84) ~[?:?]
	at FastAsyncWorldEdit-Paper-2.14.4-SNAPSHOT-1257.jar//com.sk89q.worldedit.WorldEdit.runScript(WorldEdit.java:884) ~[?:?]
	at FastAsyncWorldEdit-Paper-2.14.4-SNAPSHOT-1257.jar//com.sk89q.worldedit.command.ScriptingCommands.executeLast(ScriptingCommands.java:116) ~[?:?]
	at FastAsyncWorldEdit-Paper-2.14.4-SNAPSHOT-1257.jar//com.sk89q.worldedit.command.ScriptingCommandsRegistration.cmd$_s(ScriptingCommandsRegistration.java:133) ~[?:?]
	at FastAsyncWorldEdit-Paper-2.14.4-SNAPSHOT-1257.jar//org.enginehub.piston.CommandManager.execute(CommandManager.java:157) ~[?:?]
	at FastAsyncWorldEdit-Paper-2.14.4-SNAPSHOT-1257.jar//com.sk89q.worldedit.extension.platform.PlatformCommandManager.lambda$handleCommandOnCurrentThread$16(PlatformCommandManager.java:712) ~[?:?]
	at FastAsyncWorldEdit-Paper-2.14.4-SNAPSHOT-1257.jar//com.sk89q.worldedit.extension.platform.PlatformCommandManager.handleCommandTask(PlatformCommandManager.java:733) ~[?:?]
	at FastAsyncWorldEdit-Paper-2.14.4-SNAPSHOT-1257.jar//com.sk89q.worldedit.extension.platform.PlatformCommandManager.handleCommandOnCurrentThread(PlatformCommandManager.java:714) ~[?:?]
	at FastAsyncWorldEdit-Paper-2.14.4-SNAPSHOT-1257.jar//com.sk89q.worldedit.extension.platform.PlatformCommandManager.lambda$handleCommand$14(PlatformCommandManager.java:685) ~[?:?]
	at FastAsyncWorldEdit-Paper-2.14.4-SNAPSHOT-1257.jar//com.sk89q.worldedit.extension.platform.AbstractPlayerActor.lambda$runAction$2(AbstractPlayerActor.java:717) ~[?:?]
	at FastAsyncWorldEdit-Paper-2.14.4-SNAPSHOT-1257.jar//com.fastasyncworldedit.core.util.task.AsyncNotifyKeyedQueue.lambda$run$0(AsyncNotifyKeyedQueue.java:48) ~[?:?]
	at FastAsyncWorldEdit-Paper-2.14.4-SNAPSHOT-1257.jar//com.fastasyncworldedit.core.util.task.AsyncNotifyKeyedQueue.lambda$call$1(AsyncNotifyKeyedQueue.java:58) ~[?:?]
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[?:?]
	at FastAsyncWorldEdit-Paper-2.14.4-SNAPSHOT-1257.jar//com.fastasyncworldedit.core.util.task.KeyQueuedExecutorService$KeyRunner.lambda$run$0(KeyQueuedExecutorService.java:150) ~[?:?]
	at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.compute(ForkJoinTask.java:1726) ~[?:?]
	at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.compute(ForkJoinTask.java:1717) ~[?:?]
	at java.base/java.util.concurrent.ForkJoinTask$InterruptibleTask.exec(ForkJoinTask.java:1641) ~[?:?]
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:507) ~[?:?]
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1460) ~[?:?]
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2036) ~[?:?]
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:189) ~[?:?]
Caused by: org.mozilla.javascript.EcmaError: TypeError: Cannot call property at in object [JavaPackage com.sk89q.worldedit.math.BlockVector3]. It is not a function, it is "object". (C:\Users\jacob\Desktop\BWSMP-Test-Server\plugins\FastAsyncWorldEdit\craftscripts\script.js#1)
	at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:4692) ~[rhino-1.7.15.jar:1.7.15]
	at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:4673) ~[rhino-1.7.15.jar:1.7.15]
	at org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:4705) ~[rhino-1.7.15.jar:1.7.15]
	at org.mozilla.javascript.ScriptRuntime.typeErrorById(ScriptRuntime.java:4710) ~[rhino-1.7.15.jar:1.7.15]
	at org.mozilla.javascript.ScriptRuntime.notFunctionError(ScriptRuntime.java:4791) ~[rhino-1.7.15.jar:1.7.15]
	at org.mozilla.javascript.ScriptRuntime.getPropFunctionAndThisHelper(ScriptRuntime.java:2656) ~[rhino-1.7.15.jar:1.7.15]
	at org.mozilla.javascript.ScriptRuntime.getPropFunctionAndThis(ScriptRuntime.java:2639) ~[rhino-1.7.15.jar:1.7.15]
	at org.mozilla.javascript.gen.C__Users_jacob_Desktop_BWSMP_Test_Server_plugins_FastAsyncWorldEdit_craftscripts_script_js_49._c_script_0(C:\Users\jacob\Desktop\BWSMP-Test-Server\plugins\FastAsyncWorldEdit\craftscripts\script.js:1) ~[?:?]
	at org.mozilla.javascript.gen.C__Users_jacob_Desktop_BWSMP_Test_Server_plugins_FastAsyncWorldEdit_craftscripts_script_js_49.call(C:\Users\jacob\Desktop\BWSMP-Test-Server\plugins\FastAsyncWorldEdit\craftscripts\script.js) ~[?:?]
	at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:383) ~[rhino-1.7.15.jar:1.7.15]
	at FastAsyncWorldEdit-Paper-2.14.4-SNAPSHOT-1257.jar//com.sk89q.worldedit.scripting.RhinoContextFactory.doTopCall(RhinoContextFactory.java:68) ~[?:?]
	at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3940) ~[rhino-1.7.15.jar:1.7.15]
	at org.mozilla.javascript.gen.C__Users_jacob_Desktop_BWSMP_Test_Server_plugins_FastAsyncWorldEdit_craftscripts_script_js_49.call(C:\Users\jacob\Desktop\BWSMP-Test-Server\plugins\FastAsyncWorldEdit\craftscripts\script.js) ~[?:?]
	at org.mozilla.javascript.gen.C__Users_jacob_Desktop_BWSMP_Test_Server_plugins_FastAsyncWorldEdit_craftscripts_script_js_49.exec(C:\Users\jacob\Desktop\BWSMP-Test-Server\plugins\FastAsyncWorldEdit\craftscripts\script.js) ~[?:?]
	at org.mozilla.javascript.Context.evaluateString(Context.java:1172) ~[rhino-1.7.15.jar:1.7.15]
	at FastAsyncWorldEdit-Paper-2.14.4-SNAPSHOT-1257.jar//com.sk89q.worldedit.scripting.RhinoCraftScriptEngine.evaluate(RhinoCraftScriptEngine.java:63) ~[?:?]
	... 20 more

I had been trying a gazillion different things, so in the logs below, it will be very chaotic.

Fawe Debugpaste

https://athion.net/ISPaster/paste/view/499fa5749f654941ad913fcbfc89a97e

Are you interested in contributing a fix?

No

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with com.sk89q.worldedit.scripting.RhinoCraftScriptEngine, especially evaluate(), and trace the script path from WorldEdit.runScript. Reproduce with the importPackage and Packages.com.sk89q.worldedit.math.BlockVector3.at() examples using Rhino 1.7.15. Done means Java classes and methods are callable from CraftScripts without the reported JavaPackage errors.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, javascript
Domain
backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.