Yes the currently script API can be sometimes very annoying to work with, like the calling a api that accepts a float with a number in js, etc. and the error usually is not very straight forward and needs a lot of experience to understand what's going on. we are still trying to improve it. At least you have https://liquidbounce.net/docs/script-api/debugging now, although you cannot create any named variable in the console. btw the docs looks much better than before.
Supporters
Community members who have proven to be competent supporters.
Posts
-
Java Script Api -
Java Script ApiJust write a mod and put the LiquidBounce as a dependency if you need to use kotlin/java. The only limitations for the script api is that actually you cannot use mixin. Usually there are ways to workaround whatever you are trying to do, but sometimes there are indeed something wrong. typescript support and partial npm ecosystem might be supported soon
.
-
I hope to fix the autoblock loophole issue in LiquidBounce.Hard to believe that's not a GPT written one but probably won't be able to fix what ever u say unless you give more information.
By consistently you mean how much? Which server/anti cheat combination and what config are you using? There are a lot of configurable autoblock options in killaura. What client(s) are you refering as
well-known hacked clients that exploit this flaw
-
[GPLv3] transaction.jstransactions.zip Also looking forward to our marketplace, I do know that some development happened on the branch recently, hope to see it soon.
-
Typescript definition for minecraft and LiquidBounceUpdate for LiquidBounce v0.29.0:
What's new:- refined disclaimer in README.md
localStorage
in definition (no java.utils class definition yet)multiChoose
in manually maintained patch
-
[GPLv3] transaction.jsit was kinda weird, I never see any value starting maybe with -32768 or around, it's always that giant number, is it VFP or just everyone's using the same ac? Btw I even see some server like sending 300ish transactions per second and wtf is that.
-
Help with setting visibilityBy reading your post again I think I need to use ChoiceConfigurable. And I think that's definitely possible.
-
Help with setting visibilityAlso I am not sure about if we have to pass a object that implements all those functions to
Java.extend()
. But I think that's it for graaljs's type gymnastics, if you think this is necessary please open a issue at github. Ah just found that I forgot to use theReflectionUtils
xD. -
Help with setting visibility@Soulplexis It's done. Although not supposed to be implemented this way but it can be.
function __require(path) { if (path.startsWith("@embedded")) { return globalThis } if (path.startsWith("@minecraft-yarn-definitions/types/")) { return { [path.substring(path.lastIndexOf("/") + 1)]: Java.type(path .replaceAll("@minecraft-yarn-definitions/types/", "") .replaceAll("/", ".") ) } } return require(path); } var exports = {} "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); // imports /* eslint-disable unused-imports/no-unused-imports */ const _embedded_1 = __require("@embedded"); const ToggleableConfigurable_1 = __require("@minecraft-yarn-definitions/types/net/ccbluex/liquidbounce/config/types/ToggleableConfigurable"); /* eslint-enable unused-imports/no-unused-imports */ // DO NOT TOUCH ANYTHING ABOVE THIS LINE, also not sure why it didn't work const script = _embedded_1.registerScript.apply({ name: "example-script-api-hacking", version: "1.0.0", authors: ["commandblock2"] }); script.registerModule({ name: "example-typescript-module-script-api-hacking", description: "Ths is an minimal example module generated in ts but with a setting that's not supposed to be here", category: "Client", }, (mod) => { // Assuming you're in a JavaScript environment that supports Java.extend (like Nashorn or GraalVM) // @ts-expect-error const MyToggleableConfig = Java.extend(ToggleableConfigurable_1.ToggleableConfigurable, { // Implement abstract methods from ToggleableConfigurable and its parent classes // Required method implementations from EventListener interface parent: function () { return this.parent; // Return the parent passed in constructor }, children: function () { return []; // Return an array of child event listeners if any }, unregister: function () { // Implementation for unregistering this event listener }, // You can also override other methods like: enable: function () { // Custom enable logic // @ts-expect-error Java.super(this).enable(); // Call the parent method if needed }, disable: function () { // Custom disable logic // @ts-expect-error Java.super(this).disable(); // Call the parent method if needed } }); // Create an instance with required constructor parameters // constructor(parent: EventListener | null, name: string, enabled: boolean, aliases: string[]) const myConfig = new MyToggleableConfig(mod, "MyConfig", true, ["alias1", "alias2"]); const testBoolean = myConfig.boolean("testBoolean", false); _embedded_1.Client.displayChatMessage(testBoolean.toString()); // @ts-expect-error const field = mod.class.getDeclaredField("_values"); field.setAccessible(true); const valuesMap = field.get(mod); // @ts-expect-error valuesMap.put("MyConfig", mod.value(myConfig)); mod.on("enable", () => { _embedded_1.Client.displayChatMessage(`Hi, ${_embedded_1.mc.player}`); }); });
// imports /* eslint-disable unused-imports/no-unused-imports */ import { Setting, Vec3i, Vec3d, MathHelper, BlockPos, Hand, RotationAxis, mc, Client, RotationUtil, ItemUtil, NetworkUtil, InteractionUtil, BlockUtil, MovementUtil, ReflectionUtil, ParameterValidator, UnsafeThread, registerScript } from "@embedded"; import { Class } from "@minecraft-yarn-definitions/types/java/lang/Class"; import { ToggleableConfigurable } from "@minecraft-yarn-definitions/types/net/ccbluex/liquidbounce/config/types/ToggleableConfigurable"; import { ScriptModule } from "@minecraft-yarn-definitions/types/net/ccbluex/liquidbounce/script/bindings/features/ScriptModule"; /* eslint-enable unused-imports/no-unused-imports */ // DO NOT TOUCH ANYTHING ABOVE THIS LINE, also not sure why it didn't work const script = registerScript.apply({ name: "example-script-api-hacking", version: "1.0.0", authors: ["commandblock2"] }); script.registerModule({ name: "example-typescript-module-script-api-hacking", description: "Ths is an minimal example module generated in ts but with a setting that's not supposed to be here", category: "Client", }, (mod) => { // Assuming you're in a JavaScript environment that supports Java.extend (like Nashorn or GraalVM) // @ts-expect-error const MyToggleableConfig = Java.extend(ToggleableConfigurable, { // Implement abstract methods from ToggleableConfigurable and its parent classes // Required method implementations from EventListener interface parent: function () { return this.parent; // Return the parent passed in constructor }, children: function () { return []; // Return an array of child event listeners if any }, unregister: function () { // Implementation for unregistering this event listener }, // You can also override other methods like: enable: function () { // Custom enable logic // @ts-expect-error Java.super(this).enable(); // Call the parent method if needed }, disable: function () { // Custom disable logic // @ts-expect-error Java.super(this).disable(); // Call the parent method if needed } }); // Create an instance with required constructor parameters // constructor(parent: EventListener | null, name: string, enabled: boolean, aliases: string[]) const myConfig = new MyToggleableConfig(mod, "MyConfig", true, ["alias1", "alias2"]); const testBoolean = myConfig.boolean("testBoolean", false); Client.displayChatMessage(testBoolean.toString()); // @ts-expect-error const field = (mod.class as unknown as Class<ScriptModule>).getDeclaredField("_values"); field.setAccessible(true); const valuesMap = field.get(mod); // @ts-expect-error valuesMap.put("MyConfig", mod.value(myConfig)); mod.on("enable", () => { Client.displayChatMessage(`Hi, ${mc.player}`) }) })
-
Help with setting visibilityThis might be possible actually I think, if you put it in the lambda near mod.on that might even work, will try later