diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index e2c0d218..6f9fcb4b 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -17,7 +17,7 @@ jobs:
- uses: actions/setup-java@v4
with:
distribution: temurin
- java-version: 21
+ java-version: 25
- uses: actions/cache@v4
with:
diff --git a/.github/workflows/javadocs.yml b/.github/workflows/javadocs.yml
deleted file mode 100644
index 4b083978..00000000
--- a/.github/workflows/javadocs.yml
+++ /dev/null
@@ -1,80 +0,0 @@
-name: javadocs
-
-on:
- push:
- tags:
- - '**'
- workflow_dispatch:
-
-jobs:
- build:
- name: Deploy Javadocs
- runs-on: "ubuntu-latest"
- if: github.repository == 'ChatTriggers/ctjs'
-
- steps:
- - uses: actions/checkout@v4
-
- - uses: actions/setup-java@v4
- with:
- distribution: temurin
- java-version: 21
-
- - uses: actions/cache@v4
- with:
- path: |
- ~/.gradle/caches
- ~/.gradle/wrapper
- key: "${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties', 'gradle/*.versions.toml') }}"
- restore-keys: |
- ${{ runner.os }}-gradle-
-
- - name: Build Javadocs
- run: ./gradlew --no-daemon generateDokkaDocs
-
- - name: Publish Javadocs
- uses: appleboy/scp-action@master
- with:
- host: ${{ secrets.REMOTE_HOST }}
- username: ${{ secrets.ACTIONS_DEPLOYER_USERNAME }}
- key: ${{ secrets.ACTIONS_DEPLOYER_SSH_KEY }}
- passphrase: ${{ secrets.ACTIONS_DEPLOYER_PASSPHRASE }}
- source: ${{ github.workspace }}/build/javadocs/
- # TODO: Remove "new-" when we transition to 3.0.0
- target: /srv/www/static/home/new-javadocs
- strip_components: 4
- rm: true
-
- - name: Set File Permissions
- uses: appleboy/ssh-action@master
- with:
- host: ${{ secrets.REMOTE_HOST }}
- username: ${{ secrets.ACTIONS_DEPLOYER_USERNAME }}
- key: ${{ secrets.ACTIONS_DEPLOYER_SSH_KEY }}
- passphrase: ${{ secrets.ACTIONS_DEPLOYER_PASSPHRASE }}
- script: |
- chmod -R g+w /srv/www/static/home/new-javadocs
- chmod -R g+w /srv/www/static/home/javadocs-archive
-
- - name: Create archives zip file
- if: startsWith(github.ref, 'refs/tags/')
- uses: appleboy/ssh-action@master
- with:
- host: ${{ secrets.REMOTE_HOST }}
- username: ${{ secrets.ACTIONS_DEPLOYER_USERNAME }}
- key: ${{ secrets.ACTIONS_DEPLOYER_SSH_KEY }}
- passphrase: ${{ secrets.ACTIONS_DEPLOYER_PASSPHRASE }}
- script: |
- tag=${{ github.ref_name }}
- echo "Creating archive, tag=${tag}..."
-
- # Copy the current javadocs to a new dir, remove the "older" directory, and
- # save it as a zip file in the archives folder
- cd /srv/www/static/home
- cp -r new-javadocs tmp
- rm -rf tmp/older
- zip -r "${tag}.zip" tmp
- mv "${tag}.zip" javadocs-archive
- rm -rf tmp
-
- echo "${tag}" >> javadocs-archive/versions
diff --git a/README.md b/README.md
index 9a0833ee..713b4dfc 100644
--- a/README.md
+++ b/README.md
@@ -8,81 +8,136 @@
-
-
-
-
-
-
-ChatTriggers (CT) is a framework for Minecraft that enables live scripting and client modification using JavaScript. We provide libraries, wrappers, objects, and more to make your life as a modder as easy as possible. Even if we don't support something you need, you can still access any Java classes and native fields/methods.
-
-With CT, you have all the power of a modding environment with the benefit of an easy-to-use language and the ability to reload your scripts without restarting the game. CT also provides a way to [define your own Mixins](https://github.com/ChatTriggers/ctjs/wiki/Dynamic-Mixins)!
-
-CT is currently written for Fabric 1.19. See [this repo](https://github.com/ChatTriggers/ChatTriggers) for the deprecated Forge 1.8.9 version.
-
-### Examples
+ChatTriggers (CT) is a framework for Minecraft that enables live scripting and client modification using JavaScript.
-Want to hide an annoying server message that you see every time you join a world?
+This version has been specifically written by me (srockw) for my own purposes, and it is NOT backwards compatible with
+previous CT versions due to a couple of reasons:
-```js
-register('chat', event => {
- cancel(event);
-}).setCriteria("Check out our store at www.some-mc-server.com for 50% off!");
-```
-
-How about automating a series of common commands into one?
+- Most objects and libraries (such as ChatLib, TextComponent, Renderer) have been removed.
+- Most of the registers have been removed.
+- Custom mixins have been removed (but I might add them back later if I get the motivation).
-```js
-register('command', () => {
- ChatLib.command('command1');
- ChatLib.command('command2');
- ChatLib.command('command3');
-}).setName('commandgroup');
-```
+These changes were made to keep the mod as simple as possible and easy to update to newer versions when they come out.
+You can make your own libraries within modules or even fork the project to add them yourself if you want.
+Making additional registers can require using Fabric events or sometimes mixins, so they're not able to be added through
+modules currently, you can let me know in Discord if you have one you need, and I'll look into it.
-Or even something silly like a calculator command
-
-```js
-register('command', (...args) => {
- // Evaluate all args the user gives us...
- const result = new Function('return ' + args.join(' '))();
-
- // ...and show the result is a nice green color
- ChatLib.chat(`&aResult: ${result}`);
-}).command('calc');
-```
-
-With CT's register system, you can listen to custom events that we emit and react to them. For example, we emit events when you switch worlds, click on a GUI, hit a block, hover over an item and see its tooltip, and much more! You can even provide custom events for other module authors to use.
+> [!NOTE]
+> If you want these libraries and registers, I recommend going to [DocilElm's fork](https://github.com/Synnerz/ctjs),
+> but note that as of writing this it is not being updated.
### Getting Started
-To begin, [download and install Fabric](https://fabricmc.net/wiki/install) for one of the supported versions, then head over to our [releases page](https://github.com/ChatTriggers/ctjs/releases) and download the latest version. The mod is installed like any mod; just drag it into your mods folder. Once installed, you can import modules in-game by typing `/ct import `, where `` is the name of the module. You can browse the available modules on [our website](https://www.chattriggers.com/modules).
+I don't currently have any plans to make releases, so the only way for you to download this mod would be
+through [GitHub actions](https://github.com/srockw/ctjs/actions), which require you to login and will expire after a
+certain period of time.
+
+The currently supported version is 26.1.2.
### Writing Modules
-If you can't find any modules on the website that do exactly what you want, which is quite likely, you'll have you write your own! Here are the steps you'll want to take:
+To create a module, follow these steps:
-1. Navigate to the `.minecraft/config/ChatTriggers/modules` folder. If you don't know where this is, you can also execute `/ct files`, which will open the correct directory automatically.
-1. Create a new directory with the name of your module
-1. Inside the directory, create a file called `metadata.json`, and inside of that, put the following text:
+1. Navigate to the `.minecraft/config/ChatTriggers/modules` folder. If you don't know where this is, you can also
+ execute `/ct files`, which will open the correct directory automatically.
+2. Create a new directory with the name of your module.
+3. Inside the directory, create a file called `metadata.json`, and inside of that, put the following text:
```json
{
"name": "",
"entry": "index.js"
}
```
- This means that when our module first runs, CT will run the `index.js` file
+ This means that when our module first runs, CT will run the `index.js` file
- _Note that `` must match the name of your folder exactly!_
-1. Create the `index.js` file, and put some code in there. What exactly you write will depend on what you want CT to do. To learn more about the available APIs, take a look at the [Slate](https://chattriggers.com/slate/#introduction).
- * Some things on the Slate may be outdated, we are working on improving this
+ _Note that `` must match the name of your folder exactly!_
+4. Create the `index.js` file, and put some code in there.
+5. Do `/ct load` to reload all modules after modifying them.
+6. (Optional, but recommended) After downloading the mod from the latest action you will have also gotten a file called
+ `typings.d.ts`, the purpose of this file is to provide autocompletions and suggestions in an IDE. For example, in
+ VSCode it is sufficient to have the file open while editing your JavaScript files, but it depends on the IDE.
### Documentation
-- [Slate](https://chattriggers.com/slate/#introduction), a guided tutorial that covers the basics
-- [Javadocs](https://chattriggers.com/javadocs/), a technical reference for all public APIs in the mod
-- [MIGRATION.md](docs/MIGRATION.md), a guide for upgrading modules from CT 2.X to 3.0
-- [CONTRIBUTING.md](CONTRIBUTING.md) (TODO)
+Since the game is no longer obfuscated, you can access all the vanilla MC classes and methods by just going through
+their path, such as `net.minecraft.client.Minecraft` and use all their methods as normal. The `typings.d.ts` file
+mentioned previously will help you through this, but note that it does NOT include all classes available to you, I
+recommend
+going to [mcsrc.dev](https://mcsrc.dev) if there is something you can't find.
+
+While most of the libraries have been removed, some essential ones still remain:
+
+#### Register
+
+You can easily view all available registers using the autocompletions from the `typings.d.ts` file, they should be
+pretty self-explanatory, and besides `renderOverlay` the other ones starting with `render` are for 3D rendering.
+
+```js
+// Hide all messages including "something"
+register("chat", (msg, event) => {
+ if (msg.getString().includes("something")) {
+ cancel(event);
+ }
+});
+```
+
+#### CustomKeyMapping
+
+Allows you to create your own keybindings, which will show up in the options screen just as any other.
+
+```js
+const GLFW = org.lwjgl.glfw.GLFW;
+
+// Create your own keybind.
+// Note that the last parameter, the category, has to be a valid identifier, which cannot include spaces and it won't be translated. (So no nice looking categories, at least for now)
+const myKey = CustomKeyMapping.register("My Key", GLFW.GLFW_KEY_P, "my_category"); // This returns a vanilla KeyMapping object.
+
+// Can also get the KeyMapping object of other keys.
+const vanillaSneak = CustomKeyMapping.find("key.sneak");
+
+register("tick", () => {
+ // Using the typings file you can easily see which methods are available through you.
+ if (myKey.consumeClick()) {
+ // Do something
+ }
+});
+```
+
+#### CustomCommand
+
+Allows you to create brigadier commands:
+
+```js
+const IntegerArgumentType = com.mojang.brigadier.arguments.IntegerArgumentType;
+
+CustomCommand.register("mytime", (node) => {
+ node.literal("set", (node) => {
+ node.literal("day", (node) => {
+ node.exec((ctx) => {
+ // called when '/mytime set day' is used
+ });
+ });
+
+ node.literal("night", (node) => {
+ node.exec((ctx) => {
+ // called when '/mytime set night' is used
+ });
+ });
+ });
+
+ node.literal("add", (node) => {
+ // here "time" is the name of this argument, 'IntegerArgumentType.integer()' defines the type of the argument, you can use any ArgumentType.
+ node.argument("time", IntegerArgumentType.integer(), (node) => {
+ node.exec((ctx) => {
+ // called when '/mytime add ' is used
+
+ // access the time parameter we defined earlier
+ const time = IntegerArgumentType.getInteger(ctx, "time");
+ });
+ });
+ });
+});
+```
diff --git a/api/ctjs.api b/api/ctjs.api
index e74e34cd..572068ac 100644
--- a/api/ctjs.api
+++ b/api/ctjs.api
@@ -3,37 +3,24 @@ public final class com/chattriggers/ctjs/CTJS : net/fabricmc/api/ClientModInitia
public static final field MODULES_FOLDER Ljava/lang/String;
public static final field MOD_ID Ljava/lang/String;
public static final field MOD_VERSION Ljava/lang/String;
- public static final field WEBSITE_ROOT Ljava/lang/String;
public fun ()V
public static final fun isLoaded ()Z
- public static final fun load (Z)V
+ public static final fun load ()V
public fun onInitializeClient ()V
- public static final fun unload (Z)V
+ public static final fun unload ()V
}
public final class com/chattriggers/ctjs/CTJS$Companion {
public final fun getAssetsDir ()Ljava/io/File;
public final fun getConfigLocation ()Ljava/io/File;
public final fun isLoaded ()Z
- public final fun load (Z)V
- public static synthetic fun load$default (Lcom/chattriggers/ctjs/CTJS$Companion;ZILjava/lang/Object;)V
+ public final fun load ()V
public final fun makeWebRequest$ctjs (Ljava/lang/String;)Ljava/net/URLConnection;
- public final fun unload (Z)V
- public static synthetic fun unload$default (Lcom/chattriggers/ctjs/CTJS$Companion;ZILjava/lang/Object;)V
-}
-
-public abstract interface class com/chattriggers/ctjs/api/CTWrapper {
- public abstract fun getMcValue ()Ljava/lang/Object;
- public abstract fun toMC ()Ljava/lang/Object;
-}
-
-public final class com/chattriggers/ctjs/api/CTWrapper$DefaultImpls {
- public static fun toMC (Lcom/chattriggers/ctjs/api/CTWrapper;)Ljava/lang/Object;
+ public final fun unload ()V
}
public final class com/chattriggers/ctjs/api/Config : gg/essential/vigilance/Vigilant {
public static final field INSTANCE Lcom/chattriggers/ctjs/api/Config;
- public static final fun getAutoUpdateModules ()Z
public static final fun getClearConsoleOnLoad ()Z
public static final fun getConsoleBackgroundColor ()Ljava/awt/Color;
public static final fun getConsoleErrorColor ()Ljava/awt/Color;
@@ -43,11 +30,7 @@ public final class com/chattriggers/ctjs/api/Config : gg/essential/vigilance/Vig
public static final fun getConsoleTheme ()I
public static final fun getConsoleWarningColor ()Ljava/awt/Color;
public static final fun getCustomTheme ()Z
- public static final fun getModuleChangelog ()Z
- public static final fun getModuleImportHelp ()Z
public static final fun getOpenConsoleOnError ()Z
- public static final fun getShowUpdatesInChat ()Z
- public static final fun setAutoUpdateModules (Z)V
public static final fun setClearConsoleOnLoad (Z)V
public static final fun setConsoleBackgroundColor (Ljava/awt/Color;)V
public static final fun setConsoleErrorColor (Ljava/awt/Color;)V
@@ -57,10 +40,7 @@ public final class com/chattriggers/ctjs/api/Config : gg/essential/vigilance/Vig
public static final fun setConsoleTheme (I)V
public static final fun setConsoleWarningColor (Ljava/awt/Color;)V
public static final fun setCustomTheme (Z)V
- public static final fun setModuleChangelog (Z)V
- public static final fun setModuleImportHelp (Z)V
public static final fun setOpenConsoleOnError (Z)V
- public static final fun setShowUpdatesInChat (Z)V
}
public final class com/chattriggers/ctjs/api/Config$ConsoleSettings {
@@ -107,92 +87,8 @@ public final class com/chattriggers/ctjs/api/Config$ConsoleSettings$Companion {
public final fun make ()Lcom/chattriggers/ctjs/api/Config$ConsoleSettings;
}
-public final class com/chattriggers/ctjs/api/Mappings {
- public static final field INSTANCE Lcom/chattriggers/ctjs/api/Mappings;
- public static final fun mapClassName (Ljava/lang/String;)Ljava/lang/String;
- public static final fun unmapClass (Ljava/lang/Class;)Ljava/lang/String;
- public static final fun unmapClassName (Ljava/lang/String;)Ljava/lang/String;
-}
-
-public final class com/chattriggers/ctjs/api/client/CPS : com/chattriggers/ctjs/internal/utils/Initializer {
- public static final field INSTANCE Lcom/chattriggers/ctjs/api/client/CPS;
- public static final fun getLeftClicks ()I
- public static final fun getLeftClicksAverage ()I
- public static final fun getLeftClicksMax ()I
- public static final fun getMiddleClicks ()I
- public static final fun getMiddleClicksAverage ()I
- public static final fun getMiddleClicksMax ()I
- public static final fun getRightClicks ()I
- public static final fun getRightClicksAverage ()I
- public static final fun getRightClicksMax ()I
- public fun init ()V
-}
-
-public final class com/chattriggers/ctjs/api/client/Client {
- public static final field INSTANCE Lcom/chattriggers/ctjs/api/client/Client;
- public static final field camera Lcom/chattriggers/ctjs/api/client/Client$CameraWrapper;
- public static final field currentGui Lcom/chattriggers/ctjs/api/client/Client$CurrentGuiWrapper;
- public static final field settings Lcom/chattriggers/ctjs/api/client/Settings;
- public static final fun connect (Ljava/lang/String;)V
- public static final fun connect (Ljava/lang/String;I)V
- public static synthetic fun connect$default (Ljava/lang/String;IILjava/lang/Object;)V
- public static final fun copy ()V
- public static final fun copy (Ljava/lang/String;)V
- public static synthetic fun copy$default (Ljava/lang/String;ILjava/lang/Object;)V
- public static final fun disconnect ()V
- public static final fun getChatGui ()Lnet/minecraft/client/gui/hud/ChatHud;
- public static final fun getConnection ()Lnet/minecraft/client/network/ClientPlayNetworkHandler;
- public static final fun getCurrentChatMessage ()Ljava/lang/String;
- public static final fun getFPS ()I
- public static final fun getFreeMemory ()J
- public static final fun getKeyBindFromDescription (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/client/KeyBind;
- public static final fun getKeyBindFromKey (I)Lcom/chattriggers/ctjs/api/client/KeyBind;
- public static final fun getKeyBindFromKey (ILjava/lang/String;)Lcom/chattriggers/ctjs/api/client/KeyBind;
- public static final fun getKeyBindFromKey (ILjava/lang/String;Ljava/lang/String;)Lcom/chattriggers/ctjs/api/client/KeyBind;
- public static synthetic fun getKeyBindFromKey$default (ILjava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/client/KeyBind;
- public static final fun getMaxMemory ()J
- public static final fun getMemoryUsage ()I
- public static final fun getMinecraft ()Lnet/minecraft/client/MinecraftClient;
- public static final fun getMouseX ()D
- public static final fun getMouseY ()D
- public static final fun getSystemTime ()J
- public static final fun getTabGui ()Lnet/minecraft/client/gui/hud/PlayerListHud;
- public static final fun getTotalMemory ()J
- public static final fun getVersion ()Ljava/lang/String;
- public static final fun isAltDown ()Z
- public static final fun isControlDown ()Z
- public static final fun isInChat ()Z
- public static final fun isInGui ()Z
- public static final fun isInTab ()Z
- public static final fun isShiftDown ()Z
- public static final fun isTabbedIn ()Z
- public static final fun paste ()Ljava/lang/String;
- public static final fun scheduleTask (ILkotlin/jvm/functions/Function0;)V
- public static final fun scheduleTask (Lkotlin/jvm/functions/Function0;)V
- public static synthetic fun scheduleTask$default (ILkotlin/jvm/functions/Function0;ILjava/lang/Object;)V
- public static final fun sendPacket (Lnet/minecraft/network/packet/Packet;)V
- public static final fun setCurrentChatMessage (Ljava/lang/String;)V
- public static final fun showTitle (Ljava/lang/String;Ljava/lang/String;III)V
-}
-
-public final class com/chattriggers/ctjs/api/client/Client$CameraWrapper {
- public fun ()V
- public final fun getX ()D
- public final fun getY ()D
- public final fun getZ ()D
-}
-
-public final class com/chattriggers/ctjs/api/client/Client$CurrentGuiWrapper {
- public fun ()V
- public final fun close ()V
- public final fun get ()Lnet/minecraft/client/gui/screen/Screen;
- public final fun getClassName ()Ljava/lang/String;
- public final fun getSlotUnderMouse ()Lcom/chattriggers/ctjs/api/inventory/Slot;
- public final fun set (Lnet/minecraft/client/gui/screen/Screen;)V
-}
-
-public final class com/chattriggers/ctjs/api/client/FileLib {
- public static final field INSTANCE Lcom/chattriggers/ctjs/api/client/FileLib;
+public final class com/chattriggers/ctjs/api/FileLib {
+ public static final field INSTANCE Lcom/chattriggers/ctjs/api/FileLib;
public static final fun append (Ljava/lang/String;Ljava/lang/String;)V
public static final fun append (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
public static final fun decodeBase64 (Ljava/lang/String;)Ljava/lang/String;
@@ -210,6 +106,7 @@ public final class com/chattriggers/ctjs/api/client/FileLib {
public static final fun isDirectory (Ljava/lang/String;Ljava/lang/String;)Z
public static final fun open (Ljava/io/File;)V
public static final fun open (Ljava/lang/String;)V
+ public static final fun openModulesFolder ()V
public static final fun read (Ljava/io/File;)Ljava/lang/String;
public static final fun read (Ljava/lang/String;)Ljava/lang/String;
public static final fun read (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
@@ -222,1694 +119,11 @@ public final class com/chattriggers/ctjs/api/client/FileLib {
public static synthetic fun write$default (Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)V
}
-public final class com/chattriggers/ctjs/api/client/KeyBind {
- public static final field Companion Lcom/chattriggers/ctjs/api/client/KeyBind$Companion;
- public fun (Ljava/lang/String;I)V
- public fun (Ljava/lang/String;ILjava/lang/String;)V
- public synthetic fun (Ljava/lang/String;ILjava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
- public fun (Lnet/minecraft/client/option/KeyBinding;)V
- public final fun getCategory ()Ljava/lang/String;
- public final fun getDescription ()Ljava/lang/String;
- public final fun getKeyCode ()I
- public final fun isKeyDown ()Z
- public final fun isPressed ()Z
- public final fun registerKeyDown (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/client/KeyBind;
- public final fun registerKeyPress (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/client/KeyBind;
- public final fun registerKeyRelease (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/client/KeyBind;
- public final fun setState (Z)V
- public fun toString ()Ljava/lang/String;
- public final fun unregisterKeyDown ()Lcom/chattriggers/ctjs/api/client/KeyBind;
- public final fun unregisterKeyPress ()Lcom/chattriggers/ctjs/api/client/KeyBind;
- public final fun unregisterKeyRelease ()Lcom/chattriggers/ctjs/api/client/KeyBind;
-}
-
-public final class com/chattriggers/ctjs/api/client/KeyBind$Companion : com/chattriggers/ctjs/internal/utils/Initializer {
- public fun init ()V
-}
-
-public final class com/chattriggers/ctjs/api/client/MathLib {
- public static final field INSTANCE Lcom/chattriggers/ctjs/api/client/MathLib;
- public static final fun clamp (III)I
- public static final fun clampFloat (FFF)F
- public static final fun map (FFFFF)F
-}
-
-public final class com/chattriggers/ctjs/api/client/Player {
- public static final field INSTANCE Lcom/chattriggers/ctjs/api/client/Player;
- public static final field armor Lcom/chattriggers/ctjs/api/client/Player$ArmorWrapper;
- public static final fun asPlayerMP ()Lcom/chattriggers/ctjs/api/entity/PlayerMP;
- public static final fun draw (Lorg/mozilla/javascript/NativeObject;)Lcom/chattriggers/ctjs/api/client/Player;
- public static final fun facing ()Ljava/lang/String;
- public static final fun getActivePotionEffects ()Ljava/util/List;
- public static final fun getAirLevel ()I
- public static final fun getArmorPoints ()I
- public static final fun getBiome ()Ljava/lang/String;
- public static final fun getContainer ()Lcom/chattriggers/ctjs/api/inventory/Inventory;
- public static final fun getDisplayName ()Lcom/chattriggers/ctjs/api/message/TextComponent;
- public static final fun getHP ()F
- public static final fun getHeldItem ()Lcom/chattriggers/ctjs/api/inventory/Item;
- public static final fun getHeldItem (Lnet/minecraft/util/Hand;)Lcom/chattriggers/ctjs/api/inventory/Item;
- public static synthetic fun getHeldItem$default (Lnet/minecraft/util/Hand;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/inventory/Item;
- public static final fun getHeldItemIndex ()I
- public static final fun getHunger ()I
- public static final fun getInventory ()Lcom/chattriggers/ctjs/api/inventory/Inventory;
- public static final fun getLastX ()D
- public static final fun getLastY ()D
- public static final fun getLastZ ()D
- public static final fun getLightLevel ()I
- public static final fun getMotionX ()D
- public static final fun getMotionY ()D
- public static final fun getMotionZ ()D
- public static final fun getName ()Ljava/lang/String;
- public static final fun getPitch ()D
- public static final fun getPlayer ()Lnet/minecraft/client/network/ClientPlayerEntity;
- public static final fun getPos ()Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public static final fun getRenderX ()D
- public static final fun getRenderY ()D
- public static final fun getRenderZ ()D
- public static final fun getRotation ()Lnet/minecraft/util/math/Vec2f;
- public static final fun getSaturation ()F
- public static final fun getTeam ()Lcom/chattriggers/ctjs/api/entity/Team;
- public static final fun getUUID ()Ljava/util/UUID;
- public static final fun getX ()D
- public static final fun getXPLevel ()I
- public static final fun getXPProgress ()F
- public static final fun getY ()D
- public static final fun getYaw ()D
- public static final fun getZ ()D
- public static final fun isFlying ()Z
- public static final fun isMoving ()Z
- public static final fun isSleeping ()Z
- public static final fun isSneaking ()Z
- public static final fun isSprinting ()Z
- public static final fun lookingAt ()Ljava/lang/Object;
- public static final fun setHeldItemIndex (I)V
- public static final fun setNametagName (Lcom/chattriggers/ctjs/api/message/TextComponent;)V
- public static final fun setTabDisplayName (Lcom/chattriggers/ctjs/api/message/TextComponent;)V
- public static final fun toMC ()Lnet/minecraft/client/network/ClientPlayerEntity;
-}
-
-public final class com/chattriggers/ctjs/api/client/Player$ArmorWrapper {
- public fun ()V
- public final fun getBoots ()Lcom/chattriggers/ctjs/api/inventory/Item;
- public final fun getChestplate ()Lcom/chattriggers/ctjs/api/inventory/Item;
- public final fun getHelmet ()Lcom/chattriggers/ctjs/api/inventory/Item;
- public final fun getLeggings ()Lcom/chattriggers/ctjs/api/inventory/Item;
-}
-
-public final class com/chattriggers/ctjs/api/client/Settings {
- public static final field INSTANCE Lcom/chattriggers/ctjs/api/client/Settings;
- public static final field chat Lcom/chattriggers/ctjs/api/client/Settings$ChatWrapper;
- public static final field skin Lcom/chattriggers/ctjs/api/client/Settings$SkinWrapper;
- public static final field sound Lcom/chattriggers/ctjs/api/client/Settings$SoundWrapper;
- public static final field video Lcom/chattriggers/ctjs/api/client/Settings$VideoWrapper;
- public static final fun getDifficulty ()Lcom/chattriggers/ctjs/api/client/Settings$Difficulty;
- public static final fun getFOV ()Ljava/lang/Integer;
- public static final fun getSettings ()Lnet/minecraft/client/option/GameOptions;
- public static final fun setFOV (I)V
- public static final fun toMC ()Lnet/minecraft/client/option/GameOptions;
-}
-
-public final class com/chattriggers/ctjs/api/client/Settings$ChatVisibility : java/lang/Enum, com/chattriggers/ctjs/api/CTWrapper {
- public static final field Companion Lcom/chattriggers/ctjs/api/client/Settings$ChatVisibility$Companion;
- public static final field FULL Lcom/chattriggers/ctjs/api/client/Settings$ChatVisibility;
- public static final field HIDDEN Lcom/chattriggers/ctjs/api/client/Settings$ChatVisibility;
- public static final field SYSTEM Lcom/chattriggers/ctjs/api/client/Settings$ChatVisibility;
- public static final fun from (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/client/Settings$ChatVisibility;
- public static final fun fromMC (Lnet/minecraft/network/message/ChatVisibility;)Lcom/chattriggers/ctjs/api/client/Settings$ChatVisibility;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/network/message/ChatVisibility;
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/network/message/ChatVisibility;
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/client/Settings$ChatVisibility;
- public static fun values ()[Lcom/chattriggers/ctjs/api/client/Settings$ChatVisibility;
-}
-
-public final class com/chattriggers/ctjs/api/client/Settings$ChatVisibility$Companion {
- public final fun from (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/client/Settings$ChatVisibility;
- public final fun fromMC (Lnet/minecraft/network/message/ChatVisibility;)Lcom/chattriggers/ctjs/api/client/Settings$ChatVisibility;
-}
-
-public final class com/chattriggers/ctjs/api/client/Settings$ChatWrapper {
- public fun ()V
- public final fun getColors ()Ljava/lang/Boolean;
- public final fun getFocusedHeight ()Ljava/lang/Double;
- public final fun getOpacity ()Ljava/lang/Double;
- public final fun getPromptOnWebLinks ()Ljava/lang/Boolean;
- public final fun getReducedDebugInfo ()Ljava/lang/Boolean;
- public final fun getScale ()Ljava/lang/Double;
- public final fun getUnfocusedHeight ()Ljava/lang/Double;
- public final fun getVisibility ()Lcom/chattriggers/ctjs/api/client/Settings$ChatVisibility;
- public final fun getWebLinks ()Ljava/lang/Boolean;
- public final fun getWidth ()Ljava/lang/Double;
- public final fun setColors (Z)V
- public final fun setFocusedHeight (D)V
- public final fun setOpacity (D)V
- public final fun setPromptOnWebLinks (Z)V
- public final fun setReducedDebugInfo (Z)V
- public final fun setScale (D)V
- public final fun setUnfocusedHeight (D)V
- public final fun setVisibility (Lcom/chattriggers/ctjs/api/client/Settings$ChatVisibility;)V
- public final fun setWebLinks (Z)V
- public final fun setWidth (D)V
-}
-
-public final class com/chattriggers/ctjs/api/client/Settings$CloudRenderMode : java/lang/Enum, com/chattriggers/ctjs/api/CTWrapper {
- public static final field Companion Lcom/chattriggers/ctjs/api/client/Settings$CloudRenderMode$Companion;
- public static final field FANCY Lcom/chattriggers/ctjs/api/client/Settings$CloudRenderMode;
- public static final field FAST Lcom/chattriggers/ctjs/api/client/Settings$CloudRenderMode;
- public static final field OFF Lcom/chattriggers/ctjs/api/client/Settings$CloudRenderMode;
- public static final fun from (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/client/Settings$CloudRenderMode;
- public static final fun fromMC (Lnet/minecraft/client/option/CloudRenderMode;)Lcom/chattriggers/ctjs/api/client/Settings$CloudRenderMode;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/client/option/CloudRenderMode;
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/client/option/CloudRenderMode;
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/client/Settings$CloudRenderMode;
- public static fun values ()[Lcom/chattriggers/ctjs/api/client/Settings$CloudRenderMode;
-}
-
-public final class com/chattriggers/ctjs/api/client/Settings$CloudRenderMode$Companion {
- public final fun from (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/client/Settings$CloudRenderMode;
- public final fun fromMC (Lnet/minecraft/client/option/CloudRenderMode;)Lcom/chattriggers/ctjs/api/client/Settings$CloudRenderMode;
-}
-
-public final class com/chattriggers/ctjs/api/client/Settings$Difficulty : java/lang/Enum, com/chattriggers/ctjs/api/CTWrapper {
- public static final field Companion Lcom/chattriggers/ctjs/api/client/Settings$Difficulty$Companion;
- public static final field EASY Lcom/chattriggers/ctjs/api/client/Settings$Difficulty;
- public static final field HARD Lcom/chattriggers/ctjs/api/client/Settings$Difficulty;
- public static final field NORMAL Lcom/chattriggers/ctjs/api/client/Settings$Difficulty;
- public static final field PEACEFUL Lcom/chattriggers/ctjs/api/client/Settings$Difficulty;
- public static final fun fromMC (Lnet/minecraft/world/Difficulty;)Lcom/chattriggers/ctjs/api/client/Settings$Difficulty;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/world/Difficulty;
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/world/Difficulty;
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/client/Settings$Difficulty;
- public static fun values ()[Lcom/chattriggers/ctjs/api/client/Settings$Difficulty;
-}
-
-public final class com/chattriggers/ctjs/api/client/Settings$Difficulty$Companion {
- public final fun fromMC (Lnet/minecraft/world/Difficulty;)Lcom/chattriggers/ctjs/api/client/Settings$Difficulty;
-}
-
-public final class com/chattriggers/ctjs/api/client/Settings$GraphicsMode : java/lang/Enum, com/chattriggers/ctjs/api/CTWrapper {
- public static final field Companion Lcom/chattriggers/ctjs/api/client/Settings$GraphicsMode$Companion;
- public static final field FABULOUS Lcom/chattriggers/ctjs/api/client/Settings$GraphicsMode;
- public static final field FANCY Lcom/chattriggers/ctjs/api/client/Settings$GraphicsMode;
- public static final field FAST Lcom/chattriggers/ctjs/api/client/Settings$GraphicsMode;
- public static final fun fromMC (Lnet/minecraft/client/option/GraphicsMode;)Lcom/chattriggers/ctjs/api/client/Settings$GraphicsMode;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/client/option/GraphicsMode;
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/client/option/GraphicsMode;
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/client/Settings$GraphicsMode;
- public static fun values ()[Lcom/chattriggers/ctjs/api/client/Settings$GraphicsMode;
-}
-
-public final class com/chattriggers/ctjs/api/client/Settings$GraphicsMode$Companion {
- public final fun fromMC (Lnet/minecraft/client/option/GraphicsMode;)Lcom/chattriggers/ctjs/api/client/Settings$GraphicsMode;
-}
-
-public final class com/chattriggers/ctjs/api/client/Settings$ParticlesMode : java/lang/Enum, com/chattriggers/ctjs/api/CTWrapper {
- public static final field ALL Lcom/chattriggers/ctjs/api/client/Settings$ParticlesMode;
- public static final field Companion Lcom/chattriggers/ctjs/api/client/Settings$ParticlesMode$Companion;
- public static final field DECREASED Lcom/chattriggers/ctjs/api/client/Settings$ParticlesMode;
- public static final field MINIMAL Lcom/chattriggers/ctjs/api/client/Settings$ParticlesMode;
- public static final fun from (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/client/Settings$ParticlesMode;
- public static final fun fromMC (Lnet/minecraft/client/option/ParticlesMode;)Lcom/chattriggers/ctjs/api/client/Settings$ParticlesMode;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/client/option/ParticlesMode;
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/client/option/ParticlesMode;
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/client/Settings$ParticlesMode;
- public static fun values ()[Lcom/chattriggers/ctjs/api/client/Settings$ParticlesMode;
-}
-
-public final class com/chattriggers/ctjs/api/client/Settings$ParticlesMode$Companion {
- public final fun from (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/client/Settings$ParticlesMode;
- public final fun fromMC (Lnet/minecraft/client/option/ParticlesMode;)Lcom/chattriggers/ctjs/api/client/Settings$ParticlesMode;
-}
-
-public final class com/chattriggers/ctjs/api/client/Settings$SkinWrapper {
- public fun ()V
- public final fun isCapeEnabled ()Z
- public final fun isHatEnabled ()Z
- public final fun isJacketEnabled ()Z
- public final fun isLeftPantsLegEnabled ()Z
- public final fun isLeftSleeveEnabled ()Z
- public final fun isRightPantsLegEnabled ()Z
- public final fun isRightSleeveEnabled ()Z
- public final fun setCapeEnabled (Z)V
- public final fun setHatEnabled (Z)V
- public final fun setJacketEnabled (Z)V
- public final fun setLeftPantsLegEnabled (Z)V
- public final fun setLeftSleeveEnabled (Z)V
- public final fun setRightPantsLegEnabled (Z)V
- public final fun setRightSleeveEnabled (Z)V
-}
-
-public final class com/chattriggers/ctjs/api/client/Settings$SoundWrapper {
- public fun ()V
- public final fun getAmbient ()Ljava/lang/Double;
- public final fun getBlocks ()Ljava/lang/Double;
- public final fun getFriendlyCreatures ()Ljava/lang/Double;
- public final fun getHostileCreatures ()Ljava/lang/Double;
- public final fun getMasterVolume ()Ljava/lang/Double;
- public final fun getMusicVolume ()Ljava/lang/Double;
- public final fun getNoteblockVolume ()Ljava/lang/Double;
- public final fun getPlayers ()Ljava/lang/Double;
- public final fun getWeather ()Ljava/lang/Double;
- public final fun setAmbient (D)V
- public final fun setBlocks (D)V
- public final fun setFriendlyCreatures (D)V
- public final fun setHostileCreatures (D)V
- public final fun setMasterVolume (D)V
- public final fun setMusicVolume (D)V
- public final fun setNoteblockVolume (D)V
- public final fun setPlayers (D)V
- public final fun setWeather (D)V
-}
-
-public final class com/chattriggers/ctjs/api/client/Settings$VideoWrapper {
- public fun ()V
- public final fun getBobbing ()Ljava/lang/Boolean;
- public final fun getBrightness ()Ljava/lang/Double;
- public final fun getClouds ()Lcom/chattriggers/ctjs/api/client/Settings$CloudRenderMode;
- public final fun getEntityShadows ()Ljava/lang/Boolean;
- public final fun getFullscreen ()Ljava/lang/Boolean;
- public final fun getGraphicsMode ()Lcom/chattriggers/ctjs/api/client/Settings$GraphicsMode;
- public final fun getGuiScale ()Ljava/lang/Integer;
- public final fun getMaxFrameRate ()Ljava/lang/Integer;
- public final fun getMipmapLevels ()Ljava/lang/Integer;
- public final fun getParticles ()Lcom/chattriggers/ctjs/api/client/Settings$ParticlesMode;
- public final fun getRenderDistance ()Ljava/lang/Integer;
- public final fun getSmoothLighting ()Ljava/lang/Boolean;
- public final fun getVsync ()Ljava/lang/Boolean;
- public final fun setBobbing (Z)V
- public final fun setBrightness (D)V
- public final fun setClouds (Lcom/chattriggers/ctjs/api/client/Settings$CloudRenderMode;)V
- public final fun setEntityShadows (Z)V
- public final fun setFullscreen (Z)V
- public final fun setGraphicsMode (Lcom/chattriggers/ctjs/api/client/Settings$GraphicsMode;)V
- public final fun setGuiScale (I)V
- public final fun setMaxFrameRate (I)V
- public final fun setMipmapLevels (I)V
- public final fun setParticles (Lcom/chattriggers/ctjs/api/client/Settings$ParticlesMode;)V
- public final fun setRenderDistance (I)V
- public final fun setSmoothLighting (Z)V
- public final fun setVsync (Z)V
-}
-
-public final class com/chattriggers/ctjs/api/client/Sound {
- public fun (Lorg/mozilla/javascript/NativeObject;)V
- public final fun destroy ()V
- public final fun getAttenuation ()I
- public final fun getAttenuationType ()Lcom/chattriggers/ctjs/api/client/Sound$AttenuationType;
- public final fun getCategory ()Lcom/chattriggers/ctjs/api/client/Sound$Category;
- public final fun getLoop ()Z
- public final fun getLoopDelay ()I
- public final fun getPitch ()F
- public final fun getPosition ()Lnet/minecraft/util/math/Vec3d;
- public final fun getVolume ()F
- public final fun getX ()D
- public final fun getY ()D
- public final fun getZ ()D
- public final fun pause ()V
- public final fun play ()V
- public final fun play (I)V
- public static synthetic fun play$default (Lcom/chattriggers/ctjs/api/client/Sound;IILjava/lang/Object;)V
- public final fun rewind ()V
- public final fun setAttenuation (I)Lcom/chattriggers/ctjs/api/client/Sound;
- public final fun setAttenuationType (Lcom/chattriggers/ctjs/api/client/Sound$AttenuationType;)Lcom/chattriggers/ctjs/api/client/Sound;
- public final fun setCategory (Lcom/chattriggers/ctjs/api/client/Sound$Category;)Lcom/chattriggers/ctjs/api/client/Sound;
- public final fun setLoop (Z)Lcom/chattriggers/ctjs/api/client/Sound;
- public final fun setLoopDelay (I)Lcom/chattriggers/ctjs/api/client/Sound;
- public final fun setPitch (F)Lcom/chattriggers/ctjs/api/client/Sound;
- public final fun setPosition (DDD)Lcom/chattriggers/ctjs/api/client/Sound;
- public final fun setVolume (F)Lcom/chattriggers/ctjs/api/client/Sound;
- public final fun setX (D)Lcom/chattriggers/ctjs/api/client/Sound;
- public final fun setY (D)Lcom/chattriggers/ctjs/api/client/Sound;
- public final fun setZ (D)Lcom/chattriggers/ctjs/api/client/Sound;
- public final fun stop ()V
-}
-
-public final class com/chattriggers/ctjs/api/client/Sound$AttenuationType : java/lang/Enum, com/chattriggers/ctjs/api/CTWrapper {
- public static final field Companion Lcom/chattriggers/ctjs/api/client/Sound$AttenuationType$Companion;
- public static final field LINEAR Lcom/chattriggers/ctjs/api/client/Sound$AttenuationType;
- public static final field NONE Lcom/chattriggers/ctjs/api/client/Sound$AttenuationType;
- public static final fun from (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/client/Sound$AttenuationType;
- public static final fun fromMC (Lnet/minecraft/client/sound/SoundInstance$AttenuationType;)Lcom/chattriggers/ctjs/api/client/Sound$AttenuationType;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/client/sound/SoundInstance$AttenuationType;
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/client/sound/SoundInstance$AttenuationType;
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/client/Sound$AttenuationType;
- public static fun values ()[Lcom/chattriggers/ctjs/api/client/Sound$AttenuationType;
-}
-
-public final class com/chattriggers/ctjs/api/client/Sound$AttenuationType$Companion {
- public final fun from (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/client/Sound$AttenuationType;
- public final fun fromMC (Lnet/minecraft/client/sound/SoundInstance$AttenuationType;)Lcom/chattriggers/ctjs/api/client/Sound$AttenuationType;
-}
-
-public final class com/chattriggers/ctjs/api/client/Sound$Category : java/lang/Enum, com/chattriggers/ctjs/api/CTWrapper {
- public static final field AMBIENT Lcom/chattriggers/ctjs/api/client/Sound$Category;
- public static final field BLOCKS Lcom/chattriggers/ctjs/api/client/Sound$Category;
- public static final field Companion Lcom/chattriggers/ctjs/api/client/Sound$Category$Companion;
- public static final field HOSTILE Lcom/chattriggers/ctjs/api/client/Sound$Category;
- public static final field MASTER Lcom/chattriggers/ctjs/api/client/Sound$Category;
- public static final field MUSIC Lcom/chattriggers/ctjs/api/client/Sound$Category;
- public static final field NEUTRAL Lcom/chattriggers/ctjs/api/client/Sound$Category;
- public static final field PLAYERS Lcom/chattriggers/ctjs/api/client/Sound$Category;
- public static final field RECORDS Lcom/chattriggers/ctjs/api/client/Sound$Category;
- public static final field VOICE Lcom/chattriggers/ctjs/api/client/Sound$Category;
- public static final field WEATHER Lcom/chattriggers/ctjs/api/client/Sound$Category;
- public static final fun from (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/client/Sound$Category;
- public static final fun fromMC (Lnet/minecraft/sound/SoundCategory;)Lcom/chattriggers/ctjs/api/client/Sound$Category;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/sound/SoundCategory;
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/sound/SoundCategory;
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/client/Sound$Category;
- public static fun values ()[Lcom/chattriggers/ctjs/api/client/Sound$Category;
-}
-
-public final class com/chattriggers/ctjs/api/client/Sound$Category$Companion {
- public final fun from (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/client/Sound$Category;
- public final fun fromMC (Lnet/minecraft/sound/SoundCategory;)Lcom/chattriggers/ctjs/api/client/Sound$Category;
-}
-
-public final class com/chattriggers/ctjs/api/commands/DynamicCommands : com/chattriggers/ctjs/internal/commands/CommandCollection {
- public static final field INSTANCE Lcom/chattriggers/ctjs/api/commands/DynamicCommands;
- public static final fun angle ()Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun argument (Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;Lorg/mozilla/javascript/Function;)V
- public static final fun blockPos ()Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun blockPredicate ()Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun blockState ()Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun bool ()Lcom/mojang/brigadier/arguments/BoolArgumentType;
- public static final fun buildCommand (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/commands/RootCommand;
- public static final fun buildCommand (Ljava/lang/String;Lorg/mozilla/javascript/Function;)Lcom/chattriggers/ctjs/api/commands/RootCommand;
- public static synthetic fun buildCommand$default (Ljava/lang/String;Lorg/mozilla/javascript/Function;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/commands/RootCommand;
- public static final fun choices ([Ljava/lang/String;)Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun color ()Lnet/minecraft/command/argument/ColorArgumentType;
- public static final fun columnPos ()Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun custom (Lorg/mozilla/javascript/NativeObject;)Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun dimension ()Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun double ()Lcom/mojang/brigadier/arguments/DoubleArgumentType;
- public static final fun double (D)Lcom/mojang/brigadier/arguments/DoubleArgumentType;
- public static final fun double (DD)Lcom/mojang/brigadier/arguments/DoubleArgumentType;
- public static synthetic fun double$default (DDILjava/lang/Object;)Lcom/mojang/brigadier/arguments/DoubleArgumentType;
- public static final fun entities ()Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun entity ()Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun error (Lcom/mojang/brigadier/ImmutableStringReader;Lcom/chattriggers/ctjs/api/message/TextComponent;)Ljava/lang/Void;
- public static final fun error (Lcom/mojang/brigadier/ImmutableStringReader;Ljava/lang/String;)Ljava/lang/Void;
- public static final fun exec (Lorg/mozilla/javascript/Function;)V
- public static final fun float ()Lcom/mojang/brigadier/arguments/FloatArgumentType;
- public static final fun float (F)Lcom/mojang/brigadier/arguments/FloatArgumentType;
- public static final fun float (FF)Lcom/mojang/brigadier/arguments/FloatArgumentType;
- public static synthetic fun float$default (FFILjava/lang/Object;)Lcom/mojang/brigadier/arguments/FloatArgumentType;
- public static final fun floatRange ()Lnet/minecraft/command/argument/NumberRangeArgumentType$FloatRangeArgumentType;
- public static final fun gameMode ()Lnet/minecraft/command/argument/GameModeArgumentType;
- public static final fun gameProfile ()Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun getDispatcherRoot ()Lcom/mojang/brigadier/tree/RootCommandNode;
- public static final fun greedyString ()Lcom/mojang/brigadier/arguments/StringArgumentType;
- public static final fun intRange ()Lnet/minecraft/command/argument/NumberRangeArgumentType$IntRangeArgumentType;
- public static final fun integer ()Lcom/mojang/brigadier/arguments/IntegerArgumentType;
- public static final fun integer (I)Lcom/mojang/brigadier/arguments/IntegerArgumentType;
- public static final fun integer (II)Lcom/mojang/brigadier/arguments/IntegerArgumentType;
- public static synthetic fun integer$default (IIILjava/lang/Object;)Lcom/mojang/brigadier/arguments/IntegerArgumentType;
- public static final fun itemPredicate ()Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun itemSlot ()Lnet/minecraft/command/argument/ItemSlotArgumentType;
- public static final fun itemStack ()Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun literal (Ljava/lang/String;Lorg/mozilla/javascript/Function;)V
- public static final fun long ()Lcom/mojang/brigadier/arguments/LongArgumentType;
- public static final fun long (J)Lcom/mojang/brigadier/arguments/LongArgumentType;
- public static final fun long (JJ)Lcom/mojang/brigadier/arguments/LongArgumentType;
- public static synthetic fun long$default (JJILjava/lang/Object;)Lcom/mojang/brigadier/arguments/LongArgumentType;
- public static final fun message ()Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun nbtCompoundTag ()Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun nbtPath ()Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun nbtTag ()Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun player ()Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun players ()Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun redirect (Lcom/chattriggers/ctjs/api/commands/RootCommand;)V
- public static final fun redirect (Lcom/mojang/brigadier/tree/CommandNode;)V
- public static final fun registerCommand (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/commands/RootCommand;
- public static final fun registerCommand (Ljava/lang/String;Lorg/mozilla/javascript/Function;)Lcom/chattriggers/ctjs/api/commands/RootCommand;
- public static synthetic fun registerCommand$default (Ljava/lang/String;Lorg/mozilla/javascript/Function;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/commands/RootCommand;
- public static final fun resource ()Lnet/minecraft/command/argument/IdentifierArgumentType;
- public static final fun rotation ()Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun string ()Lcom/mojang/brigadier/arguments/StringArgumentType;
- public static final fun swizzle ()Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun time ()Lnet/minecraft/command/argument/TimeArgumentType;
- public static final fun time (I)Lnet/minecraft/command/argument/TimeArgumentType;
- public static synthetic fun time$default (IILjava/lang/Object;)Lnet/minecraft/command/argument/TimeArgumentType;
- public static final fun uuid ()Lnet/minecraft/command/argument/UuidArgumentType;
- public static final fun vec2 ()Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun vec2 (Z)Lcom/mojang/brigadier/arguments/ArgumentType;
- public static synthetic fun vec2$default (ZILjava/lang/Object;)Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun vec3 ()Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun vec3 (Z)Lcom/mojang/brigadier/arguments/ArgumentType;
- public static synthetic fun vec3$default (ZILjava/lang/Object;)Lcom/mojang/brigadier/arguments/ArgumentType;
- public static final fun word ()Lcom/mojang/brigadier/arguments/StringArgumentType;
-}
-
-public final class com/chattriggers/ctjs/api/commands/DynamicCommands$AngleArgumentWrapper {
- public fun (Lnet/minecraft/command/argument/AngleArgumentType$Angle;)V
- public final fun component1 ()Lnet/minecraft/command/argument/AngleArgumentType$Angle;
- public final fun copy (Lnet/minecraft/command/argument/AngleArgumentType$Angle;)Lcom/chattriggers/ctjs/api/commands/DynamicCommands$AngleArgumentWrapper;
- public static synthetic fun copy$default (Lcom/chattriggers/ctjs/api/commands/DynamicCommands$AngleArgumentWrapper;Lnet/minecraft/command/argument/AngleArgumentType$Angle;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/commands/DynamicCommands$AngleArgumentWrapper;
- public fun equals (Ljava/lang/Object;)Z
- public final fun getAngle ()F
- public final fun getAngle ()Lnet/minecraft/command/argument/AngleArgumentType$Angle;
- public final fun getAngle (Lcom/chattriggers/ctjs/api/entity/Entity;)F
- public static synthetic fun getAngle$default (Lcom/chattriggers/ctjs/api/commands/DynamicCommands$AngleArgumentWrapper;Lcom/chattriggers/ctjs/api/entity/Entity;ILjava/lang/Object;)F
- public fun hashCode ()I
- public fun toString ()Ljava/lang/String;
-}
-
-public final class com/chattriggers/ctjs/api/commands/DynamicCommands$BlockPredicateWrapper {
- public fun (Lnet/minecraft/command/argument/BlockPredicateArgumentType$BlockPredicate;)V
- public final fun component1 ()Lnet/minecraft/command/argument/BlockPredicateArgumentType$BlockPredicate;
- public final fun copy (Lnet/minecraft/command/argument/BlockPredicateArgumentType$BlockPredicate;)Lcom/chattriggers/ctjs/api/commands/DynamicCommands$BlockPredicateWrapper;
- public static synthetic fun copy$default (Lcom/chattriggers/ctjs/api/commands/DynamicCommands$BlockPredicateWrapper;Lnet/minecraft/command/argument/BlockPredicateArgumentType$BlockPredicate;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/commands/DynamicCommands$BlockPredicateWrapper;
- public fun equals (Ljava/lang/Object;)Z
- public final fun getImpl ()Lnet/minecraft/command/argument/BlockPredicateArgumentType$BlockPredicate;
- public fun hashCode ()I
- public final fun test (Lcom/chattriggers/ctjs/api/world/block/BlockPos;)Z
- public fun toString ()Ljava/lang/String;
-}
-
-public final class com/chattriggers/ctjs/api/commands/DynamicCommands$BlockStateArgumentWrapper {
- public fun (Lnet/minecraft/command/argument/BlockStateArgument;)V
- public final fun component1 ()Lnet/minecraft/command/argument/BlockStateArgument;
- public final fun copy (Lnet/minecraft/command/argument/BlockStateArgument;)Lcom/chattriggers/ctjs/api/commands/DynamicCommands$BlockStateArgumentWrapper;
- public static synthetic fun copy$default (Lcom/chattriggers/ctjs/api/commands/DynamicCommands$BlockStateArgumentWrapper;Lnet/minecraft/command/argument/BlockStateArgument;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/commands/DynamicCommands$BlockStateArgumentWrapper;
- public fun equals (Ljava/lang/Object;)Z
- public final fun getImpl ()Lnet/minecraft/command/argument/BlockStateArgument;
- public fun hashCode ()I
- public final fun test (Lcom/chattriggers/ctjs/api/world/block/BlockPos;)Z
- public fun toString ()Ljava/lang/String;
-}
-
-public final class com/chattriggers/ctjs/api/commands/DynamicCommands$EntitySelectorWrapper {
- public fun (Lnet/minecraft/command/EntitySelector;)V
- public final fun getEntities ()Ljava/util/List;
- public final fun getEntity ()Lcom/chattriggers/ctjs/api/entity/Entity;
- public final fun getPlayers ()Ljava/util/List;
-}
-
-public final class com/chattriggers/ctjs/api/commands/DynamicCommands$ItemStackArgumentWrapper : java/util/function/Predicate {
- public fun (Lnet/minecraft/command/argument/ItemStackArgument;)V
- public final fun copy (Lnet/minecraft/command/argument/ItemStackArgument;)Lcom/chattriggers/ctjs/api/commands/DynamicCommands$ItemStackArgumentWrapper;
- public static synthetic fun copy$default (Lcom/chattriggers/ctjs/api/commands/DynamicCommands$ItemStackArgumentWrapper;Lnet/minecraft/command/argument/ItemStackArgument;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/commands/DynamicCommands$ItemStackArgumentWrapper;
- public fun equals (Ljava/lang/Object;)Z
- public final fun getItemType ()Lcom/chattriggers/ctjs/api/inventory/ItemType;
- public fun hashCode ()I
- public fun test (Lcom/chattriggers/ctjs/api/inventory/Item;)Z
- public final fun test (Lcom/chattriggers/ctjs/api/inventory/ItemType;)Z
- public synthetic fun test (Ljava/lang/Object;)Z
- public fun toString ()Ljava/lang/String;
-}
-
-public final class com/chattriggers/ctjs/api/commands/DynamicCommands$MessageFormatArgumentWrapper {
- public fun (Lnet/minecraft/command/argument/MessageArgumentType$MessageFormat;)V
- public final fun copy (Lnet/minecraft/command/argument/MessageArgumentType$MessageFormat;)Lcom/chattriggers/ctjs/api/commands/DynamicCommands$MessageFormatArgumentWrapper;
- public static synthetic fun copy$default (Lcom/chattriggers/ctjs/api/commands/DynamicCommands$MessageFormatArgumentWrapper;Lnet/minecraft/command/argument/MessageArgumentType$MessageFormat;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/commands/DynamicCommands$MessageFormatArgumentWrapper;
- public fun equals (Ljava/lang/Object;)Z
- public final fun format ()Lcom/chattriggers/ctjs/api/message/TextComponent;
- public final fun getText ()Ljava/lang/String;
- public fun hashCode ()I
- public final fun setText (Ljava/lang/String;)V
- public fun toString ()Ljava/lang/String;
-}
-
-public final class com/chattriggers/ctjs/api/commands/DynamicCommands$NbtPathWrapper {
- public fun (Lnet/minecraft/command/argument/NbtPathArgumentType$NbtPath;)V
- public final fun copy (Lnet/minecraft/command/argument/NbtPathArgumentType$NbtPath;)Lcom/chattriggers/ctjs/api/commands/DynamicCommands$NbtPathWrapper;
- public static synthetic fun copy$default (Lcom/chattriggers/ctjs/api/commands/DynamicCommands$NbtPathWrapper;Lnet/minecraft/command/argument/NbtPathArgumentType$NbtPath;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/commands/DynamicCommands$NbtPathWrapper;
- public final fun count (Lcom/chattriggers/ctjs/api/inventory/nbt/NBTBase;)I
- public fun equals (Ljava/lang/Object;)Z
- public final fun get (Lcom/chattriggers/ctjs/api/inventory/nbt/NBTBase;)Ljava/util/List;
- public final fun getOrInit (Lcom/chattriggers/ctjs/api/inventory/nbt/NBTBase;Lkotlin/jvm/functions/Function0;)Ljava/util/List;
- public fun hashCode ()I
- public final fun insert (ILcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound;Ljava/util/List;)I
- public final fun put (Lcom/chattriggers/ctjs/api/inventory/nbt/NBTBase;Lcom/chattriggers/ctjs/api/inventory/nbt/NBTBase;)I
- public final fun remove (Lcom/chattriggers/ctjs/api/inventory/nbt/NBTBase;)I
- public fun toString ()Ljava/lang/String;
-}
-
-public final class com/chattriggers/ctjs/api/commands/DynamicCommands$PosArgumentWrapper : net/minecraft/command/argument/PosArgument {
- public fun (Lnet/minecraft/command/argument/PosArgument;)V
- public final fun component1 ()Lnet/minecraft/command/argument/PosArgument;
- public final fun copy (Lnet/minecraft/command/argument/PosArgument;)Lcom/chattriggers/ctjs/api/commands/DynamicCommands$PosArgumentWrapper;
- public static synthetic fun copy$default (Lcom/chattriggers/ctjs/api/commands/DynamicCommands$PosArgumentWrapper;Lnet/minecraft/command/argument/PosArgument;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/commands/DynamicCommands$PosArgumentWrapper;
- public fun equals (Ljava/lang/Object;)Z
- public final fun getImpl ()Lnet/minecraft/command/argument/PosArgument;
- public fun hashCode ()I
- public fun isXRelative ()Z
- public fun isYRelative ()Z
- public fun isZRelative ()Z
- public final fun toAbsoluteBlockPos ()Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public final fun toAbsolutePos ()Lnet/minecraft/util/math/Vec3d;
- public fun toAbsolutePos (Lnet/minecraft/server/command/ServerCommandSource;)Lnet/minecraft/util/math/Vec3d;
- public final fun toAbsoluteRotation ()Lnet/minecraft/util/math/Vec2f;
- public fun toAbsoluteRotation (Lnet/minecraft/server/command/ServerCommandSource;)Lnet/minecraft/util/math/Vec2f;
- public fun toString ()Ljava/lang/String;
-}
-
-public abstract interface class com/chattriggers/ctjs/api/commands/RootCommand {
- public abstract fun register ()V
-}
-
-public final class com/chattriggers/ctjs/api/entity/BlockEntity : com/chattriggers/ctjs/api/CTWrapper {
- public fun (Lnet/minecraft/block/entity/BlockEntity;)V
- public final fun getBlock ()Lcom/chattriggers/ctjs/api/world/block/Block;
- public final fun getBlockPos ()Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public final fun getBlockType ()Lcom/chattriggers/ctjs/api/world/block/BlockType;
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/block/entity/BlockEntity;
- public final fun getX ()I
- public final fun getY ()I
- public final fun getZ ()I
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/block/entity/BlockEntity;
- public fun toString ()Ljava/lang/String;
-}
-
-public class com/chattriggers/ctjs/api/entity/Entity : com/chattriggers/ctjs/api/CTWrapper {
- public static final field Companion Lcom/chattriggers/ctjs/api/entity/Entity$Companion;
- public fun (Lnet/minecraft/entity/Entity;)V
- public final fun canBeCollidedWith ()Z
- public final fun canBePushed ()Z
- public final fun distanceTo (DDD)D
- public final fun distanceTo (Lcom/chattriggers/ctjs/api/entity/Entity;)F
- public final fun distanceTo (Lcom/chattriggers/ctjs/api/world/block/BlockPos;)D
- public final fun distanceTo (Lnet/minecraft/entity/Entity;)F
- public static final fun fromMC (Lnet/minecraft/entity/Entity;)Lcom/chattriggers/ctjs/api/entity/Entity;
- public final fun getAir ()I
- public final fun getChunk ()Lcom/chattriggers/ctjs/api/world/Chunk;
- public final fun getClassName ()Ljava/lang/String;
- public final fun getDimension ()Lcom/chattriggers/ctjs/api/entity/Entity$DimensionType;
- public final fun getDistanceWalked ()F
- public final fun getEyeHeight ()F
- public final fun getEyePosition ()Lnet/minecraft/util/math/Vec3d;
- public final fun getEyePosition (F)Lnet/minecraft/util/math/Vec3d;
- public static synthetic fun getEyePosition$default (Lcom/chattriggers/ctjs/api/entity/Entity;FILjava/lang/Object;)Lnet/minecraft/util/math/Vec3d;
- public final fun getFireResistance ()I
- public final fun getHeight ()F
- public final fun getLastX ()D
- public final fun getLastY ()D
- public final fun getLastZ ()D
- public final fun getLookVector ()Lnet/minecraft/util/math/Vec3d;
- public final fun getLookVector (F)Lnet/minecraft/util/math/Vec3d;
- public static synthetic fun getLookVector$default (Lcom/chattriggers/ctjs/api/entity/Entity;FILjava/lang/Object;)Lnet/minecraft/util/math/Vec3d;
- public final fun getMaxInPortalTime ()I
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/entity/Entity;
- public final fun getMotionX ()D
- public final fun getMotionY ()D
- public final fun getMotionZ ()D
- public final fun getName ()Ljava/lang/String;
- public final fun getNameComponent ()Lcom/chattriggers/ctjs/api/message/TextComponent;
- public final fun getPitch ()F
- public final fun getPos ()Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public final fun getRenderX ()D
- public final fun getRenderY ()D
- public final fun getRenderZ ()D
- public final fun getRiders ()Ljava/util/List;
- public final fun getRiding ()Lcom/chattriggers/ctjs/api/entity/Entity;
- public final fun getRotation ()Lnet/minecraft/util/math/Vec2f;
- public final fun getStepHeight ()F
- public final fun getTicksExisted ()I
- public final fun getUUID ()Ljava/util/UUID;
- public final fun getWidth ()F
- public final fun getWorld ()Lnet/minecraft/world/World;
- public final fun getX ()D
- public final fun getY ()D
- public final fun getYaw ()F
- public final fun getZ ()D
- public final fun hasNoClip ()Z
- public final fun isBurning ()Z
- public final fun isCollided ()Z
- public final fun isDead ()Z
- public final fun isImmuneToFire ()Z
- public final fun isInLava ()Z
- public final fun isInWater ()Z
- public final fun isInvisible ()Z
- public final fun isOnGround ()Z
- public final fun isOutsideBorder ()Z
- public final fun isSilent ()Z
- public final fun isSneaking ()Z
- public final fun isSprinting ()Z
- public final fun isWet ()Z
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/entity/Entity;
- public fun toString ()Ljava/lang/String;
-}
-
-public final class com/chattriggers/ctjs/api/entity/Entity$Companion {
- public final fun fromMC (Lnet/minecraft/entity/Entity;)Lcom/chattriggers/ctjs/api/entity/Entity;
-}
-
-public final class com/chattriggers/ctjs/api/entity/Entity$DimensionType : java/lang/Enum, com/chattriggers/ctjs/api/CTWrapper {
- public static final field END Lcom/chattriggers/ctjs/api/entity/Entity$DimensionType;
- public static final field NETHER Lcom/chattriggers/ctjs/api/entity/Entity$DimensionType;
- public static final field OVERWORLD Lcom/chattriggers/ctjs/api/entity/Entity$DimensionType;
- public static final field OVERWORLD_CAVES Lcom/chattriggers/ctjs/api/entity/Entity$DimensionType;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/registry/RegistryKey;
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/registry/RegistryKey;
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/entity/Entity$DimensionType;
- public static fun values ()[Lcom/chattriggers/ctjs/api/entity/Entity$DimensionType;
-}
-
-public class com/chattriggers/ctjs/api/entity/LivingEntity : com/chattriggers/ctjs/api/entity/Entity {
- public fun (Lnet/minecraft/entity/LivingEntity;)V
- public final fun canSeeEntity (Lcom/chattriggers/ctjs/api/entity/Entity;)Z
- public final fun canSeeEntity (Lnet/minecraft/entity/Entity;)Z
- public final fun getAbsorption ()F
- public final fun getActivePotionEffects ()Ljava/util/List;
- public final fun getAge ()I
- public final fun getArmorValue ()I
- public final fun getHP ()F
- public final fun getMaxHP ()F
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public synthetic fun getMcValue ()Lnet/minecraft/entity/Entity;
- public fun getMcValue ()Lnet/minecraft/entity/LivingEntity;
- public final fun getStackInSlot (I)Lcom/chattriggers/ctjs/api/inventory/Item;
- public final fun isPotionActive (I)Z
- public final fun isPotionActive (Lcom/chattriggers/ctjs/api/world/PotionEffect;)Z
- public final fun isPotionActive (Lcom/chattriggers/ctjs/api/world/PotionEffectType;)Z
-}
-
-public final class com/chattriggers/ctjs/api/entity/Particle : com/chattriggers/ctjs/api/CTWrapper {
- public fun (Lnet/minecraft/client/particle/Particle;)V
- public final fun getAge ()I
- public final fun getAlpha ()F
- public final fun getBlue ()F
- public final fun getColor ()Ljava/awt/Color;
- public final fun getDead ()Z
- public final fun getGreen ()F
- public final fun getLastX ()D
- public final fun getLastY ()D
- public final fun getLastZ ()D
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/client/particle/Particle;
- public final fun getMotionX ()D
- public final fun getMotionY ()D
- public final fun getMotionZ ()D
- public final fun getRed ()F
- public final fun getRenderX ()D
- public final fun getRenderY ()D
- public final fun getRenderZ ()D
- public final fun getX ()D
- public final fun getY ()D
- public final fun getZ ()D
- public final fun remove ()Lcom/chattriggers/ctjs/api/entity/Particle;
- public final fun scale (F)Lcom/chattriggers/ctjs/api/entity/Particle;
- public final fun setAge (I)V
- public final fun setAlpha (F)Lcom/chattriggers/ctjs/api/entity/Particle;
- public final fun setAlpha (F)V
- public final fun setBlue (F)V
- public final fun setColor (FFF)Lcom/chattriggers/ctjs/api/entity/Particle;
- public final fun setColor (FFFF)Lcom/chattriggers/ctjs/api/entity/Particle;
- public final fun setColor (J)Lcom/chattriggers/ctjs/api/entity/Particle;
- public final fun setColor (Ljava/awt/Color;)Lcom/chattriggers/ctjs/api/entity/Particle;
- public final fun setDead (Z)V
- public final fun setGreen (F)V
- public final fun setLastX (D)V
- public final fun setLastY (D)V
- public final fun setLastZ (D)V
- public final fun setMaxAge (I)Lcom/chattriggers/ctjs/api/entity/Particle;
- public final fun setMotionX (D)V
- public final fun setMotionY (D)V
- public final fun setMotionZ (D)V
- public final fun setRed (F)V
- public final fun setX (D)V
- public final fun setY (D)V
- public final fun setZ (D)V
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/client/particle/Particle;
- public fun toString ()Ljava/lang/String;
-}
-
-public abstract class com/chattriggers/ctjs/api/entity/PlayerInteraction {
- public synthetic fun (Ljava/lang/String;ZLkotlin/jvm/internal/DefaultConstructorMarker;)V
- public final fun getMainHand ()Z
- public final fun getName ()Ljava/lang/String;
- public fun toString ()Ljava/lang/String;
-}
-
-public final class com/chattriggers/ctjs/api/entity/PlayerInteraction$AttackBlock : com/chattriggers/ctjs/api/entity/PlayerInteraction {
- public static final field INSTANCE Lcom/chattriggers/ctjs/api/entity/PlayerInteraction$AttackBlock;
-}
-
-public final class com/chattriggers/ctjs/api/entity/PlayerInteraction$AttackEntity : com/chattriggers/ctjs/api/entity/PlayerInteraction {
- public static final field INSTANCE Lcom/chattriggers/ctjs/api/entity/PlayerInteraction$AttackEntity;
-}
-
-public final class com/chattriggers/ctjs/api/entity/PlayerInteraction$BreakBlock : com/chattriggers/ctjs/api/entity/PlayerInteraction {
- public static final field INSTANCE Lcom/chattriggers/ctjs/api/entity/PlayerInteraction$BreakBlock;
-}
-
-public final class com/chattriggers/ctjs/api/entity/PlayerInteraction$UseBlock : com/chattriggers/ctjs/api/entity/PlayerInteraction {
- public fun (Lnet/minecraft/util/Hand;)V
-}
-
-public final class com/chattriggers/ctjs/api/entity/PlayerInteraction$UseEntity : com/chattriggers/ctjs/api/entity/PlayerInteraction {
- public fun (Lnet/minecraft/util/Hand;)V
-}
-
-public final class com/chattriggers/ctjs/api/entity/PlayerInteraction$UseItem : com/chattriggers/ctjs/api/entity/PlayerInteraction {
- public fun (Lnet/minecraft/util/Hand;)V
-}
-
-public final class com/chattriggers/ctjs/api/entity/PlayerMP : com/chattriggers/ctjs/api/entity/LivingEntity {
- public fun (Lnet/minecraft/entity/player/PlayerEntity;)V
- public final fun draw (Lorg/mozilla/javascript/NativeObject;)Lcom/chattriggers/ctjs/api/entity/PlayerMP;
- public final fun getDisplayName ()Lcom/chattriggers/ctjs/api/message/TextComponent;
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public synthetic fun getMcValue ()Lnet/minecraft/entity/Entity;
- public synthetic fun getMcValue ()Lnet/minecraft/entity/LivingEntity;
- public fun getMcValue ()Lnet/minecraft/entity/player/PlayerEntity;
- public final fun getPing ()I
- public final fun getTeam ()Lcom/chattriggers/ctjs/api/entity/Team;
- public final fun isSpectator ()Z
- public final fun setNametagName (Lcom/chattriggers/ctjs/api/message/TextComponent;)V
- public final fun setTabDisplayName (Lcom/chattriggers/ctjs/api/message/TextComponent;)V
-}
-
-public final class com/chattriggers/ctjs/api/entity/Team : com/chattriggers/ctjs/api/CTWrapper {
- public fun (Lnet/minecraft/scoreboard/Team;)V
- public final fun canSeeInvisibleTeammates ()Z
- public final fun getColor ()Ljava/lang/String;
- public final fun getDeathMessageVisibility ()Lcom/chattriggers/ctjs/api/entity/Team$Visibility;
- public final fun getFriendlyFire ()Z
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/scoreboard/Team;
- public final fun getMembers ()Ljava/util/List;
- public final fun getName ()Ljava/lang/String;
- public final fun getNameTagVisibility ()Lcom/chattriggers/ctjs/api/entity/Team$Visibility;
- public final fun getPrefix ()Ljava/lang/String;
- public final fun getRegisteredName ()Ljava/lang/String;
- public final fun getSuffix ()Ljava/lang/String;
- public final fun setColor (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/entity/Team;
- public final fun setName (Lcom/chattriggers/ctjs/api/message/TextComponent;)Lcom/chattriggers/ctjs/api/entity/Team;
- public final fun setName (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/entity/Team;
- public final fun setPrefix (Lcom/chattriggers/ctjs/api/message/TextComponent;)Lcom/chattriggers/ctjs/api/entity/Team;
- public final fun setPrefix (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/entity/Team;
- public final fun setSuffix (Lcom/chattriggers/ctjs/api/message/TextComponent;)Lcom/chattriggers/ctjs/api/entity/Team;
- public final fun setSuffix (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/entity/Team;
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/scoreboard/Team;
-}
-
-public final class com/chattriggers/ctjs/api/entity/Team$Visibility : java/lang/Enum, com/chattriggers/ctjs/api/CTWrapper {
- public static final field ALWAYS Lcom/chattriggers/ctjs/api/entity/Team$Visibility;
- public static final field Companion Lcom/chattriggers/ctjs/api/entity/Team$Visibility$Companion;
- public static final field HIDE_FOR_OTHERS_TEAMS Lcom/chattriggers/ctjs/api/entity/Team$Visibility;
- public static final field HIDE_FOR_OWN_TEAM Lcom/chattriggers/ctjs/api/entity/Team$Visibility;
- public static final field NEVER Lcom/chattriggers/ctjs/api/entity/Team$Visibility;
- public static final fun fromMC (Lnet/minecraft/scoreboard/AbstractTeam$VisibilityRule;)Lcom/chattriggers/ctjs/api/entity/Team$Visibility;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/scoreboard/AbstractTeam$VisibilityRule;
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/scoreboard/AbstractTeam$VisibilityRule;
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/entity/Team$Visibility;
- public static fun values ()[Lcom/chattriggers/ctjs/api/entity/Team$Visibility;
-}
-
-public final class com/chattriggers/ctjs/api/entity/Team$Visibility$Companion {
- public final fun fromMC (Lnet/minecraft/scoreboard/AbstractTeam$VisibilityRule;)Lcom/chattriggers/ctjs/api/entity/Team$Visibility;
-}
-
-public final class com/chattriggers/ctjs/api/inventory/Inventory {
- public fun (Lnet/minecraft/client/gui/screen/ingame/HandledScreen;)V
- public fun (Lnet/minecraft/inventory/Inventory;)V
- public final fun click (I)Lcom/chattriggers/ctjs/api/inventory/Inventory;
- public final fun click (IZ)Lcom/chattriggers/ctjs/api/inventory/Inventory;
- public final fun click (IZLjava/lang/String;)Lcom/chattriggers/ctjs/api/inventory/Inventory;
- public static synthetic fun click$default (Lcom/chattriggers/ctjs/api/inventory/Inventory;IZLjava/lang/String;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/inventory/Inventory;
- public final fun contains (I)Z
- public final fun contains (Lcom/chattriggers/ctjs/api/inventory/Item;)Z
- public final fun drag (Ljava/lang/String;[I)Lcom/chattriggers/ctjs/api/inventory/Inventory;
- public final fun drop (IZ)Lcom/chattriggers/ctjs/api/inventory/Inventory;
- public final fun getClassName ()Ljava/lang/String;
- public final fun getInventory ()Lnet/minecraft/inventory/Inventory;
- public final fun getItems ()Ljava/util/List;
- public final fun getName ()Lcom/chattriggers/ctjs/api/message/TextComponent;
- public final fun getScreen ()Lnet/minecraft/client/gui/screen/ingame/HandledScreen;
- public final fun getSize ()I
- public final fun getStackInSlot (I)Lcom/chattriggers/ctjs/api/inventory/Item;
- public final fun getWindowId ()I
- public final fun indexOf (I)I
- public final fun indexOf (Lcom/chattriggers/ctjs/api/inventory/Item;)I
- public final fun isItemValidForSlot (ILcom/chattriggers/ctjs/api/inventory/Item;)Z
- public final fun isScreen ()Z
- public fun toString ()Ljava/lang/String;
-}
-
-public final class com/chattriggers/ctjs/api/inventory/Item : com/chattriggers/ctjs/api/CTWrapper {
- public static final field Companion Lcom/chattriggers/ctjs/api/inventory/Item$Companion;
- public fun (Lcom/chattriggers/ctjs/api/inventory/ItemType;)V
- public fun (Lnet/minecraft/item/ItemStack;)V
- public final fun canHarvest (Lcom/chattriggers/ctjs/api/world/block/Block;)Z
- public final fun canHarvest (Lcom/chattriggers/ctjs/api/world/block/BlockPos;)Z
- public final fun canPlaceOn (Lcom/chattriggers/ctjs/api/world/block/Block;)Z
- public final fun canPlaceOn (Lcom/chattriggers/ctjs/api/world/block/BlockPos;)Z
- public final fun draw ()V
- public final fun draw (F)V
- public final fun draw (FF)V
- public final fun draw (FFF)V
- public final fun draw (FFFF)V
- public static synthetic fun draw$default (Lcom/chattriggers/ctjs/api/inventory/Item;FFFFILjava/lang/Object;)V
- public static final fun fromMC (Lnet/minecraft/item/ItemStack;)Lcom/chattriggers/ctjs/api/inventory/Item;
- public final fun getDamage ()I
- public final fun getDurability ()I
- public final fun getEnchantments ()Ljava/util/Map;
- public final fun getHolder ()Lcom/chattriggers/ctjs/api/entity/Entity;
- public final fun getLore ()Ljava/util/List;
- public final fun getLore (Z)Ljava/util/List;
- public static synthetic fun getLore$default (Lcom/chattriggers/ctjs/api/inventory/Item;ZILjava/lang/Object;)Ljava/util/List;
- public final fun getMaxDamage ()I
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/item/ItemStack;
- public final fun getNBT ()Lnet/minecraft/component/ComponentMap;
- public final fun getName ()Ljava/lang/String;
- public final fun getStackSize ()I
- public final fun getType ()Lcom/chattriggers/ctjs/api/inventory/ItemType;
- public final fun isDamageable ()Z
- public final fun isEnchantable ()Z
- public final fun isEnchanted ()Z
- public final fun resetLore ()V
- public final fun resetName ()V
- public final fun setLore (Ljava/util/List;)V
- public final fun setName (Lcom/chattriggers/ctjs/api/message/TextComponent;)Lcom/chattriggers/ctjs/api/inventory/Item;
- public final fun setStackSize (I)Lcom/chattriggers/ctjs/api/inventory/Item;
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/item/ItemStack;
- public fun toString ()Ljava/lang/String;
-}
-
-public final class com/chattriggers/ctjs/api/inventory/Item$Companion {
- public final fun fromMC (Lnet/minecraft/item/ItemStack;)Lcom/chattriggers/ctjs/api/inventory/Item;
-}
-
-public final class com/chattriggers/ctjs/api/inventory/ItemType : com/chattriggers/ctjs/api/CTWrapper {
- public static final field Companion Lcom/chattriggers/ctjs/api/inventory/ItemType$Companion;
- public fun (I)V
- public fun (Lcom/chattriggers/ctjs/api/world/block/BlockType;)V
- public fun (Ljava/lang/String;)V
- public fun (Lnet/minecraft/item/Item;)V
- public final fun asItem ()Lcom/chattriggers/ctjs/api/inventory/Item;
- public static final fun fromMC (Lnet/minecraft/item/Item;)Lcom/chattriggers/ctjs/api/inventory/ItemType;
- public final fun getId ()I
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/item/Item;
- public final fun getName ()Ljava/lang/String;
- public final fun getNameComponent ()Lcom/chattriggers/ctjs/api/message/TextComponent;
- public final fun getRegistryName ()Ljava/lang/String;
- public final fun getTranslationKey ()Ljava/lang/String;
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/item/Item;
-}
-
-public final class com/chattriggers/ctjs/api/inventory/ItemType$Companion {
- public final fun fromMC (Lnet/minecraft/item/Item;)Lcom/chattriggers/ctjs/api/inventory/ItemType;
-}
-
-public final class com/chattriggers/ctjs/api/inventory/Slot : com/chattriggers/ctjs/api/CTWrapper {
- public fun (Lnet/minecraft/screen/slot/Slot;)V
- public final fun getDisplayX ()I
- public final fun getDisplayY ()I
- public final fun getIndex ()I
- public final fun getInventory ()Lcom/chattriggers/ctjs/api/inventory/Inventory;
- public final fun getItem ()Lcom/chattriggers/ctjs/api/inventory/Item;
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/screen/slot/Slot;
- public final fun isEnabled ()Z
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/screen/slot/Slot;
- public fun toString ()Ljava/lang/String;
-}
-
-public abstract class com/chattriggers/ctjs/api/inventory/action/Action {
- public static final field Companion Lcom/chattriggers/ctjs/api/inventory/action/Action$Companion;
- public fun (II)V
- protected final fun doClick (ILnet/minecraft/screen/slot/SlotActionType;)V
- public final fun getSlot ()I
- public final fun getWindowId ()I
- public static final fun of (Lcom/chattriggers/ctjs/api/inventory/Inventory;ILjava/lang/String;)Lcom/chattriggers/ctjs/api/inventory/action/Action;
- public final fun setSlot (I)Lcom/chattriggers/ctjs/api/inventory/action/Action;
- public final fun setSlot (I)V
- public final fun setWindowId (I)Lcom/chattriggers/ctjs/api/inventory/action/Action;
- public final fun setWindowId (I)V
-}
-
-public final class com/chattriggers/ctjs/api/inventory/action/Action$Companion {
- public final fun of (Lcom/chattriggers/ctjs/api/inventory/Inventory;ILjava/lang/String;)Lcom/chattriggers/ctjs/api/inventory/action/Action;
-}
-
-public final class com/chattriggers/ctjs/api/inventory/action/Action$Type : java/lang/Enum {
- public static final field CLICK Lcom/chattriggers/ctjs/api/inventory/action/Action$Type;
- public static final field DRAG Lcom/chattriggers/ctjs/api/inventory/action/Action$Type;
- public static final field DROP Lcom/chattriggers/ctjs/api/inventory/action/Action$Type;
- public static final field KEY Lcom/chattriggers/ctjs/api/inventory/action/Action$Type;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/inventory/action/Action$Type;
- public static fun values ()[Lcom/chattriggers/ctjs/api/inventory/action/Action$Type;
-}
-
-public final class com/chattriggers/ctjs/api/inventory/action/ClickAction : com/chattriggers/ctjs/api/inventory/action/Action {
- public fun (II)V
- public final fun getClickType ()Lcom/chattriggers/ctjs/api/inventory/action/ClickAction$ClickType;
- public final fun getHoldingShift ()Z
- public final fun getItemInHand ()Z
- public final fun getPickupAll ()Z
- public final fun setClickString (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/inventory/action/ClickAction;
- public final fun setClickType (Lcom/chattriggers/ctjs/api/inventory/action/ClickAction$ClickType;)Lcom/chattriggers/ctjs/api/inventory/action/ClickAction;
- public final fun setHoldingShift (Z)Lcom/chattriggers/ctjs/api/inventory/action/ClickAction;
- public final fun setItemInHand (Z)Lcom/chattriggers/ctjs/api/inventory/action/ClickAction;
- public final fun setPickupAll (Z)Lcom/chattriggers/ctjs/api/inventory/action/ClickAction;
-}
-
-public final class com/chattriggers/ctjs/api/inventory/action/ClickAction$ClickType : java/lang/Enum {
- public static final field LEFT Lcom/chattriggers/ctjs/api/inventory/action/ClickAction$ClickType;
- public static final field MIDDLE Lcom/chattriggers/ctjs/api/inventory/action/ClickAction$ClickType;
- public static final field RIGHT Lcom/chattriggers/ctjs/api/inventory/action/ClickAction$ClickType;
- public final fun getButton ()I
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/inventory/action/ClickAction$ClickType;
- public static fun values ()[Lcom/chattriggers/ctjs/api/inventory/action/ClickAction$ClickType;
-}
-
-public final class com/chattriggers/ctjs/api/inventory/action/DragAction : com/chattriggers/ctjs/api/inventory/action/Action {
- public fun (II)V
- public final fun getClickType ()Lcom/chattriggers/ctjs/api/inventory/action/DragAction$ClickType;
- public final fun getStage ()Lcom/chattriggers/ctjs/api/inventory/action/DragAction$Stage;
- public final fun setClickString (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/inventory/action/DragAction;
- public final fun setClickType (Lcom/chattriggers/ctjs/api/inventory/action/DragAction$ClickType;)Lcom/chattriggers/ctjs/api/inventory/action/DragAction;
- public final fun setStage (Lcom/chattriggers/ctjs/api/inventory/action/DragAction$Stage;)Lcom/chattriggers/ctjs/api/inventory/action/DragAction;
- public final fun setStageString (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/inventory/action/DragAction;
-}
-
-public final class com/chattriggers/ctjs/api/inventory/action/DragAction$ClickType : java/lang/Enum {
- public static final field LEFT Lcom/chattriggers/ctjs/api/inventory/action/DragAction$ClickType;
- public static final field MIDDLE Lcom/chattriggers/ctjs/api/inventory/action/DragAction$ClickType;
- public static final field RIGHT Lcom/chattriggers/ctjs/api/inventory/action/DragAction$ClickType;
- public final fun getButton ()I
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/inventory/action/DragAction$ClickType;
- public static fun values ()[Lcom/chattriggers/ctjs/api/inventory/action/DragAction$ClickType;
-}
-
-public final class com/chattriggers/ctjs/api/inventory/action/DragAction$Stage : java/lang/Enum {
- public static final field BEGIN Lcom/chattriggers/ctjs/api/inventory/action/DragAction$Stage;
- public static final field END Lcom/chattriggers/ctjs/api/inventory/action/DragAction$Stage;
- public static final field SLOT Lcom/chattriggers/ctjs/api/inventory/action/DragAction$Stage;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public final fun getStage ()I
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/inventory/action/DragAction$Stage;
- public static fun values ()[Lcom/chattriggers/ctjs/api/inventory/action/DragAction$Stage;
-}
-
-public final class com/chattriggers/ctjs/api/inventory/action/DropAction : com/chattriggers/ctjs/api/inventory/action/Action {
- public fun (II)V
- public final fun getHoldingCtrl ()Z
- public final fun setHoldingCtrl (Z)Lcom/chattriggers/ctjs/api/inventory/action/DropAction;
-}
-
-public final class com/chattriggers/ctjs/api/inventory/action/KeyAction : com/chattriggers/ctjs/api/inventory/action/Action {
- public fun (II)V
- public final fun getKey ()I
- public final fun setKey (I)Lcom/chattriggers/ctjs/api/inventory/action/KeyAction;
-}
-
-public final class com/chattriggers/ctjs/api/inventory/nbt/NBT {
- public static final field INSTANCE Lcom/chattriggers/ctjs/api/inventory/nbt/NBT;
- public static final fun parse (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTBase;
- public static final fun parse (Ljava/lang/Object;Lorg/mozilla/javascript/NativeObject;)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTBase;
- public static synthetic fun parse$default (Ljava/lang/Object;Lorg/mozilla/javascript/NativeObject;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTBase;
- public static final fun toArray (Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagList;)Lorg/mozilla/javascript/NativeArray;
- public static final fun toObject (Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound;)Lorg/mozilla/javascript/NativeObject;
-}
-
-public class com/chattriggers/ctjs/api/inventory/nbt/NBTBase : com/chattriggers/ctjs/api/CTWrapper {
- public static final field Companion Lcom/chattriggers/ctjs/api/inventory/nbt/NBTBase$Companion;
- public fun (Lnet/minecraft/nbt/NbtElement;)V
- public final fun copy ()Lnet/minecraft/nbt/NbtElement;
- public fun equals (Ljava/lang/Object;)Z
- public static final fun fromMC (Lnet/minecraft/nbt/NbtElement;)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTBase;
- public final fun getId ()B
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/nbt/NbtElement;
- public final fun hasNoTags ()Z
- public final fun hasTags ()Z
- public fun hashCode ()I
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/nbt/NbtElement;
- public fun toString ()Ljava/lang/String;
-}
-
-public final class com/chattriggers/ctjs/api/inventory/nbt/NBTBase$Companion {
- public final fun fromMC (Lnet/minecraft/nbt/NbtElement;)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTBase;
- public final fun toObject (Lnet/minecraft/nbt/NbtCompound;)Lorg/mozilla/javascript/NativeObject;
- public final fun toObject (Lnet/minecraft/nbt/NbtElement;)Ljava/lang/Object;
- public final fun toObject (Lnet/minecraft/nbt/NbtList;)Lorg/mozilla/javascript/NativeArray;
-}
-
-public final class com/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound : com/chattriggers/ctjs/api/inventory/nbt/NBTBase {
- public fun (Lnet/minecraft/nbt/NbtCompound;)V
- public final fun get (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTBase;
- public final fun get (Ljava/lang/String;Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound$NBTDataType;Ljava/lang/Integer;)Ljava/lang/Object;
- public final fun getBoolean (Ljava/lang/String;)Z
- public final fun getByte (Ljava/lang/String;)B
- public final fun getByteArray (Ljava/lang/String;)[B
- public final fun getCompoundTag (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound;
- public final fun getDouble (Ljava/lang/String;)D
- public final fun getFloat (Ljava/lang/String;)F
- public final fun getIntArray (Ljava/lang/String;)[I
- public final fun getInteger (Ljava/lang/String;)I
- public final fun getKeySet ()Ljava/util/Set;
- public final fun getLong (Ljava/lang/String;)J
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/nbt/NbtCompound;
- public synthetic fun getMcValue ()Lnet/minecraft/nbt/NbtElement;
- public final fun getShort (Ljava/lang/String;)S
- public final fun getString (Ljava/lang/String;)Ljava/lang/String;
- public final fun getTag (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTBase;
- public final fun getTagId (Ljava/lang/String;)B
- public final fun getTagList (Ljava/lang/String;I)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagList;
- public final fun getTagMap ()Ljava/util/Map;
- public final fun putLongArray (Ljava/lang/String;[J)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound;
- public final fun removeTag (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound;
- public final fun set (Ljava/lang/String;Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound;
- public final fun setBoolean (Ljava/lang/String;Z)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound;
- public final fun setByte (Ljava/lang/String;B)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound;
- public final fun setByteArray (Ljava/lang/String;[B)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound;
- public final fun setDouble (Ljava/lang/String;D)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound;
- public final fun setFloat (Ljava/lang/String;F)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound;
- public final fun setIntArray (Ljava/lang/String;[I)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound;
- public final fun setInteger (Ljava/lang/String;I)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound;
- public final fun setLong (Ljava/lang/String;J)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound;
- public final fun setNBTBase (Ljava/lang/String;Lcom/chattriggers/ctjs/api/inventory/nbt/NBTBase;)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound;
- public final fun setNBTBase (Ljava/lang/String;Lnet/minecraft/nbt/NbtElement;)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound;
- public final fun setShort (Ljava/lang/String;S)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound;
- public final fun setString (Ljava/lang/String;Ljava/lang/String;)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound;
- public final fun toObject ()Lorg/mozilla/javascript/NativeObject;
-}
-
-public final class com/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound$NBTDataType : java/lang/Enum {
- public static final field BOOLEAN Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound$NBTDataType;
- public static final field BYTE Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound$NBTDataType;
- public static final field BYTE_ARRAY Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound$NBTDataType;
- public static final field COMPOUND_TAG Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound$NBTDataType;
- public static final field DOUBLE Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound$NBTDataType;
- public static final field FLOAT Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound$NBTDataType;
- public static final field INTEGER Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound$NBTDataType;
- public static final field INT_ARRAY Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound$NBTDataType;
- public static final field LONG Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound$NBTDataType;
- public static final field LONG_ARRAY Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound$NBTDataType;
- public static final field SHORT Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound$NBTDataType;
- public static final field STRING Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound$NBTDataType;
- public static final field TAG_LIST Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound$NBTDataType;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound$NBTDataType;
- public static fun values ()[Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound$NBTDataType;
-}
-
-public final class com/chattriggers/ctjs/api/inventory/nbt/NBTTagList : com/chattriggers/ctjs/api/inventory/nbt/NBTBase {
- public fun (Lnet/minecraft/nbt/NbtList;)V
- public final fun appendTag (Lcom/chattriggers/ctjs/api/inventory/nbt/NBTBase;)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagList;
- public final fun appendTag (Lnet/minecraft/nbt/NbtElement;)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagList;
- public final fun get (I)Lnet/minecraft/nbt/NbtElement;
- public final fun get (IB)Ljava/lang/Object;
- public final fun getCompoundTagAt (I)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagCompound;
- public final fun getDoubleAt (I)D
- public final fun getFloatAt (I)F
- public final fun getIntArrayAt (I)[I
- public final fun getIntAt (I)I
- public final fun getListAt (I)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagList;
- public final fun getLongArrayAt (I)[J
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public synthetic fun getMcValue ()Lnet/minecraft/nbt/NbtElement;
- public fun getMcValue ()Lnet/minecraft/nbt/NbtList;
- public final fun getShortAt (I)S
- public final fun getStringTagAt (I)Ljava/lang/String;
- public final fun getTagCount ()I
- public final fun insertTag (ILcom/chattriggers/ctjs/api/inventory/nbt/NBTBase;)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagList;
- public final fun insertTag (ILnet/minecraft/nbt/NbtElement;)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagList;
- public final fun removeTag (I)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTBase;
- public final fun set (ILcom/chattriggers/ctjs/api/inventory/nbt/NBTBase;)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagList;
- public final fun set (ILnet/minecraft/nbt/NbtElement;)Lcom/chattriggers/ctjs/api/inventory/nbt/NBTTagList;
- public final fun toArray ()Lorg/mozilla/javascript/NativeArray;
-}
-
-public final class com/chattriggers/ctjs/api/message/ChatLib {
- public static final field INSTANCE Lcom/chattriggers/ctjs/api/message/ChatLib;
- public static final fun actionBar (Ljava/lang/Object;)V
- public static final fun addColor (Ljava/lang/String;)Ljava/lang/String;
- public static final fun addToSentMessageHistory (ILjava/lang/String;)V
- public static final fun addToSentMessageHistory (Ljava/lang/String;)V
- public static synthetic fun addToSentMessageHistory$default (ILjava/lang/String;ILjava/lang/Object;)V
- public static final fun chat (Ljava/lang/Object;)V
- public static final fun clearChat ()V
- public static final fun command (Ljava/lang/String;)V
- public static final fun command (Ljava/lang/String;Z)V
- public static synthetic fun command$default (Ljava/lang/String;ZILjava/lang/Object;)V
- public static final fun copyToClipboard (Ljava/lang/String;)V
- public static final fun deleteChat (I)V
- public static final fun deleteChat (Lcom/chattriggers/ctjs/api/message/TextComponent;)V
- public static final fun deleteChat (Ljava/lang/String;)V
- public static final fun deleteChat (Lkotlin/jvm/functions/Function1;)V
- public static final fun deleteChat (Lorg/mozilla/javascript/regexp/NativeRegExp;)V
- public static final fun editChat (I[Ljava/lang/Object;)V
- public static final fun editChat (Lcom/chattriggers/ctjs/api/message/TextComponent;[Ljava/lang/Object;)V
- public static final fun editChat (Ljava/lang/String;[Ljava/lang/Object;)V
- public static final fun editChat (Lkotlin/jvm/functions/Function1;[Ljava/lang/Object;)V
- public static final fun editChat (Lorg/mozilla/javascript/regexp/NativeRegExp;[Ljava/lang/Object;)V
- public static final fun getCenteredText (Ljava/lang/String;)Ljava/lang/String;
- public static final fun getChatBreak ()Ljava/lang/String;
- public static final fun getChatBreak (Ljava/lang/String;)Ljava/lang/String;
- public static synthetic fun getChatBreak$default (Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/String;
- public static final fun getChatLines ()Ljava/util/List;
- public static final fun getChatWidth ()I
- public static final fun removeFormatting (Ljava/lang/String;)Ljava/lang/String;
- public static final fun replaceFormatting (Ljava/lang/String;)Ljava/lang/String;
- public static final fun say (Ljava/lang/String;)Lkotlin/Unit;
- public static final fun simulateChat (Ljava/lang/Object;)V
-}
-
-public final class com/chattriggers/ctjs/api/message/TextComponent : java/lang/Iterable, kotlin/jvm/internal/markers/KMappedMarker, net/minecraft/text/Text {
- public fun ()V
- public fun ([Ljava/lang/Object;)V
- public final fun actionBar ()Lcom/chattriggers/ctjs/api/message/TextComponent;
- public fun asOrderedText ()Lnet/minecraft/text/OrderedText;
- public final fun chat ()Lcom/chattriggers/ctjs/api/message/TextComponent;
- public final fun contains (Lorg/mozilla/javascript/NativeObject;)Z
- public final fun containsAll (Ljava/util/Collection;)Z
- public final fun delete ()Lcom/chattriggers/ctjs/api/message/TextComponent;
- public final fun edit (Lcom/chattriggers/ctjs/api/message/TextComponent;)Lcom/chattriggers/ctjs/api/message/TextComponent;
- public final fun edit ([Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/message/TextComponent;
- public final fun get (I)Lorg/mozilla/javascript/NativeObject;
- public final fun getChatLineId ()I
- public fun getContent ()Lnet/minecraft/text/TextContent;
- public final fun getFormattedText ()Ljava/lang/String;
- public fun getSiblings ()Ljava/util/List;
- public final fun getSize ()I
- public fun getString ()Ljava/lang/String;
- public fun getStyle ()Lnet/minecraft/text/Style;
- public final fun getUnformattedText ()Ljava/lang/String;
- public final fun indexOf (Lorg/mozilla/javascript/NativeObject;)I
- public final fun isEmpty ()Z
- public final fun isRecursive ()Z
- public fun iterator ()Ljava/util/Iterator;
- public fun toString ()Ljava/lang/String;
- public final fun withChatLineId ()Lcom/chattriggers/ctjs/api/message/TextComponent;
- public final fun withChatLineId (I)Lcom/chattriggers/ctjs/api/message/TextComponent;
- public static synthetic fun withChatLineId$default (Lcom/chattriggers/ctjs/api/message/TextComponent;IILjava/lang/Object;)Lcom/chattriggers/ctjs/api/message/TextComponent;
- public final fun withRecursive ()Lcom/chattriggers/ctjs/api/message/TextComponent;
- public final fun withRecursive (Z)Lcom/chattriggers/ctjs/api/message/TextComponent;
- public static synthetic fun withRecursive$default (Lcom/chattriggers/ctjs/api/message/TextComponent;ZILjava/lang/Object;)Lcom/chattriggers/ctjs/api/message/TextComponent;
- public final fun withText (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/message/TextComponent;
- public final fun withTextAt (ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/message/TextComponent;
- public final fun withoutTextAt (I)Lcom/chattriggers/ctjs/api/message/TextComponent;
-}
-
-public final class com/chattriggers/ctjs/api/render/Book {
- public fun ()V
- public final fun addPage (Lcom/chattriggers/ctjs/api/message/TextComponent;)Lcom/chattriggers/ctjs/api/render/Book;
- public final fun addPage (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/render/Book;
- public final fun display ()V
- public final fun display (I)V
- public static synthetic fun display$default (Lcom/chattriggers/ctjs/api/render/Book;IILjava/lang/Object;)V
- public final fun getCurrentPage ()I
- public final fun insertPage (ILcom/chattriggers/ctjs/api/message/TextComponent;)Lcom/chattriggers/ctjs/api/render/Book;
- public final fun insertPage (ILjava/lang/String;)Lcom/chattriggers/ctjs/api/render/Book;
- public final fun isOpen ()Z
- public final fun setPage (ILcom/chattriggers/ctjs/api/message/TextComponent;)Lcom/chattriggers/ctjs/api/render/Book;
- public final fun setPage (ILjava/lang/String;)Lcom/chattriggers/ctjs/api/render/Book;
-}
-
-public final class com/chattriggers/ctjs/api/render/Display {
- public fun ()V
- public fun (Lorg/mozilla/javascript/NativeObject;)V
- public final fun addLine (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Display;
- public final fun addLines ([Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Display;
- public final fun clearLines ()Lcom/chattriggers/ctjs/api/render/Display;
- public final fun draw ()V
- public final fun getAlign ()Lcom/chattriggers/ctjs/api/render/Text$Align;
- public final fun getBackground ()Lcom/chattriggers/ctjs/api/render/Display$Background;
- public final fun getBackgroundColor ()J
- public final fun getHeight ()F
- public final fun getLine (I)Lcom/chattriggers/ctjs/api/render/Text;
- public final fun getLines ()Ljava/util/List;
- public final fun getMinWidth ()F
- public final fun getOrder ()Lcom/chattriggers/ctjs/api/render/Display$Order;
- public final fun getTextColor ()J
- public final fun getWidth ()F
- public final fun getX ()F
- public final fun getY ()F
- public final fun removeLine (I)Lcom/chattriggers/ctjs/api/render/Display;
- public final fun setAlign (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Display;
- public final fun setBackground (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Display;
- public final fun setBackgroundColor (J)Lcom/chattriggers/ctjs/api/render/Display;
- public final fun setLine (ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Display;
- public final fun setLines (Ljava/util/List;)Lcom/chattriggers/ctjs/api/render/Display;
- public final fun setMinWidth (F)Lcom/chattriggers/ctjs/api/render/Display;
- public final fun setOrder (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Display;
- public final fun setTextColor (J)Lcom/chattriggers/ctjs/api/render/Display;
- public final fun setX (F)Lcom/chattriggers/ctjs/api/render/Display;
- public final fun setY (F)Lcom/chattriggers/ctjs/api/render/Display;
- public fun toString ()Ljava/lang/String;
-}
-
-public final class com/chattriggers/ctjs/api/render/Display$Background : java/lang/Enum {
- public static final field FULL Lcom/chattriggers/ctjs/api/render/Display$Background;
- public static final field NONE Lcom/chattriggers/ctjs/api/render/Display$Background;
- public static final field PER_LINE Lcom/chattriggers/ctjs/api/render/Display$Background;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/render/Display$Background;
- public static fun values ()[Lcom/chattriggers/ctjs/api/render/Display$Background;
-}
-
-public final class com/chattriggers/ctjs/api/render/Display$Order : java/lang/Enum {
- public static final field NORMAL Lcom/chattriggers/ctjs/api/render/Display$Order;
- public static final field REVERSED Lcom/chattriggers/ctjs/api/render/Display$Order;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/render/Display$Order;
- public static fun values ()[Lcom/chattriggers/ctjs/api/render/Display$Order;
-}
-
-public final class com/chattriggers/ctjs/api/render/Gui : gg/essential/universal/UScreen {
- public fun ()V
- public fun (Lcom/chattriggers/ctjs/api/message/TextComponent;)V
- public synthetic fun (Lcom/chattriggers/ctjs/api/message/TextComponent;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
- public final fun addButton (IIIILcom/chattriggers/ctjs/api/message/TextComponent;)I
- public final fun addButton (IIIILjava/lang/String;)I
- public final fun addButton (IIILcom/chattriggers/ctjs/api/message/TextComponent;)I
- public final fun addButton (IILcom/chattriggers/ctjs/api/message/TextComponent;)I
- public final fun addButton (Lnet/minecraft/client/gui/widget/ButtonWidget;)I
- public static synthetic fun addButton$default (Lcom/chattriggers/ctjs/api/render/Gui;IIIILcom/chattriggers/ctjs/api/message/TextComponent;ILjava/lang/Object;)I
- public static synthetic fun addButton$default (Lcom/chattriggers/ctjs/api/render/Gui;IIIILjava/lang/String;ILjava/lang/Object;)I
- public final fun clearButtons ()Lcom/chattriggers/ctjs/api/render/Gui;
- public fun close ()V
- public final fun getButtonEnabled (I)Z
- public final fun getButtonHeight (I)I
- public final fun getButtonVisibility (I)Z
- public final fun getButtonWidth (I)I
- public final fun getButtonX (I)I
- public final fun getButtonY (I)I
- public fun initScreen (II)V
- public final fun isOpen ()Z
- public fun onDrawScreen (Lgg/essential/universal/UMatrixStack;IIF)V
- public fun onKeyPressed (ICLgg/essential/universal/UKeyboard$Modifiers;)V
- public fun onMouseClicked (DDI)V
- public fun onMouseDragged (DDIJ)V
- public fun onMouseReleased (DDI)V
- public fun onScreenClose ()V
- public final fun open ()V
- public final fun registerActionPerformed (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun registerClicked (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun registerClosed (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun registerDraw (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun registerKeyTyped (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun registerMouseDragged (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun registerMouseReleased (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun registerOpened (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun registerScrolled (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun removeButton (I)Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun setButtonEnabled (IZ)Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun setButtonHeight (II)Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun setButtonLoc (III)Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun setButtonText (ILcom/chattriggers/ctjs/api/message/TextComponent;)Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun setButtonText (ILjava/lang/String;)Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun setButtonVisibility (IZ)Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun setButtonWidth (II)Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun setButtonX (II)Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun setButtonY (II)Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun setDoesPauseGame (Z)Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun setTooltip (Lcom/chattriggers/ctjs/api/message/TextComponent;)Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun setTooltip (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/render/Gui;
- public fun shouldPause ()Z
- public final fun unregisterActionPerformed ()Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun unregisterClicked ()Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun unregisterClosed ()Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun unregisterDraw ()Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun unregisterKeyTyped ()Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun unregisterMouseDragged ()Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun unregisterMouseReleased ()Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun unregisterOpened ()Lcom/chattriggers/ctjs/api/render/Gui;
- public final fun unregisterScrolled ()Lcom/chattriggers/ctjs/api/render/Gui;
-}
-
-public final class com/chattriggers/ctjs/api/render/Image {
- public static final field Companion Lcom/chattriggers/ctjs/api/render/Image$Companion;
- public fun (Ljava/awt/image/BufferedImage;)V
- public final fun destroy ()V
- public final fun draw (FF)Lcom/chattriggers/ctjs/api/render/Image;
- public final fun draw (FFLjava/lang/Float;)Lcom/chattriggers/ctjs/api/render/Image;
- public final fun draw (FFLjava/lang/Float;Ljava/lang/Float;)Lcom/chattriggers/ctjs/api/render/Image;
- public static synthetic fun draw$default (Lcom/chattriggers/ctjs/api/render/Image;FFLjava/lang/Float;Ljava/lang/Float;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Image;
- public static final fun fromAsset (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/render/Image;
- public static final fun fromFile (Ljava/io/File;)Lcom/chattriggers/ctjs/api/render/Image;
- public static final fun fromFile (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/render/Image;
- public static final fun fromUrl (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/render/Image;
- public static final fun fromUrl (Ljava/lang/String;Ljava/lang/String;)Lcom/chattriggers/ctjs/api/render/Image;
- public final fun getImage ()Ljava/awt/image/BufferedImage;
- public final fun getTexture ()Lnet/minecraft/client/texture/NativeImageBackedTexture;
- public final fun getTextureHeight ()I
- public final fun getTextureWidth ()I
- public final fun setImage (Ljava/awt/image/BufferedImage;)V
-}
-
-public final class com/chattriggers/ctjs/api/render/Image$Companion {
- public final fun fromAsset (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/render/Image;
- public final fun fromFile (Ljava/io/File;)Lcom/chattriggers/ctjs/api/render/Image;
- public final fun fromFile (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/render/Image;
- public final fun fromUrl (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/render/Image;
- public final fun fromUrl (Ljava/lang/String;Ljava/lang/String;)Lcom/chattriggers/ctjs/api/render/Image;
- public static synthetic fun fromUrl$default (Lcom/chattriggers/ctjs/api/render/Image$Companion;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Image;
-}
-
-public final class com/chattriggers/ctjs/api/render/Rectangle {
- public fun (JFFFF)V
- public final fun draw ()Lcom/chattriggers/ctjs/api/render/Rectangle;
- public final fun getColor ()J
- public final fun getHeight ()F
- public final fun getOutline ()Z
- public final fun getOutlineColor ()J
- public final fun getShadowColor ()J
- public final fun getShadowOffset ()Lcom/chattriggers/ctjs/api/vec/Vec2f;
- public final fun getShadowOffsetX ()F
- public final fun getShadowOffsetY ()F
- public final fun getThickness ()F
- public final fun getWidth ()F
- public final fun getX ()F
- public final fun getY ()F
- public final fun isShadow ()Z
- public final fun setColor (J)Lcom/chattriggers/ctjs/api/render/Rectangle;
- public final fun setHeight (F)Lcom/chattriggers/ctjs/api/render/Rectangle;
- public final fun setOutline (JF)Lcom/chattriggers/ctjs/api/render/Rectangle;
- public final fun setOutline (Z)Lcom/chattriggers/ctjs/api/render/Rectangle;
- public final fun setOutlineColor (J)Lcom/chattriggers/ctjs/api/render/Rectangle;
- public final fun setShadow (JFF)Lcom/chattriggers/ctjs/api/render/Rectangle;
- public final fun setShadow (Z)Lcom/chattriggers/ctjs/api/render/Rectangle;
- public final fun setShadowColor (J)Lcom/chattriggers/ctjs/api/render/Rectangle;
- public final fun setShadowOffset (FF)Lcom/chattriggers/ctjs/api/render/Rectangle;
- public final fun setShadowOffsetX (F)Lcom/chattriggers/ctjs/api/render/Rectangle;
- public final fun setShadowOffsetY (F)Lcom/chattriggers/ctjs/api/render/Rectangle;
- public final fun setThickness (F)Lcom/chattriggers/ctjs/api/render/Rectangle;
- public final fun setWidth (F)Lcom/chattriggers/ctjs/api/render/Rectangle;
- public final fun setX (F)Lcom/chattriggers/ctjs/api/render/Rectangle;
- public final fun setY (F)Lcom/chattriggers/ctjs/api/render/Rectangle;
-}
-
-public final class com/chattriggers/ctjs/api/render/Renderer {
- public static final field AQUA J
- public static final field BLACK J
- public static final field BLUE J
- public static final field DARK_AQUA J
- public static final field DARK_BLUE J
- public static final field DARK_GRAY J
- public static final field DARK_GREEN J
- public static final field DARK_PURPLE J
- public static final field DARK_RED J
- public static final field GOLD J
- public static final field GRAY J
- public static final field GREEN J
- public static final field INSTANCE Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final field LIGHT_PURPLE J
- public static final field RED J
- public static final field WHITE J
- public static final field YELLOW J
- public static field colorized Ljava/lang/Long;
- public static final field screen Lcom/chattriggers/ctjs/api/render/Renderer$ScreenWrapper;
- public static final fun begin ()Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun begin (Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun begin (Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static synthetic fun begin$default (Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun bindTexture (Lcom/chattriggers/ctjs/api/render/Image;)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun bindTexture (Lcom/chattriggers/ctjs/api/render/Image;I)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static synthetic fun bindTexture$default (Lcom/chattriggers/ctjs/api/render/Image;IILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun blendFunc (I)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun color (FFF)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun color (FFFF)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun color (I)J
- public static final fun color (III)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun color (IIII)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun color (J)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static synthetic fun color$default (FFFFILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static synthetic fun color$default (IIIIILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun colorize (FFF)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun colorize (FFFF)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun colorize (III)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun colorize (IIII)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static synthetic fun colorize$default (FFFFILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static synthetic fun colorize$default (IIIIILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun deleteTexture (Lcom/chattriggers/ctjs/api/render/Image;)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun depthFunc (I)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun depthMask (Z)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun disableBlend ()Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun disableCull ()Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun disableDepth ()Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun disableLighting ()Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun draw ()V
- public static final fun drawCircle (JFFFI)V
- public static final fun drawImage (Lcom/chattriggers/ctjs/api/render/Image;FFFF)V
- public static final fun drawLine (JFFFFF)V
- public static final fun drawPlayer (Lorg/mozilla/javascript/NativeObject;)V
- public static final fun drawRect (JFFFF)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun drawString (Ljava/lang/String;FF)V
- public static final fun drawString (Ljava/lang/String;FFJ)V
- public static final fun drawString (Ljava/lang/String;FFJZ)V
- public static synthetic fun drawString$default (Ljava/lang/String;FFJZILjava/lang/Object;)V
- public static final fun drawStringWithShadow (Ljava/lang/String;FF)V
- public static final fun drawStringWithShadow (Ljava/lang/String;FFJ)V
- public static synthetic fun drawStringWithShadow$default (Ljava/lang/String;FFJILjava/lang/Object;)V
- public static final fun enableBlend ()Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun enableCull ()Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun enableDepth ()Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun enableLighting ()Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun fixAlpha (J)J
- public static final fun getColor (III)J
- public static final fun getColor (IIII)J
- public static synthetic fun getColor$default (IIIIILjava/lang/Object;)J
- public static final fun getFontRenderer ()Lnet/minecraft/client/font/TextRenderer;
- public static final fun getPartialTicks ()F
- public static final fun getRainbow (F)J
- public static final fun getRainbow (FF)J
- public static synthetic fun getRainbow$default (FFILjava/lang/Object;)J
- public static final fun getRainbowColors (F)[I
- public static final fun getRainbowColors (FF)[I
- public static synthetic fun getRainbowColors$default (FFILjava/lang/Object;)[I
- public static final fun getRenderManager ()Lnet/minecraft/client/render/WorldRenderer;
- public static final fun getRenderPos (FFF)Lcom/chattriggers/ctjs/api/vec/Vec3f;
- public static final fun getStringWidth (Ljava/lang/String;)I
- public static final fun light (II)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun lineWidth (F)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun multiply (Lorg/joml/Quaternionf;)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun normal (FFF)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun overlay (II)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun popMatrix ()Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun pos (FF)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun pos (FFF)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static synthetic fun pos$default (FFFILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun pushMatrix ()Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun pushMatrix (Lgg/essential/universal/UMatrixStack;)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static synthetic fun pushMatrix$default (Lgg/essential/universal/UMatrixStack;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun rotate (F)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun rotate (FF)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun rotate (FFF)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun rotate (FFFF)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static synthetic fun rotate$default (FFFFILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun scale (F)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun scale (FF)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun scale (FFF)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static synthetic fun scale$default (FFFILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun tex (FF)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun translate (FF)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun translate (FFF)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static synthetic fun translate$default (FFFILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Renderer;
- public static final fun tryBlendFuncSeparate (IIII)Lcom/chattriggers/ctjs/api/render/Renderer;
-}
-
-public final class com/chattriggers/ctjs/api/render/Renderer$DrawMode : java/lang/Enum {
- public static final field Companion Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode$Companion;
- public static final field LINES Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;
- public static final field LINE_STRIP Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;
- public static final field QUADS Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;
- public static final field TRIANGLES Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;
- public static final field TRIANGLE_FAN Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;
- public static final field TRIANGLE_STRIP Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;
- public static final fun fromUC (Lgg/essential/universal/UGraphics$DrawMode;)Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public final fun toUC ()Lgg/essential/universal/UGraphics$DrawMode;
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;
- public static fun values ()[Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;
-}
-
-public final class com/chattriggers/ctjs/api/render/Renderer$DrawMode$Companion {
- public final fun fromUC (Lgg/essential/universal/UGraphics$DrawMode;)Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;
-}
-
-public final class com/chattriggers/ctjs/api/render/Renderer$ScreenWrapper {
- public fun ()V
- public final fun getHeight ()I
- public final fun getScale ()D
- public final fun getWidth ()I
-}
-
-public final class com/chattriggers/ctjs/api/render/Renderer$VertexFormat : java/lang/Enum {
- public static final field Companion Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat$Companion;
- public static final field LINES Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;
- public static final field POSITION Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;
- public static final field POSITION_COLOR Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;
- public static final field POSITION_COLOR_TEXTURE_LIGHT Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;
- public static final field POSITION_TEXTURE Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;
- public static final field POSITION_TEXTURE_COLOR Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;
- public static final field POSITION_TEXTURE_COLOR_LIGHT Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;
- public static final field POSITION_TEXTURE_COLOR_NORMAL Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;
- public static final field POSITION_TEXTURE_LIGHT_COLOR Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;
- public static final fun fromMC (Lnet/minecraft/client/render/VertexFormat;)Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public final fun toMC ()Lnet/minecraft/client/render/VertexFormat;
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;
- public static fun values ()[Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;
-}
-
-public final class com/chattriggers/ctjs/api/render/Renderer$VertexFormat$Companion {
- public final fun fromMC (Lnet/minecraft/client/render/VertexFormat;)Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;
-}
-
-public final class com/chattriggers/ctjs/api/render/Renderer3d {
- public static final field INSTANCE Lcom/chattriggers/ctjs/api/render/Renderer3d;
- public static final fun begin ()Lcom/chattriggers/ctjs/api/render/Renderer3d;
- public static final fun begin (Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;)Lcom/chattriggers/ctjs/api/render/Renderer3d;
- public static final fun begin (Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;)Lcom/chattriggers/ctjs/api/render/Renderer3d;
- public static synthetic fun begin$default (Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;Lcom/chattriggers/ctjs/api/render/Renderer$VertexFormat;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Renderer3d;
- public static final fun color (FFF)Lcom/chattriggers/ctjs/api/render/Renderer3d;
- public static final fun color (FFFF)Lcom/chattriggers/ctjs/api/render/Renderer3d;
- public static final fun color (III)Lcom/chattriggers/ctjs/api/render/Renderer3d;
- public static final fun color (IIII)Lcom/chattriggers/ctjs/api/render/Renderer3d;
- public static final fun color (J)Lcom/chattriggers/ctjs/api/render/Renderer3d;
- public static synthetic fun color$default (FFFFILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Renderer3d;
- public static synthetic fun color$default (IIIIILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Renderer3d;
- public static final fun draw ()V
- public static final fun drawLine (JFFFFFFF)V
- public static final fun drawString (Ljava/lang/String;FFF)V
- public static final fun drawString (Ljava/lang/String;FFFJ)V
- public static final fun drawString (Ljava/lang/String;FFFJZ)V
- public static final fun drawString (Ljava/lang/String;FFFJZF)V
- public static final fun drawString (Ljava/lang/String;FFFJZFZ)V
- public static final fun drawString (Ljava/lang/String;FFFJZFZZ)V
- public static final fun drawString (Ljava/lang/String;FFFJZFZZZ)V
- public static final fun drawString (Lorg/mozilla/javascript/NativeObject;)V
- public static synthetic fun drawString$default (Ljava/lang/String;FFFJZFZZZILjava/lang/Object;)V
- public static final fun light (II)Lcom/chattriggers/ctjs/api/render/Renderer3d;
- public static final fun lineWidth (F)Lcom/chattriggers/ctjs/api/render/Renderer3d;
- public static final fun normal (FFF)Lcom/chattriggers/ctjs/api/render/Renderer3d;
- public static final fun overlay (II)Lcom/chattriggers/ctjs/api/render/Renderer3d;
- public static final fun pos (FFF)Lcom/chattriggers/ctjs/api/render/Renderer3d;
- public static final fun tex (FF)Lcom/chattriggers/ctjs/api/render/Renderer3d;
-}
-
-public final class com/chattriggers/ctjs/api/render/Shape {
- public fun (J)V
- public final fun addVertex (FF)Lcom/chattriggers/ctjs/api/render/Shape;
- public final fun clearVertices ()Lcom/chattriggers/ctjs/api/render/Shape;
- public final fun clone ()Lcom/chattriggers/ctjs/api/render/Shape;
- public final fun copy ()Lcom/chattriggers/ctjs/api/render/Shape;
- public final fun draw ()Lcom/chattriggers/ctjs/api/render/Shape;
- public final fun getColor ()J
- public final fun getDrawMode ()Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;
- public final fun getVertexes ()Ljava/util/List;
- public final fun insertVertex (IFF)Lcom/chattriggers/ctjs/api/render/Shape;
- public final fun removeVertex (I)Lcom/chattriggers/ctjs/api/render/Shape;
- public final fun setCircle (FFFI)Lcom/chattriggers/ctjs/api/render/Shape;
- public final fun setColor (J)Lcom/chattriggers/ctjs/api/render/Shape;
- public final fun setDrawMode (Lcom/chattriggers/ctjs/api/render/Renderer$DrawMode;)Lcom/chattriggers/ctjs/api/render/Shape;
- public final fun setLine (FFFFF)Lcom/chattriggers/ctjs/api/render/Shape;
-}
-
-public final class com/chattriggers/ctjs/api/render/Text {
- public fun (Ljava/lang/String;)V
- public fun (Ljava/lang/String;F)V
- public fun (Ljava/lang/String;FF)V
- public synthetic fun (Ljava/lang/String;FFILkotlin/jvm/internal/DefaultConstructorMarker;)V
- public fun (Ljava/lang/String;Lorg/mozilla/javascript/NativeObject;)V
- public final fun draw ()Lcom/chattriggers/ctjs/api/render/Text;
- public final fun draw (Ljava/lang/Float;)Lcom/chattriggers/ctjs/api/render/Text;
- public final fun draw (Ljava/lang/Float;Ljava/lang/Float;)Lcom/chattriggers/ctjs/api/render/Text;
- public static synthetic fun draw$default (Lcom/chattriggers/ctjs/api/render/Text;Ljava/lang/Float;Ljava/lang/Float;ILjava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Text;
- public final fun exceedsMaxLines ()Z
- public final fun getAlign ()Lcom/chattriggers/ctjs/api/render/Text$Align;
- public final fun getBackground ()Z
- public final fun getBackgroundColor ()J
- public final fun getColor ()J
- public final fun getFormatted ()Z
- public final fun getHeight ()F
- public final fun getLines ()Ljava/util/List;
- public final fun getMaxLines ()I
- public final fun getMaxWidth ()I
- public final fun getScale ()F
- public final fun getShadow ()Z
- public final fun getString ()Ljava/lang/String;
- public final fun getWidth ()F
- public final fun getX ()F
- public final fun getY ()F
- public final fun setAlign (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/render/Text;
- public final fun setBackground (Z)Lcom/chattriggers/ctjs/api/render/Text;
- public final fun setBackgroundColor (J)Lcom/chattriggers/ctjs/api/render/Text;
- public final fun setColor (J)Lcom/chattriggers/ctjs/api/render/Text;
- public final fun setFormatted (Z)Lcom/chattriggers/ctjs/api/render/Text;
- public final fun setMaxLines (I)Lcom/chattriggers/ctjs/api/render/Text;
- public final fun setMaxWidth (I)Lcom/chattriggers/ctjs/api/render/Text;
- public final fun setScale (F)Lcom/chattriggers/ctjs/api/render/Text;
- public final fun setShadow (Z)Lcom/chattriggers/ctjs/api/render/Text;
- public final fun setString (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/render/Text;
- public final fun setX (F)Lcom/chattriggers/ctjs/api/render/Text;
- public final fun setY (F)Lcom/chattriggers/ctjs/api/render/Text;
- public fun toString ()Ljava/lang/String;
-}
-
-public final class com/chattriggers/ctjs/api/render/Text$Align : java/lang/Enum {
- public static final field CENTER Lcom/chattriggers/ctjs/api/render/Text$Align;
- public static final field LEFT Lcom/chattriggers/ctjs/api/render/Text$Align;
- public static final field RIGHT Lcom/chattriggers/ctjs/api/render/Text$Align;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/render/Text$Align;
- public static fun values ()[Lcom/chattriggers/ctjs/api/render/Text$Align;
-}
-
-public final class com/chattriggers/ctjs/api/render/Toast : net/minecraft/client/toast/Toast {
- public fun (Lorg/mozilla/javascript/NativeObject;)V
- public fun draw (Lnet/minecraft/client/gui/DrawContext;Lnet/minecraft/client/toast/ToastManager;J)Lnet/minecraft/client/toast/Toast$Visibility;
- public final fun getBackground ()Ljava/lang/Object;
- public final fun getDescription ()Ljava/lang/Object;
- public final fun getDisplayTime ()J
- public fun getHeight ()I
- public final fun getIcon ()Ljava/lang/Object;
- public final fun getTitle ()Ljava/lang/Object;
- public fun getWidth ()I
- public final fun setBackground (Ljava/lang/Object;)V
- public final fun setDescription (Ljava/lang/Object;)V
- public final fun setDisplayTime (J)V
- public final fun setIcon (Ljava/lang/Object;)V
- public final fun setTitle (Ljava/lang/Object;)V
- public final fun show ()Lcom/chattriggers/ctjs/api/render/Toast;
+public final class com/chattriggers/ctjs/api/Mappings {
+ public static final field INSTANCE Lcom/chattriggers/ctjs/api/Mappings;
+ public static final fun mapClassName (Ljava/lang/String;)Ljava/lang/String;
+ public static final fun unmapClass (Ljava/lang/Class;)Ljava/lang/String;
+ public static final fun unmapClassName (Ljava/lang/String;)Ljava/lang/String;
}
public class com/chattriggers/ctjs/api/triggers/CancellableEvent {
@@ -1926,50 +140,6 @@ public class com/chattriggers/ctjs/api/triggers/CancellableEvent {
public static synthetic fun setCancelled$default (Lcom/chattriggers/ctjs/api/triggers/CancellableEvent;ZILjava/lang/Object;)V
}
-public final class com/chattriggers/ctjs/api/triggers/ChatTrigger : com/chattriggers/ctjs/api/triggers/Trigger {
- public fun (Ljava/lang/Object;Lcom/chattriggers/ctjs/api/triggers/ITriggerType;)V
- public final fun addParameter (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/triggers/ChatTrigger;
- public final fun addParameters ([Ljava/lang/String;)Lcom/chattriggers/ctjs/api/triggers/ChatTrigger;
- public final fun setCaseInsensitive ()Lcom/chattriggers/ctjs/api/triggers/ChatTrigger;
- public final fun setChatCriteria (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/ChatTrigger;
- public final fun setContains ()Lcom/chattriggers/ctjs/api/triggers/ChatTrigger;
- public final fun setCriteria (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/ChatTrigger;
- public final fun setEnd ()Lcom/chattriggers/ctjs/api/triggers/ChatTrigger;
- public final fun setExact ()Lcom/chattriggers/ctjs/api/triggers/ChatTrigger;
- public final fun setFormatted ()V
- public final fun setFormatted (Z)V
- public static synthetic fun setFormatted$default (Lcom/chattriggers/ctjs/api/triggers/ChatTrigger;ZILjava/lang/Object;)V
- public final fun setParameter (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/triggers/ChatTrigger;
- public final fun setParameters ([Ljava/lang/String;)Lcom/chattriggers/ctjs/api/triggers/ChatTrigger;
- public final fun setStart ()Lcom/chattriggers/ctjs/api/triggers/ChatTrigger;
- public final fun triggerIfCanceled (Z)Lcom/chattriggers/ctjs/api/triggers/ChatTrigger;
-}
-
-public final class com/chattriggers/ctjs/api/triggers/ChatTrigger$Event : com/chattriggers/ctjs/api/triggers/CancellableEvent {
- public final field message Lcom/chattriggers/ctjs/api/message/TextComponent;
- public fun (Lcom/chattriggers/ctjs/api/message/TextComponent;)V
-}
-
-public abstract class com/chattriggers/ctjs/api/triggers/ClassFilterTrigger : com/chattriggers/ctjs/api/triggers/Trigger {
- public synthetic fun (Ljava/lang/Object;Lcom/chattriggers/ctjs/api/triggers/ITriggerType;Ljava/lang/Class;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
- public final fun setFilteredClass (Ljava/lang/Class;)Lcom/chattriggers/ctjs/api/triggers/ClassFilterTrigger;
- public final fun setFilteredClasses (Ljava/util/List;)Lcom/chattriggers/ctjs/api/triggers/ClassFilterTrigger;
- protected abstract fun unwrap (Ljava/lang/Object;)Ljava/lang/Object;
-}
-
-public final class com/chattriggers/ctjs/api/triggers/CommandTrigger : com/chattriggers/ctjs/api/triggers/Trigger {
- public fun (Ljava/lang/Object;)V
- public final fun setAliases ([Ljava/lang/String;)Lcom/chattriggers/ctjs/api/triggers/CommandTrigger;
- public final fun setCommandName (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/triggers/CommandTrigger;
- public final fun setCommandName (Ljava/lang/String;Z)Lcom/chattriggers/ctjs/api/triggers/CommandTrigger;
- public static synthetic fun setCommandName$default (Lcom/chattriggers/ctjs/api/triggers/CommandTrigger;Ljava/lang/String;ZILjava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/CommandTrigger;
- public final fun setName (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/triggers/CommandTrigger;
- public final fun setName (Ljava/lang/String;Z)Lcom/chattriggers/ctjs/api/triggers/CommandTrigger;
- public static synthetic fun setName$default (Lcom/chattriggers/ctjs/api/triggers/CommandTrigger;Ljava/lang/String;ZILjava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/CommandTrigger;
- public final fun setTabCompletions (Lkotlin/jvm/functions/Function1;)Lcom/chattriggers/ctjs/api/triggers/CommandTrigger;
- public final fun setTabCompletions ([Ljava/lang/String;)Lcom/chattriggers/ctjs/api/triggers/CommandTrigger;
-}
-
public final class com/chattriggers/ctjs/api/triggers/CustomTriggerType : com/chattriggers/ctjs/api/triggers/ITriggerType {
public fun (Ljava/lang/String;)V
public final fun component1 ()Ljava/lang/String;
@@ -1996,37 +166,10 @@ public final class com/chattriggers/ctjs/api/triggers/ITriggerType$DefaultImpls
public static fun triggerAll (Lcom/chattriggers/ctjs/api/triggers/ITriggerType;[Ljava/lang/Object;)V
}
-public final class com/chattriggers/ctjs/api/triggers/PacketTrigger : com/chattriggers/ctjs/api/triggers/ClassFilterTrigger {
- public fun (Ljava/lang/Object;Lcom/chattriggers/ctjs/api/triggers/ITriggerType;)V
- public synthetic fun unwrap (Ljava/lang/Object;)Ljava/lang/Object;
-}
-
public final class com/chattriggers/ctjs/api/triggers/RegularTrigger : com/chattriggers/ctjs/api/triggers/Trigger {
public fun (Ljava/lang/Object;Lcom/chattriggers/ctjs/api/triggers/ITriggerType;)V
}
-public final class com/chattriggers/ctjs/api/triggers/RenderBlockEntityTrigger : com/chattriggers/ctjs/api/triggers/ClassFilterTrigger {
- public fun (Ljava/lang/Object;)V
- public synthetic fun unwrap (Ljava/lang/Object;)Ljava/lang/Object;
-}
-
-public final class com/chattriggers/ctjs/api/triggers/RenderEntityTrigger : com/chattriggers/ctjs/api/triggers/ClassFilterTrigger {
- public fun (Ljava/lang/Object;)V
- public synthetic fun unwrap (Ljava/lang/Object;)Ljava/lang/Object;
-}
-
-public final class com/chattriggers/ctjs/api/triggers/SoundPlayTrigger : com/chattriggers/ctjs/api/triggers/Trigger {
- public fun (Ljava/lang/Object;)V
- public final fun setCriteria (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/triggers/SoundPlayTrigger;
-}
-
-public final class com/chattriggers/ctjs/api/triggers/StepTrigger : com/chattriggers/ctjs/api/triggers/Trigger {
- public fun (Ljava/lang/Object;)V
- public fun register ()Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public final fun setDelay (J)Lcom/chattriggers/ctjs/api/triggers/StepTrigger;
- public final fun setFps (J)Lcom/chattriggers/ctjs/api/triggers/StepTrigger;
-}
-
public abstract class com/chattriggers/ctjs/api/triggers/Trigger : java/lang/Comparable {
protected fun (Ljava/lang/Object;Lcom/chattriggers/ctjs/api/triggers/ITriggerType;)V
protected final fun callMethod ([Ljava/lang/Object;)V
@@ -2055,44 +198,10 @@ public final class com/chattriggers/ctjs/api/triggers/Trigger$Priority : java/la
public final class com/chattriggers/ctjs/api/triggers/TriggerType : java/lang/Enum, com/chattriggers/ctjs/api/triggers/ITriggerType {
public static final field ACTION_BAR Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field BLOCK_HIGHLIGHT Lcom/chattriggers/ctjs/api/triggers/TriggerType;
public static final field CHAT Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field CLICKED Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field COMMAND Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field DRAGGED Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field DROP_ITEM Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field ENTITY_DAMAGE Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field ENTITY_DEATH Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field GAME_LOAD Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field GAME_UNLOAD Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field GUI_CLOSED Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field GUI_KEY Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field GUI_MOUSE_CLICK Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field GUI_MOUSE_DRAG Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field GUI_OPENED Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field GUI_RENDER Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field ITEM_TOOLTIP Lcom/chattriggers/ctjs/api/triggers/TriggerType;
public static final field MESSAGE_SENT Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field OTHER Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field PACKET_RECEIVED Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field PACKET_SENT Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field PLAYER_INTERACT Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field POST_GUI_RENDER Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field POST_RENDER_WORLD Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field PRE_RENDER_WORLD Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field RENDER_BLOCK_ENTITY Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field RENDER_ENTITY Lcom/chattriggers/ctjs/api/triggers/TriggerType;
public static final field RENDER_OVERLAY Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field RENDER_PLAYER_LIST Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field SCROLLED Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field SERVER_CONNECT Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field SERVER_DISCONNECT Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field SOUND_PLAY Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field SPAWN_PARTICLE Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field STEP Lcom/chattriggers/ctjs/api/triggers/TriggerType;
public static final field TICK Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field WORLD_LOAD Lcom/chattriggers/ctjs/api/triggers/TriggerType;
- public static final field WORLD_UNLOAD Lcom/chattriggers/ctjs/api/triggers/TriggerType;
public static fun getEntries ()Lkotlin/enums/EnumEntries;
public synthetic fun getName ()Ljava/lang/String;
public fun triggerAll ([Ljava/lang/Object;)V
@@ -2100,556 +209,6 @@ public final class com/chattriggers/ctjs/api/triggers/TriggerType : java/lang/En
public static fun values ()[Lcom/chattriggers/ctjs/api/triggers/TriggerType;
}
-public final class com/chattriggers/ctjs/api/vec/Vec2f {
- public fun ()V
- public fun (F)V
- public fun (FF)V
- public synthetic fun (FFILkotlin/jvm/internal/DefaultConstructorMarker;)V
- public final fun angleTo (Lcom/chattriggers/ctjs/api/vec/Vec2f;)F
- public final fun component1 ()F
- public final fun component2 ()F
- public final fun copy (FF)Lcom/chattriggers/ctjs/api/vec/Vec2f;
- public static synthetic fun copy$default (Lcom/chattriggers/ctjs/api/vec/Vec2f;FFILjava/lang/Object;)Lcom/chattriggers/ctjs/api/vec/Vec2f;
- public final fun dotProduct (Lcom/chattriggers/ctjs/api/vec/Vec2f;)F
- public fun equals (Ljava/lang/Object;)Z
- public final fun getX ()F
- public final fun getY ()F
- public fun hashCode ()I
- public final fun magnitude ()F
- public final fun magnitudeSquared ()F
- public final fun minus (Lcom/chattriggers/ctjs/api/vec/Vec2f;)Lcom/chattriggers/ctjs/api/vec/Vec2f;
- public final fun normalized ()Lcom/chattriggers/ctjs/api/vec/Vec2f;
- public final fun plus (Lcom/chattriggers/ctjs/api/vec/Vec2f;)Lcom/chattriggers/ctjs/api/vec/Vec2f;
- public final fun scaled (F)Lcom/chattriggers/ctjs/api/vec/Vec2f;
- public final fun scaled (FF)Lcom/chattriggers/ctjs/api/vec/Vec2f;
- public fun toString ()Ljava/lang/String;
- public final fun translated (FF)Lcom/chattriggers/ctjs/api/vec/Vec2f;
- public final fun unaryMinus ()Lcom/chattriggers/ctjs/api/vec/Vec2f;
-}
-
-public final class com/chattriggers/ctjs/api/vec/Vec3f {
- public fun ()V
- public fun (F)V
- public fun (FF)V
- public fun (FFF)V
- public synthetic fun (FFFILkotlin/jvm/internal/DefaultConstructorMarker;)V
- public final fun angleTo (Lcom/chattriggers/ctjs/api/vec/Vec3f;)F
- public final fun component1 ()F
- public final fun component2 ()F
- public final fun component3 ()F
- public final fun copy (FFF)Lcom/chattriggers/ctjs/api/vec/Vec3f;
- public static synthetic fun copy$default (Lcom/chattriggers/ctjs/api/vec/Vec3f;FFFILjava/lang/Object;)Lcom/chattriggers/ctjs/api/vec/Vec3f;
- public final fun crossProduct (Lcom/chattriggers/ctjs/api/vec/Vec3f;)Lcom/chattriggers/ctjs/api/vec/Vec3f;
- public final fun dotProduct (Lcom/chattriggers/ctjs/api/vec/Vec3f;)F
- public fun equals (Ljava/lang/Object;)Z
- public final fun getX ()F
- public final fun getY ()F
- public final fun getZ ()F
- public fun hashCode ()I
- public final fun magnitude ()F
- public final fun magnitudeSquared ()F
- public final fun minus (Lcom/chattriggers/ctjs/api/vec/Vec3f;)Lcom/chattriggers/ctjs/api/vec/Vec3f;
- public final fun normalized ()Lcom/chattriggers/ctjs/api/vec/Vec3f;
- public final fun plus (Lcom/chattriggers/ctjs/api/vec/Vec3f;)Lcom/chattriggers/ctjs/api/vec/Vec3f;
- public final fun scaled (F)Lcom/chattriggers/ctjs/api/vec/Vec3f;
- public final fun scaled (FFF)Lcom/chattriggers/ctjs/api/vec/Vec3f;
- public fun toString ()Ljava/lang/String;
- public final fun translated (FFF)Lcom/chattriggers/ctjs/api/vec/Vec3f;
- public final fun unaryMinus ()Lcom/chattriggers/ctjs/api/vec/Vec3f;
-}
-
-public class com/chattriggers/ctjs/api/vec/Vec3i {
- public fun ()V
- public fun (I)V
- public fun (II)V
- public fun (III)V
- public synthetic fun (IIIILkotlin/jvm/internal/DefaultConstructorMarker;)V
- public final fun angleTo (Lcom/chattriggers/ctjs/api/vec/Vec3i;)F
- public fun crossProduct (Lcom/chattriggers/ctjs/api/vec/Vec3i;)Lcom/chattriggers/ctjs/api/vec/Vec3i;
- public final fun dotProduct (Lcom/chattriggers/ctjs/api/vec/Vec3i;)I
- public fun equals (Ljava/lang/Object;)Z
- public final fun getX ()I
- public final fun getY ()I
- public final fun getZ ()I
- public fun hashCode ()I
- public final fun magnitude ()F
- public final fun magnitudeSquared ()I
- public fun minus (Lcom/chattriggers/ctjs/api/vec/Vec3i;)Lcom/chattriggers/ctjs/api/vec/Vec3i;
- public final fun normalized ()Lcom/chattriggers/ctjs/api/vec/Vec3f;
- public fun plus (Lcom/chattriggers/ctjs/api/vec/Vec3i;)Lcom/chattriggers/ctjs/api/vec/Vec3i;
- public fun scaled (I)Lcom/chattriggers/ctjs/api/vec/Vec3i;
- public fun scaled (III)Lcom/chattriggers/ctjs/api/vec/Vec3i;
- public fun toString ()Ljava/lang/String;
- public fun translated (III)Lcom/chattriggers/ctjs/api/vec/Vec3i;
- public fun unaryMinus ()Lcom/chattriggers/ctjs/api/vec/Vec3i;
-}
-
-public final class com/chattriggers/ctjs/api/world/BossBars {
- public static final field INSTANCE Lcom/chattriggers/ctjs/api/world/BossBars;
- public static final fun addBossBar (Lorg/mozilla/javascript/NativeObject;)Lcom/chattriggers/ctjs/api/world/BossBars$BossBar;
- public static final fun clearBossBars ()V
- public static final fun getBossBars ()Ljava/util/List;
- public static final fun getBossBarsByName (Ljava/lang/String;)Ljava/util/List;
- public static final fun removeBossBar (Lcom/chattriggers/ctjs/api/world/BossBars$BossBar;)V
- public static final fun removeBossBarsByName (Ljava/lang/String;)V
- public static final fun toMC ()Lnet/minecraft/client/gui/hud/BossBarHud;
-}
-
-public final class com/chattriggers/ctjs/api/world/BossBars$BossBar : com/chattriggers/ctjs/api/CTWrapper {
- public fun (Lnet/minecraft/client/gui/hud/ClientBossBar;)V
- public final fun getColor ()Lcom/chattriggers/ctjs/api/world/BossBars$Color;
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/client/gui/hud/ClientBossBar;
- public final fun getName ()Ljava/lang/String;
- public final fun getPercent ()F
- public final fun getStyle ()Lcom/chattriggers/ctjs/api/world/BossBars$Style;
- public final fun getUUID ()Ljava/util/UUID;
- public final fun hasDragonMusic ()Z
- public final fun setColor (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/world/BossBars$BossBar;
- public final fun setHasDragonMusic (Z)Lcom/chattriggers/ctjs/api/world/BossBars$BossBar;
- public final fun setName (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/world/BossBars$BossBar;
- public final fun setPercent (F)Lcom/chattriggers/ctjs/api/world/BossBars$BossBar;
- public final fun setShouldDarkenSky (Z)Lcom/chattriggers/ctjs/api/world/BossBars$BossBar;
- public final fun setShouldThickenFog (Z)Lcom/chattriggers/ctjs/api/world/BossBars$BossBar;
- public final fun setStyle (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/world/BossBars$BossBar;
- public final fun shouldDarkenSky ()Z
- public final fun shouldThickenFog ()Z
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/client/gui/hud/ClientBossBar;
- public fun toString ()Ljava/lang/String;
-}
-
-public final class com/chattriggers/ctjs/api/world/BossBars$Color : java/lang/Enum, com/chattriggers/ctjs/api/CTWrapper {
- public static final field BLUE Lcom/chattriggers/ctjs/api/world/BossBars$Color;
- public static final field Companion Lcom/chattriggers/ctjs/api/world/BossBars$Color$Companion;
- public static final field GREEN Lcom/chattriggers/ctjs/api/world/BossBars$Color;
- public static final field PINK Lcom/chattriggers/ctjs/api/world/BossBars$Color;
- public static final field PURPLE Lcom/chattriggers/ctjs/api/world/BossBars$Color;
- public static final field RED Lcom/chattriggers/ctjs/api/world/BossBars$Color;
- public static final field WHITE Lcom/chattriggers/ctjs/api/world/BossBars$Color;
- public static final field YELLOW Lcom/chattriggers/ctjs/api/world/BossBars$Color;
- public static final fun from (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/world/BossBars$Color;
- public static final fun fromMC (Lnet/minecraft/entity/boss/BossBar$Color;)Lcom/chattriggers/ctjs/api/world/BossBars$Color;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/entity/boss/BossBar$Color;
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/entity/boss/BossBar$Color;
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/world/BossBars$Color;
- public static fun values ()[Lcom/chattriggers/ctjs/api/world/BossBars$Color;
-}
-
-public final class com/chattriggers/ctjs/api/world/BossBars$Color$Companion {
- public final fun from (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/world/BossBars$Color;
- public final fun fromMC (Lnet/minecraft/entity/boss/BossBar$Color;)Lcom/chattriggers/ctjs/api/world/BossBars$Color;
-}
-
-public final class com/chattriggers/ctjs/api/world/BossBars$Style : java/lang/Enum, com/chattriggers/ctjs/api/CTWrapper {
- public static final field Companion Lcom/chattriggers/ctjs/api/world/BossBars$Style$Companion;
- public static final field ONE Lcom/chattriggers/ctjs/api/world/BossBars$Style;
- public static final field SIX Lcom/chattriggers/ctjs/api/world/BossBars$Style;
- public static final field TEN Lcom/chattriggers/ctjs/api/world/BossBars$Style;
- public static final field TWELVE Lcom/chattriggers/ctjs/api/world/BossBars$Style;
- public static final field TWENTY Lcom/chattriggers/ctjs/api/world/BossBars$Style;
- public static final fun from (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/world/BossBars$Style;
- public static final fun fromMC (Lnet/minecraft/entity/boss/BossBar$Style;)Lcom/chattriggers/ctjs/api/world/BossBars$Style;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/entity/boss/BossBar$Style;
- public final fun getSections ()I
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/entity/boss/BossBar$Style;
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/world/BossBars$Style;
- public static fun values ()[Lcom/chattriggers/ctjs/api/world/BossBars$Style;
-}
-
-public final class com/chattriggers/ctjs/api/world/BossBars$Style$Companion {
- public final fun from (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/world/BossBars$Style;
- public final fun fromMC (Lnet/minecraft/entity/boss/BossBar$Style;)Lcom/chattriggers/ctjs/api/world/BossBars$Style;
-}
-
-public final class com/chattriggers/ctjs/api/world/Chunk : com/chattriggers/ctjs/api/CTWrapper {
- public fun (Lnet/minecraft/world/chunk/Chunk;)V
- public final fun getAllBlockEntities ()Ljava/util/List;
- public final fun getAllBlockEntitiesOfType (Ljava/lang/Class;)Ljava/util/List;
- public final fun getAllEntities ()Ljava/util/List;
- public final fun getAllEntitiesOfType (Ljava/lang/Class;)Ljava/util/List;
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/world/chunk/Chunk;
- public final fun getMinBlockX ()I
- public final fun getMinBlockZ ()I
- public final fun getX ()I
- public final fun getZ ()I
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/world/chunk/Chunk;
-}
-
-public final class com/chattriggers/ctjs/api/world/PotionEffect {
- public fun (Lnet/minecraft/entity/effect/StatusEffectInstance;)V
- public final fun getAmbient ()Z
- public final fun getAmplifier ()I
- public final fun getDuration ()I
- public final fun getEffect ()Lnet/minecraft/entity/effect/StatusEffectInstance;
- public final fun getId ()I
- public final fun getLocalizedName ()Ljava/lang/String;
- public final fun getName ()Ljava/lang/String;
- public final fun getShowsParticles ()Z
- public final fun getType ()Lcom/chattriggers/ctjs/api/world/PotionEffectType;
- public final fun isInfinite ()Z
- public fun toString ()Ljava/lang/String;
-}
-
-public final class com/chattriggers/ctjs/api/world/PotionEffectType {
- public fun (Lnet/minecraft/entity/effect/StatusEffect;)V
- public final fun getCategory ()Lnet/minecraft/entity/effect/StatusEffectCategory;
- public final fun getColor ()Ljava/awt/Color;
- public final fun getName ()Lcom/chattriggers/ctjs/api/message/TextComponent;
- public final fun getRawId ()I
- public final fun getTranslationKey ()Ljava/lang/String;
- public final fun getType ()Lnet/minecraft/entity/effect/StatusEffect;
- public final fun isInstant ()Z
-}
-
-public final class com/chattriggers/ctjs/api/world/Scoreboard {
- public static final field INSTANCE Lcom/chattriggers/ctjs/api/world/Scoreboard;
- public static final fun addLine (ILcom/chattriggers/ctjs/api/message/TextComponent;)V
- public static final fun addLine (ILjava/lang/String;)V
- public static final fun createTeam (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/entity/Team;
- public static final fun getLineByIndex (I)Lcom/chattriggers/ctjs/api/world/Scoreboard$Score;
- public static final fun getLines ()Ljava/util/List;
- public static final fun getLines (Z)Ljava/util/List;
- public static synthetic fun getLines$default (ZILjava/lang/Object;)Ljava/util/List;
- public static final fun getLinesByScore (I)Ljava/util/List;
- public static final fun getScoreboard ()Lnet/minecraft/scoreboard/Scoreboard;
- public static final fun getShouldRender ()Z
- public static final fun getSidebar ()Lnet/minecraft/scoreboard/ScoreboardObjective;
- public static final fun getTitle ()Lcom/chattriggers/ctjs/api/message/TextComponent;
- public static final fun removeIndex (I)V
- public static final fun removeIndex (IZ)V
- public static synthetic fun removeIndex$default (IZILjava/lang/Object;)V
- public static final fun removeScores (I)V
- public static final fun setLine (ILcom/chattriggers/ctjs/api/message/TextComponent;)V
- public static final fun setLine (ILcom/chattriggers/ctjs/api/message/TextComponent;Z)V
- public static final fun setLine (ILjava/lang/String;)V
- public static final fun setLine (ILjava/lang/String;Z)V
- public static synthetic fun setLine$default (ILcom/chattriggers/ctjs/api/message/TextComponent;ZILjava/lang/Object;)V
- public static synthetic fun setLine$default (ILjava/lang/String;ZILjava/lang/Object;)V
- public static final fun setShouldRender (Z)V
- public static final fun setTitle (Lcom/chattriggers/ctjs/api/message/TextComponent;)V
- public static final fun setTitle (Ljava/lang/String;)V
- public static final fun toMC ()Lnet/minecraft/scoreboard/Scoreboard;
-}
-
-public final class com/chattriggers/ctjs/api/world/Scoreboard$Score : com/chattriggers/ctjs/api/CTWrapper {
- public fun (Lnet/minecraft/scoreboard/ScoreAccess;)V
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/scoreboard/ScoreAccess;
- public final fun getName ()Lcom/chattriggers/ctjs/api/message/TextComponent;
- public final fun getNumberFormat ()Lnet/minecraft/scoreboard/number/NumberFormat;
- public final fun getScore ()I
- public final fun getTeam ()Lcom/chattriggers/ctjs/api/entity/Team;
- public final fun remove ()V
- public final fun setName (Lcom/chattriggers/ctjs/api/message/TextComponent;)Lcom/chattriggers/ctjs/api/world/Scoreboard$Score;
- public final fun setNumberFormat (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/world/Scoreboard$Score;
- public final fun setScore (I)Lcom/chattriggers/ctjs/api/world/Scoreboard$Score;
- public final fun setTeam (Lcom/chattriggers/ctjs/api/entity/Team;)Lcom/chattriggers/ctjs/api/world/Scoreboard$Score;
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/scoreboard/ScoreAccess;
- public fun toString ()Ljava/lang/String;
-}
-
-public final class com/chattriggers/ctjs/api/world/Server {
- public static final field INSTANCE Lcom/chattriggers/ctjs/api/world/Server;
- public static final fun getIP ()Ljava/lang/String;
- public static final fun getMOTD ()Ljava/lang/String;
- public static final fun getName ()Ljava/lang/String;
- public static final fun getPing ()J
- public static final fun isSingleplayer ()Z
- public static final fun toMC ()Lnet/minecraft/client/network/ServerInfo;
-}
-
-public final class com/chattriggers/ctjs/api/world/TabList {
- public static final field INSTANCE Lcom/chattriggers/ctjs/api/world/TabList;
- public static final fun addName (Lcom/chattriggers/ctjs/api/message/TextComponent;)V
- public static final fun addName (Lcom/chattriggers/ctjs/api/message/TextComponent;Z)V
- public static final fun addName (Ljava/lang/String;)V
- public static final fun addName (Ljava/lang/String;Z)V
- public static synthetic fun addName$default (Lcom/chattriggers/ctjs/api/message/TextComponent;ZILjava/lang/Object;)V
- public static synthetic fun addName$default (Ljava/lang/String;ZILjava/lang/Object;)V
- public static final fun clearFooter ()V
- public static final fun clearHeader ()V
- public static final fun getFooter ()Ljava/lang/String;
- public static final fun getFooterComponent ()Lcom/chattriggers/ctjs/api/message/TextComponent;
- public static final fun getHeader ()Ljava/lang/String;
- public static final fun getHeaderComponent ()Lcom/chattriggers/ctjs/api/message/TextComponent;
- public static final fun getNames ()Ljava/util/List;
- public static final fun getNamesByObjectives ()Ljava/util/List;
- public static final fun getObjective ()Lnet/minecraft/scoreboard/ScoreboardObjective;
- public static final fun getUnformattedNames ()Ljava/util/List;
- public static final fun removeNames (Lcom/chattriggers/ctjs/api/message/TextComponent;)V
- public static final fun removeNames (Ljava/lang/String;)V
- public static final fun setFooter (Ljava/lang/Object;)V
- public static final fun setHeader (Ljava/lang/Object;)V
- public static final fun toMC ()Lnet/minecraft/client/gui/hud/PlayerListHud;
-}
-
-public final class com/chattriggers/ctjs/api/world/TabList$Name : com/chattriggers/ctjs/api/CTWrapper {
- public fun (Lnet/minecraft/client/network/PlayerListEntry;)V
- public final fun getLatency ()I
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/client/network/PlayerListEntry;
- public final fun getName ()Lcom/chattriggers/ctjs/api/message/TextComponent;
- public final fun getTeam ()Lcom/chattriggers/ctjs/api/entity/Team;
- public final fun remove ()V
- public final fun setLatency (I)Lcom/chattriggers/ctjs/api/world/TabList$Name;
- public final fun setName (Lcom/chattriggers/ctjs/api/message/TextComponent;)Lcom/chattriggers/ctjs/api/world/TabList$Name;
- public final fun setTeam (Lcom/chattriggers/ctjs/api/entity/Team;)Lcom/chattriggers/ctjs/api/world/TabList$Name;
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/client/network/PlayerListEntry;
- public fun toString ()Ljava/lang/String;
-}
-
-public final class com/chattriggers/ctjs/api/world/World {
- public static final field INSTANCE Lcom/chattriggers/ctjs/api/world/World;
- public static final field border Lcom/chattriggers/ctjs/api/world/World$BorderWrapper;
- public static final field particle Lcom/chattriggers/ctjs/api/world/World$ParticleWrapper;
- public static final field spawn Lcom/chattriggers/ctjs/api/world/World$SpawnWrapper;
- public static final fun getAllBlockEntities ()Ljava/util/List;
- public static final fun getAllBlockEntitiesOfType (Ljava/lang/Class;)Ljava/util/List;
- public static final fun getAllEntities ()Ljava/util/List;
- public static final fun getAllEntitiesOfType (Ljava/lang/Class;)Ljava/util/List;
- public static final fun getAllPlayers ()Ljava/util/List;
- public static final fun getBlockAt (Lcom/chattriggers/ctjs/api/world/block/BlockPos;)Lcom/chattriggers/ctjs/api/world/block/Block;
- public static final fun getBlockAt (Ljava/lang/Number;Ljava/lang/Number;Ljava/lang/Number;)Lcom/chattriggers/ctjs/api/world/block/Block;
- public static final fun getBlockLightLevel (III)I
- public static final fun getBlockLightLevel (Lcom/chattriggers/ctjs/api/world/block/BlockPos;)I
- public static final fun getBlockStateAt (Lcom/chattriggers/ctjs/api/world/block/BlockPos;)Lnet/minecraft/block/BlockState;
- public static final fun getChunk (III)Lcom/chattriggers/ctjs/api/world/Chunk;
- public static final fun getDifficulty ()Lcom/chattriggers/ctjs/api/client/Settings$Difficulty;
- public static final fun getMoonPhase ()I
- public static final fun getPlayerByName (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/entity/PlayerMP;
- public static final fun getRainingStrength ()F
- public static final fun getSkyLightLevel (III)I
- public static final fun getSkyLightLevel (Lcom/chattriggers/ctjs/api/world/block/BlockPos;)I
- public static final fun getTicksPerSecond ()I
- public static final fun getTime ()J
- public static final fun getWorld ()Lnet/minecraft/client/world/ClientWorld;
- public static final fun hasPlayer (Ljava/lang/String;)Z
- public static final fun isLoaded ()Z
- public static final fun isRaining ()Z
- public static final fun toMC ()Lnet/minecraft/client/world/ClientWorld;
-}
-
-public final class com/chattriggers/ctjs/api/world/World$BorderWrapper {
- public fun ()V
- public final fun getCenterX ()D
- public final fun getCenterZ ()D
- public final fun getSize ()D
- public final fun getTargetSize ()D
- public final fun getTimeUntilTarget ()J
-}
-
-public final class com/chattriggers/ctjs/api/world/World$ParticleWrapper {
- public fun ()V
- public final fun getParticleNames ()Ljava/util/List;
- public final fun spawnParticle (Ljava/lang/String;DDDDDD)Lcom/chattriggers/ctjs/api/entity/Particle;
- public final fun spawnParticle (Lnet/minecraft/client/particle/Particle;)Lcom/chattriggers/ctjs/api/entity/Particle;
-}
-
-public final class com/chattriggers/ctjs/api/world/World$SpawnWrapper {
- public fun ()V
- public final fun getX ()I
- public final fun getY ()I
- public final fun getZ ()I
-}
-
-public class com/chattriggers/ctjs/api/world/block/Block {
- public fun (Lcom/chattriggers/ctjs/api/world/block/BlockType;Lcom/chattriggers/ctjs/api/world/block/BlockPos;Lcom/chattriggers/ctjs/api/world/block/BlockFace;)V
- public synthetic fun (Lcom/chattriggers/ctjs/api/world/block/BlockType;Lcom/chattriggers/ctjs/api/world/block/BlockPos;Lcom/chattriggers/ctjs/api/world/block/BlockFace;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
- public final fun canBeHarvested ()Z
- public final fun canBeHarvestedWith (Lcom/chattriggers/ctjs/api/inventory/Item;)Z
- public final fun getEmittingPower ()I
- public final fun getEmittingPower (Lcom/chattriggers/ctjs/api/world/block/BlockFace;)I
- public static synthetic fun getEmittingPower$default (Lcom/chattriggers/ctjs/api/world/block/Block;Lcom/chattriggers/ctjs/api/world/block/BlockFace;ILjava/lang/Object;)I
- public final fun getFace ()Lcom/chattriggers/ctjs/api/world/block/BlockFace;
- public final fun getPos ()Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public final fun getReceivingPower ()I
- public final fun getState ()Lnet/minecraft/block/BlockState;
- public final fun getType ()Lcom/chattriggers/ctjs/api/world/block/BlockType;
- public final fun getX ()I
- public final fun getY ()I
- public final fun getZ ()I
- public final fun isEmittingPower ()Z
- public final fun isEmittingPower (Lcom/chattriggers/ctjs/api/world/block/BlockFace;)Z
- public static synthetic fun isEmittingPower$default (Lcom/chattriggers/ctjs/api/world/block/Block;Lcom/chattriggers/ctjs/api/world/block/BlockFace;ILjava/lang/Object;)Z
- public final fun isReceivingPower ()Z
- public fun toString ()Ljava/lang/String;
- public final fun withFace (Lcom/chattriggers/ctjs/api/world/block/BlockFace;)Lcom/chattriggers/ctjs/api/world/block/Block;
- public final fun withPos (Lcom/chattriggers/ctjs/api/world/block/BlockPos;)Lcom/chattriggers/ctjs/api/world/block/Block;
- public final fun withType (Lcom/chattriggers/ctjs/api/world/block/BlockType;)Lcom/chattriggers/ctjs/api/world/block/Block;
-}
-
-public final class com/chattriggers/ctjs/api/world/block/BlockFace : java/lang/Enum, com/chattriggers/ctjs/api/CTWrapper, net/minecraft/util/StringIdentifiable {
- public static final field Companion Lcom/chattriggers/ctjs/api/world/block/BlockFace$Companion;
- public static final field DOWN Lcom/chattriggers/ctjs/api/world/block/BlockFace;
- public static final field EAST Lcom/chattriggers/ctjs/api/world/block/BlockFace;
- public static final field NORTH Lcom/chattriggers/ctjs/api/world/block/BlockFace;
- public static final field SOUTH Lcom/chattriggers/ctjs/api/world/block/BlockFace;
- public static final field UP Lcom/chattriggers/ctjs/api/world/block/BlockFace;
- public static final field WEST Lcom/chattriggers/ctjs/api/world/block/BlockFace;
- public fun asString ()Ljava/lang/String;
- public static final fun fromMC (Lnet/minecraft/util/math/Direction;)Lcom/chattriggers/ctjs/api/world/block/BlockFace;
- public final fun getAxis ()Lcom/chattriggers/ctjs/api/world/block/BlockFace$Axis;
- public final fun getAxisDirection ()Lcom/chattriggers/ctjs/api/world/block/BlockFace$AxisDirection;
- public final fun getDirectionVec ()Lcom/chattriggers/ctjs/api/vec/Vec3i;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/util/math/Direction;
- public final fun getOffsetX ()I
- public final fun getOffsetY ()I
- public final fun getOffsetZ ()I
- public final fun getOpposite ()Lcom/chattriggers/ctjs/api/world/block/BlockFace;
- public final fun rotateAround (Lcom/chattriggers/ctjs/api/world/block/BlockFace$Axis;)Lcom/chattriggers/ctjs/api/world/block/BlockFace;
- public final fun rotateX ()Lcom/chattriggers/ctjs/api/world/block/BlockFace;
- public final fun rotateY ()Lcom/chattriggers/ctjs/api/world/block/BlockFace;
- public final fun rotateZ ()Lcom/chattriggers/ctjs/api/world/block/BlockFace;
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/util/math/Direction;
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/world/block/BlockFace;
- public static fun values ()[Lcom/chattriggers/ctjs/api/world/block/BlockFace;
-}
-
-public final class com/chattriggers/ctjs/api/world/block/BlockFace$Axis : java/lang/Enum, com/chattriggers/ctjs/api/CTWrapper, java/util/function/Predicate, net/minecraft/util/StringIdentifiable {
- public static final field Companion Lcom/chattriggers/ctjs/api/world/block/BlockFace$Axis$Companion;
- public static final field X Lcom/chattriggers/ctjs/api/world/block/BlockFace$Axis;
- public static final field Y Lcom/chattriggers/ctjs/api/world/block/BlockFace$Axis;
- public static final field Z Lcom/chattriggers/ctjs/api/world/block/BlockFace$Axis;
- public fun asString ()Ljava/lang/String;
- public static final fun fromMC (Lnet/minecraft/util/math/Direction$Axis;)Lcom/chattriggers/ctjs/api/world/block/BlockFace$Axis;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/util/math/Direction$Axis;
- public final fun getPlane ()Lcom/chattriggers/ctjs/api/world/block/BlockFace$Plane;
- public final fun isHorizontal ()Z
- public final fun isVertical ()Z
- public fun test (Lcom/chattriggers/ctjs/api/world/block/BlockFace;)Z
- public synthetic fun test (Ljava/lang/Object;)Z
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/util/math/Direction$Axis;
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/world/block/BlockFace$Axis;
- public static fun values ()[Lcom/chattriggers/ctjs/api/world/block/BlockFace$Axis;
-}
-
-public final class com/chattriggers/ctjs/api/world/block/BlockFace$Axis$Companion {
- public final fun fromMC (Lnet/minecraft/util/math/Direction$Axis;)Lcom/chattriggers/ctjs/api/world/block/BlockFace$Axis;
-}
-
-public final class com/chattriggers/ctjs/api/world/block/BlockFace$AxisDirection : java/lang/Enum, com/chattriggers/ctjs/api/CTWrapper {
- public static final field Companion Lcom/chattriggers/ctjs/api/world/block/BlockFace$AxisDirection$Companion;
- public static final field NEGATIVE Lcom/chattriggers/ctjs/api/world/block/BlockFace$AxisDirection;
- public static final field POSITIVE Lcom/chattriggers/ctjs/api/world/block/BlockFace$AxisDirection;
- public static final fun fromMC (Lnet/minecraft/util/math/Direction$AxisDirection;)Lcom/chattriggers/ctjs/api/world/block/BlockFace$AxisDirection;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/util/math/Direction$AxisDirection;
- public final fun getOffset ()I
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/util/math/Direction$AxisDirection;
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/world/block/BlockFace$AxisDirection;
- public static fun values ()[Lcom/chattriggers/ctjs/api/world/block/BlockFace$AxisDirection;
-}
-
-public final class com/chattriggers/ctjs/api/world/block/BlockFace$AxisDirection$Companion {
- public final fun fromMC (Lnet/minecraft/util/math/Direction$AxisDirection;)Lcom/chattriggers/ctjs/api/world/block/BlockFace$AxisDirection;
-}
-
-public final class com/chattriggers/ctjs/api/world/block/BlockFace$Companion {
- public final fun fromMC (Lnet/minecraft/util/math/Direction;)Lcom/chattriggers/ctjs/api/world/block/BlockFace;
-}
-
-public final class com/chattriggers/ctjs/api/world/block/BlockFace$Plane : java/lang/Enum, java/lang/Iterable, java/util/function/Predicate, kotlin/jvm/internal/markers/KMappedMarker {
- public static final field HORIZONTAL Lcom/chattriggers/ctjs/api/world/block/BlockFace$Plane;
- public static final field VERTICAL Lcom/chattriggers/ctjs/api/world/block/BlockFace$Plane;
- public final fun facings ()[Lcom/chattriggers/ctjs/api/world/block/BlockFace;
- public static fun getEntries ()Lkotlin/enums/EnumEntries;
- public fun iterator ()Ljava/util/Iterator;
- public fun test (Lcom/chattriggers/ctjs/api/world/block/BlockFace;)Z
- public synthetic fun test (Ljava/lang/Object;)Z
- public static fun valueOf (Ljava/lang/String;)Lcom/chattriggers/ctjs/api/world/block/BlockFace$Plane;
- public static fun values ()[Lcom/chattriggers/ctjs/api/world/block/BlockFace$Plane;
-}
-
-public final class com/chattriggers/ctjs/api/world/block/BlockPos : com/chattriggers/ctjs/api/vec/Vec3i, com/chattriggers/ctjs/api/CTWrapper {
- public fun (III)V
- public fun (Lcom/chattriggers/ctjs/api/entity/Entity;)V
- public fun (Lcom/chattriggers/ctjs/api/vec/Vec3i;)V
- public fun (Ljava/lang/Number;Ljava/lang/Number;Ljava/lang/Number;)V
- public fun (Lnet/minecraft/util/math/BlockPos;)V
- public synthetic fun crossProduct (Lcom/chattriggers/ctjs/api/vec/Vec3i;)Lcom/chattriggers/ctjs/api/vec/Vec3i;
- public fun crossProduct (Lcom/chattriggers/ctjs/api/vec/Vec3i;)Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public final fun distanceTo (Lcom/chattriggers/ctjs/api/world/block/BlockPos;)D
- public final fun down ()Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public final fun down (I)Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public static synthetic fun down$default (Lcom/chattriggers/ctjs/api/world/block/BlockPos;IILjava/lang/Object;)Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public final fun east ()Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public final fun east (I)Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public static synthetic fun east$default (Lcom/chattriggers/ctjs/api/world/block/BlockPos;IILjava/lang/Object;)Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/util/math/BlockPos;
- public synthetic fun minus (Lcom/chattriggers/ctjs/api/vec/Vec3i;)Lcom/chattriggers/ctjs/api/vec/Vec3i;
- public fun minus (Lcom/chattriggers/ctjs/api/vec/Vec3i;)Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public final fun north ()Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public final fun north (I)Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public static synthetic fun north$default (Lcom/chattriggers/ctjs/api/world/block/BlockPos;IILjava/lang/Object;)Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public final fun offset (Lcom/chattriggers/ctjs/api/world/block/BlockFace;)Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public final fun offset (Lcom/chattriggers/ctjs/api/world/block/BlockFace;I)Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public static synthetic fun offset$default (Lcom/chattriggers/ctjs/api/world/block/BlockPos;Lcom/chattriggers/ctjs/api/world/block/BlockFace;IILjava/lang/Object;)Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public synthetic fun plus (Lcom/chattriggers/ctjs/api/vec/Vec3i;)Lcom/chattriggers/ctjs/api/vec/Vec3i;
- public fun plus (Lcom/chattriggers/ctjs/api/vec/Vec3i;)Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public synthetic fun scaled (I)Lcom/chattriggers/ctjs/api/vec/Vec3i;
- public fun scaled (I)Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public synthetic fun scaled (III)Lcom/chattriggers/ctjs/api/vec/Vec3i;
- public fun scaled (III)Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public final fun south ()Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public final fun south (I)Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public static synthetic fun south$default (Lcom/chattriggers/ctjs/api/world/block/BlockPos;IILjava/lang/Object;)Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/util/math/BlockPos;
- public final fun toVec3d ()Lnet/minecraft/util/math/Vec3d;
- public synthetic fun translated (III)Lcom/chattriggers/ctjs/api/vec/Vec3i;
- public fun translated (III)Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public synthetic fun unaryMinus ()Lcom/chattriggers/ctjs/api/vec/Vec3i;
- public fun unaryMinus ()Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public final fun up ()Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public final fun up (I)Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public static synthetic fun up$default (Lcom/chattriggers/ctjs/api/world/block/BlockPos;IILjava/lang/Object;)Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public final fun west ()Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public final fun west (I)Lcom/chattriggers/ctjs/api/world/block/BlockPos;
- public static synthetic fun west$default (Lcom/chattriggers/ctjs/api/world/block/BlockPos;IILjava/lang/Object;)Lcom/chattriggers/ctjs/api/world/block/BlockPos;
-}
-
-public final class com/chattriggers/ctjs/api/world/block/BlockType : com/chattriggers/ctjs/api/CTWrapper {
- public fun (I)V
- public fun (Lcom/chattriggers/ctjs/api/inventory/Item;)V
- public fun (Lcom/chattriggers/ctjs/api/world/block/BlockType;)V
- public fun (Ljava/lang/String;)V
- public fun (Lnet/minecraft/block/Block;)V
- public final fun canProvidePower ()Z
- public final fun getDefaultState ()Lnet/minecraft/block/BlockState;
- public final fun getID ()I
- public final fun getLightValue ()I
- public synthetic fun getMcValue ()Ljava/lang/Object;
- public fun getMcValue ()Lnet/minecraft/block/Block;
- public final fun getName ()Ljava/lang/String;
- public final fun getRegistryName ()Ljava/lang/String;
- public final fun getTranslationKey ()Ljava/lang/String;
- public final fun isTranslucent ()Z
- public synthetic fun toMC ()Ljava/lang/Object;
- public fun toMC ()Lnet/minecraft/block/Block;
- public fun toString ()Ljava/lang/String;
- public final fun withBlockPos (Lcom/chattriggers/ctjs/api/world/block/BlockPos;)Lcom/chattriggers/ctjs/api/world/block/Block;
-}
-
public final class com/chattriggers/ctjs/engine/Console {
public static final field INSTANCE Lcom/chattriggers/ctjs/engine/Console;
public final fun clear ()V
@@ -2697,45 +256,6 @@ public final class com/chattriggers/ctjs/engine/Register {
public static final field INSTANCE Lcom/chattriggers/ctjs/engine/Register;
public static final fun createCustomTrigger (Ljava/lang/String;)Ljava/lang/Object;
public static final fun register (Ljava/lang/String;Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerActionBar (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerChat (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerClicked (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerCommand (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerDragged (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerDrawBlockHighlight (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerDropItem (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerEntityDamage (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerEntityDeath (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerGameLoad (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerGameUnload (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerGuiClosed (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerGuiKey (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerGuiMouseClick (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerGuiMouseDrag (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerGuiOpened (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerGuiRender (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerItemTooltip (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerMessageSent (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerPacketReceived (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerPacketSent (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerPlayerInteract (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerPostGuiRender (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerPostRenderWorld (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerPreRenderWorld (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerRenderBlockEntity (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerRenderEntity (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerRenderOverlay (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerRenderPlayerList (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerRenderWorld (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerScrolled (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerServerConnect (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerServerDisconnect (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerSoundPlay (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerSpawnParticle (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerStep (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerTick (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerWorldLoad (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
- public static final fun registerWorldUnload (Ljava/lang/Object;)Lcom/chattriggers/ctjs/api/triggers/Trigger;
}
public final class com/chattriggers/ctjs/engine/WrappedThread {
diff --git a/build.gradle.kts b/build.gradle.kts
index 16685832..15763d4f 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,64 +1,33 @@
-import org.gradle.kotlin.dsl.support.unzipTo
-import org.jetbrains.dokka.versioning.VersioningConfiguration
-import org.jetbrains.dokka.versioning.VersioningPlugin
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
-import java.net.HttpURLConnection
-import java.net.URL
-import java.io.ByteArrayOutputStream
-
-buildscript {
- dependencies {
- classpath(libs.versioning)
- }
-}
plugins {
alias(libs.plugins.kotlin)
alias(libs.plugins.serialization)
alias(libs.plugins.loom)
- alias(libs.plugins.dokka)
- alias(libs.plugins.validator)
alias(libs.plugins.ksp)
}
-if (!project.hasProperty("full")) {
- project.gradle.startParameter.excludedTaskNames.add("kspKotlin")
-}
-
version = property("mod_version").toString()
repositories {
maven("https://jitpack.io")
- maven("https://pkgs.dev.azure.com/djtheredstoner/DevAuth/_packaging/public/maven/v1")
maven("https://maven.terraformersmc.com/releases")
- maven("https://repo.essential.gg/repository/maven-public")
}
dependencies {
// To change the versions see the gradle/libs.versions.toml
minecraft(libs.minecraft)
- mappings(variantOf(libs.yarn) { classifier("v2") })
- modImplementation(libs.bundles.fabric)
+ implementation(libs.bundles.fabric)
- modImplementation(libs.bundles.included) { include(this) }
- modImplementation(libs.bundles.essential) {
- exclude("gg.essential", "universalcraft-1.18.1-fabric")
- include(this)
- }
+ implementation(libs.bundles.included) { include(this) }
- modApi(libs.modmenu)
- modRuntimeOnly(libs.devauth)
- dokkaPlugin(libs.versioning)
+ api(libs.modmenu)
implementation(kotlin("stdlib-jdk8"))
implementation(project(":typing-generator"))
ksp(project(":typing-generator"))
}
-loom {
- accessWidenerPath.set(file("src/main/resources/ctjs.accesswidener"))
-}
-
base {
archivesName.set(property("archives_base_name") as String)
}
@@ -66,24 +35,23 @@ base {
java {
withSourcesJar()
- sourceCompatibility = JavaVersion.VERSION_21
- targetCompatibility = JavaVersion.VERSION_21
+ sourceCompatibility = JavaVersion.VERSION_25
+ targetCompatibility = JavaVersion.VERSION_25
}
-apiValidation {
- ignoredProjects += "typing-generator"
- ignoredPackages += "com.chattriggers.ctjs.internal"
+kotlin {
+ compilerOptions {
+ jvmTarget.set(JvmTarget.JVM_25)
+ }
}
tasks {
processResources {
val flkVersion = libs.versions.fabric.kotlin.get()
- val yarnVersion = libs.versions.yarn.get()
val fapiVersion = libs.versions.fabric.api.get()
val loaderVersion = libs.versions.loader.get()
inputs.property("version", project.version)
- inputs.property("yarn_mappings", yarnVersion)
inputs.property("fabric_kotlin_version", flkVersion)
inputs.property("fabric_api_version", fapiVersion)
inputs.property("loader_version", loaderVersion)
@@ -91,7 +59,6 @@ tasks {
filesMatching("fabric.mod.json") {
expand(
"version" to project.version,
- "yarn_mappings" to yarnVersion,
"fabric_kotlin_version" to flkVersion,
"fabric_api_version" to fapiVersion,
"loader_version" to loaderVersion
@@ -99,122 +66,9 @@ tasks {
}
}
- withType().configureEach {
- options.release.set(21)
- }
-
- kotlin {
- compilerOptions {
- jvmTarget.set(JvmTarget.JVM_21)
- freeCompilerArgs = listOf("-Xcontext-receivers")
- }
- }
-
jar {
from("LICENSE") {
rename { "${name}_${base.archivesName.get()}" }
}
}
-
- dokkaHtml {
- // Just use the module name here since the MC version doesn't affect CT's API
- // across the same mod version
- moduleVersion.set(project.version.toString())
- moduleName.set("ctjs")
-
- val docVersionsDir = projectDir.resolve("build/javadocs")
- val currentVersion = project.version.toString()
- val currentDocsDir = docVersionsDir.resolve(currentVersion)
- outputs.upToDateWhen { docVersionsDir.exists() }
-
- outputDirectory.set(file(currentDocsDir))
-
- pluginConfiguration {
- version = project.version.toString()
- olderVersionsDir = docVersionsDir
- renderVersionsNavigationOnAllPages = true
- }
-
- suppressObviousFunctions.set(true)
- suppressInheritedMembers.set(true)
-
- val branch = getBranch()
- dokkaSourceSets {
- configureEach {
- jdkVersion.set(21)
-
- perPackageOption {
- matchingRegex.set("com\\.chattriggers\\.ctjs\\.internal(\$|\\.).*")
- suppress.set(true)
- }
-
- sourceLink {
- localDirectory.set(file("src/main/kotlin"))
- remoteUrl.set(URL("https://github.com/ChatTriggers/ctjs/blob/$branch/src/main/kotlin"))
- remoteLineSuffix.set("#L")
- }
-
- externalDocumentationLink {
- val yarnVersion = libs.versions.yarn.get()
-
- url.set(URL("https://maven.fabricmc.net/docs/yarn-$yarnVersion/"))
- packageListUrl.set(URL("https://maven.fabricmc.net/docs/yarn-$yarnVersion/element-list"))
- }
- }
- }
-
- doFirst {
- val archiveBase = "https://www.chattriggers.com/javadocs-archive/"
- val versions = String(downloadFile(archiveBase + "versions")).lines().map(String::trim)
- val tmpFile = File(temporaryDir, "oldVersionsZip.zip")
-
- versions.filter(String::isNotEmpty).map(String::trim).forEach { version ->
- val zipBytes = downloadFile("$archiveBase$version.zip")
- tmpFile.writeBytes(zipBytes)
- unzipTo(docVersionsDir, tmpFile)
- }
-
- tmpFile.delete()
- }
-
- doLast {
- // At this point we have a structure that looks something like this:
- // javadocs
- // \-- 2.2.0-1.8.9
- // \-- 3.0.0
- // \-- older
- //
- // The "older" directory contains all old versions, so we want to
- // delete the top-level older versions and move everything inside the
- // latest directory to the top level so the GitHub actions workflow
- // doesn't need to figure out the correct version name
-
- docVersionsDir.listFiles()?.forEach {
- if (it.name != version)
- it.deleteRecursively()
- }
-
- val latestVersionDir = docVersionsDir.listFiles()!!.single()
- latestVersionDir.listFiles()!!.forEach {
- it.renameTo(File(it.parentFile.parentFile, it.name))
- }
- latestVersionDir.deleteRecursively()
- }
- }
-}
-
-fun downloadFile(url: String): ByteArray {
- return (URL(url).openConnection() as HttpURLConnection).apply {
- requestMethod = "GET"
- doOutput = true
- }.inputStream.readAllBytes()
-}
-
-fun getBranch(): String {
- val stdout = ByteArrayOutputStream()
- exec {
- commandLine("git", "rev-parse", "HEAD")
- standardOutput = stdout
- }
- return stdout.toString().trim()
}
diff --git a/gradle.properties b/gradle.properties
index 2732bee3..9c7e94f3 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,7 +1,6 @@
# Done to increase the memory available to gradle.
org.gradle.jvmargs=-Xmx4G
org.gradle.parallel=true
-
# Mod Properties
-mod_version = 3.0.0-beta
-archives_base_name = ctjs
+mod_version=26.1.2-srock
+archives_base_name=ctjs
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 6a0670eb..d0a783a7 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,68 +1,46 @@
[versions]
# Library versions
-minecraft = "1.21"
-yarn = "1.21+build.2"
+minecraft = "26.1.2"
-loader = "0.15.11"
-fabric-api = "0.100.3+1.21"
-fabric-kotlin = "1.11.0+kotlin.2.0.0"
+loader = "0.19.3"
+fabric-api = "0.151.0+26.1.2"
+fabric-kotlin = "1.13.9+kotlin.2.3.10"
-mapping-io = "0.6.1"
rhino = "7c7c509668"
-jackson-core = "2.13.2"
-textarea = "3.2.0"
-serialization = "1.5.1"
-koffee = "315bc11234"
+jackson-core = "3.2.0"
+textarea = "3.6.3"
+serialization = "1.11.0"
-universalcraft = "342"
-elementa = "649"
-vigilance = "297"
-
-modmenu = "11.0.1"
-devauth = "1.2.1"
-dokka = "1.9.20"
+modmenu = "18.0.0-beta.1"
# Plugin Versions
-kotlin = "2.0.0"
-loom = "1.7-SNAPSHOT"
-validator = "0.14.0"
-ksp = "2.0.0-1.0.22"
+kotlin = "2.4.0"
+loom = "1.16-SNAPSHOT"
+ksp = "2.3.9"
[libraries]
minecraft = { module = "com.mojang:minecraft", version.ref = "minecraft" }
-yarn = { module = "net.fabricmc:yarn", version.ref = "yarn" }
fabric-loader = { module = "net.fabricmc:fabric-loader", version.ref = "loader" }
fabric-api = { module = "net.fabricmc.fabric-api:fabric-api", version.ref = "fabric-api" }
fabric-kotlin = { module = "net.fabricmc:fabric-language-kotlin", version.ref = "fabric-kotlin" }
-mapping-io = { module = "net.fabricmc:mapping-io", version.ref = "mapping-io" }
rhino = { module = "com.github.ChatTriggers:rhino", version.ref = "rhino" }
-jackson-core = { module = "com.fasterxml.jackson.core:jackson-core", version.ref = "jackson-core" }
+jackson-core = { module = "tools.jackson.core:jackson-core", version.ref = "jackson-core" }
textarea = { module = "com.fifesoft:rsyntaxtextarea", version.ref = "textarea" }
serialization = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization" }
-koffee = { module = "com.github.ChatTriggers:koffee", version.ref = "koffee" }
-
-universalcraft = { module = "gg.essential:universalcraft-1.21-fabric", version.ref = "universalcraft" }
-elementa = { module = "gg.essential:elementa-1.18.1-fabric", version.ref = "elementa" }
-vigilance = { module = "gg.essential:vigilance-1.18.1-fabric", version.ref = "vigilance" }
modmenu = { module = "com.terraformersmc:modmenu", version.ref = "modmenu" }
-devauth = { module = "me.djtheredstoner:DevAuth-fabric", version.ref = "devauth" }
-versioning = { module = "org.jetbrains.dokka:versioning-plugin", version.ref = "dokka" }
ksp = { module = "com.google.devtools.ksp:symbol-processing-api", version.ref = "ksp" }
gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
[bundles]
fabric = ["fabric-loader", "fabric-api", "fabric-kotlin"]
-included = ["mapping-io", "rhino", "jackson-core", "textarea", "serialization", "koffee"]
-essential = ["universalcraft", "elementa", "vigilance"]
+included = ["rhino", "jackson-core", "textarea", "serialization"]
[plugins]
kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
-loom = { id = "fabric-loom", version.ref = "loom" }
-dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" }
-validator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "validator" }
+loom = { id = "net.fabricmc.fabric-loom", version.ref = "loom" }
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index a4413138..1a704683 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
diff --git a/src/main/java/com/chattriggers/ctjs/internal/BoundKeyUpdater.java b/src/main/java/com/chattriggers/ctjs/internal/BoundKeyUpdater.java
deleted file mode 100644
index 7d4cb9e5..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/BoundKeyUpdater.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.chattriggers.ctjs.internal;
-
-import net.minecraft.client.option.KeyBinding;
-
-public interface BoundKeyUpdater {
- void ctjs_updateBoundKey(KeyBinding keyBinding);
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/CTClientCommandSource.java b/src/main/java/com/chattriggers/ctjs/internal/CTClientCommandSource.java
deleted file mode 100644
index d320665f..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/CTClientCommandSource.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.chattriggers.ctjs.internal;
-
-import net.minecraft.command.CommandSource;
-
-import java.util.HashMap;
-
-public interface CTClientCommandSource extends CommandSource {
- void setContextValue(String key, Object value);
-
- HashMap getContextValues();
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/NameTagOverridable.java b/src/main/java/com/chattriggers/ctjs/internal/NameTagOverridable.java
deleted file mode 100644
index 351705dc..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/NameTagOverridable.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.chattriggers.ctjs.internal;
-
-import com.chattriggers.ctjs.api.message.TextComponent;
-import org.jetbrains.annotations.Nullable;
-
-public interface NameTagOverridable {
- void ctjs_setOverriddenNametagName(@Nullable TextComponent component);
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/Skippable.java b/src/main/java/com/chattriggers/ctjs/internal/Skippable.java
deleted file mode 100644
index 6ca3aaae..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/Skippable.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.chattriggers.ctjs.internal;
-
-
-public interface Skippable {
- void ctjs_setShouldSkip(boolean shouldSkip);
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/TooltipOverridable.java b/src/main/java/com/chattriggers/ctjs/internal/TooltipOverridable.java
deleted file mode 100644
index e7868001..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/TooltipOverridable.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.chattriggers.ctjs.internal;
-
-import net.minecraft.text.Text;
-
-import java.util.List;
-
-public interface TooltipOverridable {
- void ctjs_setTooltip(List tooltip);
- void ctjs_setShouldOverrideTooltip(boolean shouldOverrideTooltip);
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/AbstractSoundInstanceAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/AbstractSoundInstanceAccessor.java
deleted file mode 100644
index ad2edb54..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/AbstractSoundInstanceAccessor.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import net.minecraft.client.sound.AbstractSoundInstance;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-@Mixin(AbstractSoundInstance.class)
-public interface AbstractSoundInstanceAccessor {
- @Accessor
- void setRepeat(boolean repeat);
-
- @Accessor
- void setRepeatDelay(int delay);
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/BlockEntityRenderDispatcherMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/BlockEntityRenderDispatcherMixin.java
deleted file mode 100644
index 2d36aa12..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/BlockEntityRenderDispatcherMixin.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import com.chattriggers.ctjs.internal.engine.CTEvents;
-import net.minecraft.block.entity.BlockEntity;
-import net.minecraft.client.render.VertexConsumerProvider;
-import net.minecraft.client.render.block.entity.BlockEntityRenderDispatcher;
-import net.minecraft.client.util.math.MatrixStack;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-import java.util.Objects;
-
-@Mixin(BlockEntityRenderDispatcher.class)
-public class BlockEntityRenderDispatcherMixin {
- @Inject(
- method = "render(Lnet/minecraft/block/entity/BlockEntity;FLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;)V",
- at = @At(
- value = "INVOKE",
- target = "Lnet/minecraft/client/render/block/entity/BlockEntityRenderDispatcher;runReported(Lnet/minecraft/block/entity/BlockEntity;Ljava/lang/Runnable;)V"
- ),
- cancellable = true
- )
- private void injectRender(BlockEntity blockEntity, float tickDelta, MatrixStack matrices,
- VertexConsumerProvider vertexConsumers, CallbackInfo ci) {
- if (blockEntity.hasWorld() && Objects.requireNonNull(blockEntity.getWorld()).isClient) {
- CTEvents.RENDER_BLOCK_ENTITY.invoker().render(matrices, blockEntity, tickDelta, ci);
- }
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/BookScreenAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/BookScreenAccessor.java
deleted file mode 100644
index 41ad7b26..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/BookScreenAccessor.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import net.minecraft.client.gui.screen.ingame.BookScreen;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-import org.spongepowered.asm.mixin.gen.Invoker;
-
-@Mixin(BookScreen.class)
-public interface BookScreenAccessor {
- @Accessor
- int getPageIndex();
-
- @Invoker
- void invokeUpdatePageButtons();
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/BossBarHudAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/BossBarHudAccessor.java
deleted file mode 100644
index 8dc8296c..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/BossBarHudAccessor.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import net.minecraft.client.gui.hud.BossBarHud;
-import net.minecraft.client.gui.hud.ClientBossBar;
-import org.spongepowered.asm.mixin.Final;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-import java.util.Map;
-import java.util.UUID;
-
-@Mixin(BossBarHud.class)
-public interface BossBarHudAccessor {
- @Accessor
- @Final
- Map getBossBars();
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/ChatHudAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/ChatHudAccessor.java
deleted file mode 100644
index cfbe25aa..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/ChatHudAccessor.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import net.minecraft.client.gui.hud.ChatHud;
-import net.minecraft.client.gui.hud.ChatHudLine;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-import org.spongepowered.asm.mixin.gen.Invoker;
-
-import java.util.List;
-
-@Mixin(ChatHud.class)
-public interface ChatHudAccessor {
- @Accessor
- List getMessages();
-
- @Invoker
- void invokeRefresh();
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/ChatHudMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/ChatHudMixin.java
deleted file mode 100644
index 5bb87765..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/ChatHudMixin.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import com.chattriggers.ctjs.api.message.ChatLib;
-import net.minecraft.client.gui.hud.ChatHud;
-import net.minecraft.client.gui.hud.ChatHudLine;
-import net.minecraft.client.gui.hud.MessageIndicator;
-import net.minecraft.network.message.MessageSignatureData;
-import net.minecraft.text.Text;
-import org.spongepowered.asm.mixin.Final;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Shadow;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-import java.util.List;
-
-@Mixin(ChatHud.class)
-public class ChatHudMixin {
- @Final
- @Shadow
- private List messages;
-
- @Inject(method = "clear", at = @At("TAIL"))
- private void injectClear(boolean clearHistory, CallbackInfo ci) {
- ChatLib.INSTANCE.onChatHudClearChat$ctjs();
- }
-
- // TODO: is it this or addVisibleMessage
- @Inject(
- method = "addMessage(Lnet/minecraft/client/gui/hud/ChatHudLine;)V",
- at = @At(
- value = "INVOKE",
- target = "Ljava/util/List;remove(I)Ljava/lang/Object;",
- shift = At.Shift.BEFORE
- )
- )
- private void injectMessageRemovedForChatLimit(ChatHudLine message, CallbackInfo ci) {
- ChatLib.INSTANCE.onChatHudLineRemoved$ctjs(messages.getLast());
- }
-
- // Note: ChatHudLine objects are also removed in queueForRemoval, however those are signature based.
- // The Message objects that CT sends will always create ChatHudLine objects with null signatures,
- // so objects removed in that method will never be in the ChatLib.chatLineIds map
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/ChatScreenAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/ChatScreenAccessor.java
deleted file mode 100644
index 18ce2326..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/ChatScreenAccessor.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import net.minecraft.client.gui.screen.ChatScreen;
-import net.minecraft.client.gui.widget.TextFieldWidget;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-@Mixin(ChatScreen.class)
-public interface ChatScreenAccessor {
- @Accessor
- TextFieldWidget getChatField();
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/ChunkAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/ChunkAccessor.java
deleted file mode 100644
index ebfb3b8e..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/ChunkAccessor.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import net.minecraft.block.entity.BlockEntity;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.chunk.Chunk;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-import java.util.Map;
-
-@Mixin(Chunk.class)
-public interface ChunkAccessor {
- @Accessor
- Map getBlockEntities();
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/ClickableWidgetAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/ClickableWidgetAccessor.java
deleted file mode 100644
index 53e9f29d..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/ClickableWidgetAccessor.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import net.minecraft.client.gui.widget.ClickableWidget;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-@Mixin(ClickableWidget.class)
-public interface ClickableWidgetAccessor {
- @Accessor
- void setHeight(int height);
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientChunkManagerAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientChunkManagerAccessor.java
deleted file mode 100644
index 10357ae9..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientChunkManagerAccessor.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import net.minecraft.client.world.ClientChunkManager;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-@Mixin(ClientChunkManager.class)
-public interface ClientChunkManagerAccessor {
- @Accessor
- ClientChunkManager.ClientChunkMap getChunks();
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientChunkMapAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientChunkMapAccessor.java
deleted file mode 100644
index 9c814c84..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientChunkMapAccessor.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import net.minecraft.client.world.ClientChunkManager.ClientChunkMap;
-import net.minecraft.world.chunk.WorldChunk;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-import java.util.concurrent.atomic.AtomicReferenceArray;
-
-@Mixin(ClientChunkMap.class)
-public interface ClientChunkMapAccessor {
- @Accessor
- AtomicReferenceArray getChunks();
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientConnectionMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientConnectionMixin.java
deleted file mode 100644
index 1f63a11f..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientConnectionMixin.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import com.chattriggers.ctjs.internal.engine.CTEvents;
-import com.chattriggers.ctjs.api.triggers.TriggerType;
-import io.netty.channel.ChannelHandlerContext;
-import net.minecraft.network.ClientConnection;
-import net.minecraft.network.NetworkSide;
-import net.minecraft.network.PacketCallbacks;
-import net.minecraft.network.packet.Packet;
-import org.jetbrains.annotations.Nullable;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Shadow;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-@Mixin(ClientConnection.class)
-public abstract class ClientConnectionMixin {
- @Shadow
- public abstract NetworkSide getSide();
-
- @Inject(
- method = "channelRead0(Lio/netty/channel/ChannelHandlerContext;Lnet/minecraft/network/packet/Packet;)V",
- at = @At(
- value = "INVOKE",
- target = "Lnet/minecraft/network/ClientConnection;handlePacket(Lnet/minecraft/network/packet/Packet;Lnet/minecraft/network/listener/PacketListener;)V",
- shift = At.Shift.BEFORE
- ),
- cancellable = true
- )
- private void injectHandlePacket(ChannelHandlerContext channelHandlerContext, Packet> packet, CallbackInfo ci) {
- if (getSide() == NetworkSide.CLIENTBOUND)
- CTEvents.PACKET_RECEIVED.invoker().receive(packet, ci);
- }
-
- @Inject(
- method = "send(Lnet/minecraft/network/packet/Packet;Lnet/minecraft/network/PacketCallbacks;)V",
- at = @At("HEAD"),
- cancellable = true
- )
- private void injectSendPacket(Packet> packet, @Nullable PacketCallbacks callbacks, CallbackInfo ci) {
- TriggerType.PACKET_SENT.triggerAll(packet, ci);
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientPacketListenerMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientPacketListenerMixin.java
new file mode 100644
index 00000000..51bb4abe
--- /dev/null
+++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientPacketListenerMixin.java
@@ -0,0 +1,24 @@
+package com.chattriggers.ctjs.internal.mixins;
+
+import com.chattriggers.ctjs.api.CustomCommand;
+import com.mojang.brigadier.CommandDispatcher;
+import net.minecraft.client.multiplayer.ClientPacketListener;
+import net.minecraft.client.multiplayer.ClientSuggestionProvider;
+import net.minecraft.network.protocol.game.ClientboundCommandsPacket;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Shadow;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+
+@Mixin(ClientPacketListener.class)
+public class ClientPacketListenerMixin {
+ @Shadow
+ private CommandDispatcher commands;
+
+ @SuppressWarnings({"unchecked", "rawtypes"})
+ @Inject(method = "handleCommands", at = @At("RETURN"))
+ private void registerCustomCommands(ClientboundCommandsPacket packet, CallbackInfo ci) {
+ CustomCommand.INSTANCE.registerNetwork$ctjs((CommandDispatcher) commands);
+ }
+}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientPlayNetworkHandlerAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientPlayNetworkHandlerAccessor.java
deleted file mode 100644
index 90e010ff..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientPlayNetworkHandlerAccessor.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import net.minecraft.client.network.ClientPlayNetworkHandler;
-import net.minecraft.client.network.PlayerListEntry;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.UUID;
-
-@Mixin(ClientPlayNetworkHandler.class)
-public interface ClientPlayNetworkHandlerAccessor {
- @Accessor
- Map getPlayerListEntries();
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientPlayerEntityMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientPlayerEntityMixin.java
deleted file mode 100644
index 3bb16cd3..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientPlayerEntityMixin.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import com.chattriggers.ctjs.api.client.Player;
-import com.chattriggers.ctjs.api.inventory.Item;
-import com.chattriggers.ctjs.api.triggers.TriggerType;
-import net.minecraft.client.network.ClientPlayerEntity;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
-
-@Mixin(ClientPlayerEntity.class)
-public class ClientPlayerEntityMixin {
- @Inject(method = "dropSelectedItem", at = @At("HEAD"), cancellable = true)
- private void injectDropSelectedItem(boolean entireStack, CallbackInfoReturnable cir) {
- // dropping item while not in gui
- Item stack = Player.getHeldItem();
- if (stack != null && !stack.getMcValue().isEmpty()) {
- TriggerType.DROP_ITEM.triggerAll(stack, entireStack, cir);
- }
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientPlayerInteractionManagerMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientPlayerInteractionManagerMixin.java
deleted file mode 100644
index 1bb36371..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientPlayerInteractionManagerMixin.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import com.chattriggers.ctjs.internal.engine.CTEvents;
-import net.minecraft.client.network.ClientPlayerInteractionManager;
-import net.minecraft.util.math.BlockPos;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
-
-@Mixin(ClientPlayerInteractionManager.class)
-public class ClientPlayerInteractionManagerMixin {
- @Inject(
- method = "breakBlock",
- at = @At(
- value = "INVOKE",
- target = "Lnet/minecraft/block/Block;onBroken(Lnet/minecraft/world/WorldAccess;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/BlockState;)V"
- )
- )
- private void injectBreakBlock(BlockPos pos, CallbackInfoReturnable cir) {
- CTEvents.BREAK_BLOCK.invoker().breakBlock(pos);
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientWorldAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientWorldAccessor.java
deleted file mode 100644
index bbd7f4ab..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/ClientWorldAccessor.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import net.minecraft.client.world.ClientChunkManager;
-import net.minecraft.client.world.ClientWorld;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-@Mixin(ClientWorld.class)
-public interface ClientWorldAccessor {
- @Accessor
- ClientChunkManager getChunkManager();
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/commands/CommandNodeAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/CommandNodeAccessor.java
similarity index 66%
rename from src/main/java/com/chattriggers/ctjs/internal/mixins/commands/CommandNodeAccessor.java
rename to src/main/java/com/chattriggers/ctjs/internal/mixins/CommandNodeAccessor.java
index b42ee755..2ea81a02 100644
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/commands/CommandNodeAccessor.java
+++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/CommandNodeAccessor.java
@@ -1,4 +1,4 @@
-package com.chattriggers.ctjs.internal.mixins.commands;
+package com.chattriggers.ctjs.internal.mixins;
import com.mojang.brigadier.tree.CommandNode;
import com.mojang.brigadier.tree.LiteralCommandNode;
@@ -7,11 +7,11 @@
import java.util.Map;
-@Mixin(value = CommandNode.class, remap = false)
+@Mixin(CommandNode.class)
public interface CommandNodeAccessor {
@Accessor("children")
- Map> getChildNodes();
+ Map> getChildren();
- @Accessor
+ @Accessor("literals")
Map> getLiterals();
}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/CreativeInventoryScreenMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/CreativeInventoryScreenMixin.java
deleted file mode 100644
index 1ad949d6..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/CreativeInventoryScreenMixin.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import com.chattriggers.ctjs.api.triggers.CancellableEvent;
-import com.chattriggers.ctjs.api.inventory.Item;
-import com.chattriggers.ctjs.api.triggers.TriggerType;
-import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
-import com.llamalad7.mixinextras.sugar.Local;
-import net.minecraft.client.gui.screen.ingame.AbstractInventoryScreen;
-import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen;
-import net.minecraft.entity.player.PlayerInventory;
-import net.minecraft.screen.slot.Slot;
-import net.minecraft.screen.slot.SlotActionType;
-import net.minecraft.text.Text;
-import org.jetbrains.annotations.NotNull;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.Slice;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-@Mixin(CreativeInventoryScreen.class)
-public abstract class CreativeInventoryScreenMixin extends AbstractInventoryScreen {
- private CreativeInventoryScreenMixin(CreativeInventoryScreen.CreativeScreenHandler screenHandler, PlayerInventory playerInventory, Text text) {
- super(screenHandler, playerInventory, text);
- }
-
- @ModifyExpressionValue(
- method = "onMouseClick",
- at = @At(value = "FIELD", target = "Lnet/minecraft/client/gui/screen/ingame/CreativeInventoryScreen;lastClickOutsideBounds:Z")
- )
- private boolean injectOnMouseClick(boolean original, @Local(ordinal = 1) int button) {
- // dropping by clicking outside creative tab
- CancellableEvent event = new CancellableEvent();
- if (original) {
- TriggerType.DROP_ITEM.triggerAll(Item.fromMC(handler.getCursorStack()), button == 0, event);
- }
-
- return original && !event.isCanceled();
- }
-
- @ModifyExpressionValue(
- method = "onMouseClick",
- slice = @Slice(
- from = @At(
- value = "FIELD",
- target = "Lnet/minecraft/client/gui/screen/ingame/CreativeInventoryScreen;deleteItemSlot:Lnet/minecraft/screen/slot/Slot;",
- ordinal = 0
- )
- ),
- at = @At(value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isEmpty()Z", ordinal = 0)
- )
- private boolean injectOnMouseClick1(boolean original, @Local(ordinal = 1) int button) {
- // dropping by clicking outside creative inventory
- CancellableEvent event = new CancellableEvent();
- if (!original) {
- TriggerType.DROP_ITEM.triggerAll(Item.fromMC(handler.getCursorStack()), button == 0, event);
- }
-
- // !(original || eventCanceled) => !original && !canceled
- return original || event.isCanceled();
- }
-
- @Inject(method = "onMouseClick", at = @At(value = "INVOKE", target = "Lnet/minecraft/screen/slot/Slot;takeStack(I)Lnet/minecraft/item/ItemStack;"), cancellable = true)
- private void injectOnMouseClick2(@NotNull Slot slot, int slotId, int button, SlotActionType actionType, CallbackInfo ci) {
- // dropping item from slot in creative inventory
- TriggerType.DROP_ITEM.triggerAll(Item.fromMC(slot.getStack()), button == 0, ci);
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/EntityRenderDispatcherAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/EntityRenderDispatcherAccessor.java
deleted file mode 100644
index b08362b7..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/EntityRenderDispatcherAccessor.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import net.minecraft.client.render.VertexConsumerProvider;
-import net.minecraft.client.render.entity.EntityRenderDispatcher;
-import net.minecraft.client.util.math.MatrixStack;
-import net.minecraft.entity.Entity;
-import org.joml.Quaternionf;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Invoker;
-
-@Mixin(EntityRenderDispatcher.class)
-public interface EntityRenderDispatcherAccessor {
- @Invoker
- void invokeRenderFire(MatrixStack matrices, VertexConsumerProvider vertexConsumers, Entity entity, Quaternionf rotation);
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/EntityRenderDispatcherMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/EntityRenderDispatcherMixin.java
deleted file mode 100644
index 5a9be4e5..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/EntityRenderDispatcherMixin.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import com.chattriggers.ctjs.internal.engine.CTEvents;
-import com.chattriggers.ctjs.api.render.Renderer;
-import com.llamalad7.mixinextras.sugar.Local;
-import net.minecraft.client.render.VertexConsumerProvider;
-import net.minecraft.client.render.entity.EntityRenderDispatcher;
-import net.minecraft.client.render.entity.EntityRendererFactory;
-import net.minecraft.client.util.math.MatrixStack;
-import net.minecraft.entity.Entity;
-import net.minecraft.resource.ResourceManager;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-@Mixin(EntityRenderDispatcher.class)
-public abstract class EntityRenderDispatcherMixin {
- @Inject(method = "reload", at = @At("TAIL"))
- private void injectReload(ResourceManager manager, CallbackInfo ci, @Local EntityRendererFactory.Context context) {
- Renderer.initializePlayerRenderers$ctjs(context);
- }
-
- @Inject(method = "render", at = @At("HEAD"), cancellable = true)
- private void injectRender(Entity entity, double x, double y, double z, float yaw, float tickDelta,
- MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light,
- CallbackInfo ci) {
- CTEvents.RENDER_ENTITY.invoker().render(matrices, entity, tickDelta, ci);
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/GameOptionsAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/GameOptionsAccessor.java
deleted file mode 100644
index b0a0d301..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/GameOptionsAccessor.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import net.minecraft.client.option.GameOptions;
-import net.minecraft.client.option.KeyBinding;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-@Mixin(GameOptions.class)
-public interface GameOptionsAccessor {
- @Accessor
- void setAllKeys(KeyBinding[] keys);
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/GameOptionsMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/GameOptionsMixin.java
deleted file mode 100644
index 3390341a..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/GameOptionsMixin.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import com.chattriggers.ctjs.internal.BoundKeyUpdater;
-import net.minecraft.client.option.GameOptions;
-import net.minecraft.client.option.KeyBinding;
-import net.minecraft.client.util.InputUtil;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Unique;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-@Mixin(GameOptions.class)
-public class GameOptionsMixin implements BoundKeyUpdater {
- @Unique
- private GameOptions.Visitor visitor;
-
- @Inject(method = "accept", at = @At("HEAD"))
- private void captureVisitor(GameOptions.Visitor visitor, CallbackInfo ci) {
- this.visitor = visitor;
- }
-
- @Override
- public void ctjs_updateBoundKey(KeyBinding keyBinding) {
- String string = keyBinding.getBoundKeyTranslationKey();
- String string2 = visitor.visitString("key_" + keyBinding.getTranslationKey(), string);
- if (!string.equals(string2)) {
- keyBinding.setBoundKey(InputUtil.fromTranslationKey(string2));
- }
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/HandledScreenAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/HandledScreenAccessor.java
deleted file mode 100644
index 5516155a..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/HandledScreenAccessor.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import net.minecraft.client.gui.screen.ingame.HandledScreen;
-import net.minecraft.screen.slot.Slot;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Invoker;
-
-@Mixin(HandledScreen.class)
-public interface HandledScreenAccessor {
- @Invoker
- Slot invokeGetSlotAt(double x, double y);
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/HandledScreenMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/HandledScreenMixin.java
deleted file mode 100644
index 2190d730..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/HandledScreenMixin.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import com.chattriggers.ctjs.api.inventory.Item;
-import com.chattriggers.ctjs.api.message.TextComponent;
-import com.chattriggers.ctjs.api.triggers.TriggerType;
-import net.minecraft.client.gui.DrawContext;
-import net.minecraft.client.gui.screen.Screen;
-import net.minecraft.client.gui.screen.ingame.HandledScreen;
-import net.minecraft.item.ItemStack;
-import net.minecraft.screen.ScreenHandler;
-import net.minecraft.screen.slot.Slot;
-import net.minecraft.screen.slot.SlotActionType;
-import net.minecraft.text.Text;
-import org.spongepowered.asm.mixin.Final;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Shadow;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-import java.util.Objects;
-
-@Mixin(HandledScreen.class)
-public class HandledScreenMixin extends Screen {
- @Shadow
- protected Slot focusedSlot;
-
- @Shadow
- @Final
- protected ScreenHandler handler;
-
- private HandledScreenMixin(Text title) {
- super(title);
- }
-
- @Inject(
- method = "drawMouseoverTooltip",
- at = @At(
- value = "INVOKE",
- target = "Lnet/minecraft/client/gui/DrawContext;drawTooltip(Lnet/minecraft/client/font/TextRenderer;Ljava/util/List;Ljava/util/Optional;II)V"
- ),
- cancellable = true
- )
- private void injectDrawMouseoverTooltip(DrawContext context, int x, int y, CallbackInfo ci) {
- ItemStack stack = focusedSlot.getStack();
- TriggerType.ITEM_TOOLTIP.triggerAll(
- getTooltipFromItem(Objects.requireNonNull(client), stack)
- .stream()
- .map(TextComponent::new)
- .toList(),
- Item.fromMC(stack),
- ci
- );
- }
-
- @Inject(method = "onMouseClick(Lnet/minecraft/screen/slot/Slot;IILnet/minecraft/screen/slot/SlotActionType;)V", at = @At("HEAD"), cancellable = true)
- private void injectOnMouseClick(Slot slot, int slotId, int button, SlotActionType actionType, CallbackInfo ci) {
- if (
- (slotId != -999 && actionType == SlotActionType.THROW) || // dropping item from slot
- (slotId == -999 && actionType == SlotActionType.PICKUP) // dropping by clicking outside inventory
- ) {
- TriggerType.DROP_ITEM.triggerAll(Item.fromMC(handler.getCursorStack()), button == 0, ci);
- }
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/InGameHudMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/InGameHudMixin.java
deleted file mode 100644
index 98e39aa4..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/InGameHudMixin.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import com.chattriggers.ctjs.api.world.Scoreboard;
-import com.chattriggers.ctjs.internal.engine.CTEvents;
-import net.minecraft.client.gui.DrawContext;
-import net.minecraft.client.gui.hud.InGameHud;
-import net.minecraft.client.render.RenderTickCounter;
-import net.minecraft.scoreboard.ScoreboardObjective;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-
-@Mixin(InGameHud.class)
-public class InGameHudMixin {
- @Inject(method = "renderScoreboardSidebar(Lnet/minecraft/client/gui/DrawContext;Lnet/minecraft/scoreboard/ScoreboardObjective;)V", at = @At("HEAD"), cancellable = true)
- private void injectRenderScoreboard(DrawContext matrices, ScoreboardObjective objective, CallbackInfo ci) {
- if (!Scoreboard.getShouldRender())
- ci.cancel();
- }
-
- @Inject(
- method = "render",
- at = @At(
- value = "INVOKE",
- target = "Lnet/minecraft/client/gui/LayeredDrawer;render(Lnet/minecraft/client/gui/DrawContext;Lnet/minecraft/client/render/RenderTickCounter;)V",
- shift = At.Shift.AFTER
- )
- )
- private void injectRenderOverlay(DrawContext context, RenderTickCounter tickCounter, CallbackInfo ci) {
- CTEvents.RENDER_OVERLAY.invoker().render(context.getMatrices(), tickCounter.getTickDelta(false));
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/ItemStackMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/ItemStackMixin.java
deleted file mode 100644
index 24783d73..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/ItemStackMixin.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import com.chattriggers.ctjs.internal.Skippable;
-import com.chattriggers.ctjs.internal.TooltipOverridable;
-import com.llamalad7.mixinextras.sugar.Local;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-import net.minecraft.item.tooltip.TooltipType;
-import net.minecraft.text.Text;
-import org.jetbrains.annotations.Nullable;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Unique;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-@Mixin(ItemStack.class)
-public class ItemStackMixin implements TooltipOverridable, Skippable {
- @Unique
- private boolean shouldOverrideTooltip = false;
- @Unique
- private List overriddenTooltip = new ArrayList<>();
- @Unique
- private boolean shouldSkipFabricEvent = false;
-
- @Inject(method = "getTooltip", at = @At("HEAD"), cancellable = true)
- private void injectGetTooltip(Item.TooltipContext context, @Nullable PlayerEntity player, TooltipType type, CallbackInfoReturnable> cir) {
- if (shouldOverrideTooltip)
- cir.setReturnValue(Objects.requireNonNull(overriddenTooltip));
- }
-
- @Inject(method = "getTooltip", at = @At(value = "RETURN", ordinal = 1, shift = At.Shift.BEFORE), cancellable = true)
- private void cancelFabricEvent(Item.TooltipContext context, @Nullable PlayerEntity player, TooltipType type, CallbackInfoReturnable> cir, @Local List list) {
- if (shouldSkipFabricEvent)
- cir.setReturnValue(list);
- }
-
- @Override
- public void ctjs_setTooltip(List tooltip) {
- overriddenTooltip = tooltip;
- }
-
- @Override
- public void ctjs_setShouldOverrideTooltip(boolean shouldOverrideTooltip) {
- this.shouldOverrideTooltip = shouldOverrideTooltip;
- }
-
- @Override
- public void ctjs_setShouldSkip(boolean shouldSkip) {
- shouldSkipFabricEvent = shouldSkip;
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/KeyBindingAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/KeyBindingAccessor.java
deleted file mode 100644
index 49cc504d..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/KeyBindingAccessor.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import net.minecraft.client.option.KeyBinding;
-import net.minecraft.client.util.InputUtil;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-import java.util.Map;
-import java.util.Set;
-
-@Mixin(KeyBinding.class)
-public interface KeyBindingAccessor {
- @Accessor("CATEGORY_ORDER_MAP")
- static Map getCategoryMap() { throw new IllegalStateException(); }
-
- @Accessor("KEY_CATEGORIES")
- static Set getKeyCategories() {
- throw new IllegalStateException();
- }
-
- @Accessor
- InputUtil.Key getBoundKey();
-
- @Accessor
- int getTimesPressed();
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/KeyBindsListMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/KeyBindsListMixin.java
new file mode 100644
index 00000000..09739b3f
--- /dev/null
+++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/KeyBindsListMixin.java
@@ -0,0 +1,34 @@
+package com.chattriggers.ctjs.internal.mixins;
+
+import com.chattriggers.ctjs.api.CustomKeyMapping;
+import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
+import net.minecraft.client.gui.screens.options.controls.KeyBindsList;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+
+import java.lang.reflect.Array;
+
+@Mixin(KeyBindsList.class)
+public class KeyBindsListMixin {
+ @ModifyExpressionValue(method = "", at = @At(
+ value = "INVOKE",
+ target = "Lorg/apache/commons/lang3/ArrayUtils;clone([Ljava/lang/Object;)[Ljava/lang/Object;")
+ )
+ public Object[] addCustomKeyMappings(Object[] original) {
+ var customKeyMappings = CustomKeyMapping.getKeyMappings();
+ if (customKeyMappings.isEmpty()) return original;
+
+ Class> type = original.getClass().getComponentType();
+ Object[] expanded = (Object[]) Array.newInstance(type, original.length + customKeyMappings.size());
+
+ // keep the original key mappings
+ System.arraycopy(original, 0, expanded, 0, original.length);
+
+ // add the custom ones
+ for (int i = 0; i < customKeyMappings.size(); i++) {
+ expanded[i + original.length] = customKeyMappings.get(i);
+ }
+
+ return expanded;
+ }
+}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/LivingEntityMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/LivingEntityMixin.java
deleted file mode 100644
index 33a3a0f3..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/LivingEntityMixin.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import com.chattriggers.ctjs.api.triggers.TriggerType;
-import net.minecraft.entity.Entity;
-import net.minecraft.entity.EntityType;
-import net.minecraft.entity.LivingEntity;
-import net.minecraft.entity.damage.DamageSource;
-import net.minecraft.world.World;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Shadow;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-@Mixin(LivingEntity.class)
-public abstract class LivingEntityMixin extends Entity {
- public LivingEntityMixin(EntityType> type, World world) {
- super(type, world);
- }
-
- @Inject(method = "onDeath", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/LivingEntity;setPose(Lnet/minecraft/entity/EntityPose;)V"))
- private void chattriggers$entityDeath(DamageSource damageSource, CallbackInfo ci) {
- if (getWorld().isClient) {
- TriggerType.ENTITY_DEATH.triggerAll(this);
- }
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/MinecraftClientAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/MinecraftClientAccessor.java
deleted file mode 100644
index cdd03cc4..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/MinecraftClientAccessor.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService;
-import net.minecraft.client.MinecraftClient;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-@Mixin(MinecraftClient.class)
-public interface MinecraftClientAccessor {
- @Accessor
- YggdrasilAuthenticationService getAuthenticationService();
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/MinecraftClientMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/MinecraftClientMixin.java
index f72600b2..0dca34c4 100644
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/MinecraftClientMixin.java
+++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/MinecraftClientMixin.java
@@ -1,78 +1,16 @@
package com.chattriggers.ctjs.internal.mixins;
-import com.chattriggers.ctjs.api.world.Scoreboard;
-import com.chattriggers.ctjs.api.world.TabList;
-import com.chattriggers.ctjs.internal.engine.CTEvents;
-import com.chattriggers.ctjs.api.triggers.TriggerType;
import com.chattriggers.ctjs.internal.engine.module.ModuleManager;
-import net.minecraft.client.MinecraftClient;
-import net.minecraft.client.gui.screen.DownloadingTerrainScreen;
-import net.minecraft.client.gui.screen.Screen;
-import net.minecraft.client.network.ServerInfo;
-import net.minecraft.client.world.ClientWorld;
-import org.jetbrains.annotations.Nullable;
+import net.minecraft.client.Minecraft;
import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-@Mixin(MinecraftClient.class)
-public abstract class MinecraftClientMixin {
- @Shadow @Nullable public ClientWorld world;
-
- @Shadow public abstract ServerInfo getCurrentServerEntry();
- @Shadow public abstract boolean isIntegratedServerRunning();
-
- @Inject(method = "joinWorld", at = @At("HEAD"))
- private void injectWorldUnload(ClientWorld world, DownloadingTerrainScreen.WorldEntryReason worldEntryReason, CallbackInfo ci) {
- if (this.world == null && world != null) {
- TriggerType.SERVER_CONNECT.triggerAll();
- } else if (this.world != null && world == null) {
- TriggerType.SERVER_DISCONNECT.triggerAll();
- }
-
- if (this.world != null) {
- TriggerType.WORLD_UNLOAD.triggerAll();
- Scoreboard.INSTANCE.clearCustom$ctjs();
- TabList.INSTANCE.clearCustom$ctjs();
- }
- }
-
- @Inject(method = "joinWorld", at = @At("TAIL"))
- private void injectWorldLoad(ClientWorld world, DownloadingTerrainScreen.WorldEntryReason worldEntryReason, CallbackInfo ci) {
- if (world != null)
- TriggerType.WORLD_LOAD.triggerAll();
- }
-
- @Inject(method = "disconnect(Lnet/minecraft/client/gui/screen/Screen;Z)V", at = @At("HEAD"))
- private void injectDisconnect(Screen disconnectionScreen, boolean transferring, CallbackInfo ci) {
- // disconnect() is also called when connecting, so we check that there is
- // an existing server
- if (this.isIntegratedServerRunning() || this.getCurrentServerEntry() != null) {
- TriggerType.WORLD_UNLOAD.triggerAll();
- TriggerType.SERVER_DISCONNECT.triggerAll();
- Scoreboard.INSTANCE.clearCustom$ctjs();
- TabList.INSTANCE.clearCustom$ctjs();
- }
- }
-
- @Inject(method = "setScreen", at = @At("HEAD"))
- private void injectScreenOpened(Screen screen, CallbackInfo ci) {
- if (screen != null)
- TriggerType.GUI_OPENED.triggerAll(screen, ci);
- }
-
+@Mixin(Minecraft.class)
+public class MinecraftClientMixin {
@Inject(method = "run", at = @At("HEAD"))
private void injectRun(CallbackInfo ci) {
- new Thread(() -> {
- ModuleManager.INSTANCE.entryPass();
- TriggerType.GAME_LOAD.triggerAll();
- }).start();
- }
-
- @Inject(method = "render", at = @At("HEAD"))
- private void injectRender(boolean tick, CallbackInfo ci) {
- CTEvents.RENDER_GAME.invoker().run();
+ new Thread(ModuleManager.INSTANCE::entryPass).start();
}
}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/MouseMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/MouseMixin.java
deleted file mode 100644
index 7da53990..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/MouseMixin.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import com.chattriggers.ctjs.internal.engine.CTEvents;
-import com.chattriggers.ctjs.internal.listeners.MouseListener;
-import net.minecraft.client.Mouse;
-import net.minecraft.client.gui.screen.Screen;
-import org.objectweb.asm.Opcodes;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Shadow;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-@Mixin(Mouse.class)
-public class MouseMixin {
- @Shadow
- private int activeButton;
-
- @Inject(
- method = "onMouseButton",
- at = @At(
- value = "FIELD",
- target = "Lnet/minecraft/client/MinecraftClient;currentScreen:Lnet/minecraft/client/gui/screen/Screen;",
- opcode = Opcodes.GETFIELD
- )
- )
- private void injectOnMouseButton(long window, int button, int action, int mods, CallbackInfo ci) {
- MouseListener.onRawMouseInput(button, action);
- }
-
- @Inject(
- method = "onMouseScroll",
- at = @At(
- value = "FIELD",
- target = "Lnet/minecraft/client/MinecraftClient;options:Lnet/minecraft/client/option/GameOptions;",
- opcode = Opcodes.GETFIELD
- )
- )
- private void injectOnMouseScroll(long window, double horizontal, double vertical, CallbackInfo ci) {
- MouseListener.onRawMouseScroll(vertical);
- }
-
- @Inject(
- method = "method_55795(Lnet/minecraft/client/gui/screen/Screen;DDDD)V",
- at = @At(
- value = "INVOKE",
- target = "Lnet/minecraft/client/gui/screen/Screen;mouseDragged(DDIDD)Z"
- ),
- cancellable = true
- )
- private void injectOnGuiMouseDrag(Screen screen, double d, double e, double f, double g, CallbackInfo ci) {
- if (screen != null) {
- CTEvents.GUI_MOUSE_DRAG.invoker().process(f, g, d, e, activeButton, screen, ci);
- }
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/NbtCompoundAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/NbtCompoundAccessor.java
deleted file mode 100644
index 32eb5508..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/NbtCompoundAccessor.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import net.minecraft.nbt.NbtCompound;
-import net.minecraft.nbt.NbtElement;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-import java.util.Map;
-
-@Mixin(NbtCompound.class)
-public interface NbtCompoundAccessor {
- @Accessor
- Map getEntries();
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/OptionsMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/OptionsMixin.java
new file mode 100644
index 00000000..901fe467
--- /dev/null
+++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/OptionsMixin.java
@@ -0,0 +1,21 @@
+package com.chattriggers.ctjs.internal.mixins;
+
+import com.chattriggers.ctjs.api.CustomKeyMapping;
+import net.minecraft.client.Options;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+
+@Mixin(Options.class)
+public class OptionsMixin {
+ @Inject(method = "save", at = @At("RETURN"))
+ public void save(CallbackInfo ci) {
+ CustomKeyMapping.INSTANCE.save();
+ }
+
+ @Inject(method = "load", at = @At("RETURN"))
+ public void load(CallbackInfo ci) {
+ CustomKeyMapping.INSTANCE.load();
+ }
+}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/ParticleAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/ParticleAccessor.java
deleted file mode 100644
index 1c3a9b07..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/ParticleAccessor.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import net.minecraft.client.particle.Particle;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-@Mixin(Particle.class)
-public interface ParticleAccessor {
- @Accessor(value = "x")
- double getX();
-
- @Accessor(value = "x")
- void setX(double value);
-
- @Accessor(value = "y")
- double getY();
-
- @Accessor(value = "y")
- void setY(double value);
-
- @Accessor(value = "z")
- double getZ();
-
- @Accessor(value = "z")
- void setZ(double value);
-
- @Accessor
- double getVelocityX();
-
- @Accessor
- void setVelocityX(double value);
-
- @Accessor
- double getVelocityY();
-
- @Accessor
- void setVelocityY(double value);
-
- @Accessor
- double getVelocityZ();
-
- @Accessor
- void setVelocityZ(double value);
-
- @Accessor
- float getRed();
-
- @Accessor
- void setRed(float value);
-
- @Accessor
- float getGreen();
-
- @Accessor
- void setGreen(float value);
-
- @Accessor
- float getBlue();
-
- @Accessor
- void setBlue(float value);
-
- @Accessor
- float getAlpha();
-
- @Accessor
- void setAlpha(float value);
-
- @Accessor
- int getAge();
-
- @Accessor
- void setAge(int value);
-
- @Accessor
- double getPrevPosX();
-
- @Accessor
- void setPrevPosX(double value);
-
- @Accessor
- double getPrevPosY();
-
- @Accessor
- void setPrevPosY(double value);
-
- @Accessor
- double getPrevPosZ();
-
- @Accessor
- void setPrevPosZ(double value);
-
- @Accessor
- boolean getDead();
-
- @Accessor
- void setDead(boolean value);
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/ParticleManagerMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/ParticleManagerMixin.java
deleted file mode 100644
index f0c594b1..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/ParticleManagerMixin.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import com.chattriggers.ctjs.api.triggers.TriggerType;
-import net.minecraft.client.particle.Particle;
-import net.minecraft.client.particle.ParticleManager;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-@Mixin(ParticleManager.class)
-public class ParticleManagerMixin {
- @Inject(method = "addParticle(Lnet/minecraft/client/particle/Particle;)V", at = @At("HEAD"), cancellable = true)
- private void injectAddParticle(Particle particle, CallbackInfo ci) {
- TriggerType.SPAWN_PARTICLE.triggerAll(new com.chattriggers.ctjs.api.entity.Particle(particle), ci);
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/PlayerEntityMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/PlayerEntityMixin.java
deleted file mode 100644
index 8e2ac39c..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/PlayerEntityMixin.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import com.chattriggers.ctjs.api.triggers.TriggerType;
-import com.chattriggers.ctjs.internal.NameTagOverridable;
-import com.chattriggers.ctjs.api.message.TextComponent;
-import net.minecraft.entity.Entity;
-import net.minecraft.entity.EntityType;
-import net.minecraft.entity.LivingEntity;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.text.MutableText;
-import net.minecraft.world.World;
-import org.jetbrains.annotations.Nullable;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Unique;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.ModifyVariable;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-@Mixin(PlayerEntity.class)
-public abstract class PlayerEntityMixin extends LivingEntity implements NameTagOverridable {
- @Unique
- private TextComponent overriddenNametagName;
-
- protected PlayerEntityMixin(EntityType extends LivingEntity> entityType, World world) {
- super(entityType, world);
- }
-
- @ModifyVariable(method = "getDisplayName", at = @At(value = "STORE", ordinal = 0))
- private MutableText injectGetName(MutableText original) {
- if (overriddenNametagName != null)
- return overriddenNametagName.toMutableText$ctjs();
- return original;
- }
-
- @Inject(
- method = "attack",
- at = @At(
- value = "INVOKE",
- target = "Lnet/minecraft/entity/Entity;damage(Lnet/minecraft/entity/damage/DamageSource;F)Z"
- )
- )
- private void chattriggers$entityDamage(Entity target, CallbackInfo ci) {
- if (getWorld().isClient) {
- TriggerType.ENTITY_DAMAGE.triggerAll(com.chattriggers.ctjs.api.entity.Entity.fromMC(target));
- }
- }
-
- @Inject(
- method = "attack",
- at = @At(
- value = "INVOKE",
- target = "Lnet/minecraft/entity/LivingEntity;damage(Lnet/minecraft/entity/damage/DamageSource;F)Z"
- )
- )
- private void chattriggers$entityDamageSweeping(Entity target, CallbackInfo ci) {
- if (getWorld().isClient) {
- TriggerType.ENTITY_DAMAGE.triggerAll(com.chattriggers.ctjs.api.entity.Entity.fromMC(target));
- }
- }
-
- @Override
- public void ctjs_setOverriddenNametagName(@Nullable TextComponent component) {
- overriddenNametagName = component;
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/PlayerListEntryAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/PlayerListEntryAccessor.java
deleted file mode 100644
index 1e23edcd..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/PlayerListEntryAccessor.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import net.minecraft.client.network.PlayerListEntry;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Invoker;
-
-@Mixin(PlayerListEntry.class)
-public interface PlayerListEntryAccessor {
- @Invoker
- void invokeSetLatency(int latency);
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/PlayerListHudAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/PlayerListHudAccessor.java
deleted file mode 100644
index 3ea0bebc..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/PlayerListHudAccessor.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import net.minecraft.client.gui.hud.PlayerListHud;
-import net.minecraft.text.Text;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-@Mixin(PlayerListHud.class)
-public interface PlayerListHudAccessor {
- @Accessor
- Text getHeader();
-
- @Accessor
- Text getFooter();
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/PlayerListHudMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/PlayerListHudMixin.java
deleted file mode 100644
index 521e2963..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/PlayerListHudMixin.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import com.chattriggers.ctjs.api.triggers.TriggerType;
-import com.chattriggers.ctjs.api.world.TabList;
-import net.minecraft.client.gui.DrawContext;
-import net.minecraft.client.gui.hud.PlayerListHud;
-import net.minecraft.scoreboard.Scoreboard;
-import net.minecraft.scoreboard.ScoreboardObjective;
-import net.minecraft.text.Text;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-@Mixin(PlayerListHud.class)
-public class PlayerListHudMixin {
- @Inject(method = "render", at = @At("HEAD"), cancellable = true)
- private void injectRenderPlayerList(DrawContext context, int scaledWindowWidth, Scoreboard scoreboard, ScoreboardObjective objective, CallbackInfo ci) {
- TriggerType.RENDER_PLAYER_LIST.triggerAll(ci);
- }
-
- @Inject(method = "setHeader", at = @At("HEAD"), cancellable = true)
- private void ctjs$keepCustomHeader(Text header, CallbackInfo ci) {
- if (TabList.INSTANCE.getCustomHeader$ctjs()) {
- ci.cancel();
- }
- }
-
- @Inject(method = "setFooter", at = @At("HEAD"), cancellable = true)
- private void ctjs$keepCustomFooter(Text footer, CallbackInfo ci) {
- if (TabList.INSTANCE.getCustomFooter$ctjs()) {
- ci.cancel();
- }
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/PlayerScreenHandlerMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/PlayerScreenHandlerMixin.java
deleted file mode 100644
index e5a33e1c..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/PlayerScreenHandlerMixin.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import com.chattriggers.ctjs.api.inventory.Item;
-import com.chattriggers.ctjs.api.triggers.CancellableEvent;
-import com.chattriggers.ctjs.api.triggers.TriggerType;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.inventory.RecipeInputInventory;
-import net.minecraft.item.ItemStack;
-import net.minecraft.screen.PlayerScreenHandler;
-import org.spongepowered.asm.mixin.Final;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Shadow;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-@Mixin(PlayerScreenHandler.class)
-public class PlayerScreenHandlerMixin {
- @Shadow
- @Final
- private RecipeInputInventory craftingInput;
-
- @Inject(
- method = "onClosed",
- at = @At(
- value = "INVOKE",
- target = "Lnet/minecraft/inventory/CraftingResultInventory;clear()V",
- shift = At.Shift.AFTER
- )
- )
- private void injectOnClosed(PlayerEntity player, CallbackInfo ci) {
- // dropping items for player's crafting slots. needs a whole injection point due to there
- // being an extra if to make sure it only calls dropInventory server-side
- if (player.getWorld().isClient) {
- for (int i = 0; i < craftingInput.size(); i++) {
- ItemStack stack = craftingInput.getStack(i);
- if (!stack.isEmpty()) {
- TriggerType.DROP_ITEM.triggerAll(Item.fromMC(stack), true, new CancellableEvent());
- }
- }
- }
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/RenderTickCounterMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/RenderTickCounterMixin.java
deleted file mode 100644
index 4a0b2013..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/RenderTickCounterMixin.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import com.chattriggers.ctjs.internal.engine.CTEvents;
-import net.minecraft.client.render.RenderTickCounter;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
-
-@Mixin(RenderTickCounter.Dynamic.class)
-public class RenderTickCounterMixin {
- @Inject(method = "beginRenderTick(J)I", at = @At("HEAD"))
- private void injectBeginRenderTick(long timeMillis, CallbackInfoReturnable cir) {
- CTEvents.RENDER_TICK.invoker().invoke();
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/Scoreboard$1Accessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/Scoreboard$1Accessor.java
deleted file mode 100644
index 3c9124bd..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/Scoreboard$1Accessor.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import net.minecraft.scoreboard.ScoreHolder;
-import net.minecraft.scoreboard.ScoreboardScore;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-@Mixin(targets = "net.minecraft.scoreboard.Scoreboard$1")
-public interface Scoreboard$1Accessor {
- @Accessor("field_47543")
- ScoreboardScore getScore();
-
- @Accessor("field_47547")
- ScoreHolder getHolder();
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/ScoreboardObjectiveMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/ScoreboardObjectiveMixin.java
deleted file mode 100644
index f8b2cffa..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/ScoreboardObjectiveMixin.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import com.chattriggers.ctjs.api.world.Scoreboard;
-import net.minecraft.scoreboard.ScoreboardObjective;
-import net.minecraft.text.Text;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-@Mixin(ScoreboardObjective.class)
-public class ScoreboardObjectiveMixin {
- @Inject(method = "setDisplayName", at = @At("HEAD"), cancellable = true)
- private void chattriggers$keepCustomName(Text name, CallbackInfo ci) {
- if (Scoreboard.INSTANCE.getCustomTitle$ctjs()) {
- ci.cancel();
- }
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/ScreenHandlerMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/ScreenHandlerMixin.java
deleted file mode 100644
index b42d303f..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/ScreenHandlerMixin.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins;
-
-import com.chattriggers.ctjs.api.triggers.CancellableEvent;
-import com.chattriggers.ctjs.api.inventory.Item;
-import com.chattriggers.ctjs.api.triggers.TriggerType;
-import net.minecraft.entity.player.PlayerEntity;
-import net.minecraft.inventory.Inventory;
-import net.minecraft.item.ItemStack;
-import net.minecraft.screen.ScreenHandler;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-@Mixin(ScreenHandler.class)
-public class ScreenHandlerMixin {
- @Inject(method = "dropInventory", at = @At("HEAD"))
- private void injectDropInventory(PlayerEntity player, Inventory inventory, CallbackInfo ci) {
- // dropping items for guis that don't keep items in them while the gui is closed
- if (inventory != player.playerScreenHandler.getCraftingInput()) {
- for (int i = 0; i < inventory.size(); i++) {
- ItemStack stack = inventory.getStack(i);
- if (!stack.isEmpty()) {
- TriggerType.DROP_ITEM.triggerAll(Item.fromMC(stack), true, new CancellableEvent());
- }
- }
- }
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/SystemDetailsMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/SystemDetailsMixin.java
index 1b69966f..28d17a98 100644
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/SystemDetailsMixin.java
+++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/SystemDetailsMixin.java
@@ -3,7 +3,7 @@
import com.chattriggers.ctjs.internal.engine.module.Module;
import com.chattriggers.ctjs.internal.engine.module.ModuleManager;
import com.chattriggers.ctjs.internal.engine.module.ModuleMetadata;
-import net.minecraft.util.SystemDetails;
+import net.minecraft.SystemReport;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
@@ -15,14 +15,14 @@
import java.util.List;
import java.util.function.Supplier;
-@Mixin(SystemDetails.class)
+@Mixin(SystemReport.class)
public abstract class SystemDetailsMixin {
@Shadow
- public abstract void addSection(String string, Supplier supplier);
+ public abstract void setDetail(String string, Supplier supplier);
@Inject(method = "", at = @At("RETURN"))
private void addModules(CallbackInfo ci) {
- addSection("ChatTriggers Modules", () -> {
+ setDetail("ChatTriggers Modules", () -> {
List modules = new ArrayList<>(ModuleManager.INSTANCE.getCachedModules());
modules.sort(Comparator.comparing(Module::getName));
@@ -37,7 +37,7 @@ private void addModules(CallbackInfo ci) {
ModuleMetadata metadata = module.getMetadata();
if (metadata.getVersion() != null) {
- sb.append("v")
+ sb.append("v")
.append(module.getMetadata().getVersion());
} else {
sb.append("No module version specified");
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/commands/ClientCommandSourceMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/commands/ClientCommandSourceMixin.java
deleted file mode 100644
index a50d752d..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/commands/ClientCommandSourceMixin.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins.commands;
-
-import com.chattriggers.ctjs.internal.CTClientCommandSource;
-import net.minecraft.client.network.ClientCommandSource;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Unique;
-
-import java.util.HashMap;
-
-@SuppressWarnings("AddedMixinMembersNamePattern")
-@Mixin(ClientCommandSource.class)
-public abstract class ClientCommandSourceMixin implements CTClientCommandSource {
- @Unique
- private final HashMap contextValues = new HashMap<>();
-
- @Override
- public void setContextValue(String key, Object value) {
- contextValues.put(key, value);
- }
-
- @Override
- public HashMap getContextValues() {
- return contextValues;
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/commands/ClientPlayNetworkHandlerMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/commands/ClientPlayNetworkHandlerMixin.java
deleted file mode 100644
index 9b24597b..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/commands/ClientPlayNetworkHandlerMixin.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins.commands;
-
-import com.chattriggers.ctjs.internal.engine.CTEvents;
-import com.mojang.brigadier.CommandDispatcher;
-import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
-import net.minecraft.client.network.ClientPlayNetworkHandler;
-import net.minecraft.command.CommandSource;
-import net.minecraft.network.packet.s2c.play.CommandTreeS2CPacket;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Shadow;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-@Mixin(ClientPlayNetworkHandler.class)
-public class ClientPlayNetworkHandlerMixin {
- @Shadow
- private CommandDispatcher commandDispatcher;
-
- @Inject(method = "onCommandTree", at = @At("TAIL"))
- private void injectOnCommandTree(CommandTreeS2CPacket packet, CallbackInfo ci) {
- //noinspection unchecked
- CTEvents.NETWORK_COMMAND_DISPATCHER_REGISTER.invoker().register(
- (CommandDispatcher) (Object) commandDispatcher
- );
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/commands/CommandContextAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/commands/CommandContextAccessor.java
deleted file mode 100644
index 29ce6c1c..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/commands/CommandContextAccessor.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins.commands;
-
-import com.mojang.brigadier.context.CommandContext;
-import com.mojang.brigadier.context.ParsedArgument;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-import java.util.Map;
-
-@Mixin(value = CommandContext.class, remap = false)
-public interface CommandContextAccessor {
- @Accessor
- Map> getArguments();
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/commands/CommandDispatcherMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/commands/CommandDispatcherMixin.java
deleted file mode 100644
index b6fa19c0..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/commands/CommandDispatcherMixin.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins.commands;
-
-import com.llamalad7.mixinextras.sugar.Local;
-import com.mojang.brigadier.CommandDispatcher;
-import com.mojang.brigadier.ParseResults;
-import com.mojang.brigadier.StringReader;
-import com.mojang.brigadier.context.CommandContextBuilder;
-import com.mojang.brigadier.tree.CommandNode;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
-
-@Mixin(value = CommandDispatcher.class, remap = false)
-public class CommandDispatcherMixin {
- @Inject(
- method = "parseNodes",
- at = @At(
- value = "INVOKE",
- target = "Lcom/mojang/brigadier/context/CommandContextBuilder;withCommand(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/context/CommandContextBuilder;",
- shift = At.Shift.AFTER
- )
- )
- private void addRedirectCommandToContextIfNecessary(
- CommandNode node,
- StringReader originalReader,
- CommandContextBuilder contextSoFar,
- CallbackInfoReturnable> cir,
- @Local(ordinal = 1) CommandNode child,
- @Local(ordinal = 1) CommandContextBuilder context
- ) {
- // TODO: If there is a redirect modifier, this fix will ignore it.
-
- if (context.getCommand() == null && child.getRedirect() != null && child.getRedirect().getCommand() != null)
- context.withCommand(child.getRedirect().getCommand());
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/commands/EntitySelectorAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/commands/EntitySelectorAccessor.java
deleted file mode 100644
index 7e1e8f55..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/commands/EntitySelectorAccessor.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins.commands;
-
-import net.minecraft.command.EntitySelector;
-import net.minecraft.entity.Entity;
-import net.minecraft.predicate.NumberRange;
-import net.minecraft.util.TypeFilter;
-import net.minecraft.util.math.Box;
-import net.minecraft.util.math.Vec3d;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-import java.util.List;
-import java.util.UUID;
-import java.util.function.BiConsumer;
-import java.util.function.Function;
-import java.util.function.Predicate;
-
-@Mixin(EntitySelector.class)
-public interface EntitySelectorAccessor {
- @Accessor
- int getLimit();
-
- @Accessor
- boolean getIncludesNonPlayers();
-
- @Accessor
- List> getPredicates();
-
- @Accessor
- NumberRange.DoubleRange getDistance();
-
- @Accessor
- Function getPositionOffset();
-
- @Accessor
- Box getBox();
-
- @Accessor
- BiConsumer> getSorter();
-
- @Accessor
- boolean getSenderOnly();
-
- @Accessor
- String getPlayerName();
-
- @Accessor
- UUID getUuid();
-
- @Accessor
- TypeFilter getEntityFilter();
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/sound/SoundAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/sound/SoundAccessor.java
deleted file mode 100644
index 162ba6cd..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/sound/SoundAccessor.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins.sound;
-
-import net.minecraft.client.sound.Sound;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Mutable;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-@Mixin(Sound.class)
-public interface SoundAccessor {
- @Accessor
- @Mutable
- void setAttenuation(int attenuation);
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/sound/SoundManagerAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/sound/SoundManagerAccessor.java
deleted file mode 100644
index 689e4a8d..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/sound/SoundManagerAccessor.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins.sound;
-
-import net.minecraft.client.sound.SoundManager;
-import net.minecraft.client.sound.SoundSystem;
-import net.minecraft.client.sound.WeightedSoundSet;
-import net.minecraft.resource.Resource;
-import net.minecraft.util.Identifier;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-
-import java.util.Map;
-
-@Mixin(SoundManager.class)
-public interface SoundManagerAccessor {
- @Accessor
- SoundSystem getSoundSystem();
-
- @Accessor
- Map getSounds();
-
- @Accessor
- Map getSoundResources();
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/sound/SoundSystemAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/sound/SoundSystemAccessor.java
deleted file mode 100644
index d530dee3..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/sound/SoundSystemAccessor.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins.sound;
-
-import net.minecraft.client.sound.Channel;
-import net.minecraft.client.sound.SoundInstance;
-import net.minecraft.client.sound.SoundSystem;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
-import org.spongepowered.asm.mixin.gen.Invoker;
-
-import java.util.Map;
-
-@Mixin(SoundSystem.class)
-public interface SoundSystemAccessor {
- @Accessor
- Channel getChannel();
-
- @Accessor
- Map getSources();
-
- @Invoker
- void invokeStart();
-
- @Invoker
- void invokeTick();
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/sound/SoundSystemMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/sound/SoundSystemMixin.java
deleted file mode 100644
index 3337b61f..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/sound/SoundSystemMixin.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins.sound;
-
-import com.chattriggers.ctjs.api.triggers.TriggerType;
-import com.chattriggers.ctjs.api.vec.Vec3f;
-import net.minecraft.client.sound.SoundInstance;
-import net.minecraft.client.sound.SoundSystem;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-@Mixin(SoundSystem.class)
-public class SoundSystemMixin {
- @Inject(method = "play(Lnet/minecraft/client/sound/SoundInstance;)V", at = @At("HEAD"), cancellable = true)
- private void injectPlay(SoundInstance sound, CallbackInfo ci) {
- float volume = 0f;
- float pitch = 0f;
-
- try {
- volume = sound.getVolume();
- } catch (Throwable ignored) {
- }
-
- try {
- pitch = sound.getPitch();
- } catch (Throwable ignored) {
- }
-
- TriggerType.SOUND_PLAY.triggerAll(
- new Vec3f((float) sound.getX(), (float) sound.getY(), (float) sound.getZ()),
- sound.getId().toString(),
- volume,
- pitch,
- sound.getCategory(),
- ci
- );
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/sound/SourceAccessor.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/sound/SourceAccessor.java
deleted file mode 100644
index 3aae2c00..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/sound/SourceAccessor.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins.sound;
-
-import net.minecraft.client.sound.Source;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Invoker;
-
-@Mixin(Source.class)
-public interface SourceAccessor {
- @Invoker
- int invokeGetSourceState();
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/stdio/BootstrapMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/stdio/BootstrapMixin.java
deleted file mode 100644
index db84990e..00000000
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/stdio/BootstrapMixin.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.chattriggers.ctjs.internal.mixins.stdio;
-
-import com.chattriggers.ctjs.internal.launch.CTMixinPlugin;
-import net.minecraft.Bootstrap;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-@Mixin(Bootstrap.class)
-public class BootstrapMixin {
- @Inject(method = "setOutputStreams", at = @At("HEAD"))
- private static void injectSetOutputStreams(CallbackInfo ci) {
- // MC will re-wrap the output streams, so we restore them to their original state
- // so they don't end up double-wrapped.
- CTMixinPlugin.restoreOutputStreams();
- }
-}
diff --git a/src/main/java/com/chattriggers/ctjs/internal/mixins/stdio/LoggerPrintStreamMixin.java b/src/main/java/com/chattriggers/ctjs/internal/mixins/stdio/LoggerPrintStreamMixin.java
index 7a297e2f..cc635267 100644
--- a/src/main/java/com/chattriggers/ctjs/internal/mixins/stdio/LoggerPrintStreamMixin.java
+++ b/src/main/java/com/chattriggers/ctjs/internal/mixins/stdio/LoggerPrintStreamMixin.java
@@ -1,17 +1,17 @@
package com.chattriggers.ctjs.internal.mixins.stdio;
-import net.minecraft.util.logging.LoggerPrintStream;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import java.io.PrintStream;
+import net.minecraft.server.LoggedPrintStream;
// Add additional overrides so that org.spongepowered.asm.util.PrettyPrinter
// will output to the log file.
-@Mixin(LoggerPrintStream.class)
+@Mixin(LoggedPrintStream.class)
public class LoggerPrintStreamMixin {
@Shadow
- protected void log(String message) {
+ protected void logLine(String message) {
throw new IllegalStateException();
}
@@ -22,7 +22,7 @@ public PrintStream printf(String format, Object... args) {
String formatted = format.formatted(args);
if (!formatted.isEmpty() && formatted.charAt(formatted.length() - 1) == '\n')
formatted = formatted.substring(0, formatted.length() - 1);
- log(formatted);
- return (LoggerPrintStream) (Object) this;
+ logLine(formatted);
+ return (LoggedPrintStream) (Object) this;
}
}
diff --git a/src/main/kotlin/com/chattriggers/ctjs/CTJS.kt b/src/main/kotlin/com/chattriggers/ctjs/CTJS.kt
index 84281017..00a3fe57 100644
--- a/src/main/kotlin/com/chattriggers/ctjs/CTJS.kt
+++ b/src/main/kotlin/com/chattriggers/ctjs/CTJS.kt
@@ -1,65 +1,30 @@
package com.chattriggers.ctjs
-import com.chattriggers.ctjs.api.Config
-import com.chattriggers.ctjs.api.client.Client
-import com.chattriggers.ctjs.api.client.KeyBind
-import com.chattriggers.ctjs.api.client.Player
-import com.chattriggers.ctjs.api.client.Sound
-import com.chattriggers.ctjs.api.commands.DynamicCommands
-import com.chattriggers.ctjs.api.message.ChatLib
-import com.chattriggers.ctjs.api.render.Image
-import com.chattriggers.ctjs.api.triggers.TriggerType
-import com.chattriggers.ctjs.api.world.Scoreboard
-import com.chattriggers.ctjs.api.world.World
+import com.chattriggers.ctjs.api.CustomCommand
import com.chattriggers.ctjs.engine.Console
import com.chattriggers.ctjs.engine.Register
-import com.chattriggers.ctjs.internal.commands.StaticCommand
import com.chattriggers.ctjs.internal.engine.module.ModuleManager
import com.chattriggers.ctjs.internal.utils.Initializer
import kotlinx.serialization.json.Json
import net.fabricmc.api.ClientModInitializer
import net.fabricmc.loader.api.FabricLoader
+import net.minecraft.client.Minecraft
import java.io.File
import java.net.URI
-import java.net.URL
import java.net.URLConnection
-import java.security.MessageDigest
-import java.util.*
import kotlin.concurrent.thread
class CTJS : ClientModInitializer {
override fun onInitializeClient() {
- Client.referenceSystemTime = System.nanoTime()
Initializer.initializers.forEach(Initializer::init)
- thread {
- reportHashedUUID()
- }
-
- Config.loadData()
-
Runtime.getRuntime().addShutdownHook(Thread {
- TriggerType.GAME_UNLOAD.triggerAll()
Console.close()
})
}
- private fun reportHashedUUID() {
- val uuid = Player.getUUID().toString().encodeToByteArray()
- val salt = (System.getProperty("user.name") ?: "").encodeToByteArray()
- val md = MessageDigest.getInstance("SHA-256")
- md.update(salt)
- val hashedUUID = md.digest(uuid)
- val hash = Base64.getUrlEncoder().encodeToString(hashedUUID)
-
- val url = "$WEBSITE_ROOT/api/statistics/track?hash=$hash&version=$MOD_VERSION"
- val connection = makeWebRequest(url)
- connection.getInputStream()
- }
-
companion object {
const val MOD_ID = "ctjs"
- const val WEBSITE_ROOT = "https://www.chattriggers.com"
const val MOD_VERSION = "3.0.0-beta"
const val MODULES_FOLDER = "./config/ChatTriggers/modules"
@@ -70,8 +35,6 @@ class CTJS : ClientModInitializer {
var isLoaded = true
private set
- internal val images = mutableListOf()
- internal val sounds = mutableListOf()
internal val isDevelopment = FabricLoader.getInstance().isDevelopmentEnvironment
internal val json = Json {
@@ -88,58 +51,30 @@ class CTJS : ClientModInitializer {
}
@JvmStatic
- fun unload(asCommand: Boolean = true) {
- TriggerType.WORLD_UNLOAD.triggerAll()
- TriggerType.GAME_UNLOAD.triggerAll()
- Scoreboard.clearCustom()
-
+ fun unload() {
isLoaded = false
ModuleManager.teardown()
- KeyBind.clearKeyBinds()
Register.clearCustomTriggers()
- StaticCommand.unregisterAll()
- DynamicCommands.unregisterAll()
-
- if (Config.clearConsoleOnLoad)
- Console.clear()
+ CustomCommand.unregisterAll()
- Client.scheduleTask {
- images.forEach(Image::destroy)
- sounds.forEach(Sound::destroy)
-
- images.clear()
- sounds.clear()
- }
-
- if (asCommand)
- ChatLib.chat("&7Unloaded ChatTriggers")
+ Console.clear()
}
@JvmStatic
- fun load(asCommand: Boolean = true) {
- Client.getMinecraft().options.write()
- unload(asCommand = false)
-
- if (asCommand)
- ChatLib.chat("&cReloading ChatTriggers...")
+ fun load() {
+ Minecraft.getInstance().options.save()
+ unload()
thread {
ModuleManager.setup()
- Client.getMinecraft().options.load()
+ Minecraft.getInstance().options.load()
// Need to set isLoaded to true before running modules, otherwise custom triggers
// activated at the top level will not work
isLoaded = true
ModuleManager.entryPass()
-
- if (asCommand)
- ChatLib.chat("&aDone reloading!")
-
- TriggerType.GAME_LOAD.triggerAll()
- if (World.isLoaded())
- TriggerType.WORLD_LOAD.triggerAll()
}
}
}
diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/CTWrapper.kt b/src/main/kotlin/com/chattriggers/ctjs/api/CTWrapper.kt
deleted file mode 100644
index 6837b336..00000000
--- a/src/main/kotlin/com/chattriggers/ctjs/api/CTWrapper.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.chattriggers.ctjs.api
-
-interface CTWrapper {
- val mcValue: MCClass
-
- fun toMC(): MCClass = mcValue
-}
diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/Config.kt b/src/main/kotlin/com/chattriggers/ctjs/api/Config.kt
deleted file mode 100644
index 29fc92f3..00000000
--- a/src/main/kotlin/com/chattriggers/ctjs/api/Config.kt
+++ /dev/null
@@ -1,209 +0,0 @@
-package com.chattriggers.ctjs.api
-
-import com.chattriggers.ctjs.CTJS
-import com.chattriggers.ctjs.engine.Console
-import com.chattriggers.ctjs.internal.utils.CategorySorting
-import gg.essential.vigilance.Vigilant
-import gg.essential.vigilance.data.Property
-import gg.essential.vigilance.data.PropertyType
-import java.awt.Color
-import java.io.File
-import kotlin.reflect.KProperty
-
-object Config : Vigilant(File(CTJS.configLocation, "ChatTriggers.toml"), sortingBehavior = CategorySorting) {
- @JvmStatic
- @Property(
- PropertyType.SWITCH,
- name = "Show module help on import",
- category = "General",
- description = "If a module is imported and it has a help message, display it in chat"
- )
- var moduleImportHelp = true
-
- @JvmStatic
- @Property(
- PropertyType.SWITCH,
- name = "Show module changelog on update",
- category = "General",
- description = "If a module is updated and it has a changelog, display it in chat"
- )
- var moduleChangelog = true
-
- @JvmStatic
- @Property(
- PropertyType.SWITCH,
- name = "Show updates in chat",
- category = "General",
- description = "Show CT module import/update messages in the chat",
- )
- var showUpdatesInChat = true
-
- @JvmStatic
- @Property(
- PropertyType.SWITCH,
- name = "Auto-update modules",
- category = "General",
- description = "Check for and download module updates every time CT loads",
- )
- var autoUpdateModules = true
-
- @JvmStatic
- @Property(
- PropertyType.SWITCH,
- name = "Clear console on CT load",
- category = "Console",
- )
- var clearConsoleOnLoad = true
-
- @JvmStatic
- @Property(
- PropertyType.SWITCH,
- name = "Open console on error",
- category = "Console",
- description = "Opens the language-specific console if there is an error in a module",
- )
- var openConsoleOnError = false
-
- @JvmStatic
- @Property(
- PropertyType.SWITCH,
- name = "Use Fira Code font for console",
- category = "Console",
- )
- var consoleFiraCodeFont = true
-
- @JvmStatic
- @Property(
- PropertyType.NUMBER,
- name = "Console font size",
- category = "Console",
- min = 6,
- max = 32,
- )
- var consoleFontSize = 12
-
- @JvmStatic
- @Property(
- PropertyType.SWITCH,
- name = "Use custom console theme",
- category = "Console",
- )
- var customTheme = false
-
- @JvmStatic
- @Property(
- PropertyType.SELECTOR,
- name = "Console theme",
- category = "Console",
- options = [
- "Default Dark",
- "Ashes Dark",
- "Atelierforest Dark",
- "Isotope Dark",
- "Codeschool Dark",
- "Gotham",
- "Hybrid",
- "3024 Light",
- "Chalk Light",
- "Blue",
- "Slate",
- "Red",
- "Green",
- "Aids"
- ]
- )
- var consoleTheme = 0
-
- @JvmStatic
- @Property(
- PropertyType.COLOR,
- name = "Console Text color",
- category = "Console",
- )
- var consoleTextColor = Color(208, 208, 208)
-
- @JvmStatic
- @Property(
- PropertyType.COLOR,
- name = "Console background color",
- category = "Console",
- )
- var consoleBackgroundColor = Color(21, 21, 21)
-
- @JvmStatic
- @Property(
- PropertyType.COLOR,
- name = "Console error color",
- category = "Console",
- )
- var consoleErrorColor = Color(225, 65, 73)
-
- @JvmStatic
- @Property(
- PropertyType.COLOR,
- name = "Console warning color",
- category = "Console",
- )
- var consoleWarningColor = Color(248, 191, 84)
-
- init {
- initialize()
-
- addDependency("consoleTextColor", "customTheme")
- addDependency("consoleBackgroundColor", "customTheme")
- addDependency("consoleErrorColor", "customTheme")
- addDependency("consoleWarningColor", "customTheme")
-
- listenToConsoleProperty(::clearConsoleOnLoad)
- listenToConsoleProperty(::openConsoleOnError)
- listenToConsoleProperty(::consoleFiraCodeFont)
- listenToConsoleProperty(::consoleFontSize)
- listenToConsoleProperty(::customTheme)
- listenToConsoleProperty(::consoleTheme)
- listenToConsoleProperty(::consoleTextColor)
- listenToConsoleProperty(::consoleBackgroundColor)
- listenToConsoleProperty(::consoleErrorColor)
- listenToConsoleProperty(::consoleWarningColor)
- }
-
- private inline fun listenToConsoleProperty(property: KProperty) {
- val field = ConsoleSettings::class.java.getDeclaredField(property.name)
- field.isAccessible = true
-
- registerListener(property.name) {
- val settings = ConsoleSettings.make()
- field.set(settings, it)
- Console.onConsoleSettingsChanged(settings)
- }
- }
-
- // The listener properties above get called before the property is updated, so we have
- // to keep track of it ourselves and use the new value that is passed in
- data class ConsoleSettings(
- var clearConsoleOnLoad: Boolean,
- var openConsoleOnError: Boolean,
- var consoleFiraCodeFont: Boolean,
- var consoleFontSize: Int,
- var customTheme: Boolean,
- var consoleTheme: Int,
- var consoleTextColor: Color,
- var consoleBackgroundColor: Color,
- var consoleErrorColor: Color,
- var consoleWarningColor: Color,
- ) {
- companion object {
- fun make() = ConsoleSettings(
- clearConsoleOnLoad,
- openConsoleOnError,
- consoleFiraCodeFont,
- consoleFontSize,
- customTheme,
- consoleTheme,
- consoleTextColor,
- consoleBackgroundColor,
- consoleErrorColor,
- consoleWarningColor,
- )
- }
- }
-}
diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/CustomCommand.kt b/src/main/kotlin/com/chattriggers/ctjs/api/CustomCommand.kt
new file mode 100644
index 00000000..d455316a
--- /dev/null
+++ b/src/main/kotlin/com/chattriggers/ctjs/api/CustomCommand.kt
@@ -0,0 +1,103 @@
+package com.chattriggers.ctjs.api
+
+import com.chattriggers.ctjs.engine.LogType
+import com.chattriggers.ctjs.engine.printToConsole
+import com.chattriggers.ctjs.internal.mixins.CommandNodeAccessor
+import com.chattriggers.ctjs.internal.utils.Initializer
+import com.mojang.brigadier.CommandDispatcher
+import com.mojang.brigadier.arguments.ArgumentType
+import com.mojang.brigadier.builder.ArgumentBuilder
+import com.mojang.brigadier.builder.LiteralArgumentBuilder
+import com.mojang.brigadier.builder.RequiredArgumentBuilder
+import com.mojang.brigadier.context.CommandContext
+import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback
+import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents
+import net.minecraft.commands.CommandSource
+
+object CustomCommand : Initializer {
+ private var commands: MutableSet Any>> = mutableSetOf()
+ private var clientDispatcher: CommandDispatcher? = null
+ private var networkDispatcher: CommandDispatcher? = null
+
+ @Suppress("UNCHECKED_CAST")
+ override fun init() {
+ ClientCommandRegistrationCallback.EVENT.register { dispatcher, _ ->
+ this.clientDispatcher = dispatcher as CommandDispatcher
+ registerAll(dispatcher)
+ }
+
+ ClientPlayConnectionEvents.DISCONNECT.register { _, _ ->
+ clientDispatcher = null
+ networkDispatcher = null
+ }
+ }
+
+ internal fun registerNetwork(dispatcher: CommandDispatcher) {
+ networkDispatcher = dispatcher
+ registerAll(dispatcher)
+ }
+
+ internal fun registerAll(dispatcher: CommandDispatcher) {
+ for ((name, callback) in commands) {
+ val cmd = CommandBuilder(name).apply { callback.invoke(builder()) }
+ dispatcher.register(cmd.build())
+ }
+ }
+
+ internal fun unregisterAll() {
+ for (dispatcher in listOfNotNull(clientDispatcher, networkDispatcher)) {
+ for ((name, _) in commands) {
+ (dispatcher.root as CommandNodeAccessor).let {
+ it.children.remove(name)
+ it.literals.remove(name)
+ }
+ }
+ }
+
+ commands.clear()
+ }
+
+ @JvmStatic
+ fun register(name: String, callback: (NodeBuilder) -> Any) {
+ commands.add(name to callback)
+
+ if (clientDispatcher?.root?.getChild(name) != null || networkDispatcher?.root?.getChild(name) != null) {
+ "Command with $name already exists".printToConsole(LogType.WARN)
+ } else {
+ val cmd = CommandBuilder(name).apply { callback.invoke(builder()) }
+ clientDispatcher?.register(cmd.build())
+ networkDispatcher?.register(cmd.build())
+ }
+ }
+
+ class CommandBuilder(val name: String) {
+ private val root = LiteralArgumentBuilder.literal(name)
+
+ fun builder() = NodeBuilder(root)
+
+ fun build(): LiteralArgumentBuilder = root
+ }
+
+ open class NodeBuilder(val node: ArgumentBuilder) {
+ fun literal(s: String, callback: (NodeBuilder) -> Any): NodeBuilder {
+ val next = LiteralArgumentBuilder.literal(s)
+ callback.invoke(NodeBuilder(next))
+ node.then(next)
+ return this
+ }
+
+ fun argument(name: String, type: ArgumentType, callback: (NodeBuilder) -> Any): NodeBuilder {
+ val next = RequiredArgumentBuilder.argument(name, type)
+ callback.invoke(NodeBuilder(next))
+ node.then(next)
+ return this
+ }
+
+ fun exec(callback: (CommandContext) -> Any) {
+ node.executes { ctx ->
+ callback(ctx)
+ 1
+ }
+ }
+ }
+}
diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/CustomKeyMapping.kt b/src/main/kotlin/com/chattriggers/ctjs/api/CustomKeyMapping.kt
new file mode 100644
index 00000000..22909b2e
--- /dev/null
+++ b/src/main/kotlin/com/chattriggers/ctjs/api/CustomKeyMapping.kt
@@ -0,0 +1,86 @@
+package com.chattriggers.ctjs.api
+
+import com.chattriggers.ctjs.CTJS
+import com.mojang.blaze3d.platform.InputConstants
+import net.minecraft.client.KeyMapping
+import net.minecraft.client.Minecraft
+import net.minecraft.resources.Identifier
+
+object CustomKeyMapping {
+ private val SAVE_FILE = CTJS.configLocation.resolve("ctjs_key_mappings.txt")
+ private val KEY_MAP: HashMap = HashMap()
+ private val customKeyMappings: MutableList = mutableListOf()
+ private val customCategories: MutableList = mutableListOf()
+
+ @JvmStatic
+ fun register(key: String, keyCode: Int, category: KeyMapping.Category): KeyMapping {
+ val customKeyMapping = customKeyMappings.find { it.name == key }
+ if (customKeyMapping != null) {
+ return customKeyMapping.load()
+ }
+
+ if (!customCategories.contains(category)) {
+ customCategories.add(category)
+ }
+
+ val keyMapping = KeyMapping(key, InputConstants.Type.KEYSYM, keyCode, category).load()
+ customKeyMappings.add(keyMapping)
+ return keyMapping
+ }
+
+ @JvmStatic
+ fun register(key: String, keyCode: Int, category: String): KeyMapping {
+ val cat = customCategories.find { it.id.path == category }.let {
+ if (it == null) {
+ val parts = category.split(":", limit = 2)
+ val namespace = if (parts.size > 1) parts[0] else "ctjs"
+ val path = if (parts.size > 1) parts[1] else parts[0]
+ KeyMapping.Category(Identifier.fromNamespaceAndPath(namespace, path))
+ } else it
+ }
+
+ return register(key, keyCode, cat)
+ }
+
+ @JvmStatic
+ fun find(key: String): KeyMapping? {
+ val vanilla = Minecraft.getInstance().options.keyMappings.find { it.name == key }
+ if (vanilla != null) return vanilla
+
+ val custom = customKeyMappings.find { it.name == key }
+ if (custom != null) return custom
+
+ return null
+ }
+
+ @JvmStatic
+ fun getKeyMappings() = customKeyMappings.toList()
+
+ @JvmStatic
+ fun getCategories() = customCategories.toList()
+
+ fun save() {
+ val builder = StringBuilder()
+ for (key in customKeyMappings) {
+ builder.appendLine("${key.name}:${key.saveString()}")
+ }
+ SAVE_FILE.writeText(builder.toString())
+ }
+
+ fun load() {
+ if (!SAVE_FILE.exists()) return
+
+ SAVE_FILE.readText().lines().forEach { line ->
+ val parts = line.split(":", limit = 2)
+ if (parts.size < 2) return@forEach
+ KEY_MAP[parts[0]] = parts[1]
+ }
+ }
+
+ private fun KeyMapping.load() = apply {
+ KEY_MAP[name]?.let {
+ setKey(InputConstants.getKey(it))
+ KeyMapping.resetMapping()
+ }
+ }
+}
diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/client/FileLib.kt b/src/main/kotlin/com/chattriggers/ctjs/api/FileLib.kt
similarity index 90%
rename from src/main/kotlin/com/chattriggers/ctjs/api/client/FileLib.kt
rename to src/main/kotlin/com/chattriggers/ctjs/api/FileLib.kt
index 8edaef3b..33aa67b3 100644
--- a/src/main/kotlin/com/chattriggers/ctjs/api/client/FileLib.kt
+++ b/src/main/kotlin/com/chattriggers/ctjs/api/FileLib.kt
@@ -1,6 +1,10 @@
-package com.chattriggers.ctjs.api.client
+package com.chattriggers.ctjs.api
import com.chattriggers.ctjs.CTJS
+import com.chattriggers.ctjs.engine.printTraceToConsole
+import com.chattriggers.ctjs.internal.engine.module.ModuleManager
+import net.minecraft.client.Minecraft
+import net.minecraft.network.chat.Component
import net.minecraft.util.Util
import java.io.*
import java.net.UnknownHostException
@@ -164,7 +168,7 @@ object FileLib {
@JvmStatic
@JvmOverloads
fun getUrlContent(theUrl: String, userAgent: String? = "Mozilla/5.0"): String {
- val conn = CTJS.makeWebRequest(theUrl, userAgent)
+ val conn = CTJS.Companion.makeWebRequest(theUrl, userAgent)
return conn.getInputStream().use {
it.readBytes()
@@ -221,7 +225,7 @@ object FileLib {
* destDirectory (will be created if does not exist).
* @param zipFilePath the zip file path
* @param destDirectory the destination directory
- * @throws IOException IOException
+ * @throws java.io.IOException IOException
*/
@Throws(IOException::class)
@JvmStatic
@@ -267,7 +271,7 @@ object FileLib {
}
private fun absoluteLocation(importName: String, fileLocation: String): String {
- return CTJS.MODULES_FOLDER + File.separator + importName + File.separator + fileLocation
+ return CTJS.Companion.MODULES_FOLDER + File.separator + importName + File.separator + fileLocation
}
/**
@@ -299,7 +303,7 @@ object FileLib {
*/
@JvmStatic
fun open(url: String) {
- Util.getOperatingSystem().open(url)
+ Util.getPlatform().openUri(url)
}
/**
@@ -309,6 +313,19 @@ object FileLib {
*/
@JvmStatic
fun open(path: File) {
- Util.getOperatingSystem().open(path)
+ Util.getPlatform().openFile(path)
}
-}
+
+ /**
+ * Opens the path to the modules folder in the file explorer
+ */
+ @JvmStatic
+ fun openModulesFolder() {
+ try {
+ open(ModuleManager.modulesFolder)
+ } catch (exception: IOException) {
+ exception.printTraceToConsole()
+ Minecraft.getInstance().player?.sendSystemMessage(Component.nullToEmpty("&cCould not open file location"))
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/Mappings.kt b/src/main/kotlin/com/chattriggers/ctjs/api/Mappings.kt
deleted file mode 100644
index aa012b5e..00000000
--- a/src/main/kotlin/com/chattriggers/ctjs/api/Mappings.kt
+++ /dev/null
@@ -1,260 +0,0 @@
-package com.chattriggers.ctjs.api
-
-import com.chattriggers.ctjs.CTJS
-import com.chattriggers.ctjs.internal.utils.urlEncode
-import net.fabricmc.loader.api.FabricLoader
-import net.fabricmc.mappingio.MappingReader
-import net.fabricmc.mappingio.tree.MappingTree.ElementMapping
-import net.fabricmc.mappingio.tree.MappingTree.MethodArgMapping
-import net.fabricmc.mappingio.tree.MappingTreeView
-import net.fabricmc.mappingio.tree.MemoryMappingTree
-import org.objectweb.asm.Opcodes
-import org.objectweb.asm.Type
-import org.spongepowered.asm.mixin.transformer.ClassInfo
-import org.spongepowered.asm.service.MixinService
-import java.io.ByteArrayInputStream
-import java.net.URI
-import java.net.URL
-import java.nio.file.Files
-import java.util.zip.ZipFile
-
-/**
- * Allows runtime inspection of mappings
- */
-object Mappings {
- private const val YARN_MAPPINGS_URL_PREFIX = "https://maven.fabricmc.net/net/fabricmc/yarn/"
-
- // If this is changed, also change the Java.type function in mixinProvidedLibs.js
- internal val mappedPackages = setOf("Lnet/minecraft/", "Lcom/mojang/blaze3d/")
-
- private val unmappedClasses = mutableMapOf()
- private val mappedToUnmappedClassNames = mutableMapOf()
-
- internal fun initialize() {
- val container = FabricLoader.getInstance().getModContainer(CTJS.MOD_ID)
- val mappingVersion = container.get().metadata.getCustomValue("${CTJS.MOD_ID}:yarn-mappings").asString
- val jarName = "yarn-$mappingVersion-v2.jar".urlEncode()
-
- val jarBytes = URI("$YARN_MAPPINGS_URL_PREFIX${mappingVersion.urlEncode()}/$jarName").toURL().readBytes()
- val tempFile = Files.createTempFile(CTJS.MOD_ID, "mapping").toFile()
- tempFile.writeBytes(jarBytes)
-
- val mappingBytes = ZipFile(tempFile).use { file ->
- file.getInputStream(file.getEntry("mappings/mappings.tiny")).readAllBytes()
- }
-
- val tree = MemoryMappingTree()
- MappingReader.read(ByteArrayInputStream(mappingBytes).bufferedReader(), tree)
-
- tree.classes.forEach { clazz ->
- val fields = mutableMapOf()
-
- clazz.fields.forEach { field ->
- fields[field.unmappedName] = MappedField(
- name = Mapping.fromMapped(field),
- type = Mapping(field.unmappedType.descriptor, field.mappedType.descriptor)
- )
- }
-
- val methods = mutableMapOf>()
-
- clazz.methods.forEach { method ->
- val unmappedType = method.unmappedType
- val mappedType = method.mappedType
-
- methods.getOrPut(method.unmappedName, ::mutableListOf).add(
- MappedMethod(
- name = Mapping.fromMapped(method),
- parameters = method.args.sortedBy { it.lvIndex }.mapIndexed { index, param ->
- MappedParameter(
- Mapping(param.unmappedName, param.mappedName),
- Mapping(
- unmappedType.argumentTypes[index].descriptor,
- mappedType.argumentTypes[index].descriptor,
- ),
- param.lvIndex,
- )
- },
- returnType = Mapping(unmappedType.returnType.descriptor, mappedType.returnType.descriptor)
- )
- )
- }
-
- unmappedClasses[clazz.unmappedName] = MappedClass(
- name = Mapping.fromMapped(clazz),
- fields,
- methods
- )
-
- if (CTJS.isDevelopment) {
- mappedToUnmappedClassNames[clazz.unmappedName] = clazz.unmappedName
- } else {
- mappedToUnmappedClassNames[clazz.mappedName] = clazz.unmappedName
- }
- }
- }
-
- internal fun getMappedClass(unmappedClassName: String): MappedClass? {
- var name = normalizeClassName(unmappedClassName)
- mappedToUnmappedClassNames[name]?.also { name = it }
- return unmappedClasses[name]
- }
-
- internal fun getUnmappedClass(unmappedClassName: String): MappedClass {
- val name = normalizeClassName(unmappedClassName)
- val classNode = MixinService.getService().bytecodeProvider.getClassNode(unmappedClassName)
-
- val fields = classNode.fields.associate {
- val type = it.desc
- val fieldName = it.name
-
- fieldName to MappedField(Mapping(fieldName, fieldName), Mapping(type, mapClassName(type) ?: type))
- }
-
- val methods = mutableMapOf>()
- for (method in classNode.methods) {
- val isStatic = method.access and Opcodes.ACC_STATIC != 0
- var lvtIndex = if (isStatic) 0 else 1
-
- val params = mutableListOf()
- Type.getArgumentTypes(method.desc).forEachIndexed { index, type ->
- val paramType = type.descriptor
- val paramName = method.parameters?.get(index)?.name ?: return@forEachIndexed
-
- params.add(
- MappedParameter(
- Mapping(paramName, paramName),
- Mapping(paramType, mapClassName(paramType) ?: paramType),
- lvtIndex
- )
- )
-
- if (type == Type.DOUBLE_TYPE || type == Type.LONG_TYPE) {
- lvtIndex += 2
- } else {
- lvtIndex++
- }
- }
-
- val returnType = Type.getReturnType(method.desc).descriptor
- val methodName = method.name
- methods.getOrPut(methodName, ::mutableListOf).add(
- MappedMethod(
- Mapping(methodName, methodName),
- params,
- Mapping(returnType, mapClassName(returnType) ?: returnType)
- )
- )
- }
-
- mappedToUnmappedClassNames[name] = name
- return MappedClass(Mapping(name, name), fields, methods).also {
- unmappedClasses[name] = it
- }
- }
-
- internal fun getMappedClassName(unmappedClassName: String) = getMappedClass(unmappedClassName)?.name?.value
-
- /**
- * Gets a classes unmapped class name, or throws an error if it is not mapped
- */
- @JvmStatic
- fun unmapClass(clazz: Class<*>) = unmapClassName(clazz.name)
-
- /**
- * Gets an unmapped class name from a mapped class name, or returns null if
- * it either does not exist or is not mapped.
- */
- @JvmStatic
- fun unmapClassName(className: String): String? {
- return mappedToUnmappedClassNames[normalizeClassName(className)]
- }
-
- /**
- * Gets the mapped class name from an unmapped class name or null if the class
- * name does not exist. Note that this is not required to use mapped classes,
- * as Rhino performs this mapping automatically during runtime.
- */
- @JvmStatic
- fun mapClassName(className: String) = getMappedClassName(className)
-
- private fun normalizeClassName(className: String) = (if (className.startsWith('L') && className.endsWith(';')) {
- className.drop(1).dropLast(1)
- } else className).replace('.', '/')
-
- internal data class Mapping(val original: String, val mapped: String) {
- val value: String
- get() = if (CTJS.isDevelopment) original else mapped
-
- companion object {
- fun fromMapped(mapped: ElementMapping) = Mapping(mapped.unmappedName, mapped.mappedName)
- }
- }
-
- internal data class MappedField(val name: Mapping, val type: Mapping)
-
- internal class MappedParameter(
- val name: Mapping,
- val type: Mapping,
- val lvtIndex: Int,
- )
-
- internal class MappedMethod(
- val name: Mapping,
- val parameters: List,
- val returnType: Mapping,
- ) {
- fun toDescriptor() = buildString {
- append('(')
- parameters.forEach {
- append(it.type.value)
- }
- append(')')
- append(returnType.value)
- }
-
- fun toFullDescriptor() = name.value + toDescriptor()
- }
-
- internal class MappedClass(
- val name: Mapping,
- val fields: Map,
- val methods: Map>,
- ) {
- fun findMethods(name: String, classInfo: ClassInfo?): List? {
- methods[name]?.let { return it }
-
- if (classInfo == null)
- return null
-
- val unmappedSuperClass = mappedToUnmappedClassNames[classInfo.superName]
- if (unmappedSuperClass != null) {
- return unmappedClasses[unmappedSuperClass]?.findMethods(name, classInfo.superClass)
- }
-
- val methods = mutableListOf()
- for (itf in classInfo.interfaces) {
- val unmappedInterface = mappedToUnmappedClassNames[itf] ?: continue
- unmappedClasses[unmappedInterface]?.findMethods(name, null)?.let { methods += it }
- }
-
- return if (methods.isEmpty()) null else methods
- }
- }
-
- private val ElementMapping.unmappedName: String
- get() = getName("named")!!
-
- private val ElementMapping.mappedName: String
- get() = getName("intermediary")!!
-
- // Parameters do not have "intermediary" mappings
- private val MethodArgMapping.mappedName: String
- get() = unmappedName
-
- private val MappingTreeView.MemberMappingView.unmappedType: Type
- get() = Type.getType(getDesc("named"))
-
- private val MappingTreeView.MemberMappingView.mappedType: Type
- get() = Type.getType(getDesc("intermediary"))
-}
diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/client/CPS.kt b/src/main/kotlin/com/chattriggers/ctjs/api/client/CPS.kt
deleted file mode 100644
index 937dc67f..00000000
--- a/src/main/kotlin/com/chattriggers/ctjs/api/client/CPS.kt
+++ /dev/null
@@ -1,93 +0,0 @@
-package com.chattriggers.ctjs.api.client
-
-import com.chattriggers.ctjs.api.world.World
-import com.chattriggers.ctjs.internal.engine.CTEvents
-import com.chattriggers.ctjs.internal.utils.Initializer
-import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents
-import java.util.*
-import kotlin.math.max
-import kotlin.math.roundToInt
-
-object CPS : Initializer {
- private val leftClicks = ClicksTracker()
- private val rightClicks = ClicksTracker()
- private val middleClicks = ClicksTracker()
-
- override fun init() {
- ClientTickEvents.START_CLIENT_TICK.register {
- leftClicks.tick()
- rightClicks.tick()
- middleClicks.tick()
- }
-
- CTEvents.MOUSE_CLICKED.register { _, _, button, pressed ->
- if (pressed) {
- when (button) {
- 0 -> leftClicks.click()
- 1 -> rightClicks.click()
- 2 -> middleClicks.click()
- }
- }
- }
- }
-
- @JvmStatic
- fun getLeftClicksMax(): Int = leftClicks.maxClicks
-
- @JvmStatic
- fun getRightClicksMax(): Int = rightClicks.maxClicks
-
- @JvmStatic
- fun getMiddleClicksMax(): Int = middleClicks.maxClicks
-
- @JvmStatic
- fun getLeftClicks(): Int = leftClicks.clicks.size
-
- @JvmStatic
- fun getRightClicks(): Int = rightClicks.clicks.size
-
- @JvmStatic
- fun getMiddleClicks(): Int = middleClicks.clicks.size
-
- @JvmStatic
- fun getLeftClicksAverage(): Int = leftClicks.average()
-
- @JvmStatic
- fun getRightClicksAverage(): Int = rightClicks.average()
-
- @JvmStatic
- fun getMiddleClicksAverage(): Int = middleClicks.average()
-
- private class ClicksTracker {
- val clicks = mutableListOf()
- var maxClicks = 0
- private val runningAverages = LinkedList()
-
- fun click() {
- clicks.add(World.getTicksPerSecond())
- }
-
- fun tick() {
- // Decrease all existing click values
- for (i in clicks.indices)
- clicks[i]--
- clicks.removeIf { it <= 0 }
-
- // Save the current CPS
- runningAverages.add(clicks.size)
- if (runningAverages.size > 100)
- runningAverages.removeAt(0)
-
- maxClicks = if (runningAverages.lastOrNull() == 0) {
- runningAverages.clear()
- 0
- } else {
- max(maxClicks, clicks.size)
- }
- }
-
- fun average() = if (runningAverages.isNotEmpty()) {
- runningAverages.average().roundToInt()
- } else 0
- }
-}
diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/client/Client.kt b/src/main/kotlin/com/chattriggers/ctjs/api/client/Client.kt
deleted file mode 100644
index e8357a67..00000000
--- a/src/main/kotlin/com/chattriggers/ctjs/api/client/Client.kt
+++ /dev/null
@@ -1,337 +0,0 @@
-package com.chattriggers.ctjs.api.client
-
-import com.chattriggers.ctjs.api.inventory.Slot
-import com.chattriggers.ctjs.api.message.TextComponent
-import com.chattriggers.ctjs.api.world.World
-import com.chattriggers.ctjs.internal.listeners.ClientListener
-import com.chattriggers.ctjs.internal.mixins.ChatScreenAccessor
-import com.chattriggers.ctjs.internal.mixins.HandledScreenAccessor
-import com.chattriggers.ctjs.internal.mixins.KeyBindingAccessor
-import com.chattriggers.ctjs.internal.utils.asMixin
-import gg.essential.universal.UKeyboard
-import gg.essential.universal.UMinecraft
-import gg.essential.universal.UMouse
-import net.minecraft.client.MinecraftClient
-import net.minecraft.client.gui.hud.ChatHud
-import net.minecraft.client.gui.hud.PlayerListHud
-import net.minecraft.client.gui.screen.ChatScreen
-import net.minecraft.client.gui.screen.Screen
-import net.minecraft.client.gui.screen.TitleScreen
-import net.minecraft.client.gui.screen.ingame.HandledScreen
-import net.minecraft.client.gui.screen.multiplayer.ConnectScreen
-import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen
-import net.minecraft.client.network.ClientPlayNetworkHandler
-import net.minecraft.client.network.ServerAddress
-import net.minecraft.client.network.ServerInfo
-import net.minecraft.client.option.KeyBinding
-import net.minecraft.client.realms.gui.screen.RealmsMainScreen
-import net.minecraft.network.packet.Packet
-import kotlin.math.roundToInt
-
-object Client {
- internal var referenceSystemTime: Long = 0
-
- @JvmField
- val currentGui = CurrentGuiWrapper()
-
- @JvmField
- val camera = CameraWrapper()
-
- @JvmField
- val settings = Settings
-
- /**
- * Gets Minecraft's Minecraft object
- *
- * @return The Minecraft object
- */
- @JvmStatic
- fun getMinecraft(): MinecraftClient = UMinecraft.getMinecraft()
-
- /**
- * Gets Minecraft's NetHandlerPlayClient object
- *
- * @return The NetHandlerPlayClient object
- */
- @JvmStatic
- fun getConnection(): ClientPlayNetworkHandler? = getMinecraft().networkHandler
-
- /**
- * Schedule's a task to run on Minecraft's main thread in [delay] ticks.
- * Defaults to the next tick.
- * @param delay The delay in ticks
- * @param callback The task to run on the main thread
- */
- @JvmStatic
- @JvmOverloads
- fun scheduleTask(delay: Int = 0, callback: () -> Unit) {
- ClientListener.addTask(delay, callback)
- }
-
- /**
- * Quits the client back to the main menu.
- * This acts just like clicking the "Disconnect" or "Save and quit to title" button.
- */
- @JvmStatic
- fun disconnect() {
- scheduleTask {
- World.toMC()?.disconnect()
- getMinecraft().disconnect()
-
- getMinecraft().setScreen(
- when {
- getMinecraft().isInSingleplayer -> TitleScreen()
- getMinecraft().currentServerEntry?.isRealm == true -> RealmsMainScreen(TitleScreen())
- else -> MultiplayerScreen(TitleScreen())
- }
- )
- }
- }
-
- /**
- * Connects to the server with the given ip.
- * @param ip The ip to connect to
- */
- @JvmStatic
- @JvmOverloads
- fun connect(ip: String, port: Int = 25565) {
- scheduleTask {
- ConnectScreen.connect(
- MultiplayerScreen(TitleScreen()),
- getMinecraft(),
- ServerAddress(ip, port),
- ServerInfo("Server", ip, ServerInfo.ServerType.OTHER),
- false,
- null,
- )
- }
- }
-
- /**
- * Gets the Minecraft ChatHud object for the chat gui
- *
- * @return The GuiNewChat object for the chat gui
- */
- @JvmStatic
- fun getChatGui(): ChatHud? = getMinecraft().inGameHud?.chatHud
-
- @JvmStatic
- fun isInChat(): Boolean = getMinecraft().currentScreen is ChatScreen
-
- @JvmStatic
- fun getTabGui(): PlayerListHud? = getMinecraft().inGameHud?.playerListHud
-
- @JvmStatic
- fun isInTab(): Boolean = getMinecraft().options.playerListKey.isPressed
-
- /**
- * Gets whether the Minecraft window is active
- * and in the foreground of the user's screen.
- *
- * @return true if the game is active, false otherwise
- */
- @JvmStatic
- fun isTabbedIn(): Boolean = getMinecraft().isWindowFocused
-
- @JvmStatic
- fun isControlDown(): Boolean = UKeyboard.isCtrlKeyDown()
-
- @JvmStatic
- fun isShiftDown(): Boolean = UKeyboard.isShiftKeyDown()
-
- @JvmStatic
- fun isAltDown(): Boolean = UKeyboard.isAltKeyDown()
-
- @JvmStatic
- fun getFPS(): Int = getMinecraft().currentFps
-
- @JvmStatic
- fun getVersion(): String = getMinecraft().gameVersion
-
- @JvmStatic
- fun getMaxMemory(): Long = Runtime.getRuntime().maxMemory()
-
- @JvmStatic
- fun getTotalMemory(): Long = Runtime.getRuntime().totalMemory()
-
- @JvmStatic
- fun getFreeMemory(): Long = Runtime.getRuntime().freeMemory()
-
- @JvmStatic
- fun getMemoryUsage(): Int = ((getTotalMemory() - getFreeMemory()) * 100 / getMaxMemory().toFloat()).roundToInt()
-
- @JvmStatic
- fun getSystemTime(): Long = (System.nanoTime() - referenceSystemTime) / 1_000_000
-
- @JvmStatic
- fun getMouseX() = UMouse.Scaled.x
-
- @JvmStatic
- fun getMouseY() = UMouse.Scaled.y
-
- @JvmStatic
- fun isInGui(): Boolean = currentGui.get() != null
-
- /**
- * Gets the chat message currently typed into the chat gui.
- *
- * @return A blank string if the gui isn't open, otherwise, the message
- */
- @JvmStatic
- fun getCurrentChatMessage(): String {
- return if (isInChat()) {
- val chatGui = getMinecraft().currentScreen as ChatScreen
- chatGui.asMixin().chatField.text
- } else ""
- }
-
- /**
- * Sets the current chat message, if the chat gui is not open, one will be opened.
- *
- * @param message the message to put in the chat text box.
- */
- @JvmStatic
- fun setCurrentChatMessage(message: String) {
- if (isInChat()) {
- val chatGui = getMinecraft().currentScreen as ChatScreen
- chatGui.asMixin().chatField.text = message
- } else currentGui.set(ChatScreen(message))
- }
-
- @JvmStatic
- fun sendPacket(packet: Packet<*>) {
- getConnection()?.connection?.send(packet)
- }
-
- /**
- * Display a title.
- *
- * @param title title text
- * @param subtitle subtitle text
- * @param fadeIn time to fade in
- * @param time time to stay on screen
- * @param fadeOut time to fade out
- */
- @JvmStatic
- fun showTitle(title: String?, subtitle: String?, fadeIn: Int, time: Int, fadeOut: Int) {
- getMinecraft().inGameHud.apply {
- setTitleTicks(fadeIn, time, fadeOut)
- if (title != null)
- setTitle(TextComponent(title))
- if (subtitle != null)
- setSubtitle(TextComponent(subtitle))
- }
- }
-
- /**
- * Copies a string to the clipboard
- *
- * @param text The text to copy
- */
- @JvmStatic
- @JvmOverloads
- fun copy(text: String = "") {
- getMinecraft().keyboard.clipboard = text
- }
-
- /**
- * Get the string currently on the clipboard
- */
- @JvmStatic
- fun paste(): String = getMinecraft().keyboard.clipboard
-
- /**
- * Get the [KeyBinding] from an already existing Minecraft KeyBinding, otherwise, returns null.
- *
- * @param keyCode the keycode to search for, see Keyboard below. Ex. Keyboard.KEY_A
- * @return the [KeyBinding] from a Minecraft KeyBinding, or null if one doesn't exist
- * @see [org.lwjgl.input.Keyboard](http://legacy.lwjgl.org/javadoc/org/lwjgl/input/Keyboard.html)
- */
- @JvmStatic
- fun getKeyBindFromKey(keyCode: Int): KeyBind? {
- return KeyBind.getKeyBinds().find { it.getKeyCode() == keyCode }
- ?: getMinecraft().options.allKeys
- .find { it.asMixin().boundKey.code == keyCode }
- ?.let(::KeyBind)
- }
-
- /**
- * Get the [KeyBinding] from an already existing Minecraft KeyBinding, else, return a new one.
- *
- * @param keyCode the keycode which the keybind will respond to, see Keyboard below. Ex. Keyboard.KEY_A
- * @param description the description of the keybind
- * @param category the keybind category the keybind will be in
- * @return the [KeyBinding] from a Minecraft KeyBinding, or a new one if one doesn't exist
- * @see [org.lwjgl.input.Keyboard](http://legacy.lwjgl.org/javadoc/org/lwjgl/input/Keyboard.html)
- */
- @JvmStatic
- @JvmOverloads
- fun getKeyBindFromKey(keyCode: Int, description: String, category: String = "ChatTriggers"): KeyBind {
- return getKeyBindFromKey(keyCode) ?: KeyBind(description, keyCode, category)
- }
-
- /**
- * Get the [KeyBinding] from an already existing
- * Minecraft KeyBinding, otherwise, returns null.
- *
- * @param description the description of the keybind
- * @return the [KeyBinding], or null if one doesn't exist
- */
- @JvmStatic
- fun getKeyBindFromDescription(description: String): KeyBind? {
- return KeyBind.getKeyBinds()
- .find { it.getDescription() == description }
- ?: getMinecraft().options.allKeys
- .find { it.translationKey == description }
- ?.let(::KeyBind)
- }
-
- class CurrentGuiWrapper {
- /**
- * Gets the Java class name of the currently open gui, for example, "GuiChest"
- *
- * @return the class name of the current gui
- */
- fun getClassName(): String = get()?.javaClass?.simpleName ?: "null"
-
- /**
- * Gets the Minecraft gui class that is currently open
- *
- * @return the Minecraft gui
- */
- fun get(): Screen? = getMinecraft().currentScreen
-
- fun set(screen: Screen?) {
- scheduleTask {
- getMinecraft().setScreen(screen)
- }
- }
-
- /**
- * Gets the slot under the mouse in the current gui, if one exists.
- *
- * @return the [Slot] under the mouse
- */
- fun getSlotUnderMouse(): Slot? {
- val screen: Screen? = get()
- return if (screen is HandledScreen<*>) {
- screen.asMixin().invokeGetSlotAt(getMouseX(), getMouseY())?.let(::Slot)
- } else null
- }
-
- /**
- * Closes the currently open gui
- */
- fun close() {
- scheduleTask { Player.toMC()?.closeScreen() }
- }
- }
-
- class CameraWrapper {
- fun getX(): Double = getMinecraft().gameRenderer.camera.pos.x
-
- fun getY(): Double = getMinecraft().gameRenderer.camera.pos.y
-
- fun getZ(): Double = getMinecraft().gameRenderer.camera.pos.z
- }
-}
diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/client/KeyBind.kt b/src/main/kotlin/com/chattriggers/ctjs/api/client/KeyBind.kt
deleted file mode 100644
index 7d25f919..00000000
--- a/src/main/kotlin/com/chattriggers/ctjs/api/client/KeyBind.kt
+++ /dev/null
@@ -1,243 +0,0 @@
-package com.chattriggers.ctjs.api.client
-
-import com.chattriggers.ctjs.api.triggers.RegularTrigger
-import com.chattriggers.ctjs.api.triggers.TriggerType
-import com.chattriggers.ctjs.api.world.World
-import com.chattriggers.ctjs.internal.BoundKeyUpdater
-import com.chattriggers.ctjs.internal.mixins.GameOptionsAccessor
-import com.chattriggers.ctjs.internal.mixins.KeyBindingAccessor
-import com.chattriggers.ctjs.internal.utils.Initializer
-import com.chattriggers.ctjs.internal.utils.asMixin
-import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents
-import net.minecraft.client.option.KeyBinding
-import net.minecraft.client.resource.language.I18n
-import org.apache.commons.lang3.ArrayUtils
-import java.util.concurrent.CopyOnWriteArrayList
-
-class KeyBind {
- private val keyBinding: KeyBinding
- private var onKeyPress: RegularTrigger? = null
- private var onKeyRelease: RegularTrigger? = null
- private var onKeyDown: RegularTrigger? = null
-
- private var down: Boolean = false
-
- /**
- * Creates a new keybind, editable in the user's controls.
- *
- * @param description what the keybind does
- * @param keyCode the keycode which the keybind will respond to, see Keyboard below. Ex. Keyboard.KEY_A
- * @param category the keybind category the keybind will be in
- * @see [org.lwjgl.input.Keyboard](http://legacy.lwjgl.org/javadoc/org/lwjgl/input/Keyboard.html)
- */
- @JvmOverloads
- constructor(description: String, keyCode: Int, category: String = "ChatTriggers") {
- val possibleDuplicate = Client.getMinecraft().options.allKeys.find {
- I18n.translate(it.translationKey) == I18n.translate(description) &&
- I18n.translate(it.category) == I18n.translate(category)
- }
-
- if (possibleDuplicate != null) {
- require(possibleDuplicate in customKeyBindings) {
- "KeyBind already exists! To get a KeyBind from an existing Minecraft KeyBinding, " +
- "use the other KeyBind constructor or Client.getKeyBindFromKey."
- }
- keyBinding = possibleDuplicate
- } else {
- if (category !in KeyBindingAccessor.getKeyCategories()) {
- uniqueCategories[category] = 0
- }
- uniqueCategories[category] = uniqueCategories[category]!! + 1
- keyBinding = KeyBinding(description, keyCode, category)
-
- // We need to update the bound key for the KeyBind we just made to the previous binding,
- // just in case it existed last time the game was opened. This will only matter for the first
- // time launching the game, as subsequent CT loads will cause possibleDuplicate to be found.
- Client.getMinecraft().options.asMixin().ctjs_updateBoundKey(keyBinding)
- KeyBinding.updateKeysByCode()
-
- addKeyBinding(keyBinding)
- customKeyBindings.add(keyBinding)
- }
-
- keyBinds.add(this)
- }
-
- constructor(keyBinding: KeyBinding) {
- this.keyBinding = keyBinding
- keyBinds.add(this)
- }
-
- fun registerKeyPress(method: Any) = apply {
- onKeyPress = RegularTrigger(method, TriggerType.OTHER)
- }
-
- fun registerKeyRelease(method: Any) = apply {
- onKeyRelease = RegularTrigger(method, TriggerType.OTHER)
- }
-
- fun registerKeyDown(method: Any) = apply {
- onKeyDown = RegularTrigger(method, TriggerType.OTHER)
- }
-
- fun unregisterKeyPress() = apply {
- onKeyPress?.unregister()
- onKeyPress = null
- }
-
- fun unregisterKeyRelease() = apply {
- onKeyRelease?.unregister()
- onKeyRelease = null
- }
-
- fun unregisterKeyDown() = apply {
- onKeyDown?.unregister()
- onKeyDown = null
- }
-
- internal fun onTick() {
- if (isPressed() && !down) {
- if (keyBinding in customKeyBindings) {
- while (keyBinding.wasPressed()) {
- // consume the key press if not built-in keybinding
- }
- }
-
- onKeyPress?.trigger(arrayOf())
- down = true
- }
-
- if (isKeyDown()) {
- onKeyDown?.trigger(arrayOf())
- down = true
- }
-
- if (down && !isKeyDown()) {
- while (keyBinding.wasPressed()) {
- // consume the rest of the key presses
- }
-
- onKeyRelease?.trigger(arrayOf())
- down = false
- }
- }
-
- /**
- * Returns true if the key is pressed (used for continuous querying).
- *
- * @return whether the key is pressed
- */
- fun isKeyDown(): Boolean = keyBinding.isPressed
-
- /**
- * Returns true on the initial key press. For continuous querying use [isKeyDown].
- *
- * @return whether the key has just been pressed
- */
- fun isPressed(): Boolean = keyBinding.asMixin().timesPressed > 0
-
- /**
- * Gets the description of the key.
- *
- * @return the description
- */
- fun getDescription(): String = keyBinding.translationKey
-
- /**
- * Gets the key code of the key.
- *
- * @return the integer key code
- */
- fun getKeyCode(): Int = keyBinding.asMixin().boundKey.code
-
- /**
- * Gets the category of the key.
- *
- * @return the category
- */
- fun getCategory(): String = keyBinding.category
-
- /**
- * Sets the state of the key.
- *
- * @param pressed True to press, False to release
- */
- fun setState(pressed: Boolean) =
- KeyBinding.setKeyPressed(keyBinding.asMixin().boundKey, pressed)
-
- override fun toString() = "KeyBind{" +
- "description=${getDescription()}, " +
- "keyCode=${getKeyCode()}, " +
- "category=${getCategory()}" +
- "}"
-
- companion object : Initializer {
- private val customKeyBindings = mutableSetOf()
- private val uniqueCategories = mutableMapOf()
- private val keyBinds = CopyOnWriteArrayList()
-
- internal fun getKeyBinds() = keyBinds
-
- override fun init() {
- ClientTickEvents.START_CLIENT_TICK.register {
- if (!World.isLoaded())
- return@register
-
- keyBinds.forEach {
- // This used to cause crashes on legacy sometimes. If it starts crashing again,
- // we'll add the empty try-catch block back
- it.onTick()
- }
- }
- }
-
- internal fun clearKeyBinds() {
- keyBinds.toList().forEach(::removeKeyBind)
- customKeyBindings.clear()
- keyBinds.clear()
- }
-
- private fun removeKeyBinding(keyBinding: KeyBinding) {
- Client.getMinecraft().options.asMixin().setAllKeys(
- ArrayUtils.removeElement(
- Client.getMinecraft().options.allKeys,
- keyBinding
- )
- )
- val category = keyBinding.category
-
- if (category in uniqueCategories) {
- uniqueCategories[category] = uniqueCategories[category]!! - 1
-
- if (uniqueCategories[category] == 0) {
- uniqueCategories.remove(category)
- KeyBindingAccessor.getKeyCategories().remove(category)
- }
- }
- }
-
- private fun removeKeyBind(keyBind: KeyBind) {
- val keyBinding = keyBind.keyBinding
- if (keyBinding !in customKeyBindings) return
-
- removeKeyBinding(keyBinding)
- customKeyBindings.remove(keyBinding)
- keyBinds.remove(keyBind)
- }
-
- private fun addKeyBinding(keyBinding: KeyBinding): KeyBinding {
- Client.getMinecraft().options.asMixin().setAllKeys(
- ArrayUtils.add(
- Client.getMinecraft().options.allKeys,
- keyBinding
- )
- )
-
- val categoryMap = KeyBindingAccessor.getCategoryMap()
- val maxInt = categoryMap.values.max() ?: 0
- categoryMap[keyBinding.category] = maxInt + 1
-
- return keyBinding
- }
- }
-}
diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/client/MathLib.kt b/src/main/kotlin/com/chattriggers/ctjs/api/client/MathLib.kt
deleted file mode 100644
index 32aee7d4..00000000
--- a/src/main/kotlin/com/chattriggers/ctjs/api/client/MathLib.kt
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.chattriggers.ctjs.api.client
-
-object MathLib {
- /**
- * Maps a number from one range to another.
- *
- * @param number the number to map
- * @param in_min the original range min
- * @param in_max the original range max
- * @param out_min the final range min
- * @param out_max the final range max
- * @return the re-mapped number
- */
- @JvmStatic
- fun map(number: Float, in_min: Float, in_max: Float, out_min: Float, out_max: Float): Float {
- return (number - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
- }
-
- /**
- * Clamps a floating number between two values.
- *
- * @param number the number to clamp
- * @param min the minimum
- * @param max the maximum
- * @return the clamped number
- */
- @JvmStatic
- fun clampFloat(number: Float, min: Float, max: Float): Float {
- return number.coerceIn(min, max)
- }
-
- /**
- * Clamps an integer number between two values.
- *
- * @param number the number to clamp
- * @param min the minimum
- * @param max the maximum
- * @return the clamped number
- */
- @JvmStatic
- fun clamp(number: Int, min: Int, max: Int): Int {
- return number.coerceIn(min, max)
- }
-}
diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/client/Player.kt b/src/main/kotlin/com/chattriggers/ctjs/api/client/Player.kt
deleted file mode 100644
index a84ec220..00000000
--- a/src/main/kotlin/com/chattriggers/ctjs/api/client/Player.kt
+++ /dev/null
@@ -1,374 +0,0 @@
-package com.chattriggers.ctjs.api.client
-
-import com.chattriggers.ctjs.api.entity.Entity
-import com.chattriggers.ctjs.api.entity.PlayerMP
-import com.chattriggers.ctjs.api.entity.Team
-import com.chattriggers.ctjs.api.inventory.Inventory
-import com.chattriggers.ctjs.api.inventory.Item
-import com.chattriggers.ctjs.api.message.TextComponent
-import com.chattriggers.ctjs.api.render.Renderer
-import com.chattriggers.ctjs.api.world.PotionEffect
-import com.chattriggers.ctjs.api.world.Scoreboard
-import com.chattriggers.ctjs.api.world.World
-import com.chattriggers.ctjs.api.world.block.BlockFace
-import com.chattriggers.ctjs.api.world.block.BlockPos
-import gg.essential.universal.UMath
-import gg.essential.universal.UMinecraft
-import net.minecraft.client.gui.screen.ingame.HandledScreen
-import net.minecraft.util.Hand
-import net.minecraft.util.hit.BlockHitResult
-import net.minecraft.util.hit.EntityHitResult
-import net.minecraft.util.hit.HitResult
-import net.minecraft.util.math.Vec2f
-import org.mozilla.javascript.NativeObject
-import java.util.*
-
-object Player {
- @JvmStatic
- fun toMC() = UMinecraft.getMinecraft().player
-
- @JvmField
- val armor = ArmorWrapper()
-
- /**
- * Gets Minecraft's EntityPlayerSP object representing the user
- *
- * @return The Minecraft EntityPlayerSP object representing the user
- */
- @Deprecated("Use toMC", ReplaceWith("toMC()"))
- @JvmStatic
- fun getPlayer() = toMC()
-
- @JvmStatic
- fun getTeam(): Team? = Scoreboard.toMC()?.getTeam(getName())?.let(::Team)
-
- @JvmStatic
- fun asPlayerMP(): PlayerMP? = toMC()?.let(::PlayerMP)
-
- @JvmStatic
- fun getX(): Double = toMC()?.x ?: 0.0
-
- @JvmStatic
- fun getY(): Double = toMC()?.y ?: 0.0
-
- @JvmStatic
- fun getZ(): Double = toMC()?.z ?: 0.0
-
- @JvmStatic
- fun getPos(): BlockPos = BlockPos(getX(), getY(), getZ())
-
- @JvmStatic
- fun getRotation() = toMC()?.rotationClient ?: Vec2f(0f, 0f)
-
- @JvmStatic
- fun getLastX(): Double = toMC()?.lastRenderX ?: 0.0
-
- @JvmStatic
- fun getLastY(): Double = toMC()?.lastRenderY ?: 0.0
-
- @JvmStatic
- fun getLastZ(): Double = toMC()?.lastRenderZ ?: 0.0
-
- @JvmStatic
- fun getRenderX(): Double = getLastX() + (getX() - getLastX()) * Renderer.partialTicks
-
- @JvmStatic
- fun getRenderY(): Double = getLastY() + (getY() - getLastY()) * Renderer.partialTicks
-
- @JvmStatic
- fun getRenderZ(): Double = getLastZ() + (getZ() - getLastZ()) * Renderer.partialTicks
-
- /**
- * Gets the player's x motion.
- * This is the amount the player will move in the x direction next tick.
- *
- * @return the player's x motion
- */
- @JvmStatic
- fun getMotionX(): Double = toMC()?.velocity?.x ?: 0.0
-
- /**
- * Gets the player's y motion.
- * This is the amount the player will move in the y direction next tick.
- *
- * @return the player's y motion
- */
- @JvmStatic
- fun getMotionY(): Double = toMC()?.velocity?.y ?: 0.0
-
- /**
- * Gets the player's z motion.
- * This is the amount the player will move in the z direction next tick.
- *
- * @return the player's z motion
- */
- @JvmStatic
- fun getMotionZ(): Double = toMC()?.velocity?.z ?: 0.0
-
- /**
- * Gets the player's camera pitch.
- *
- * @return the player's camera pitch
- */
- @JvmStatic
- fun getPitch(): Double = UMath.wrapAngleTo180(toMC()?.pitch?.toDouble() ?: 0.0)
-
- /**
- * Gets the player's camera yaw.
- *
- * @return the player's camera yaw
- */
- @JvmStatic
- fun getYaw(): Double = UMath.wrapAngleTo180(toMC()?.yaw?.toDouble() ?: 0.0)
-
- /**
- * Gets the player's username.
- *
- * @return the player's username
- */
- @JvmStatic
- fun getName(): String = UMinecraft.getMinecraft().session.username
-
- /**
- * Gets the Java UUID object of the player.
- * Use of [UUID.toString] in conjunction is recommended.
- *
- * @return the player's uuid
- */
- @JvmStatic
- fun getUUID(): UUID = UMinecraft.getMinecraft().gameProfile.id
-
- @JvmStatic
- fun getHP(): Float = toMC()?.health ?: 0f
-
- @JvmStatic
- fun getHunger(): Int = toMC()?.hungerManager?.foodLevel ?: 0
-
- @JvmStatic
- fun getSaturation(): Float = toMC()?.hungerManager?.saturationLevel ?: 0f
-
- @JvmStatic
- fun getArmorPoints(): Int = toMC()?.armor ?: 0
-
- /**
- * Gets the player's air level.
- *
- * The returned value will be an integer. If the player is not taking damage, it
- * will be between 300 (not in water) and 0. If the player is taking damage, it
- * will be between -20 and 0, getting reset to 0 every time the player takes damage.
- *
- * @return the player's air level
- */
- @JvmStatic
- fun getAirLevel(): Int = toMC()?.air ?: 0
-
- @JvmStatic
- fun getXPLevel(): Int = toMC()?.experienceLevel ?: 0
-
- @JvmStatic
- fun getXPProgress(): Float = toMC()?.experienceProgress ?: 0f
-
- @JvmStatic
- fun getBiome(): String {
- val pos = toMC()?.blockPos ?: return ""
- val biomeEntry = World.toMC()?.getBiome(pos) ?: return ""
-
- return biomeEntry.key.get().value.path
- }
-
- /**
- * Gets the light level at the player's current position.
- *
- * @return the light level at the player's current position
- */
- @JvmStatic
- fun getLightLevel(): Int = World.toMC()?.getLightLevel(toMC()?.blockPos) ?: 0
-
- @JvmStatic
- fun isMoving(): Boolean = toMC()?.movementSpeed?.let { it != 0f } ?: false
-
- @JvmStatic
- fun isSneaking(): Boolean = toMC()?.isSneaking ?: false
-
- @JvmStatic
- fun isSprinting(): Boolean = toMC()?.isSprinting ?: false
-
- /**
- * Checks if player can be pushed by water.
- *
- * @return true if the player is flying, false otherwise
- */
- @JvmStatic
- fun isFlying(): Boolean = toMC()?.abilities?.flying ?: false
-
- @JvmStatic
- fun isSleeping(): Boolean = toMC()?.isSleeping ?: false
-
- /**
- * Gets the direction the player is facing.
- * Example: "South West"
- *
- * @return The direction the player is facing, one of the four cardinal directions
- */
- @JvmStatic
- fun facing(): String {
- if (toMC() == null) return ""
-
- val yaw = getYaw()
-
- return when {
- yaw in -22.5..22.5 -> "South"
- yaw in 22.5..67.5 -> "South West"
- yaw in 67.5..112.5 -> "West"
- yaw in 112.5..157.5 -> "North West"
- yaw < -157.5 || yaw > 157.5 -> "North"
- yaw in -157.5..-112.5 -> "North East"
- yaw in -112.5..-67.5 -> "East"
- yaw in -67.5..-22.5 -> "South East"
- else -> ""
- }
- }
-
- /**
- * Gets the current active potion effects. Returns an empty list
- * if the player has no active potion effects.
- *
- * @return a list of the active [PotionEffect]s
- */
- @JvmStatic
- fun getActivePotionEffects(): List =
- toMC()?.activeStatusEffects?.values?.map(::PotionEffect).orEmpty()
-
- /**
- * Gets the current object that the player is looking at,
- * whether that be a block or an entity. Returns null when not looking
- * at anything.
- *
- * @return the [Block] or [Entity] being looked at, or null if air
- */
- @JvmStatic
- fun lookingAt(): Any? {
- val target = Client.getMinecraft().crosshairTarget
-
- return when (target?.type) {
- HitResult.Type.MISS -> null
- HitResult.Type.BLOCK -> {
- val block = target as BlockHitResult
- World.getBlockAt(BlockPos(block.blockPos)).withFace(BlockFace.fromMC(block.side))
- }
- HitResult.Type.ENTITY -> {
- Entity.fromMC((target as EntityHitResult).entity)
- }
- null -> null
- }
- }
-
- /**
- * Gets the current item in the player's hand.
- *
- * @param hand the hand of the item
- * @return the current held [Item]
- */
- @JvmOverloads
- @JvmStatic
- fun getHeldItem(hand: Hand = Hand.MAIN_HAND): Item? {
- return toMC()?.getStackInHand(hand)?.let(Item::fromMC)
- }
-
- /**
- * Sets the current held item based on the provided index.
- *
- * @param index the new held item index
- */
- @JvmStatic
- fun setHeldItemIndex(index: Int) {
- toMC()?.inventory?.selectedSlot = index
- }
-
- /**
- * Gets the current index of the held item.
- *
- * @return the current index
- */
- @JvmStatic
- fun getHeldItemIndex(): Int = toMC()?.inventory?.selectedSlot ?: -1
-
- /**
- * Gets the inventory of the player, i.e. the inventory accessed by 'e'.
- *
- * @return the player's inventory
- */
- @JvmStatic
- fun getInventory(): Inventory? = toMC()?.inventory?.let(::Inventory)
-
- /**
- * Gets the display name for the player,
- * i.e. the name shown in tab list and in the player's nametag.
- * @return the display name
- */
- @JvmStatic
- fun getDisplayName(): TextComponent = asPlayerMP()?.getDisplayName() ?: TextComponent("")
-
- /**
- * Sets the name for this player shown in tab list
- *
- * @param textComponent the new name to display
- */
- @JvmStatic
- fun setTabDisplayName(textComponent: TextComponent) {
- asPlayerMP()?.setTabDisplayName(textComponent)
- }
-
- /**
- * Sets the name for this player shown above their head,
- * in their name tag
- *
- * @param textComponent the new name to display
- */
- @JvmStatic
- fun setNametagName(textComponent: TextComponent) {
- asPlayerMP()?.setNametagName(textComponent)
- }
-
- /**
- * Gets the container the user currently has open, i.e. a chest.
- *
- * @return the currently opened container
- */
- @JvmStatic
- fun getContainer(): Inventory? = (Client.getMinecraft().currentScreen as? HandledScreen<*>)?.let(::Inventory)
-
- /**
- * Draws the player in the GUI. Takes the same parameters as [Renderer.drawPlayer]
- * minus `player`.
- *
- * @see Renderer.drawPlayer
- */
- @JvmStatic
- fun draw(obj: NativeObject) = apply {
- obj["player"] = this
- Renderer.drawPlayer(obj)
- }
-
- class ArmorWrapper {
- /**
- * @return the [Item] in the player's helmet slot or null if the slot is empty
- */
- fun getHelmet(): Item? = getInventory()?.getStackInSlot(39)
-
- /**
- * @return the [Item] in the player's chestplate slot or null if the slot is empty
- */
- fun getChestplate(): Item? = getInventory()?.getStackInSlot(38)
-
- /**
- * @return the [Item] in the player's leggings slot or null if the slot is empty
- */
- fun getLeggings(): Item? = getInventory()?.getStackInSlot(37)
-
- /**
- * @return the [Item] in the player's boots slot or null if the slot is empty
- */
- fun getBoots(): Item? = getInventory()?.getStackInSlot(36)
- }
-}
diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/client/Settings.kt b/src/main/kotlin/com/chattriggers/ctjs/api/client/Settings.kt
deleted file mode 100644
index 37ee3250..00000000
--- a/src/main/kotlin/com/chattriggers/ctjs/api/client/Settings.kt
+++ /dev/null
@@ -1,362 +0,0 @@
-package com.chattriggers.ctjs.api.client
-
-import com.chattriggers.ctjs.*
-import com.chattriggers.ctjs.api.CTWrapper
-import com.chattriggers.ctjs.api.world.World
-import gg.essential.universal.UMinecraft
-import net.minecraft.entity.player.PlayerModelPart
-import net.minecraft.sound.SoundCategory
-
-object Settings {
- @JvmStatic
- fun toMC() = UMinecraft.getSettings()
-
- @JvmStatic
- @Deprecated("Use toMC", ReplaceWith("toMC()"))
- fun getSettings() = toMC()
-
- @JvmStatic
- fun getFOV() = toMC().fov.value
-
- @JvmStatic
- fun setFOV(fov: Int) {
- toMC().fov.value = fov
- }
-
- @JvmStatic
- fun getDifficulty() = World.getDifficulty()
-
- @JvmField
- val skin = SkinWrapper()
-
- @JvmField
- val sound = SoundWrapper()
-
- @JvmField
- val chat = ChatWrapper()
-
- @JvmField
- val video = VideoWrapper()
-
- class SkinWrapper {
- fun isCapeEnabled() = toMC().isPlayerModelPartEnabled(PlayerModelPart.CAPE)
-
- fun setCapeEnabled(toggled: Boolean) {
- toMC().togglePlayerModelPart(PlayerModelPart.CAPE, toggled)
- }
-
- fun isJacketEnabled() = toMC().isPlayerModelPartEnabled(PlayerModelPart.JACKET)
-
- fun setJacketEnabled(toggled: Boolean) {
- toMC().togglePlayerModelPart(PlayerModelPart.JACKET, toggled)
- }
-
- fun isLeftSleeveEnabled() = toMC().isPlayerModelPartEnabled(PlayerModelPart.LEFT_SLEEVE)
-
- fun setLeftSleeveEnabled(toggled: Boolean) {
- toMC().togglePlayerModelPart(PlayerModelPart.LEFT_SLEEVE, toggled)
- }
-
- fun isRightSleeveEnabled() = toMC().isPlayerModelPartEnabled(PlayerModelPart.RIGHT_SLEEVE)
-
- fun setRightSleeveEnabled(toggled: Boolean) {
- toMC().togglePlayerModelPart(PlayerModelPart.RIGHT_SLEEVE, toggled)
- }
-
- fun isLeftPantsLegEnabled() = toMC().isPlayerModelPartEnabled(PlayerModelPart.LEFT_PANTS_LEG)
-
- fun setLeftPantsLegEnabled(toggled: Boolean) {
- toMC().togglePlayerModelPart(PlayerModelPart.LEFT_PANTS_LEG, toggled)
- }
-
- fun isRightPantsLegEnabled() = toMC().isPlayerModelPartEnabled(PlayerModelPart.RIGHT_PANTS_LEG)
-
- fun setRightPantsLegEnabled(toggled: Boolean) {
- toMC().togglePlayerModelPart(PlayerModelPart.RIGHT_PANTS_LEG, toggled)
- }
-
- fun isHatEnabled() = toMC().isPlayerModelPartEnabled(PlayerModelPart.HAT)
-
- fun setHatEnabled(toggled: Boolean) {
- toMC().togglePlayerModelPart(PlayerModelPart.HAT, toggled)
- }
- }
-
- class SoundWrapper {
- fun getMasterVolume() = toMC().getSoundVolumeOption(SoundCategory.MASTER).value
-
- fun setMasterVolume(level: Double) {
- toMC().getSoundVolumeOption(SoundCategory.MASTER).value = level
- }
-
- fun getMusicVolume() = toMC().getSoundVolumeOption(SoundCategory.MUSIC).value
-
- fun setMusicVolume(level: Double) {
- toMC().getSoundVolumeOption(SoundCategory.MUSIC).value = level
- }
-
- fun getNoteblockVolume() = toMC().getSoundVolumeOption(SoundCategory.RECORDS).value
-
- fun setNoteblockVolume(level: Double) {
- toMC().getSoundVolumeOption(SoundCategory.RECORDS).value = level
- }
-
- fun getWeather() = toMC().getSoundVolumeOption(SoundCategory.WEATHER).value
-
- fun setWeather(level: Double) {
- toMC().getSoundVolumeOption(SoundCategory.WEATHER).value = level
- }
-
- fun getBlocks() = toMC().getSoundVolumeOption(SoundCategory.BLOCKS).value
-
- fun setBlocks(level: Double) {
- toMC().getSoundVolumeOption(SoundCategory.BLOCKS).value = level
- }
-
- fun getHostileCreatures() = toMC().getSoundVolumeOption(SoundCategory.HOSTILE).value
-
- fun setHostileCreatures(level: Double) {
- toMC().getSoundVolumeOption(SoundCategory.HOSTILE).value = level
- }
-
- fun getFriendlyCreatures() = toMC().getSoundVolumeOption(SoundCategory.NEUTRAL).value
-
- fun setFriendlyCreatures(level: Double) {
- toMC().getSoundVolumeOption(SoundCategory.NEUTRAL).value = level
- }
-
- fun getPlayers() = toMC().getSoundVolumeOption(SoundCategory.PLAYERS).value
-
- fun setPlayers(level: Double) {
- toMC().getSoundVolumeOption(SoundCategory.PLAYERS).value = level
- }
-
- fun getAmbient() = toMC().getSoundVolumeOption(SoundCategory.AMBIENT).value
-
- fun setAmbient(level: Double) {
- toMC().getSoundVolumeOption(SoundCategory.AMBIENT).value = level
- }
- }
-
- class VideoWrapper {
- fun getGraphicsMode() = GraphicsMode.fromMC(toMC().graphicsMode.value)
-
- fun setGraphicsMode(mode: GraphicsMode) {
- toMC().graphicsMode.value = mode.toMC()
- }
-
- fun getRenderDistance() = toMC().viewDistance.value
-
- fun setRenderDistance(distance: Int) {
- toMC().viewDistance.value = distance
- }
-
- fun getSmoothLighting() = toMC().ao.value
-
- fun setSmoothLighting(enabled: Boolean) {
- toMC().ao.value = enabled
- }
-
- fun getMaxFrameRate() = toMC().maxFps.value
-
- fun setMaxFrameRate(frameRate: Int) {
- toMC().maxFps.value = frameRate
- }
-
- fun getBobbing() = toMC().bobView.value
-
- fun setBobbing(toggled: Boolean) {
- toMC().bobView.value = toggled
- }
-
- fun getGuiScale() = toMC().guiScale.value
-
- fun setGuiScale(scale: Int) {
- toMC().guiScale.value = scale
- }
-
- fun getBrightness() = toMC().gamma.value
-
- fun setBrightness(brightness: Double) {
- toMC().gamma.value = brightness
- }
-
- fun getClouds() = CloudRenderMode.fromMC(toMC().cloudRenderMode.value)
-
- fun setClouds(clouds: CloudRenderMode) {
- toMC().cloudRenderMode.value = clouds.toMC()
- }
-
- fun getParticles() = ParticlesMode.fromMC(toMC().particles.value)
-
- fun setParticles(particles: ParticlesMode) {
- toMC().particles.value = particles.toMC()
- }
-
- fun getFullscreen() = toMC().fullscreen.value
-
- fun setFullscreen(toggled: Boolean) {
- toMC().fullscreen.value = toggled
- }
-
- fun getVsync() = toMC().enableVsync.value
-
- fun setVsync(toggled: Boolean) {
- toMC().enableVsync.value = toggled
- }
-
- fun getMipmapLevels() = toMC().mipmapLevels.value
-
- fun setMipmapLevels(mipmapLevels: Int) {
- toMC().mipmapLevels.value = mipmapLevels
- }
-
- fun getEntityShadows() = toMC().entityShadows.value
-
- fun setEntityShadows(toggled: Boolean) {
- toMC().entityShadows.value = toggled
- }
- }
-
- class ChatWrapper {
- fun getVisibility() = ChatVisibility.fromMC(toMC().chatVisibility.value)
-
- fun setVisibility(visibility: ChatVisibility) {
- toMC().chatVisibility.value = visibility.toMC()
- }
-
- fun getColors() = toMC().chatColors.value
-
- fun setColors(toggled: Boolean) {
- toMC().chatColors.value = toggled
- }
-
- fun getWebLinks() = toMC().chatLinks.value
-
- fun setWebLinks(toggled: Boolean) {
- toMC().chatLinks.value = toggled
- }
-
- fun getOpacity() = toMC().chatOpacity.value
-
- fun setOpacity(opacity: Double) {
- toMC().chatOpacity.value = opacity
- }
-
- fun getPromptOnWebLinks() = toMC().chatLinksPrompt.value
-
- fun setPromptOnWebLinks(toggled: Boolean) {
- toMC().chatLinksPrompt.value = toggled
- }
-
- fun getScale() = toMC().chatScale.value
-
- fun setScale(scale: Double) {
- toMC().chatScale.value = scale
- }
-
- fun getFocusedHeight() = toMC().chatHeightFocused.value
-
- fun setFocusedHeight(height: Double) {
- toMC().chatHeightFocused.value = height
- }
-
- fun getUnfocusedHeight() = toMC().chatHeightUnfocused.value
-
- fun setUnfocusedHeight(height: Double) {
- toMC().chatHeightUnfocused.value = height
- }
-
- fun getWidth() = toMC().chatWidth.value
-
- fun setWidth(width: Double) {
- toMC().chatWidth.value = width
- }
-
- fun getReducedDebugInfo() = toMC().reducedDebugInfo.value
-
- fun setReducedDebugInfo(toggled: Boolean) {
- toMC().reducedDebugInfo.value = toggled
- }
- }
-
- enum class CloudRenderMode(override val mcValue: MCCloudRenderMode) : CTWrapper {
- OFF(MCCloudRenderMode.OFF),
- FAST(MCCloudRenderMode.FAST),
- FANCY(MCCloudRenderMode.FANCY);
-
- companion object {
- @JvmStatic
- fun fromMC(mcValue: MCCloudRenderMode) = entries.first { it.mcValue == mcValue }
-
- @JvmStatic
- fun from(value: Any) = when (value) {
- is CharSequence -> valueOf(value.toString())
- is MCCloudRenderMode -> fromMC(value)
- is CloudRenderMode -> value
- else -> throw IllegalArgumentException("Cannot create CloudRenderMode from $value")
- }
- }
- }
-
- enum class ParticlesMode(override val mcValue: MCParticlesMode) : CTWrapper {
- ALL(MCParticlesMode.ALL),
- DECREASED(MCParticlesMode.DECREASED),
- MINIMAL(MCParticlesMode.MINIMAL);
-
- companion object {
- @JvmStatic
- fun fromMC(mcValue: MCParticlesMode) = entries.first { it.mcValue == mcValue }
-
- @JvmStatic
- fun from(value: Any) = when (value) {
- is CharSequence -> valueOf(value.toString())
- is MCParticlesMode -> fromMC(value)
- is ParticlesMode -> value
- else -> throw IllegalArgumentException("Cannot create ParticlesMode from $value")
- }
- }
- }
-
- enum class ChatVisibility(override val mcValue: MCChatVisibility) : CTWrapper {
- FULL(MCChatVisibility.FULL),
- SYSTEM(MCChatVisibility.SYSTEM),
- HIDDEN(MCChatVisibility.HIDDEN);
-
- companion object {
- @JvmStatic
- fun fromMC(mcValue: MCChatVisibility) = entries.first { it.mcValue == mcValue }
-
- @JvmStatic
- fun from(value: Any) = when (value) {
- is CharSequence -> valueOf(value.toString())
- is MCChatVisibility -> fromMC(value)
- is ChatVisibility -> value
- else -> throw IllegalArgumentException("Cannot create ChatVisibility from $value")
- }
- }
- }
-
- enum class Difficulty(override val mcValue: MCDifficulty) : CTWrapper {
- PEACEFUL(MCDifficulty.PEACEFUL),
- EASY(MCDifficulty.EASY),
- NORMAL(MCDifficulty.NORMAL),
- HARD(MCDifficulty.HARD);
-
- companion object {
- @JvmStatic
- fun fromMC(mcValue: MCDifficulty) = entries.first { it.mcValue == mcValue }
- }
- }
-
- enum class GraphicsMode(override val mcValue: MCGraphicsMode) : CTWrapper {
- FAST(MCGraphicsMode.FAST),
- FANCY(MCGraphicsMode.FANCY),
- FABULOUS(MCGraphicsMode.FABULOUS);
-
- companion object {
- @JvmStatic
- fun fromMC(mcValue: MCGraphicsMode) = entries.first { it.mcValue == mcValue }
- }
- }
-}
diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/client/Sound.kt b/src/main/kotlin/com/chattriggers/ctjs/api/client/Sound.kt
deleted file mode 100644
index e5c31393..00000000
--- a/src/main/kotlin/com/chattriggers/ctjs/api/client/Sound.kt
+++ /dev/null
@@ -1,548 +0,0 @@
-package com.chattriggers.ctjs.api.client
-
-import com.chattriggers.ctjs.CTJS
-import com.chattriggers.ctjs.api.CTWrapper
-import com.chattriggers.ctjs.api.world.World
-import com.chattriggers.ctjs.internal.mixins.AbstractSoundInstanceAccessor
-import com.chattriggers.ctjs.internal.mixins.sound.SoundAccessor
-import com.chattriggers.ctjs.internal.mixins.sound.SoundManagerAccessor
-import com.chattriggers.ctjs.internal.mixins.sound.SoundSystemAccessor
-import com.chattriggers.ctjs.MCAttenuationType
-import com.chattriggers.ctjs.MCSound
-import com.chattriggers.ctjs.internal.utils.asMixin
-import gg.essential.universal.UMinecraft
-import net.minecraft.client.sound.MovingSoundInstance
-import net.minecraft.client.sound.Sound.RegistrationType
-import net.minecraft.client.sound.WeightedSoundSet
-import net.minecraft.resource.*
-import net.minecraft.resource.metadata.ResourceMetadata
-import net.minecraft.resource.metadata.ResourceMetadataReader
-import net.minecraft.sound.SoundCategory
-import net.minecraft.sound.SoundEvent
-import net.minecraft.util.Identifier
-import net.minecraft.util.math.Vec3d
-import net.minecraft.util.math.random.Random
-import org.mozilla.javascript.NativeObject
-import java.io.File
-import java.io.InputStream
-import kotlin.io.path.Path
-import kotlin.io.path.nameWithoutExtension
-
-/**
- * Instances a new Sound with certain properties. These properties
- * should be passed through as a normal JavaScript object.
- *
- * REQUIRED:
- * - source (String) - a namespaced-identifier (e.g. `minecraft:music_disc.cat`) for a Minecraft sound, or a filename
- * relative to ChatTriggers assets directory
- *
- * OPTIONAL:
- * - stream (boolean) - whether to stream this sound rather than preload it (should be true for large files), defaults to false
- *
- * CONFIGURABLE (can be set in config object, or changed later):
- * - category (SoundCategory) - which category this sound should be a part of, see [setCategory].
- * - volume (float) - volume of the sound, see [setVolume]
- * - pitch (float) - pitch of the sound, see [setPitch]
- * - x, y, z (float) - location of the sound, see [setPosition]. Defaults to the players position.
- * - attenuationType (AttenuationType) - fade out type of the sound, see [setAttenuationType]
- * - attenuation (int) - The attenuation distance, see [setAttenuation]
- * - loop (boolean) - whether to loop this sound over and over, defaults to false
- * - loopDelay (int) - Ticks to delay between looping this sound
- *
- * @param config the JavaScript config object
- */
-class Sound(private val config: NativeObject) {
- private lateinit var identifier: Identifier
- private lateinit var soundImpl: SoundImpl
- private lateinit var sound: MCSound
- private var isCustom = false
-
- private var isPaused = false
-
- private val source = config["source"]?.toString() ?: throw IllegalArgumentException("Sound source is null.")
-
- // Before bootstrap, we need to store the values ourselves. Afterward, however, we should
- // derive the values from the actual sound object. This switches implementations at the
- // end of bootstrap()
- private var soundData: SoundData = InitialSoundData(config)
-
- private fun bootstrap() {
- if (::sound.isInitialized)
- return
-
- CTJS.sounds.add(this)
-
- val soundManagerAccessor = UMinecraft.getMinecraft().soundManager.asMixin()
- val soundFile = File(CTJS.assetsDir, source)
- if (soundFile.exists()) {
- isCustom = true
- identifier = makeIdentifier(source)
- val resource = Resource(CTResourcePack, soundFile::inputStream, ResourceMetadata::NONE)
- soundManagerAccessor.soundResources[identifier.withPrefixedPath("sounds/").withSuffixedPath(".ogg")] =
- resource
- } else {
- identifier = Identifier.of(source)
- }
-
- soundImpl = SoundImpl(SoundEvent.of(identifier), soundData.category.toMC(), soundData.attenuationType.toMC())
- sound = MCSound(
- identifier,
- { 1f },
- { 1f },
- 1,
- RegistrationType.FILE,
- soundData.stream,
- false,
- soundData.attenuation,
- )
-
- if (isCustom) {
- soundManagerAccessor.sounds[identifier] = WeightedSoundSet(identifier, null).apply {
- add(sound)
- }
- }
-
- val initialData = soundData
- soundData = BootstrappedSoundData(sound, soundImpl)
-
- // Apply all initial values as the user may have changed them
- soundData.loop = initialData.loop
- soundData.loopDelay = initialData.loopDelay
- soundData.x = initialData.x
- soundData.y = initialData.y
- soundData.z = initialData.z
- soundData.attenuation = initialData.attenuation
- soundData.category = initialData.category
- soundData.attenuationType = initialData.attenuationType
- soundData.volume = initialData.volume
- soundData.pitch = initialData.pitch
- }
-
- fun destroy() {
- stop()
- if (isCustom) {
- val soundManagerAccessor = UMinecraft.getMinecraft().soundManager.asMixin()
- soundManagerAccessor.sounds.remove(identifier)
- soundManagerAccessor.soundResources.remove(identifier)
- }
- }
-
- /**
- * Gets the category of this sound, making it respect the Player's sound volume sliders.
- *
- * @return the category
- */
- fun getCategory() = soundData.category
-
- /**
- * Sets the category of this sound, making it respect the Player's sound volume sliders.
- *
- * @param category the category
- */
- fun setCategory(category: Category) = apply {
- soundData.category = category
- }
-
- /**
- * Gets this sound's volume.
- *
- * @return A float value (0.0f - 1.0f).
- */
- fun getVolume() = soundData.volume
-
- /**
- * Sets this sound's volume.
- *
- * @param volume A float value (0.0f - 1.0f).
- */
- fun setVolume(volume: Float) = apply {
- soundData.volume = volume
- }
-
- fun getX() = soundData.x
-
- fun getY() = soundData.y
-
- fun getZ() = soundData.z
-
- fun setX(x: Double) = apply {
- soundData.x = x
- }
-
- fun setY(y: Double) = apply {
- soundData.y = y
- }
-
- fun setZ(z: Double) = apply {
- soundData.z = z
- }
-
- fun getPosition() = Vec3d(getX(), getY(), getZ())
-
- fun setPosition(x: Double, y: Double, z: Double) = apply {
- soundData.x = x
- soundData.y = y
- soundData.z = z
- }
-
- /**
- * Gets this sound's pitch.
- *
- * @return A float value (0.5f - 2.0f).
- */
- fun getPitch() = soundData.pitch
-
- /**
- * Sets this sound's pitch.
- *
- * @param pitch A float value (0.5f - 2.0f).
- */
- fun setPitch(pitch: Float) = apply {
- soundData.pitch = pitch
- }
-
- /**
- * Gets the attenuation type (fade out over space) of the sound
- *
- * @return The type of Attenuation
- */
- fun getAttenuationType() = soundData.attenuationType
-
- /**
- * Sets the attenuation type (fade out over space) of the sound
- *
- * @param attenuationType The type of Attenuation
- */
- fun setAttenuationType(attenuationType: AttenuationType) = apply {
- soundData.attenuationType = attenuationType
- }
-
- /**
- * Gets the attenuation distance of the sound
- */
- fun getAttenuation() = soundData.attenuation
-
- /**
- * Sets the attenuation distance of the sound
- */
- fun setAttenuation(attenuation: Int) = apply {
- soundData.attenuation = attenuation
- }
-
- /**
- * Gets whether the sound should repeat after finishing
- */
- fun getLoop() = soundData.loop
-
- /**
- * Sets whether the sound should repeat after finishing
- */
- fun setLoop(loop: Boolean) = apply {
- soundData.loop = loop
- }
-
- /**
- * Gets the tick delay after finishing before looping again (if getLoop() is true)
- */
- fun getLoopDelay() = soundData.loopDelay
-
- /**
- * Sets the tick delay after finishing before looping again (if getLoop() is true)
- */
- fun setLoopDelay(loopDelay: Int) = apply {
- soundData.loopDelay = loopDelay
- }
-
- /**
- * Plays/resumes the sound. This requires the world to be loaded
- */
- @JvmOverloads
- fun play(delay: Int = 0) {
- // TODO: Figure out how to work without a world
- require (World.isLoaded()) { "Can not play a custom sound outside the world" }
-
- bootstrap()
-
- // soundSystem.play() does a lot of setup and, most importantly, creates a new
- // source for the sound. If we have previously paused, we avoid all that setup
- // and instead directly invoke the play method from OpenAL via Source.play
- if (!isPaused) {
- soundSystem.play(soundImpl, delay)
- } else {
- Client.scheduleTask(delay) {
- isPaused = false
- soundSystem.asMixin().sources[soundImpl]?.run {
- it.resume()
- }
- }
- }
- }
-
- /**
- * Pauses the sound, to be resumed later. This requires the world to be loaded
- */
- fun pause() {
- // TODO: Figure out how to work without a world
- require (World.isLoaded()) { "Can not pause a custom sound outside the world" }
-
- bootstrap()
-
- Client.scheduleTask {
- isPaused = true
- soundSystem.asMixin().sources[soundImpl]?.run {
- it.pause()
- }
- }
- }
-
- /**
- * Completely stops the sound. This requires the world to be loaded
- */
- fun stop() {
- // TODO: Figure out how to work without a world
- require (World.isLoaded()) { "Can not stop a custom sound outside the world" }
-
- bootstrap()
- soundSystem.stop(soundImpl)
- isPaused = false
- }
-
- /**
- * Immediately restarts the sound. This requires the world to be loaded
- */
- fun rewind() {
- stop()
- play()
- }
-
- private fun makeIdentifier(source: String): Identifier {
- return Identifier.of(
- CTJS.MOD_ID,
- Path(source).nameWithoutExtension.lowercase().filter { it in validIdentChars } + "_${counter++}",
- )
- }
-
- private interface SoundData {
- var loop: Boolean
- var loopDelay: Int
- var stream: Boolean
- var volume: Float
- var pitch: Float
- var x: Double
- var y: Double
- var z: Double
- var attenuation: Int
- var category: Category
- var attenuationType: AttenuationType
- }
-
- private class InitialSoundData(config: NativeObject) : SoundData {
- override var loop = config.getOrDefault("loop", false) as Boolean
- override var loopDelay = (config.getOrDefault("loopDelay", 0) as Number).toInt()
- override var stream = config.getOrDefault("stream", false) as Boolean
- override var volume = (config.getOrDefault("volume", 1f) as Number).toFloat()
- override var pitch = (config.getOrDefault("pitch", 1f) as Number).toFloat()
- override var x = (config.getOrDefault("x", Player.getX()) as Number).toDouble()
- override var y = (config.getOrDefault("y", Player.getY()) as Number).toDouble()
- override var z = (config.getOrDefault("z", Player.getZ()) as Number).toDouble()
- override var attenuation = (config.getOrDefault("attenuation", 16) as Number).toInt()
- override var category = config["category"]?.let(Category::from) ?: Category.MASTER
- override var attenuationType = config["attenuationType"]?.let(AttenuationType::from) ?: AttenuationType.LINEAR
- }
-
- private class BootstrappedSoundData(
- private val sound: MCSound,
- private val impl: SoundImpl,
- ) : SoundData {
- private val mixedSound: SoundAccessor = sound.asMixin()
- private val mixedImpl: AbstractSoundInstanceAccessor = impl.asMixin()
-
- override var volume by impl::volume
- override var pitch by impl::pitch
-
- override var loop: Boolean
- get() = impl.isRepeatable
- set(value) {
- mixedImpl.setRepeat(value)
- }
-
- override var loopDelay: Int
- get() = impl.repeatDelay
- set(value) {
- mixedImpl.setRepeatDelay(value)
- }
-
- override var stream: Boolean
- get() = error("stream should not be accessed after bootstrap")
- set(_) = error("stream should not be accessed after bootstrap")
-
- override var x: Double
- get() = impl.x
- set(value) {
- impl.setPosition(value, y, z)
- }
-
- override var y: Double
- get() = impl.y
- set(value) {
- impl.setPosition(x, value, z)
- }
-
- override var z: Double
- get() = impl.z
- set(value) {
- impl.setPosition(x, y, value)
- }
-
- override var attenuation: Int
- get() = sound.attenuation
- set(value) {
- mixedSound.setAttenuation(value)
- }
-
- override var category: Category
- get() = Category.fromMC(impl.categoryOverride)
- set(value) {
- impl.categoryOverride = value.toMC()
- }
-
- override var attenuationType: AttenuationType
- get() = AttenuationType.fromMC(impl.attenuationType)
- set(value) {
- impl.attenuationType = value.toMC()
- }
- }
-
- private class SoundImpl(
- soundEvent: SoundEvent,
- soundCategory: SoundCategory,
- attenuationType: MCAttenuationType,
- ) : MovingSoundInstance(soundEvent, soundCategory, Random.create()) {
- var categoryOverride: SoundCategory = super.category
-
- init {
- this.attenuationType = attenuationType
- }
-
- override fun tick() {
- if (!World.isLoaded())
- setDone()
- }
-
- override fun getCategory(): SoundCategory {
- return categoryOverride
- }
-
- fun setPosition(x: Double, y: Double, z: Double) {
- this.x = x
- this.y = y
- this.z = z
- }
-
- fun setAttenuationType(attenuationType: MCAttenuationType) {
- this.attenuationType = attenuationType
- }
-
- fun setVolume(volume: Float) {
- this.volume = volume.coerceIn(0f, 1f)
- }
-
- fun setPitch(pitch: Float) {
- this.pitch = pitch.coerceIn(0.5f, 2f)
- }
- }
-
- enum class Category(override val mcValue: SoundCategory) : CTWrapper {
- MASTER(SoundCategory.MASTER),
- MUSIC(SoundCategory.MUSIC),
- RECORDS(SoundCategory.RECORDS),
- WEATHER(SoundCategory.WEATHER),
- BLOCKS(SoundCategory.BLOCKS),
- HOSTILE(SoundCategory.HOSTILE),
- NEUTRAL(SoundCategory.NEUTRAL),
- PLAYERS(SoundCategory.PLAYERS),
- AMBIENT(SoundCategory.AMBIENT),
- VOICE(SoundCategory.VOICE);
-
- companion object {
- @JvmStatic
- fun fromMC(mcValue: SoundCategory) = entries.first { it.mcValue == mcValue }
-
- @JvmStatic
- fun from(value: Any) = when (value) {
- is CharSequence -> valueOf(value.toString())
- is SoundCategory -> fromMC(value)
- is Category -> value
- else -> throw IllegalArgumentException("Cannot create Sound.Category from $value")
- }
- }
- }
-
- enum class AttenuationType(override val mcValue: MCAttenuationType) : CTWrapper {
- NONE(MCAttenuationType.NONE),
- LINEAR(MCAttenuationType.LINEAR);
-
- companion object {
- @JvmStatic
- fun fromMC(mcValue: MCAttenuationType) = entries.first { it.mcValue == mcValue }
-
- @JvmStatic
- fun from(value: Any) = when (value) {
- is CharSequence -> valueOf(value.toString())
- is MCAttenuationType -> fromMC(value)
- is AttenuationType -> value
- else -> throw IllegalArgumentException("Cannot create Sound.Category from $value")
- }
- }
- }
-
- private object CTResourcePack : ResourcePack {
- override fun getId() = CTJS.MOD_ID
-
- override fun close() {
- throw UnsupportedOperationException()
- }
-
- override fun openRoot(vararg segments: String?): InputSupplier? {
- throw UnsupportedOperationException()
- }
-
- override fun open(type: ResourceType?, id: Identifier?): InputSupplier? {
- throw UnsupportedOperationException()
- }
-
- override fun findResources(
- type: ResourceType?,
- namespace: String?,
- prefix: String?,
- consumer: ResourcePack.ResultConsumer?
- ) {
- throw UnsupportedOperationException()
- }
-
- override fun getNamespaces(type: ResourceType?): MutableSet {
- throw UnsupportedOperationException()
- }
-
- override fun parseMetadata(metaReader: ResourceMetadataReader?): T? {
- throw UnsupportedOperationException()
- }
-
- override fun getInfo(): ResourcePackInfo {
- throw NotImplementedError()
- }
- }
-
- private companion object {
- private val soundSystem by lazy {
- Client.getMinecraft().soundManager.asMixin().soundSystem
- }
-
- private val validIdentChars = setOf(
- *('a'..'z').toList().toTypedArray(),
- *('0'..'9').toList().toTypedArray(),
- '_', '.', '-', '/',
- )
- private var counter = 0
- }
-}
diff --git a/src/main/kotlin/com/chattriggers/ctjs/api/commands/DynamicCommands.kt b/src/main/kotlin/com/chattriggers/ctjs/api/commands/DynamicCommands.kt
deleted file mode 100644
index 957bf025..00000000
--- a/src/main/kotlin/com/chattriggers/ctjs/api/commands/DynamicCommands.kt
+++ /dev/null
@@ -1,902 +0,0 @@
-package com.chattriggers.ctjs.api.commands
-
-import com.chattriggers.ctjs.api.client.Player
-import com.chattriggers.ctjs.api.commands.DynamicCommands.argument
-import com.chattriggers.ctjs.api.commands.DynamicCommands.buildCommand
-import com.chattriggers.ctjs.api.commands.DynamicCommands.custom
-import com.chattriggers.ctjs.api.commands.DynamicCommands.literal
-import com.chattriggers.ctjs.api.commands.DynamicCommands.message
-import com.chattriggers.ctjs.api.commands.DynamicCommands.redirect
-import com.chattriggers.ctjs.api.entity.Entity
-import com.chattriggers.ctjs.api.entity.PlayerMP
-import com.chattriggers.ctjs.api.inventory.Item
-import com.chattriggers.ctjs.api.inventory.ItemType
-import com.chattriggers.ctjs.api.inventory.nbt.NBTBase
-import com.chattriggers.ctjs.api.inventory.nbt.NBTTagCompound
-import com.chattriggers.ctjs.api.message.TextComponent
-import com.chattriggers.ctjs.api.world.World
-import com.chattriggers.ctjs.api.world.block.BlockFace
-import com.chattriggers.ctjs.api.world.block.BlockPos
-import com.chattriggers.ctjs.internal.commands.CommandCollection
-import com.chattriggers.ctjs.internal.commands.DynamicCommand
-import com.chattriggers.ctjs.internal.engine.JSLoader
-import com.chattriggers.ctjs.internal.mixins.commands.EntitySelectorAccessor
-import com.chattriggers.ctjs.MCEntity
-import com.chattriggers.ctjs.MCNbtCompound
-import com.chattriggers.ctjs.api.client.Client
-import com.chattriggers.ctjs.internal.utils.asMixin
-import com.mojang.brigadier.CommandDispatcher
-import com.mojang.brigadier.ImmutableStringReader
-import com.mojang.brigadier.StringReader
-import com.mojang.brigadier.arguments.*
-import com.mojang.brigadier.context.CommandContext
-import com.mojang.brigadier.exceptions.SimpleCommandExceptionType
-import com.mojang.brigadier.suggestion.Suggestions
-import com.mojang.brigadier.suggestion.SuggestionsBuilder
-import com.mojang.brigadier.tree.CommandNode
-import net.minecraft.block.pattern.CachedBlockPosition
-import net.minecraft.command.CommandSource
-import net.minecraft.command.EntitySelector
-import net.minecraft.command.argument.*
-import net.minecraft.command.argument.AngleArgumentType.Angle
-import net.minecraft.entity.player.PlayerEntity
-import net.minecraft.item.ItemStack
-import net.minecraft.registry.BuiltinRegistries
-import net.minecraft.server.command.CommandManager
-import net.minecraft.server.command.ServerCommandSource
-import net.minecraft.util.math.Box
-import net.minecraft.util.math.Vec2f
-import net.minecraft.util.math.Vec3d
-import org.mozilla.javascript.Function
-import org.mozilla.javascript.NativeObject
-import org.mozilla.javascript.WrappedException
-import java.util.concurrent.CompletableFuture
-import java.util.function.Predicate
-import kotlin.math.min
-
-/**
- * An alternative to the command register that allows full use of the
- * functionality provided by Brigadier.
- *
- * For more information about Brigadier, see
- * their GitHub page.
- * Also see [CTCommand] for an example Brigadier command.
- *
- * ## General
- *
- * This API works similarly to Brigadier, however much of the annoyance
- * of using the Brigadier API has been eliminated, mainly the excessive
- * use of nested function calls. It works via a global context, so function
- * calls are free. However, this means that multiples commands cannot be
- * built at once. This means that commands should only ever be built on the
- * main thread. If two commands are built at the same time, an error will be
- * thrown.
- *
- * ## Argument Types
- *
- * The [ArgumentType] interface is a fundamental part of Brigadier, and
- * most of the MC argument types have been exposed via helper function
- * in this class. It is also possible to build new instances of
- * [ArgumentType] via [custom].
- *
- * When possible, the argument types returned from the helper function on
- * this class resolve in a way that their Minecraft variants do. For example,
- * the [message] type will replace selectors with their target entity, if
- * possible.
- *
- * ## Basic Example
- *
- * Here is an example command that recreates the `/advancement` command
- * (without any of the actual functionality, of course):
- *
- * ```js
- * // The `Commands` object supports destructuring, which makes assembling long
- * // commands much nicer
- * const { argument, choices, exec, greedyString, literal, registerCommand, resource, players } = Commands;
- *
- * registerCommand('ctadvancement', () => {
- * // Note the use of choices to avoid having to copy-paste two separate literal() trees
- * argument('kind', choices('grant', 'revoke'), () => {
- * argument('targets', players(), () => {
- * literal('everything', () => {
- * // exec() receives a single object with all of the arguments, which means we can
- * // destructure it to pull out the ones we want. Only values from argument() calls
- * // are included here; the literal nodes are ignored and have no impact on this object.
- * exec(({ kind, targets }) => {
- * ChatLib.chat(`${kind} everything from ${targets}`);
- * });
- * });
- *
- * literal('only', () => {
- * argument('advancement', resource(), () => {
- * argument('criterion', greedyString(), () => {
- * exec(({ kind, targets, advancement, criterion }) => {
- * ChatLib.chat(`${kind} only ${advancement} applied to ${targets} (criterion = ${criterion})`);
- * });
- * });
- * });
- * });
- *
- * argument('subkind', choices('from', 'through', 'until'), () => {
- * argument('advancement', resource(), () => {
- * exec(({ kind, subkind, targets, advancement }) => {
- * ChatLib.chat(`kind = ${kind}, subkind = ${subkind}, advancement = ${advancement}, targets = ${targets}`);
- * });
- * });
- * });
- * });
- * });
- * });
- * ```
- *
- * ## Redirect
- *
- * Like Brigadier, this API supports assembling partial command nodes for use
- * in redirection. To do this, use [buildCommand], which returns the command node
- * (well, an internal representation of it). This object can then be passed to
- * further calls to [redirect] inside of a [literal] or [argument] block.
- *
- * Examples:
- *
- * ```js
- * // destructuring omitted
- *
- * const testCmdNode = buildCommand('testcmd', () => {
- * exec(({ arg }) => {
- * if (arg) {
- * ChatLib.chat(`arg supplied, value = ${arg}`);
- * } else {
- * ChatLib.chat('no arg supplied');
- * }
- * });
- * });
- *
- * // Manually register it since we used buildCommand() instead of registerCommand()
- * testCmdNode.register()
- *
- * registerCommand('testcmd', () => {
- * argument('arg', greedyString(), () => {
- * redirect(testCmdNode);
- * });
- * });
- * ```
- */
-object DynamicCommands : CommandCollection() {
- private var currentNode: DynamicCommand.Node? = null
-
- ////////////////////
- // Tree Functions //
- ////////////////////
-
- @JvmStatic
- @JvmOverloads
- fun registerCommand(name: String, builder: Function? = null) = buildCommand(name, builder).also {
- it.register()
- }
-
- @JvmStatic
- @JvmOverloads
- fun buildCommand(name: String, builder: Function? = null): RootCommand {
- require(currentNode == null) { "Command.buildCommand() called while already building a command" }
- val node = DynamicCommand.Node.Root(name)
- if (builder != null)
- processNode(node, builder)
- return node
- }
-
- @JvmStatic
- fun argument(name: String, type: ArgumentType, builder: Function) {
- requireNotNull(currentNode) { "Call to Commands.argument() outside of Commands.buildCommand()" }
- require(!currentNode!!.hasRedirect) { "Cannot redirect node with children" }
- val node = DynamicCommand.Node.Argument(currentNode, name, type)
- processNode(node, builder)
- currentNode!!.children.add(node)
- }
-
- @JvmStatic
- fun literal(name: String, builder: Function) {
- requireNotNull(currentNode) { "Call to Commands.literal() outside of Commands.buildCommand()" }
- require(!currentNode!!.hasRedirect) { "Cannot redirect node with children" }
- val node = DynamicCommand.Node.Literal(currentNode, name)
- processNode(node, builder)
- currentNode!!.children.add(node)
- }
-
- @JvmStatic
- fun redirect(node: RootCommand) {
- requireNotNull(currentNode) { "Call to Commands.redirect() outside of Commands.buildCommand()" }
- require(!currentNode!!.hasRedirect) { "Duplicate call to Commands.redirect()" }
- currentNode!!.children.add(DynamicCommand.Node.Redirect(currentNode, node as DynamicCommand.Node.Root))
- currentNode!!.hasRedirect = true
- }
-
- @JvmStatic
- fun redirect(node: CommandNode) {
- requireNotNull(currentNode) { "Call to Commands.redirect() outside of Commands.buildCommand()" }
- require(!currentNode!!.hasRedirect) { "Duplicate call to Commands.redirect()" }
- currentNode!!.children.add(DynamicCommand.Node.RedirectToCommandNode(currentNode, node))
- currentNode!!.hasRedirect = true
- }
-
- @JvmStatic
- fun exec(method: Function) {
- requireNotNull(currentNode) { "Call to Commands.argument() outside of Commands.buildCommand()" }
- require(!currentNode!!.hasRedirect) { "Cannot execute node with children" }
- require(currentNode!!.method == null) { "Duplicate call to Commands.exec()" }
- currentNode!!.method = method
- }
-
- /**
- * A helper method for getting Fabric's client CommandDispatcher root node. This allows user
- * commands to be redirected to the root node in the same way that "/execute run ..." does.
- *
- * As the result is a CommandNode, `.getChild(name)` can be used to access sub-command nodes
- * to, for example, redirect to just `/advancement` instead of `/`.
- */
- @JvmStatic
- fun getDispatcherRoot() = Client.getConnection()?.commandDispatcher?.root
-
- /////////////////////////
- // Brigadier Arg Types //
- /////////////////////////
-
- /**
- * @see Argument Types: bool
- */
- @JvmStatic
- fun bool(): BoolArgumentType = BoolArgumentType.bool()
-
- /**
- * @see brigadier:double
- */
- @JvmStatic
- @JvmOverloads
- fun double(min: Double = Double.MIN_VALUE, max: Double = Double.MAX_VALUE): DoubleArgumentType =
- DoubleArgumentType.doubleArg(min, max)
-
- /**
- * @see brigadier:float
- */
- @JvmStatic
- @JvmOverloads
- fun float(min: Float = Float.MIN_VALUE, max: Float = Float.MAX_VALUE): FloatArgumentType =
- FloatArgumentType.floatArg(min, max)
-
- /**
- * @see brigadier:integer
- */
- @JvmStatic
- @JvmOverloads
- fun integer(min: Int = Int.MIN_VALUE, max: Int = Int.MAX_VALUE): IntegerArgumentType =
- IntegerArgumentType.integer(min, max)
-
- /**
- * @see brigadier:long
- */
- @JvmStatic
- @JvmOverloads
- fun long(min: Long = Long.MIN_VALUE, max: Long = Long.MAX_VALUE): LongArgumentType =
- LongArgumentType.longArg(min, max)
-
- /**
- * @see brigadier:string
- */
- @JvmStatic
- fun string(): StringArgumentType = StringArgumentType.string()
-
- /**
- * @see brigadier:string
- */
- @JvmStatic
- fun greedyString(): StringArgumentType = StringArgumentType.greedyString()
-
- /**
- * @see brigadier:string
- */
- @JvmStatic
- fun word(): StringArgumentType = StringArgumentType.word()
-
- //////////////////
- // MC Arg Types //
- //////////////////
-
- /**
- * @see minecraft:angle
- */
- @JvmStatic
- fun angle() = wrapArgument(AngleArgumentType.angle(), ::AngleArgumentWrapper)
-
- /**
- * @see minecraft:block_pos
- */
- @JvmStatic
- fun blockPos(): ArgumentType {
- return wrapArgument(BlockPosArgumentType.blockPos(), ::PosArgumentWrapper)
- }
-
- /**
- * @see minecraft:block_predicate
- */
- @JvmStatic
- fun blockPredicate(): ArgumentType {
- val registryAccess = CommandManager.createRegistryAccess(BuiltinRegistries.createWrapperLookup())
- val predicate = BlockPredicateArgumentType.blockPredicate(registryAccess)
- return wrapArgument(predicate, ::BlockPredicateWrapper)
- }
-
- /**
- * @see minecraft:block_state
- */
- @JvmStatic
- fun blockState(): ArgumentType {
- val registryAccess = CommandManager.createRegistryAccess(BuiltinRegistries.createWrapperLookup())
- val predicate = BlockStateArgumentType.blockState(registryAccess)
- return wrapArgument(predicate, ::BlockStateArgumentWrapper)
- }
-
- /**
- * @see minecraft:color
- */
- @JvmStatic
- fun color() = ColorArgumentType.color()
-
- /**
- * @see minecraft:column_pos
- */
- @JvmStatic
- fun columnPos() = wrapArgument(ColumnPosArgumentType.columnPos(), ::PosArgumentWrapper)
-
- /**
- * @see minecraft:dimension
- */
- @JvmStatic
- fun dimension() = wrapArgument(
- choices(
- "minecraft:overworld",
- "minecraft:the_nether",
- "minecraft:the_end",
- "minecraft:overworld_caves",
- )
- ) { name ->
- Entity.DimensionType.entries.first { it.toMC().value.toString() == name }
- }
-
- /**
- * @see minecraft:entity
- */
- @JvmStatic
- fun entity() = wrapArgument(EntityArgumentType.entity()) { EntitySelectorWrapper(it).getEntity() }
-
- /**
- * @see minecraft:entity
- */
- @JvmStatic
- fun entities() = wrapArgument(EntityArgumentType.entities()) { EntitySelectorWrapper(it).getEntities() }
-
- /**
- * @see minecraft:float_range
- */
- @JvmStatic
- fun floatRange() = NumberRangeArgumentType.floatRange()
-
- /**
- * @see minecraft:game_profile
- */
- @JvmStatic
- fun gameProfile() = players()
-
- /**
- * @see minecraft:game_profile
- */
- @JvmStatic
- fun player() = wrapArgument(EntityArgumentType.player()) {
- EntitySelectorWrapper(it).getPlayers().let { players ->
- when {
- players.isEmpty() -> throw EntityArgumentType.PLAYER_NOT_FOUND_EXCEPTION.create()
- players.size > 1 -> throw EntityArgumentType.TOO_MANY_PLAYERS_EXCEPTION.create()
- else -> players[0]
- }
- }
- }
-
- /**
- * @see minecraft:game_profile
- */
- @JvmStatic
- fun players() = wrapArgument(EntityArgumentType.players()) { EntitySelectorWrapper(it).getPlayers() }
-
- /**
- * @see minecraft:gamemode
- */
- @JvmStatic
- fun gameMode() = GameModeArgumentType.gameMode()
-
- /**
- * @see minecraft:int_range
- */
- @JvmStatic
- fun intRange() = NumberRangeArgumentType.intRange()
-
- /**
- * @see minecraft:item_predicate
- */
- @JvmStatic
- fun itemPredicate(): ArgumentType<(Item) -> Boolean> {
- val registryAccess = CommandManager.createRegistryAccess(BuiltinRegistries.createWrapperLookup())
- val predicate = ItemPredicateArgumentType.itemPredicate(registryAccess)
- return wrapArgument(predicate) { pred -> { pred.test(it.mcValue) } }
- }
-
- /**
- * @see minecraft:item_slot
- */
- @JvmStatic
- fun itemSlot() = ItemSlotArgumentType.itemSlot()
-
- /**
- * @see minecraft:item_stack
- */
- @JvmStatic
- fun itemStack(): ArgumentType {
- val registryAccess = CommandManager.createRegistryAccess(BuiltinRegistries.createWrapperLookup())
- val arg = ItemStackArgumentType.itemStack(registryAccess)
- return wrapArgument(arg, ::ItemStackArgumentWrapper)
- }
-
- /**
- * @see minecraft:message
- */
- @JvmStatic
- fun message() = wrapArgument(MessageArgumentType.message(), ::MessageFormatArgumentWrapper)
-
- /**
- * @see minecraft:nbt_compound_tag
- */
- @JvmStatic
- fun nbtCompoundTag() = wrapArgument(NbtCompoundArgumentType.nbtCompound(), ::NBTTagCompound)
-
- /**
- * @see minecraft:nbt_path
- */
- @JvmStatic
- fun nbtPath() = wrapArgument(NbtPathArgumentType.nbtPath(), ::NbtPathWrapper)
-
- /**
- * @see minecraft:nbt_tag
- */
- @JvmStatic
- fun nbtTag() = wrapArgument(NbtElementArgumentType.nbtElement(), NBTBase::fromMC)
-
- /**
- * @see minecraft:resource
- */
- @JvmStatic
- fun resource() = IdentifierArgumentType.identifier()
-
- /**
- * @see minecraft:rotation
- */
- @JvmStatic
- fun rotation() = wrapArgument(RotationArgumentType.rotation(), ::PosArgumentWrapper)
-
- /**
- * @see minecraft:swizzle
- */
- @JvmStatic
- fun swizzle() = wrapArgument(SwizzleArgumentType.swizzle()) { it.map(BlockFace.Axis::fromMC) }
-
- /**
- * @see minecraft:time
- */
- @JvmStatic
- @JvmOverloads
- fun time(minimum: Int = 0) = TimeArgumentType.time(minimum)
-
- /**
- * @see minecraft:uuid
- */
- @JvmStatic
- fun uuid() = UuidArgumentType.uuid()
-
- /**
- * @see minecraft:vec2
- */
- @JvmStatic
- @JvmOverloads
- fun vec2(centerIntegers: Boolean = true) =
- wrapArgument(Vec2ArgumentType.vec2(centerIntegers), ::PosArgumentWrapper)
-
- /**
- * @see minecraft:vec3
- */
- @JvmStatic
- @JvmOverloads
- fun vec3(centerIntegers: Boolean = true) =
- wrapArgument(Vec3ArgumentType.vec3(centerIntegers), ::PosArgumentWrapper)
-
- /**
- * Allows choosing from a set list of strings. When suggested to the user, this
- * will look as though this argument is multiple "literal()" nodes.
- */
- @JvmStatic
- fun choices(vararg options: String): ArgumentType {
- require(options.isNotEmpty()) {
- "No strings passed to Commands.choices()"
- }
- require(options.all { CommandDispatcher.ARGUMENT_SEPARATOR_CHAR !in it }) {
- "Commands.choices() cannot accept strings with spaces"
- }
- require(options.none(String::isEmpty)) {
- "Commands.choices() cannot accept empty strings"
- }
-
- return object : ArgumentType {
- override fun parse(reader: StringReader): String {
- val start = reader.cursor
- val optionChars = options.toMutableList()
-
- var offset = 0
- while (reader.canRead()) {
- val ch = reader.read()
- optionChars.removeIf { it[offset] != ch }
- if (optionChars.isEmpty())
- reader.fail(start)
- offset += 1
-
- val found = optionChars.find { it.length == offset }
- if (found != null)
- return found
- }
-
- reader.fail(start)
- }
-
- override fun listSuggestions(
- context: CommandContext,
- builder: SuggestionsBuilder
- ): CompletableFuture {
- options.forEach(builder::suggest)
- return builder.buildFuture()
- }
-
- override fun getExamples(): MutableCollection = options.toMutableList()
-
- private fun StringReader.fail(originalOffset: Int): Nothing {
- cursor = originalOffset
- error(this, "Expected one of: ${options.joinToString(", ")}")
- }
- }
- }
-
- /**
- * Allows easy creation of a custom ArgumentType without needing to use
- * JavaAdapter. Example:
- *
- * ```js
- * const HEADS = 0;
- * const TAILS = 1;
- *
- * const coinFlipArgType = Commands.custom({
- * parse(reader) {
- * // `reader` is a com.mojang.brigadier.StringReader
- *
- * const savedCursor = reader.getCursor();
- * const str = reader.readString();
- * if (str === 'heads')
- * return HEADS;
- * if (str === 'tails')
- * return TAILS;
- * Commands.error(reader, `Expected one of: 'heads', 'tails'`);
- * },
- * suggest(ctx, builder) {
- * // ctx is a com.mojang.brigadier.context.CommandContext
- * // builder is a com.mojang.brigadier.suggestion.SuggestionsBuilder
- * builder.suggest('heads');
- * builder.suggest('tails');
- * return builder.buildFuture();
- * },
- * getExamples() {
- * return ['heads', 'tails'];
- * }
- * });
- * ```
- *
- * @see StringReader
- * @see CommandContext
- * @see SuggestionsBuilder
- */
- @JvmStatic
- fun custom(obj: NativeObject): ArgumentType {
- val parse = obj["parse"] as? Function ?: error(
- "Object provided to Commands.custom() must contain a \"parse\" function"
- )
-
- val suggest = obj["suggest"]?.let {
- require(it is Function) { "A \"suggest\" key in a custom command argument type must be a Function" }
- it
- }
-
- val getExamples = obj["getExamples"]?.let {
- require(it is Function) { "A \"getExamples\" key in a custom command argument type must be a Function" }
- it
- }
-
- return object : ArgumentType {
- override fun parse(reader: StringReader?): Any? {
- return try {
- JSLoader.invoke(parse, arrayOf(reader))
- } catch (e: WrappedException) {
- throw e.wrappedException
- }
- }
-
- override fun listSuggestions(
- context: CommandContext?,
- builder: SuggestionsBuilder?
- ): CompletableFuture {
- return if (suggest != null) {
- @Suppress("UNCHECKED_CAST")
- JSLoader.invoke(suggest, arrayOf(context, builder)) as CompletableFuture