Git Product home page Git Product logo

jsmacros's Introduction

JsMacros

This mod allows for the development of scripts to interact with the chat, and other parts of the world, using a scripting language.
More information and documentation of all features and modules can be found on the website: https://jsmacros.wagyourtail.xyz

Join The JsMacros Discord

Downloads/Releases

Build Release

For the releases of both fabric and forge versions see:

Extensions

Extensions allow you to code in languages other than the default language JavaScript, and some even have performance benefits.

Beta Builds

1.18: Build Beta

1.17.1: Build Beta

1.16.5: Build Beta

1.15.2: Build Beta

1.14.4: Build Beta

1.8.9: Build Beta

Support me

https://ko-fi.com/wagyourtail

https://www.patreon.com/wagyourtail

Acknoledgements

JProfiler Thank You to JProfiler for usage of the Java Profiler tool for optimizing jsmacros!

jsmacros's People

Contributors

amelonrind avatar drhampust avatar earthcomputer avatar etheradon avatar hamtof-0 avatar harcma avatar hasenzahn1 avatar itsempa avatar johannes7k75 avatar kzvi avatar louis-pagnier avatar mariusdkm avatar merded avatar quickwrite avatar quinntyx avatar r3alcl0ud avatar r4z0rx avatar realindrit avatar reply7251 avatar serainox420 avatar shenjackyuanjie avatar solsticespectrum avatar starmania avatar wagyouralt avatar wagyourtail avatar yonghum1ng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jsmacros's Issues

world scanner error

[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: Cannot invoke "net.minecraft.class_2826.method_12261()" because "section" is null
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: 	at xyz.wagyourtail.jsmacros.client.api.classes.worldscanner.WorldScanner.streamChunkSections(WorldScanner.java:243)
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: 	at xyz.wagyourtail.jsmacros.client.api.classes.worldscanner.WorldScanner.scanChunkInternal(WorldScanner.java:127)
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: 	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273)
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: 	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: 	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: 	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: 	at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:960)
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: 	at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:934)
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: 	at java.base/java.util.stream.AbstractTask.compute(AbstractTask.java:327)
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: 	at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:754)
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: 	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: 	at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:686)
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: 	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateParallel(ReduceOps.java:927)
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: 	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: 	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: 	at xyz.wagyourtail.jsmacros.client.api.classes.worldscanner.WorldScanner.scanChunksInternal(WorldScanner.java:114)
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: 	at xyz.wagyourtail.jsmacros.client.api.classes.worldscanner.WorldScanner.scanChunkRange(WorldScanner.java:109)
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: 	at xyz.wagyourtail.jsmacros.client.api.classes.worldscanner.WorldScanner.scanAroundPlayer(WorldScanner.java:91)
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: 	at <js> :program(try.js:4:123-155)
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: 	at org.graalvm.polyglot.Context.eval(Context.java:379)
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: 	at xyz.wagyourtail.jsmacros.js.language.impl.GraalLanguageDefinition.exec(GraalLanguageDefinition.java:78)
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: 	at xyz.wagyourtail.jsmacros.core.language.BaseLanguage.lambda$trigger$1(BaseLanguage.java:49)
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: 	at java.base/java.lang.Thread.run(Thread.java:833)
[16:00:09] [Script:{"trigger":"KEY_RISING", "event":"key.keyboard.v", "file":"farm\try.js"}/INFO]: [STDERR]: Caused by host exception: java.lang.NullPointerException: Cannot invoke "net.minecraft.class_2826.method_12261()" because "section" is null
    let farm_seacher = World.getWorldScanner().withStringBlockFilter().contains("farmland").build();

    for(block in farm_seacher.scanAroundPlayer(10)) {
        Chat.log(block)
    }

EventDamage always return "generic" as Source

Hi!

I'm trying to do something when a player falls to the void, and I need to use the Damage event with the specific Source "OutOfWorld"...

if (event.source == 'outOfWorld')

...but I always get "generic" as source, no matter the real source (fall damage, attacked by a zombie, etc.)
So, looking at your code I discover you have this hardcoded here:

new EventDamage(DamageSource.GENERIC, health, difference);

I'm not so good a Java programming. Could you fix this?
Thanks in advance.

Feature Request: Keybind Services

I have played with services a bit, but noticed that while you can keybind a script, you don't seem to be able to use a keybind to turn a service on and off. This would be a convenient feature instead of opening the menu and turning the service on and off.

1.12.2 world scanner broken

val farm_blocks = World.getWorldScanner().withStringBlockFilter().contains("farmland").build().scanAroundPlayer(scan_range)

val farm_blocks = World.getWorldScanner().build().scanAroundPlayer(scan_range)

error log

 Caused by: java.lang.NullPointerException
 	at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936)
 	at xyz.wagyourtail.jsmacros.client.api.classes.worldscanner.WorldScanner.getFilterResult(WorldScanner.java:193)
 	at xyz.wagyourtail.jsmacros.client.api.classes.worldscanner.WorldScanner.getIncludedFilterIndices(WorldScanner.java:215)
 	at xyz.wagyourtail.jsmacros.client.api.classes.worldscanner.WorldScanner.streamChunkSections(WorldScanner.java:258)
 	at xyz.wagyourtail.jsmacros.client.api.classes.worldscanner.WorldScanner.scanChunkInternal(WorldScanner.java:130)
 	at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:269)
 	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1384)
 	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
 	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
 	at java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:747)
 	at java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:721)
 	at java.util.stream.AbstractTask.compute(AbstractTask.java:327)
 	at java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:731)
 	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
 	at java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:401)
 	at java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:734)
 	at java.util.stream.ReduceOps$ReduceOp.evaluateParallel(ReduceOps.java:714)
 	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
 	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566)
 	at xyz.wagyourtail.jsmacros.client.api.classes.worldscanner.WorldScanner.scanChunksInternal(WorldScanner.java:117)
 	at xyz.wagyourtail.jsmacros.client.api.classes.worldscanner.WorldScanner.scanChunkRange(WorldScanner.java:112)
 	at xyz.wagyourtail.jsmacros.client.api.classes.worldscanner.WorldScanner.scanAroundPlayer(WorldScanner.java:94)
 	at Main.main(main.kts:227)
 	at Main.<init>(main.kts:313)
 	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
 	at kotlin.script.experimental.jvm.BasicJvmScriptEvaluator.evalWithConfigAndOtherScriptsResults(BasicJvmScriptEvaluator.kt:100)
 	at kotlin.script.experimental.jvm.BasicJvmScriptEvaluator.invoke$suspendImpl(BasicJvmScriptEvaluator.kt:47)
 	at kotlin.script.experimental.jvm.BasicJvmScriptEvaluator.invoke(BasicJvmScriptEvaluator.kt)
 	at kotlin.script.experimental.host.BasicScriptingHost$eval$1.invokeSuspend(BasicScriptingHost.kt:48)
 	at kotlin.script.experimental.host.BasicScriptingHost$eval$1.invoke(BasicScriptingHost.kt)
 	at kotlin.script.experimental.host.BasicScriptingHost$eval$1.invoke(BasicScriptingHost.kt)
 	at kotlin.script.experimental.host.BasicScriptingHost$runInCoroutineContext$1.invokeSuspend(BasicScriptingHost.kt:36)
 	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
 	at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:115)
 	at kotlin.script.experimental.impl.RunSuspendKt.internalScriptingRunSuspend(runSuspend.kt:19)
 	at kotlin.script.experimental.host.BasicScriptingHost.runInCoroutineContext(BasicScriptingHost.kt:36)
 	at kotlin.script.experimental.host.BasicScriptingHost.eval(BasicScriptingHost.kt:46)
 	at io.github.gaming32.jsmacros.kotlin.language.impl.KotlinLanguageDefinition$exec$1.invoke(KotlinLanguageDefinition.kt:50)
 	... 5 more
let farm_seacher = World.getWorldScanner().withStringBlockFilter().contains("farmland").build();

for(block in farm_seacher.scanAroundPlayer(10)) {
    Chat.log(block)
}

error log:

 org.graalvm.polyglot.PolyglotException
 	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
 	at java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:598)
 	at java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:677)
 	at java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:735)
 	at java.util.stream.ReduceOps$ReduceOp.evaluateParallel(ReduceOps.java:714)
 	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
 	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566)
 	at xyz.wagyourtail.jsmacros.client.api.classes.worldscanner.WorldScanner.scanChunksInternal(WorldScanner.java:117)
 	at xyz.wagyourtail.jsmacros.client.api.classes.worldscanner.WorldScanner.scanChunkRange(WorldScanner.java:112)
 	at xyz.wagyourtail.jsmacros.client.api.classes.worldscanner.WorldScanner.scanAroundPlayer(WorldScanner.java:94)
 	at <js> :program(try.js:4:123-155)
 	at org.graalvm.polyglot.Context.eval(Context.java:379)
 	at xyz.wagyourtail.jsmacros.js.language.impl.GraalLanguageDefinition.exec(GraalLanguageDefinition.java:78)
 	at xyz.wagyourtail.jsmacros.core.language.BaseLanguage.lambda$trigger$1(BaseLanguage.java:49)
 	at java.lang.Thread.run(Thread.java:750)
 Caused by host exception: java.lang.NullPointerException

[1.19.3] 3d Hud not working correctly

If i want to render 3d stuff via .addBox(....) it does not get rendered.
Is used my BreadCrumbs script, it was working in version 1.18.2

To test i used the most recent version of JsMacros without any other mod in an clean install.
There are no erros in the logs

tick event causes lag

tick event lowers fps by over 90%. issue is probably that creating threads takes time, and this is a thread creation every tick.

1.17.1 Unable to get PlayerNBT

Reciving empty NBT when doing:

Chat.log(Player.getPlayer().getNBT());

and when doing:

const array = World.getEntities();
var playerEntity;
for (let i = 0; i < array.size(); i++) {
    if(array[i].getName() === Player.getPlayer().getName()){
        playerEntity = array[i];
        break;
    }
}
Chat.log(playerEntity.getNBT());

both will write {} but when using the loop method to find NBT of other type then Player you will recive NBT

Extend the documentation for other languages

Hey there,
I was hoping to use this mod with the Lua extension to get back into some fun experimenting like back with the Macro/Keybind mod, but I'm facing a problem: The documentation is not concise enough for me to use.

This for example: https://github.com/JsMacros/JsMacros/wiki/JsMacros-Functions#onstring-biconsumerstring-mapstring-object-123

What is String, Map<String, Object>? What does the string do, and what the object? Since Lua has practically no types it could just do anything with that. What does the IEventlistener contain in general?
The event name is also a string - Does capitalization matter?

Could you give me an example, e.g. printing the server IP when connecting to a server? I think that would help a ton.

Thanks!

[1.20.1] Event listeners will freeze the game indefinitely if called too frequently

Effected mod version: jsmacros-1.20.1-1.8.5-fabric
this bug doesn't happand in jsmacros-1.19.2-FABRIC-1.8.3

To Reproduce

create and enter a single player world
assign a empty script as event listener in the mod screen
image
now spam the event and the game will freeze
command: title @p actionbar [{"text":""}]
image

Error log

this doesn't produce a crash report, so I post the chat log instead

[15:17:08] [Server thread/INFO]: Reminton joined the game
[15:17:09] [Render thread/INFO]: Loaded 3 advancements
[15:17:22] [Thread-289/INFO]: [STDERR]: xyz.wagyourtail.jsmacros.core.EventLockWatchdog$WatchdogException: Script 
"Macro:{"type": "EVENT", "eventkey": "Title", "scriptFile": "EmptyScript.js", "enabled": false}"
 joined longer than allowed time of 500 ms.
[15:17:22] [Thread-289/INFO]: [STDERR]: 	at xyz.wagyourtail.jsmacros.core.EventLockWatchdog.lambda$startWatchdog$0(EventLockWatchdog.java:25)
[15:17:22] [Thread-289/INFO]: [STDERR]: 	at java.base/java.lang.Thread.run(Thread.java:833)
็จ‹ๅผๅทฒ้€€ๅ‡บ๏ผŒไปฃ็ขผ๏ผš0ใ€‚

the chinese there means "Program exited, code : 0"

Gui using placeholder text when instance path contains special characters

The jsmacro's gui displays jsmacros.keys instead of Keys and other similar text when the path to the mc folder contains some special characters.

screenshot of the jsmacro gui

In my case I was using multimc with an instance that had spaces in the name and this exception was raisen:

[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: java.io.FileNotFoundException: /home/doggo/.local/share/multimc/instances/Forge%20-%20Optifine/.minecraft/mods/jsmacros-1.8.9-FORGE-1.8.3.jar (No such file or directory)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at java.util.zip.ZipFile.open(Native Method)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at java.util.zip.ZipFile.<init>(ZipFile.java:228)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at java.util.zip.ZipFile.<init>(ZipFile.java:157)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at java.util.zip.ZipFile.<init>(ZipFile.java:171)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile.<clinit>(JsMacrosJsonLangFile.java:26)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at net.minecraft.client.resources.Locale.handler$insertFabricLanguageData$zzj000(Locale.java:541)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at net.minecraft.client.resources.Locale.func_135022_a(Locale.java:30)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at net.minecraft.client.resources.LanguageManager.func_110549_a(LanguageManager.java:75)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at net.minecraft.client.resources.SimpleReloadableResourceManager.func_110544_b(SimpleReloadableResourceManager.java:130)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at net.minecraft.client.resources.SimpleReloadableResourceManager.func_110541_a(SimpleReloadableResourceManager.java:111)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at net.minecraft.client.Minecraft.func_110436_a(Minecraft.java:732)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:238)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:417)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:329)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at net.minecraft.client.main.Main.main(SourceFile:124)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at java.lang.reflect.Method.invoke(Method.java:498)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at java.lang.reflect.Method.invoke(Method.java:498)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:210)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:245)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at org.multimc.EntryPoint.listen(EntryPoint.java:143)
[23:38:56] [Client thread/INFO] [STDERR]: [xyz.wagyourtail.jsmacros.client.JsMacrosJsonLangFile:<clinit>:60]: 	at org.multimc.EntryPoint.main(EntryPoint.java:34)

wrong escaping or something idk I've no more effort to write a decent issue, shouldn't be hard to fix or maybe it is idfk

ScoreboardObjectiveHelper.getPlayerScores() returns empty string for player names if not actual player

Most servers utilize scoreboards with fake players to show info, it seems like getPlayerScores() just returns empty strings for the names in these cases.

Example code:

const scoreboard = World.getScoreboards().getCurrentScoreboard();
Chat.log(scoreboard.getPlayerScores());

Output with a scoreboard made via
/scoreboard objectives add Deaths deathCount and /scoreboard objectives setdisplay sidebar Deaths:

{LeaPhant=1}

Output upon joining hypixel.net:

{=1, =2, =3, =4, =5, =6, =7, =8, =9, =10, =11}

The actual scoreboard:

image

[1.8.9] `World::findBlocksMatching` doesn't work as intended

Repro

  1. Create a script that searches for a block using findBlocksMatching.
  2. Join any world
  3. Make a staircase with said block
  4. Trigger the script

Expected Behaviour

All blocks that match the condition are found.

Current Behaviour

Only the blocks that replaces the blocks on the original generation can be found.
Blocks placed on top/floating are missing from the check.

Sample Script

let q = World.findBlocksMatching("minecraft:glass", 2)
for(i in q) {
    Chat.log(q[i])
}

if (q.length == 0) {
    Chat.log("Nothing Found.")
}

Chat.log("----")

(Fabric) Crashes on start with 1.18.2

Due to upping the version of a server, I had to update my client version to 1.18.2, sadly it seems that JsMacros crashes the game on start, log below. And thanks for making this mod.

00:59:41.921
FabricLoader/Mixin
Render thread
Mixin apply for mod jsmacros failed jsmacros.mixins.json:access.MixinMinecraftClient -> net.minecraft.class_310: org.spongepowered.asm.mixin.transformer.throwables.InvalidMixinException @Shadow method method_1536 in jsmacros.mixins.json:access.MixinMinecraftClient was not located in the target class net.minecraft.class_310. Using refmap jsmacros-1.18-common-refmap.json
org.spongepowered.asm.mixin.transformer.throwables.InvalidMixinException: @Shadow method method_1536 in jsmacros.mixins.json:access.MixinMinecraftClient was not located in the target class net.minecraft.class_310. Using refmap jsmacros-1.18-common-refmap.json
	at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.attachSpecialMethod(MixinPreProcessorStandard.java:436)
	at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.attachShadowMethod(MixinPreProcessorStandard.java:412)
	at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.attachMethods(MixinPreProcessorStandard.java:340)
	at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.attach(MixinPreProcessorStandard.java:299)
	at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.createContextFor(MixinPreProcessorStandard.java:277)
	at org.spongepowered.asm.mixin.transformer.MixinInfo.createContextFor(MixinInfo.java:1289)
	at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.apply(MixinApplicatorStandard.java:292)
	at org.spongepowered.asm.mixin.transformer.TargetClassContext.apply(TargetClassContext.java:421)
	at org.spongepowered.asm.mixin.transformer.TargetClassContext.applyMixins(TargetClassContext.java:403)
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:363)
	at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:234)
	at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:202)
	at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:247)
	at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:150)
	at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:155)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
	at net.minecraft.client.main.Main.main(Main.java:197)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:416)
	at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:77)
	at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
00:59:42.149
FabricLoader/Mixin
Render thread
Mixin apply for mod jsmacros failed jsmacros.mixins.json:access.MixinMinecraftClient -> net.minecraft.class_310: org.spongepowered.asm.mixin.transformer.throwables.InvalidMixinException @Shadow method method_1536 in jsmacros.mixins.json:access.MixinMinecraftClient was not located in the target class net.minecraft.class_310. Using refmap jsmacros-1.18-common-refmap.json
org.spongepowered.asm.mixin.transformer.throwables.InvalidMixinException: @Shadow method method_1536 in jsmacros.mixins.json:access.MixinMinecraftClient was not located in the target class net.minecraft.class_310. Using refmap jsmacros-1.18-common-refmap.json
	at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.attachSpecialMethod(MixinPreProcessorStandard.java:436)
	at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.attachShadowMethod(MixinPreProcessorStandard.java:412)
	at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.attachMethods(MixinPreProcessorStandard.java:340)
	at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.attach(MixinPreProcessorStandard.java:299)
	at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.createContextFor(MixinPreProcessorStandard.java:277)
	at org.spongepowered.asm.mixin.transformer.MixinInfo.createContextFor(MixinInfo.java:1289)
	at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.apply(MixinApplicatorStandard.java:292)
	at org.spongepowered.asm.mixin.transformer.TargetClassContext.apply(TargetClassContext.java:421)
	at org.spongepowered.asm.mixin.transformer.TargetClassContext.applyMixins(TargetClassContext.java:403)
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:363)
	at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:234)
	at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:202)
	at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:247)
	at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:150)
	at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:155)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
	at net.minecraft.client.main.Main.main(Main.java:206)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:416)
	at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:77)
	at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
00:59:42.151
FabricLoader
Render thread
Minecraft has crashed!
net.fabricmc.loader.impl.FormattedException: java.lang.RuntimeException: Mixin transformation of net.minecraft.class_310 failed
	at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:418)
	at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:77)
	at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
Caused by: java.lang.RuntimeException: Mixin transformation of net.minecraft.class_310 failed
	at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:252)
	at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:150)
	at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:155)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
	at net.minecraft.client.main.Main.main(Main.java:206)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:416)
	... 2 more
Caused by: org.spongepowered.asm.mixin.transformer.throwables.MixinTransformerError: An unexpected critical error was encountered
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:392)
	at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:234)
	at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:202)
	at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:247)
	... 11 more
Caused by: org.spongepowered.asm.mixin.throwables.MixinApplyError: Mixin [jsmacros.mixins.json:access.MixinMinecraftClient] from phase [DEFAULT] in config [jsmacros.mixins.json] from mod [jsmacros] FAILED during APPLY
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.handleMixinError(MixinProcessor.java:638)
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.handleMixinApplyError(MixinProcessor.java:589)
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:379)
	... 14 more
Caused by: org.spongepowered.asm.mixin.transformer.throwables.InvalidMixinException: @Shadow method method_1536 in jsmacros.mixins.json:access.MixinMinecraftClient was not located in the target class net.minecraft.class_310. Using refmap jsmacros-1.18-common-refmap.json
	at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.attachSpecialMethod(MixinPreProcessorStandard.java:436)
	at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.attachShadowMethod(MixinPreProcessorStandard.java:412)
	at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.attachMethods(MixinPreProcessorStandard.java:340)
	at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.attach(MixinPreProcessorStandard.java:299)
	at org.spongepowered.asm.mixin.transformer.MixinPreProcessorStandard.createContextFor(MixinPreProcessorStandard.java:277)
	at org.spongepowered.asm.mixin.transformer.MixinInfo.createContextFor(MixinInfo.java:1289)
	at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.apply(MixinApplicatorStandard.java:292)
	at org.spongepowered.asm.mixin.transformer.TargetClassContext.apply(TargetClassContext.java:421)
	at org.spongepowered.asm.mixin.transformer.TargetClassContext.applyMixins(TargetClassContext.java:403)
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:363)
	... 14 more
00:59:42.497
launcher
main

00:59:42.497
monitor
Process Monitor
Process crashed with exit code 1

Item Damage extra calls

Item Damage Event does calls on login to single/multiplayer and extra "random" calls on multiplayer

Documentation: Utilizing classes/features

Hello, so far I have primarily used jsMacros for sending keyboard commands (Baritone specifically). I realized that short of using a completely separate client, I for the life of me cannot find a way to automatically eat. That sounds like a great fit for jsMacros.

So I searched the docs. I scrolled and browsed, I looked at the brief tutorials. I used the search field to look for "use" "eat" "food" and other terms that could be related, basically nothing useful.

I do see that there are a lot of events. I like events, that means I can create services that react to events, (like hunger level changing) great! But now I want to do something. I happened to stumble through another issue here referring to setLongAttack and nearby found interactItem which sounds promising. Based on the path it looks like it has something to do with the client, it isn't a Client.XYZ method, it seems to be related to the API as well?
https://jsmacros.wagyourtail.xyz/?/1.8.0/xyz/wagyourtail/jsmacros/client/api/helpers/ClientPlayerEntityHelper.html#interactItem-boolean-
Perhaps it's a player related thing, maybe a Player.createPlayerInput() perhaps, but again, documentation is highly technical with no explanation how to use something.

Sorry for the ramble, I'm just sort of brain dumping my thought process, as a moderately experienced javascript dev. I'm used to knowing generally what I want to do, googling/researching docs, tracking down events/methods, trying to implement them, making mistakes, logging objects and ultimately figuring out how to do something, or if it can't be done.
I think all the pieces are there, but I can't seem to find them. I really like jsMacros but am frustrated by the fact that I can see loads of features and functionality I would love to use and I can't get beyond basic chat based scripting.

Thanks for everything you have done, if you have any pointers on how I can A. interact with an offhand/hotbar slot B. hold down use for X seconds, C. Drop a specific inventory slot (unrelated, something else I want to do) I'd love to hear some pointers, or read these docs here, or here's a brief example showing how to use this feature. Appreciate your time reading!

ReferenceError: log is not defined

I tried to create a basic hello world script, but all of the functions don't seem to load, all of my attempts showing an error like:
"ReferenceError: log is not defined"

I do not know JavaScript very well and I have no idea how to fix this
hi.js.txt

Some AMD CPU's lag on script starts (possible mitigation)

Thread.start() takes longer than expected on certain AMD CPU's, which can cause significant fps lag as scripts start the thread on the main minecraft thread (this is also true of JavaWrapper.methodToJavaAsync and JsMacros.on).

if you are experiencing this issue, please test if https://github.com/JsMacros/JsMacros/actions/runs/4111856428 fixes/alleviates the problem, if not, I need to look further into it... either way post here so I know someone with this issue has tested this solution

visualvm 1
visualvm 2

add 1.20

everything is in the title :)

[1.12.2] MixinScreen onScroll crash

After the commit 99c650c and a859f4e, the mod will crash in multiple cases, whether Optifine is installed or not.

If Optifine not installed

As far as I get from the project readme, I didn't find any hard requirement of Optifine to be installed.
This will result in the mixin of GuiScreen fail, and crash the game during initialization.

org.spongepowered.asm.mixin.injection.throwables.InjectionError: Critical injection failure: Redirector redirect$onRender$zzc000(Lnet/minecraft/client/gui/GuiScreen;IIF)V in jsmacros.mixins.json:access.MixinGameRenderer failed injection check, (0/1) succeeded. Using refmap jsmacros-1.12.2-common-refmap.json
	at org.spongepowered.asm.mixin.injection.struct.InjectionInfo.postInject(InjectionInfo.java:290)
	at org.spongepowered.asm.mixin.transformer.MixinTargetContext.applyInjections(MixinTargetContext.java:1203)
	at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyInjections(MixinApplicatorStandard.java:938)
	at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyMixin(MixinApplicatorStandard.java:322)
	at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.apply(MixinApplicatorStandard.java:280)
	at org.spongepowered.asm.mixin.transformer.TargetClassContext.applyMixins(TargetClassContext.java:353)
	at org.spongepowered.asm.mixin.transformer.MixinTransformer.apply(MixinTransformer.java:724)
	at org.spongepowered.asm.mixin.transformer.MixinTransformer.applyMixins(MixinTransformer.java:703)
	at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:509)
	at org.spongepowered.asm.mixin.transformer.Proxy.transform(Proxy.java:72)
	at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279)
	at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at net.minecraftforge.client.ForgeHooksClient.shouldUseVanillaReloadableListener(ForgeHooksClient.java:959)
	at net.minecraft.client.resources.SimpleReloadableResourceManager.func_110544_b(SimpleReloadableResourceManager.java:131)
	at net.minecraft.client.resources.SimpleReloadableResourceManager.func_110541_a(SimpleReloadableResourceManager.java:112)
	at net.minecraft.client.Minecraft.func_110436_a(Minecraft.java:808)
	at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:247)
	at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:467)
	at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:378)
	at net.minecraft.client.main.Main.main(SourceFile:123)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

If Optifine installed

When trying to scroll in ANY Screens, such as chat log or modlist, it will also result in a crash.

net.minecraft.util.ReportedException: Updating screen events
	at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1772) ~[bib.class:?]
	at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1098) ~[bib.class:?]
	at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:398) [bib.class:?]
	at net.minecraft.client.main.Main.main(SourceFile:123) [Main.class:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_341]
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_341]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_341]
	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_341]
	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
Caused by: java.lang.AbstractMethodError: Method net/minecraftforge/fml/client/GuiModList.jsmacros_mouseScrolled(III)V is abstract
	at net.minecraftforge.fml.client.GuiModList.jsmacros_mouseScrolled(GuiModList.java)
	at net.minecraft.client.gui.GuiScreen.handler$onMouseScrolled$zzg000(GuiScreen.java:1279)
	at net.minecraft.client.gui.GuiScreen.func_146274_d(GuiScreen.java:522)
	at net.minecraftforge.fml.client.GuiModList.func_146274_d(GuiModList.java:329)
	at net.minecraft.client.gui.GuiScreen.func_146269_k(GuiScreen.java:501)
	at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1759)
	at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1098)
	at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:398)
	at net.minecraft.client.main.Main.main(SourceFile:123)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

add quick craft button

can you add quick craft buttons like .quickCraftPress(button) button being the button like stick or enchanting table

PlayerJoinedEvent fired for each player on a server client is joining to

When you join a server, the PlayerJoinedEvent is fired for each player that is already on the server (may be desired behavior, in that case, I would like to know how to fire only for new joining players)

This is probably because the event is fired on add player packet, which is sent as said.

Keybinds with modifiers overlapping

I created two scripts to run:
C: script 1
Shift+C: script 2

When I press Shift+C both scripts are executed. I have been able to somewhat work around it by tying C to keydown, and Shift +C to keyup. This executes script 1, then script 2 in order, which is fine in my use case.
I would expect that holding a modifier would prevent a keybind that does not contain a modifier from being executed at all.

Books in lecterns gui broken by jsmacros in 1.19.3 AND 1.19.4

The gui gets stuck and does not update when flipping pages in a book in a lectern. Server side changes are visible but not client side. Client side the book remains on page 1 with only the "flip right" arrow available. This persists even if logging out and back on or restasrting minecraft, even though the server (or local world in case of single player) really is on a higher page.

Tested with only JsMacros loaded in 1.19.3 and 1.19.4.
Let me know if it is helpful to go through earlier version.

Documentation error

getTime() is ticks processed since world was started.
getTimeOfDay() is ticks passed since world was started INCLUDING those skipped when nights were cut short with sleeping.

getTimeOfDay() % 24000 therefore gives the actual time of day (you can sleep after 12500)

only if you never sleep, both are identical.

image

1.19.4?

There's a commit for it, but is it done? If so, its not published...

Sounds

I can see, I can read... I can't hear??
Adding sounds to JsMacros would be good!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.